64c3814
==== TABLE OF CONTENTS ====
Uniform-Stability-of-the-Spherical-Laughlin-Gap//appendices/retained-blocks.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//bibliography.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//paper.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/01-introduction.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/02-preliminaries.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/03-locality.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/04-pinning.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/05-flags.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/06-charge.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/07-energy.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/08-stability.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcore.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorequick.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.ee.IEC.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.ee.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.logic.CDH.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.logic.IEC.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.logic.US.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.logic.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.3d.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.barcharts.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.formats.functions.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.polar.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.sparklines.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/graphs/tikzlibrarygraphs.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/graphs/tikzlibrarygraphs.standard.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzexternalshared.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary3d.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryangles.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryanimations.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryautomata.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybabel.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybending.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalendar.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarychains.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.footprints.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.fractals.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathmorphing.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathreplacing.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.shapes.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.text.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryer.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfixedpointarithmetic.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfolding.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfpu.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryintersections.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarylindenmayersystems.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymath.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymatrix.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymindmap.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypatterns.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypatterns.meta.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryperspective.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypetri.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryplothandlers.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryplotmarks.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryquotes.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryrdf.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryscopes.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadings.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.gates.logic.IEC.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.gates.logic.US.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarysnakes.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryspy.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarysvg.path.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarythrough.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytrees.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryturtle.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryviews.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/experimental/tikzlibrarygraphdrawing.evolving.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.circular.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.examples.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.force.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.layered.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.trees.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/tikzlibrarygraphdrawing.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/datavisualization/pgflibrarydatavisualization.barcharts.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/datavisualization/pgflibrarydatavisualization.formats.functions.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/datavisualization/pgflibrarydatavisualization.polar.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.footprints.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.fractals.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.markings.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathmorphing.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.shapes.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.text.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/luamath/pgflibraryluamath.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryarrows.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryarrows.meta.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryarrows.spaced.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarycurvilinear.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryfadings.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryfixedpointarithmetic.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryfpu.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryintersections.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarylindenmayersystems.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarypatterns.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarypatterns.meta.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryprofiler.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryshadings.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarysnakes.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarysvg.path.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarytimelines.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.ee.IEC.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.ee.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.logic.IEC.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.logic.US.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.logic.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfint.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmath.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathcalc.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfloat.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.base.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.random.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.round.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathode.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathparser.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathutil.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleanimations.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulebending.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduledatavisualization.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduledecorations.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulematrix.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulenonlineartransformations.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleoo.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleparser.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleplot.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleshapes.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulesnakes.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulesorting.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/pgf.revision.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/systemlayer/pgfsys.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/systemlayer/pgfsysanimations.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfcalendar.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfexternal.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfexternalwithdepth.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgffor.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfkeys.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfrcs.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfutil-common-lists.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfutil-common.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/doc/pgfmanual-en-macros.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/doc/pgfmanual.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/doc/pgfmanual.pdflinks.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/doc/pgfmanual.prettyprinter.code.tex
Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/frontendlayer/libraries/tikzlibraryexternal.code.tex
===========================

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//appendices/retained-blocks.tex ====
\section{Retaining the unused four-body blocks}
\label{app:retained-blocks}
\begingroup
\newcommand{\rbnorm}[1]{\lVert #1\rVert}
\newcommand{\rbket}[1]{\lvert #1\rangle}
\newcommand{\rbbra}[1]{\langle #1\rvert}
\newcommand{\rbip}[2]{\langle #1,#2\rangle}

The local loss construction requires a stronger operator inequality than
the unperturbed gap: most of the normal-ordered four-body term must remain
on the right-hand side. We give the full finite-dimensional calculation
that establishes this strengthening. The seven auxiliary squares, their
rational certificate, and the finite-flux transfer are adapted from
\cite[Sections 2--6 and 8]{Gap}. The proof below retains the
four-body blocks that are discarded when only the gap is sought.

We use the lift and wedge maps of \eqref{eq:lift} and
\eqref{eq:wedge-maps}, with increasing orthonormal wedges of norm one.
Thus $B(v\wedge w)=B(w)B(v)$, and the domain of $W_4$ uses ordered
pair factors. Write $a=q-1$ and $H=H_q$; the conventions give
\begin{align}
 \mathcal L_k(\rbket v\rbbra w)&=B(v)^\dagger B(w),
       \label{rb:eq:lift}\\
 B_p=B(v_p),\qquad H&=\mathcal L_2(\Pi_{V_q})
            =\sum_{p=0}^{2q-2}B_p^\dagger B_p.
       \label{rb:eq:fockH}
\end{align}
The dagger in this appendix denotes the same adjoint as the star in the
main text.

The tensor product $V_q\otimes V_q$ contains one copy of each spin
$2q-2-l$, $0\le l\le 2q-2$. Let $P_{q,l}$ be its orthogonal
spin projection and define
\begin{equation}\label{rb:eq:retained-projections}
 R_q^{\mathrm{lo}}=\sum_{l=0}^{22}P_{q,l},\qquad
 R_q^{\mathrm{hi}}=I-R_q^{\mathrm{lo}}\quad(q\ge24).
\end{equation}
The spin-block label used in the calculation below is $D=l+1$;
thus $R_q^{\mathrm{lo}}$ consists exactly of $1\le D\le23$.

\begin{proposition}[Retained four-body blocks]\label{prop:retained-blocks}
For every fixed $0j+k$. The formula holds for either ordering of $j,k$, by antisymmetry. It follows by applying Lemma~\ref{rb:lem:coupling} first to the two single-particle spins and then to the two pair spins.

After averaging \eqref{rb:eq:normal4}, its spin-$2q-1-D$ block before wedging is a copy matrix $E_D^q$ times the spin identity, multiplied by $d_a/d_D$, where
\[
 d_D=4q-1-2D.
\]
Only $1\le D\le23$ contribute: every unaveraged term has
\[
 T=p+j+k=p'+l+i\le23.
\]
For these finitely many $D$, entrywise convergence gives $E_D^q\to E_D$, with
\begin{equation}\label{rb:eq:E}
 (E_D)_{rs}=-\sum_\rho\sum_{\substack{p,j;p',l\\T\ge D}}
 \alpha^{\rho}_{pj}\alpha^{\rho}_{p'l}
 S_r(D,T;p,j,k)S_s(D,T;p',l,i),
\end{equation}
where $i=p+j-t_\rho$, $k=p'+l-t_\rho$, and $T=p+j+k$. The exact finite-flux matrix $E_D^q$ is given by the same formula with each $S_r$ replaced by $S_r^q$.

The target term $\mathcal L_4(W_4W_4^\dagger)$ is obtained from the $r=1$ summand, since that summand is $V_q\otimes V_q$. Thus its copy matrix, in the units just used, is $(d_D/d_a)\chi$, where
\[
 \chi_{rs}=\mathbf1_{r=s=1},\qquad d_D/d_a\longrightarrow2.
\]
The summands of the target with $1\le D\le23$ equal
$\mathcal L_4(W_4R_q^{\mathrm{lo}}W_4^\dagger)$.
Since $A_4$ has no other spin blocks, the comparison with $A_4$ uses only
this part of the target. We keep
$\mathcal L_4(W_4R_q^{\mathrm{hi}}W_4^\dagger)$ separately.

Set
\begin{align}
 w_{Dr}^q&=\widehat W\rbket{D,D;r}_q,\label{rb:eq:wq}\\
 w_{Dr}^*&=\sum_{\substack{p+j+k=D\\jq$, are therefore dominated by
$6z(z+1)(2/3)^z$. Dominated convergence and \eqref{rb:eq:qlimit} give
\[
 \lim_{q\to\infty}\delta_q
 =\frac32\sum_{z=17,19,\ldots}(3z-1)(z+1)2^{-z}
 =\frac{61}{4096}.
\]
The last identity follows by writing $z=17+2m$ and using the geometric-series identities for $\sum t^m$, $\sum mt^m$, and $\sum m^2t^m$ at $t=1/4$.
\end{proof}



\begin{proof}[Proof of Proposition~\ref{prop:retained-blocks}]
Write $T_{\mathrm{lo}}=\mathcal L_4(W_4R_q^{\mathrm{lo}}W_4^\dagger)$
and $T_{\mathrm{hi}}=\mathcal L_4(W_4R_q^{\mathrm{hi}}W_4^\dagger)$.
The normal-square identity, the three-body comparison
\eqref{rb:eq:A3bound}, and the tail estimate give
\[
 H^2\ge (1-\delta_q)H+A_3+T_{\mathrm{lo}}+T_{\mathrm{hi}}.
\]
By \eqref{rb:eq:A4bound},
$T_{\mathrm{lo}}\ge A_4-(1222\varepsilon+o(1))H$.
Using $\mathcal K_q=\eta H+A_3+A_4\ge0$ from
\eqref{rb:eq:Adecomp}, we obtain
\[
 H^2\ge\mathcal K_q+
 (1-\eta-\delta_q-1222\varepsilon-o(1))H+T_{\mathrm{hi}}.
\]
The coefficient of $H$ tends to
\begin{equation}\label{rb:eq:finalmargin}
 1-\frac{93527408868499}{10^{14}}-\frac{61}{4096}
   -1222\frac3{10^6}
 =\frac{4616733319001}{10^{14}}>\frac1{25}.
\end{equation}
For fixed $00$. Integer division gives the floors $\lfloor n_z/d_z\rfloor$ listed below:
\begin{center}
\small
\setlength{\tabcolsep}{4pt}
\begin{tabular}{rrrrrrrrrrrrrr}
\toprule
$z$&2&4&5&6&7&8&9&10&11&12&13&14&15\\
\midrule
floor&1298313&211317&249&250&249&250&250&250&249&250&250&6470&250\\
\bottomrule
\end{tabular}
\end{center}
All are positive, proving \eqref{rb:eq:3certificate}.

\subsubsection{Four-body arithmetic}
\label{rb:app:four-arithmetic}
Fix $1\le D\le23$; all copy indices below lie in $\mathcal R_D$. Put
\[
 u_r=\frac1{r!(D-r)!},\qquad
 (E_D)_{rs}=\sqrt{u_ru_s}\,Y_{rs},\qquad
 (G_D)_{rs}=\sqrt{u_ru_s}\,Z_{rs}.
\]
The matrices $Y,Z$ are rational. Define
\[
 \mathsf V_r(D,T;p,j,k)=
 \mathsf U(1,r,j+k,j)\mathsf U(1,D-r,T-r,p),
\]
with value zero for $r>j+k$. Two applications of \eqref{rb:eq:coupling} give
\begin{equation}\label{rb:eq:Srational}
 S_r(D,T;p,j,k)=\mathsf V_r(D,T;p,j,k)
 \sqrt{2^{1-(j+k)-T+r}\frac{j!k!p!\,u_r}{(T-D)!}}.
\end{equation}
Therefore
\begin{equation}\label{rb:eq:Yrational}
 \begin{split}
 P^2Y_{rs}=-\sum_\rho\sum_{\substack{p,j;p',l\\T\ge D}}
 &a^\rho_{pj}a^\rho_{p'l}\,
 \mathsf V_r(D,T;p,j,k)\mathsf V_s(D,T;p',l,i)\\
 &\times2^{1-2T+p+p'-t_\rho+(r+s)/2}
       \frac{i!k!t_\rho!}{(T-D)!},
 \end{split}
\end{equation}
where $i=p+j-t_\rho$, $k=p'+l-t_\rho$, and $T=p+j+k$. Both entry sums are ordered. To verify the cancellation, multiply the two factors in \eqref{rb:eq:Srational} by the two factors \eqref{rb:eq:alphadata}; their remaining square root is exactly the factorial and power-of-two factor displayed in \eqref{rb:eq:Yrational}.

For an increasing quadruple $A$ of nonnegative indices with sum $D+1$, put $f(A)=\prod_{b\in A}b!$. If $(x,y,j,k)$ lists its elements, let $\sigma(x,y,j,k)$ be the sign of sorting this list into increasing order. In each summand below put $p=x+y-1$, and define
\begin{equation}\label{rb:eq:Lrational}
 L_r(A)=2^{(1-2D+r)/2}
 \sum_{\substack{x0\qquad(x>0).
\]
Since $M$ is real symmetric, a negative eigenvalue would give a positive
root of this polynomial. Therefore $M\ge0$, proving
\eqref{rb:eq:4certificate}.


\endgroup
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//appendices/retained-blocks.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//bibliography.tex ====
\begingroup\raggedright
\begin{thebibliography}{99}

\bibitem{BDN}
S.~Bachmann and G.~De Nittis,
\emph{Lieb--Robinson bounds in the continuum via localized frames},
preprint, 2024.
\href{https://arxiv.org/abs/2406.15670}{arXiv:2406.15670}.

\bibitem{BMNS}
S.~Bachmann, S.~Michalakis, B.~Nachtergaele, and R.~Sims,
Automorphic equivalence within gapped phases of quantum lattice systems,
\emph{Communications in Mathematical Physics} \textbf{309} (2012), 835--871.
\href{https://doi.org/10.1007/s00220-011-1380-0}{doi:10.1007/s00220-011-1380-0}.

\bibitem{BHM}
S.~Bravyi, M.~B. Hastings, and S.~Michalakis,
Topological quantum order: Stability under local perturbations,
\emph{Journal of Mathematical Physics} \textbf{51} (2010), 093512.
\href{https://doi.org/10.1063/1.3490195}{doi:10.1063/1.3490195}.

\bibitem{CS}
L.~Chen and A.~Seidel,
Algebraic approach to the study of zero modes of Haldane pseudopotentials,
\emph{Physical Review B} \textbf{91} (2015), 085103.
\href{https://doi.org/10.1103/PhysRevB.91.085103}{doi:10.1103/PhysRevB.91.085103}.

\bibitem{Haldane}
F.~D.~M. Haldane,
Fractional quantization of the Hall effect: A hierarchy of incompressible
quantum fluid states,
\emph{Physical Review Letters} \textbf{51} (1983), 605--608.
\href{https://doi.org/10.1103/PhysRevLett.51.605}{doi:10.1103/PhysRevLett.51.605}.

\bibitem{HW}
M.~B. Hastings and X.-G. Wen,
Quasiadiabatic continuation of quantum states: The stability of topological
ground-state degeneracy and emergent gauge invariance,
\emph{Physical Review B} \textbf{72} (2005), 045141.
\href{https://doi.org/10.1103/PhysRevB.72.045141}{doi:10.1103/PhysRevB.72.045141}.

\bibitem{Laughlin}
R.~B. Laughlin,
Anomalous quantum Hall effect: An incompressible quantum fluid with
fractionally charged excitations,
\emph{Physical Review Letters} \textbf{50} (1983), 1395--1398.
\href{https://doi.org/10.1103/PhysRevLett.50.1395}{doi:10.1103/PhysRevLett.50.1395}.

\bibitem{LR}
E.~H. Lieb and D.~W. Robinson,
The finite group velocity of quantum spin systems,
\emph{Communications in Mathematical Physics} \textbf{28} (1972), 251--257.
\href{https://doi.org/10.1007/BF01645779}{doi:10.1007/BF01645779}.

\bibitem{LRY}
E.~H. Lieb, N.~Rougerie, and J.~Yngvason,
Local incompressibility estimates for the Laughlin phase,
\emph{Communications in Mathematical Physics} \textbf{365} (2019), 431--470.
\href{https://doi.org/10.1007/s00220-018-3181-1}{doi:10.1007/s00220-018-3181-1}.

\bibitem{Lindblad}
G.~Lindblad,
On the generators of quantum dynamical semigroups,
\emph{Communications in Mathematical Physics} \textbf{48} (1976), 119--130.
\href{https://doi.org/10.1007/BF01608499}{doi:10.1007/BF01608499}.

\bibitem{MONS}
T.~Mazaheri, G.~Ortiz, Z.~Nussinov, and A.~Seidel,
Zero modes, bosonization, and topological quantum order:
The Laughlin state in second quantization,
\emph{Physical Review B} \textbf{91} (2015), 085115.
\href{https://doi.org/10.1103/PhysRevB.91.085115}{doi:10.1103/PhysRevB.91.085115}.

\bibitem{MZ}
S.~Michalakis and J.~P. Zwolak,
Stability of frustration-free Hamiltonians,
\emph{Communications in Mathematical Physics} \textbf{322} (2013), 277--302.
\href{https://doi.org/10.1007/s00220-013-1762-6}{doi:10.1007/s00220-013-1762-6}.

\bibitem{NSY}
B.~Nachtergaele, R.~Sims, and A.~Young,
Lieb--Robinson bounds, the spectral flow, and stability of the spectral gap
for lattice fermion systems,
in \emph{Mathematical Problems in Quantum Physics},
Contemporary Mathematics \textbf{717}, American Mathematical Society, 2018,
93--115.
\href{https://doi.org/10.1090/conm/717/14443}{doi:10.1090/conm/717/14443}.

\bibitem{NSYBulk}
B.~Nachtergaele, R.~Sims, and A.~Young,
Stability of the bulk gap for frustration-free topologically ordered
quantum lattice systems,
\emph{Letters in Mathematical Physics} \textbf{114} (2024), article~24.
\href{https://doi.org/10.1007/s11005-023-01767-8}{doi:10.1007/s11005-023-01767-8}.

\bibitem{NWY}
B.~Nachtergaele, S.~Warzel, and A.~Young,
Spectral gaps and incompressibility in a $\nu=1/3$ fractional quantum Hall system,
\emph{Communications in Mathematical Physics} \textbf{383} (2021), 1093--1149.
\href{https://doi.org/10.1007/s00220-021-03997-0}{doi:10.1007/s00220-021-03997-0}.

\bibitem{Gap}
OpenAI,
A Fock-space inequality and the Laughlin spectral gap,
OpenAI Math Release preprint
\href{https://github.com/openai/math/blob/main/preprints/A-Fock-space-inequality-and-the-Laughlin-spectral-gap-September-24-2026/A-Fock-space-inequality-and-the-Laughlin-spectral-gap-September-24-2026.pdf}{OAI:A-Fock-space-inequality-and-the-Laughlin-spectral-gap-September-24-2026},
2026.

\bibitem{Rougerie}
N.~Rougerie,
On the Laughlin function and its perturbations,
\emph{S\'eminaire Laurent Schwartz---EDP et applications} (2018--2019),
Expos\'e~II, 1--17.
\href{https://doi.org/10.5802/slsedp.131}{doi:10.5802/slsedp.131}.

\bibitem{RY}
N.~Rougerie and J.~Yngvason,
Incompressibility estimates for the Laughlin phase,
\emph{Communications in Mathematical Physics} \textbf{336} (2015), 1109--1140.
\href{https://doi.org/10.1007/s00220-014-2232-5}{doi:10.1007/s00220-014-2232-5}.

\bibitem{SY}
R.~Seiringer and J.~Yngvason,
Emergence of Haldane pseudo-potentials in systems with short-range interactions,
\emph{Journal of Statistical Physics} \textbf{181} (2020), 448--464.
\href{https://doi.org/10.1007/s10955-020-02586-0}{doi:10.1007/s10955-020-02586-0}.

\bibitem{TK}
S.~A. Trugman and S.~Kivelson,
Exact results for the fractional quantum Hall effect with general interactions,
\emph{Physical Review B} \textbf{31} (1985), 5280--5284.
\href{https://doi.org/10.1103/PhysRevB.31.5280}{doi:10.1103/PhysRevB.31.5280}.

\bibitem{WY}
S.~Warzel and A.~Young,
The spectral gap of a fractional quantum Hall system on a thin torus,
\emph{Journal of Mathematical Physics} \textbf{63} (2022), 041901.
\href{https://doi.org/10.1063/5.0084677}{doi:10.1063/5.0084677}.

\end{thebibliography}
\endgroup
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//bibliography.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//paper.tex ====
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[margin=1.05in]{geometry}
\usepackage{amsmath,amssymb,amsthm,mathtools}
\usepackage{microtype,graphicx,booktabs,array,listings}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,positioning,calc,patterns,decorations.pathreplacing}
\usepackage{xcolor}
\usepackage[unicode,colorlinks=true,linkcolor=blue!45!black,citecolor=blue!45!black,urlcolor=blue!45!black]{hyperref}
\hypersetup{pdftitle={Uniform Stability of the Spherical Laughlin Gap},pdfauthor={OpenAI}}
\numberwithin{equation}{section}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{corollary}[theorem]{Corollary}
\theoremstyle{definition}
\newtheorem{definition}[theorem]{Definition}
\theoremstyle{remark}
\newtheorem{remark}[theorem]{Remark}
\setlength{\emergencystretch}{2em}
\title{Uniform Stability of the Spherical Laughlin Gap}
\author{OpenAI}
\date{October 5, 2026}
\begin{document}
\maketitle
\begin{abstract}
We prove that the fermionic Laughlin $V_1$ Hamiltonian at filling $1/3$
on expanding round spheres retains a unique ground state and a uniform
spectral gap under sufficiently weak bounded real scalar one-body
potentials projected to the lowest Landau level. With coefficient one
for each pair projector and Laughlin flux $q=3(N-1)$, the gap and
perturbation threshold are uniform for all sufficiently large particle
numbers and all potential profiles of supremum norm at most one.
The result uses the uniform unperturbed Fock-space gap and gives
existential constants.
\end{abstract}
\tableofcontents
\input{sections/01-introduction}
\input{sections/02-preliminaries}
\input{sections/03-locality}
\input{sections/04-pinning}
\input{sections/05-flags}
\input{sections/06-charge}
\input{sections/07-energy}
\input{sections/08-stability}
\appendix
\input{appendices/retained-blocks}
\input{bibliography}
\end{document}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//paper.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/01-introduction.tex ====
\section{Introduction}\label{sec:introduction}

Laughlin's wave function describes a strongly correlated state at
fractional filling of the lowest Landau level~\cite{Laughlin}.
Haldane's spherical geometry and pseudopotentials give a particularly
simple parent Hamiltonian: each electron pair is penalized by the
orthogonal projection onto relative angular momentum one~\cite{Haldane}.
The cubic Laughlin polynomial is its unique zero state at filling
$1/3$ with the spherical shift. A spectral gap separates this state
from excitations. Stability asks whether that separation survives
a weak external potential whose total many-particle norm grows with
the area of the system.

We prove uniform stability for the full spherical interaction under
bounded scalar potentials projected to the lowest Landau level.
The potential may vary with system size and need not have any symmetry.
The proof uses the uniform unperturbed Fock-space gap of~\cite{Gap},
and derives the additional local estimates needed to pass from a
gap at zero disorder to a gap on a fixed disorder interval.

\subsection{Model and main result}

For $N\ge2$, set $q=3(N-1)$ and let $S_q$ be the round sphere of
radius $\sqrt{q/2}$. Magnetic length is one, so the sphere carries
$q$ flux quanta and has area $2\pi q$. Let $U_q$ be its one-particle
lowest Landau level, equivalently the spin-$q/2$ representation of
$SU(2)$. On the entire antisymmetric space $\bigwedge^N U_q$, put
\begin{equation}\label{eq:intro-H}
 H_{N,q}=\sum_{1\le i0$, $\Delta_*>0$, and
$N_*<\infty$ such that, for every $N\ge N_*$, every real
bounded measurable $\varphi$ on $S_{3(N-1)}$ with
$\|\varphi\|_\infty\le1$, and every real
$|\lambda|\le\lambda_*$,
\begin{equation}\label{eq:intro-stability}
 E_1(N,\lambda,\varphi)-E_0(N,\lambda,\varphi)\ge\Delta_*.
\end{equation}
In particular the perturbed ground state is unique.
\end{theorem}

The constants are uniform over the potential as well as particle number.
Thus the theorem applies, in particular, to smooth potentials satisfying
$\max_{0\le k\le2}\|\nabla^k\varphi\|_\infty\le1$ in the
physical round metric. Its stronger amplitude-only formulation comes
from the coherent-orbital representation of Toeplitz multiplication.
The ground vector is allowed to move, and its energy is subtracted in
the stability argument. Adding a constant to the potential changes
only that energy. We give existential constants; the proof does not
optimize the disorder threshold.

\subsection{Historical context and the additional difficulty}

Exact parent Hamiltonians have been central to the mathematical study
of fractional quantum Hall states since the work of Trugman and
Kivelson~\cite{TK}. Haldane pseudopotentials also arise from suitable
short-range limits of repulsive interactions, as proved by Seiringer
and Yngvason~\cite{SY}. The spectral gap is a separate quantitative
question: identifying a zero polynomial does not control the energy
of vectors perpendicular to it. Rougerie's survey~\cite{Rougerie}
discusses the gap problem and its role in the response of the Laughlin
phase to perturbations.

Rigorous uniform gaps were established for truncated pseudopotentials
in thin-cylinder and thin-torus geometries by Nachtergaele, Warzel,
and Young~\cite{NWY} and Warzel and Young~\cite{WY}. The unperturbed
input used here concerns the full interaction on expanding round
spheres~\cite{Gap}. We state its exact normalization in
Theorem~\ref{thm:unperturbed}. In addition, we use and reproduce a
strengthening of its four-body comparison: certain positive blocks
that were discarded in obtaining the gap can be retained. This
stronger estimate supplies the energy-loss construction below.

Another line of work controls density within the Laughlin-correlated
class. Rougerie and Yngvason~\cite{RY}, followed by Lieb, Rougerie,
and Yngvason~\cite{LRY}, established incompressibility estimates for
Laughlin functions multiplied by analytic symmetric factors. The
sharp local density bound in~\cite{LRY} is averaged over mesoscopic
disks. Our zero-mode estimate controls general local observables,
with total cost proportional to the number of missing electrons;
it is then combined with an estimate for states outside the zero space.
Algebraic descriptions and recursions for pseudopotential zero modes
were developed in~\cite{CS,MONS}. We use the symmetric-polynomial
description and add quantitative bounds for its orthogonal branching.

General gap-stability theorems explain the role of local information.
Bravyi, Hastings, and Michalakis~\cite{BHM} treated stability under
sufficiently weak, suitably decaying local perturbations of
commuting-projector models with topological-order conditions. Michalakis and
Zwolak~\cite{MZ} proved stability for frustration-free lattice
Hamiltonians under local topological-order and local-gap hypotheses.
Subsequent infinite-volume formulations also retain local conditions
in addition to a bulk gap~\cite{NSYBulk}.
Those hypotheses contain more information than a uniform global gap.
For the spherical lowest Landau level, the local control needed here
is established through flux pinning and a particle-loss evolution.
The resulting relative-bound argument has the same purpose as local
block diagonalization in the lattice theory, with a different source
of control for the diagonal terms.

Our final continuation of the ground line uses the quasiadiabatic
construction of Hastings and Wen~\cite{HW} and the exact spectral-flow
framework of Bachmann, Michalakis, Nachtergaele, and Sims~\cite{BMNS}.
It is applied inside a gap bootstrap, where its gap hypothesis is
available. Locality is obtained using redundant localized frames.
This connects to the continuum fermionic frame method of Bachmann and
De Nittis~\cite{BDN}; we prove the finite-sphere estimates, including
comparisons at neighboring fluxes, that the present argument requires.
The propagation estimates follow the Lieb--Robinson method~\cite{LR}
and its fermionic form~\cite{NSY}.

\subsection{The proof and its reusable estimates}

The main difficulty is extensive perturbation size:
$\|V_{N,q}(\varphi)\|$ can be of order $N$. A norm bound on the
whole perturbation therefore gives a disorder interval that shrinks
with particle number. We instead compare suitably centered local
terms with the interaction energy. Two estimates make that comparison
possible.

\paragraph{Local observables in zero spaces.}
At fixed flux $q=3(N-1)$, write $Z_{n,q}=\ker H_{n,q}$.
For an interaction $W$ that is a bounded-density sum of uniformly
localized neutral terms, we prove
\begin{equation}\label{eq:intro-zero-bound}
 \left|\langle\psi,W\psi\rangle
       -\langle\Omega,W\Omega\rangle\right|
 \le C_W(N-n),\qquad
 \psi\in Z_{n,q},\quad\|\psi\|=1,
\end{equation}
where $\Omega$ is the normalized filled Laughlin vector.
This is Theorem~\ref{thm:charge-local-linear}; the constant is uniform
in flux. Neutral means that a term preserves
particle number; localization is defined precisely in
Section~\ref{sec:locality}. The linear dependence on $N-n$ is
essential.

To prove \eqref{eq:intro-zero-bound}, we read a zero mode from one
pole. Either the last orbital is empty, which removes one unit of
flux and records a flag, or contraction in that orbital removes an
electron and three units of flux. The branches are orthogonal and
give coordinates for the entire zero space. The number of flags is
the \emph{quasihole degree} $h=q+3-3n$. At the filled flux it equals
$3(N-n)$, three times the electron deficit; a one-hole sector below
means $h=1$, not one missing electron.
Pinning zeros at the
pole realizes the required change of flux. The uniform Fock gap
persists along that pinning deformation and gives local unitary
transport. A history of branch choices then bounds a local
observable by weighted flag values along the history. A first, slowly decaying
weight supplies enough information to close a second estimate with
an integrable weight. Rotation averaging yields
\eqref{eq:intro-zero-bound}.

\paragraph{Local descent of interaction energy.}
Extend the pair Hamiltonian to all particle sectors by
$H_q=\bigoplus_{n=0}^{q+1}H_{n,q}$, with $H_{0,q}=H_{1,q}=0$,
and let $\mathcal N$ act as multiplication by $n$ on the $n$-particle
sector. On this Fock space we construct local particle-loss operators
$J_y$ such that (Theorem~\ref{thm:local-energy-descent})
\begin{equation}\label{eq:intro-descent}
 \int J_y^*J_y\,dy=H_q,\qquad
 \int J_y^*H_qJ_y\,dy\le H_q^2-cH_q.
\end{equation}
Each jump removes between two and a fixed number of particles.
The associated completely positive evolution decreases interaction
energy exponentially, and its expected particle loss is bounded by
the initial energy. The construction first removes a pair and then
partially empties a fixed neighborhood. A rotation average shows
that the remaining pair correlations are paid for by the retained
four-body blocks. This also proves a uniform energy cost for
particle excess above Laughlin filling.

\paragraph{From descent to perturbation theory.}
For a small fixed $\mu>0$, the operator
$G=H_q+\mu(N-\mathcal N)$ controls both interaction energy and
particle-number deficit or excess. If each neutral local term
$A_x$ annihilates $\Omega$, following its expectation through the
loss evolution gives
\[
 \pm\sum_xA_x\le CG.
\]
The proof closes a quadratic inequality for the best relative-bound
constant, using \eqref{eq:intro-zero-bound} at the limiting zero
state (Proposition~\ref{prop:relative-bound}). This implication from
local energy descent and linear electron-deficit
control is useful independently of the particular flux construction.
Finally spectral transport makes the derivative of the pulled-back
perturbed Hamiltonian termwise centered in this sense. On the
$N$-particle sector $G=H_q$, so integration gives a uniform lower
bound above the transported ground state.

Section~\ref{sec:prelim} fixes the algebra and zero-mode conventions.
Sections~\ref{sec:locality}--\ref{sec:charge} establish the local
zero-mode estimate. Section~\ref{sec:energy} constructs the loss
evolution, and Section~\ref{sec:stability} proves the relative bound
and completes Theorem~\ref{thm:main}. Appendix~\ref{app:retained-blocks}
contains the retained-block comparison and its finite arithmetic data.
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/01-introduction.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/02-preliminaries.tex ====
\section{Lowest Landau level and zero modes}\label{sec:prelim}

We fix the normalization of the interaction before discussing locality.
The exterior-algebra formulation is useful because both the pinned
Hamiltonians and the particle-loss evolution change particle number.
Throughout the paper, constants are independent of flux and particle
number unless an explicit dependence is indicated. A statement for large
flux means that its threshold is independent of the particle sector.

\subsection{Coherent orbitals and pair annihilators}

Let $q\ge1$ be an integer. The sphere $S_q$ has radius $\sqrt{q/2}$,
area $2\pi q$, and magnetic field one. The lowest Landau level $U_q$ is
the spin-$q/2$ representation of $SU(2)$. We use homogeneous polynomials
of degree $q$ in spinor coordinates $(z_0,z_1)$, with invariant inner
product normalized so that
\[
 e_j=\binom qj^{1/2}z_0^{q-j}z_1^j,
 \qquad 0\le j\le q,
\]
is an orthonormal basis. This normalization identifies $U_q$ unitarily
with the physical lowest Landau level; it does not rescale any operator.
Relative to a chosen north pole, $j=0$ is the north orbital and $j=q$
the south orbital.

Write $k_x$ for the unit coherent vector at $x\in S_q$, defined up to
a phase by the Riesz vector for evaluation at $x$. Its components in
the axis basis have squared moduli
\begin{equation}\label{eq:binomial-coherent}
 |\langle e_j,k_x\rangle|^2
 =\binom qj (1-m/q)^{q-j}(m/q)^j,
 \qquad m=q\sin^2(\theta/2).
\end{equation}
Schur's Lemma and the trace give the resolution
\begin{equation}\label{eq:coherent-resolution}
 \kappa_q\int_{S_q}|k_x\rangle\langle k_x|\,dA(x)=I_{U_q},
 \qquad \kappa_q=\frac{q+1}{2\pi q}.
\end{equation}
In particular the density $\kappa_q$ is uniformly bounded. For a bounded
measurable real function $\varphi$, the Toeplitz operator is
\begin{equation}\label{eq:toeplitz-resolution}
 T_q(\varphi)=\kappa_q\int_{S_q}
       \varphi(x)|k_x\rangle\langle k_x|\,dA(x).
\end{equation}
Indeed the quadratic form on the right is the integral of $\varphi$
times the product of the two evaluated lowest-level sections, which is
the quadratic form of compression of multiplication by $\varphi$.

The fermionic Fock space and number operator are
\[
 \mathcal F_q=\bigoplus_{n=0}^{q+1}\bigwedge^n U_q,
 \qquad \mathcal N\big|_{\wedge^n U_q}=nI.
\]
Increasing wedges of orthonormal vectors have norm one. For
$a\in\bigwedge^k U_q$, let $B(a)$ be the adjoint of left wedge
multiplication by $a$. Thus $B$ is conjugate-linear,
$B(a\wedge b)=B(b)B(a)$, and $c_j=B(e_j)$ satisfy the canonical
anticommutation relations. For a one-particle vector $f$ we also write
$c(f)=B(f)$. For an operator on $\bigwedge^k U_q$, its
lift to Fock space is the linear extension of
\begin{equation}\label{eq:lift}
 \mathcal L_k(|a\rangle\langle b|)=B(a)^*B(b).
\end{equation}
The lift preserves positivity and rotations. It vanishes on sectors
with fewer than $k$ particles and equals its argument on the $k$-particle
sector.

Let $V_q\subset\bigwedge^2 U_q$ be the spin-$(q-1)$ summand. Its
orthonormal axis basis $v_p$, $0\le p\le2q-2$, can be written as
\begin{equation}\label{eq:pair-rows}
 v_{b-1}=Z_{q,b}^{-1/2}
 \sum_{\substack{0\le i=Stealth,font=\small]
 \begin{scope}
  \node[anchor=west] at (-.1,2.5) {(a) A window in orbital index};
  \draw[->] (0,.35)--(4.4,.35) node[right] {$j$};
  \draw[blue!65!black,thick]
     (.3,.35)..controls (1,.35) and (1.05,1.65)..(2.15,1.65)
     ..controls (3.25,1.65) and (3.3,.35)..(4,.35);
  \draw[densely dashed,gray] (2.15,.3)--(2.15,1.85);
  \node[above] at (2.15,1.85) {$\xi_a$};
  \draw[<->] (.5,-.05)--(3.8,-.05)
       node[midway,below] {index width $O(w_a)$};
  \node[below] at (2.15,.35) {$m_a$};
  \node[align=center] at (2.15,-.95)
       {$L_a\asymp w_a$ Fourier phases};
 \end{scope}
 \draw[->,thick] (4.95,1.05)--(5.8,1.05);
 \begin{scope}[shift={(8.1,1.05)}]
  \node at (0,1.45) {(b) Slots on a physical latitude};
  \draw[gray!70] (0,0) circle (1.18);
  \draw[gray!55,densely dashed] (-1.08,.48)
      arc[start angle=180,end angle=0,x radius=1.08,y radius=.29];
  \draw[blue!65!black] (-1.08,.48)
      arc[start angle=180,end angle=360,x radius=1.08,y radius=.29];
  \foreach \a in {15,45,...,345}
    {\fill[blue!65!black] ({1.08*cos(\a)},{.48+.29*sin(\a)}) circle (.035);}
  \fill[red!70!black] (.54,.229) circle (.045);
  \draw[red!60!black,densely dashed] (.54,.229) circle (.18);
  \draw[red!35!black,densely dashed] (.54,.229) circle (.31);
  \draw[->,red!60!black] (1.65,-.25)--(.76,.13);
  \node[align=left,anchor=west] at (1.25,-.57)
       {rapidly localized\\physical atom};
  \node[align=center] at (0,-1.95)
       {angular spacing $O(w_a^{-1})$\\physical spacing $O(1)$};
 \end{scope}
\end{tikzpicture}
\caption{The index window has width comparable to $w_a$; its Fourier
phases place a comparable number of slots around the latitude.
Together with unit-order radial spacing, this gives bounded slot
density in physical distance.  The drawing is schematic: dashed
circles indicate rapidly decaying tails, not compact spatial support.}
\label{fig:local-slots}
\end{figure}

We need two quantitative consequences of this construction.  Let $k_y$
be a normalized coherent orbital centered at $y$.

\begin{lemma}[Uniform frame localization]\label{locality:frame}
For every $D$ there is $C_D$ such that
\begin{equation}
 |\langle z_x,k_y\rangle|\leq C_D(1+d(x,y))^{-D}.
 \label{eq:frame-coherent-decay}
\end{equation}
For two frames constructed as above, possibly with different axes, their
atoms satisfy the same bound with $k_y$ replaced by an atom centered at
$y$.  For each fixed integer $J$, \eqref{eq:frame-coherent-decay} also
holds, with constants depending on $J$, for every rotated polar orbital
$e_j(y)$ with $0\leq j\leq J$.
\end{lemma}

\begin{proof}
Choose the axial gauge and azimuth convention in which the coefficient
of $e_j$ in $k_y$ is $e^{ij\phi_y}p_{q,m}(j)^{1/2}$.  Its modulus is
\[
 p_{q,m}(j)^{1/2},\qquad
 p_{q,m}(j)=\binom qj(m/q)^j(1-m/q)^{q-j}.
\]
They obey, after extension by zero outside $[0,q]$,
\begin{equation}
 |\Delta^l p_{q,m}(j)^{1/2}|
 \leq C_{D,l}w_q(m)^{-1/2-l}
       \left(1+\frac{|j-m|}{w_q(m)}\right)^{-D}.
 \label{eq:binomial-symbol}
\end{equation}
Here and below finite differences may shift the argument by a fixed
number of indices, which only changes the constant.  We include a
verification to specify uniformity near the ends.  First put $p=m/q$
and $\sigma^2=qp(1-p)$, so
$w_q(m)^2=1+q\sigma^2/(q+1)\asymp1+\sigma^2$.
Fourier inversion of a binomial law of variance $\sigma^2$ gives
\[
 \sup_j p_{q,m}(j)\leq\frac1{2\pi}\int_{-\pi}^{\pi}
       \bigl(1-4p(1-p)\sin^2(t/2)\bigr)^{q/2}\,dt
       \leq \frac C{1+\sigma}.
\]
For $00$, define
\begin{equation}
 \|A\|_{x,l}=\|A\|+
 \sup_{r\geq1}(1+r)^l
       \inf_{A_r\in\mathfrak A(B_r(x))}\|A-A_r\|.
 \label{locality:ball-norm}
\end{equation}
We call $A$ rapidly local at $x$ if this is finite for every $l$,
with bounds uniform in the volume under consideration.  An interaction
is a family $A_x$ integrated against a measure whose mass in every
unit ball is bounded.  A bound of \emph{size} $a(x)$ means
$\|A_x\|_{x,l}\leq C_l a(x)$ for every $l$.  A positive function $a$
is called tempered if, for fixed $C,\kappa$,
\begin{equation}
 a(x)\leq C a(y)(1+d(x,y))^\kappa.
 \label{eq:tempered-weight}
\end{equation}
The constants in estimates involving $a$ may depend on $C,\kappa$.
Powers and products of $u,v,w$ are examples.

Taking near-best approximations at radii $2^k$ and subtracting successive
ones gives a ball decomposition
\begin{equation}
 A=\sum_{k\geq0}A^{(k)},\qquad
 A^{(k)}\in\mathfrak A(B_{2^{k+1}}(x)),\qquad
 \|A^{(k)}\|\leq C_l\|A\|_{x,l}2^{-kl}.
 \label{eq:ball-decomposition}
\end{equation}
Conversely such a decomposition implies the approximation bound, with
any slightly smaller exponent.  We use this elementary equivalence
to pass between operators and interactions on balls.

An observable supported initially on a large ball needs a separate
convention.  A family has \emph{core radius $r$ and amplitude $a$} if
\begin{equation}
 \|A\|\leq Ca,\qquad
 \inf_{A_R\in\mathfrak A(B_R(x))}\|A-A_R\|
       \leq C_Da(1+R)^{-D}\quad(R\geq C_*r),
 \label{eq:local-core-tail}
\end{equation}
where the geometric constant $C_*$ is independent of $D$.
The amplitude may contain a specified power of $r$.  This convention
does not assert that every centered norm \eqref{locality:ball-norm}
is bounded by $Ca$ without a further radius factor.

\begin{lemma}[Shells outside a fixed core]\label{locality:core-shells}
If \eqref{eq:local-core-tail} holds with $r\geq1$, there is a
decomposition $A=\sum_{\nu\geq0}A_\nu$ with
$A_\nu\in\mathfrak A(B_{C_*2^{\nu+1}r}(x))$ and
$\|A_\nu\|\leq C_Da2^{-\nu D}$ for every $D$.
Consequently, for each fixed $B\geq0$,
\begin{equation}
 \sum_{\nu\geq0}(C_*2^{\nu+1}r)^B\|A_\nu\|
       \leq C_Ba r^B.
 \label{eq:local-core-moment}
\end{equation}
\end{lemma}

\begin{proof}
Take approximants at radii $C_*2^\nu r$ and telescope, starting
with the first approximant as the core.  The core norm is $Ca$;
the other differences are bounded by the two adjoining errors in
\eqref{eq:local-core-tail}.  Sum with any $D>B+1$ to obtain
\eqref{eq:local-core-moment}.
\end{proof}

\begin{lemma}[Products, commutators, and weighted sums]
\label{locality:calculus}
The following bounds are uniform over the slot systems above.
\begin{enumerate}
\renewcommand{\labelenumi}{\textup{(\roman{enumi})}}
\item Products of operators rapidly local at the same center, and
adjoints, preserve rapid locality.  If $A,B$ are
centered at $x,y$, respectively, with bounded local norms, then
$\|[A,B]_{\mathrm{gr}}\|\leq C_D(1+d(x,y))^{-D}$ for every $D$.
\item If $A$ is rapidly local at $x$ and a rapidly local interaction
$K_y$ has tempered size $a(y)$, then
$[\int K_y\,dy,A]_{\mathrm{gr}}$ is rapidly local at $x$, of size
$a(x)$ times the local bounds of $A$.
\item Suppose $A$ is even, $\|A\|_{x,l}\leq1$, and $J_y$ has bounded
rapid local norms.  With $D=1+d(x,y)$ and $C_{xy}=[A,J_y]$,
\begin{equation}
 \|C_{xy}\|\leq C D^{-l},\qquad
 \|C_{xy}\|_{x,l}\leq C,\qquad
 \|C_{xy}^*C_{xy}\|_{x,l}\leq C D^{-l}.
 \label{eq:commutator-square-locality}
\end{equation}
\end{enumerate}
For an operator initially supported in $B_r(x)$, the corresponding
core estimates cost a fixed polynomial in $r$.  At distances larger
than a fixed multiple of $r$, any prescribed decay order is available.
\end{lemma}

\begin{proof}
The product estimate follows from
\[
 \|AB-A_rB_r\|
 \leq\|A-A_r\|\|B\|+\|A_r\|\|B-B_r\|.
\]
For the commutator use approximations of radius less than $d(x,y)/3$;
their graded commutator vanishes.  For the weighted assertion expand
both factors as in \eqref{eq:ball-decomposition}.  Terms with disjoint
balls vanish, while intersecting balls of radii $R,S$ require
$d(x,y)\leq R+S$.  The number or measure of their possible centers is
$O((1+R+S)^2)$, and \eqref{eq:tempered-weight} costs at most
$C(1+R+S)^\kappa$.  To obtain an output moment of order $D$, bound
these costs by $C(1+R+S)^{D+\kappa+2}$ and choose input decay order
larger than $D+\kappa+6$.  The two geometric sums then converge.
This argument also permits assigning each output term to the center
of either input; that convention will be used for differences of
interactions.

For \eqref{eq:commutator-square-locality}, the first estimate follows
by the disjoint-ball argument at exponent $l$.  For approximation
radii $r\leq3D$, use zero as an approximant to $C_{xy}$, giving
$r^l\|C_{xy}\|\leq C$.  For $r>3D$, approximate $A$ in $B_{r/3}(x)$
and $J_y$ in $B_{r/3}(y)$; their commutator is supported in $B_r(x)$
and has error $Cr^{-l}$.  Thus the second estimate holds.  Apply the
product estimate with the small norm $\|C_{xy}\|\leq CD^{-l}$ on one
factor to obtain the third estimate.  Finally a ball $B_r(x)$ contains
$O((1+r)^2)$ slots, and tempered ratios within it cost
$O((1+r)^\kappa)$.  The same sums give the stated polynomial core
costs.  For tails beyond $Cr$, the distance from the original ball
is comparable to the tail radius, so increasing a tail order does not
increase the core-volume exponent.
\end{proof}

\begin{corollary}[The physical interactions]\label{locality:basic-interactions}
\label{locality:toeplitz}
The unperturbed Hamiltonian $H_q$ and the Fock lift of any bounded
real scalar symbol $\varphi$ have physical, neutral, Hermitian rapid
interactions of uniform sizes $C_D$ and $C_D\|\varphi\|_\infty$,
respectively.
\end{corollary}

\begin{proof}
Coefficient localization gives operator-norm localization directly.
If $E_R$ is the one-particle projection onto slots in $B_R(x)$, the
CAR identity $\|c(f)\|=\|f\|_2$ gives
\[
 \|c(\mathsf S_q f)-c(E_R\mathsf S_q f)\|
       =\|(I-E_R)\mathsf S_q f\|_2.
\]
For $f=k_x$ or a bounded polar mode at $x$,
Lemma~\ref{locality:frame} and the slot count
\eqref{eq:slot-volume} make the right side at most
$C_D(1+R)^{-D}$ for every $D$; the approximating annihilator is
supported in $B_R(x)$.

The coherent resolution gives
\[
 d\Gamma(T_q(\varphi))=\frac{q+1}{2\pi q}
       \int_{S_q}\varphi(x)c^*(k_x)c(k_x)\,dA(x).
\]
For $H_q$, the highest pair vector is $v_0=e_0\wedge e_1$.
Schur's Lemma on the spin-$(q-1)$ pair space and its dimension
$2q-1$ give, with Haar mass one,
\begin{equation}
 H_q=(2q-1)\int_{SU(2)}B(gv_0)^*B(gv_0)\,dg.
 \label{eq:coherent-pair-resolution}
\end{equation}
The product $B(gv_0)=c(ge_1)c(ge_0)$ is rapidly local at the
rotated pole by Lemmas~\ref{locality:frame} and
\ref{locality:calculus}.  Its phase along the stabilizer disappears
in its square, so the center measure on the sphere has density
$(2q-1)/(2\pi q)$.  This and $(q+1)/(2\pi q)$ are uniformly bounded.
The same two lemmas localize $c^*(k_x)c(k_x)$.  No derivative of
$\varphi$ enters either the representation or its bound.
\end{proof}

\subsection{Propagation and spectral filters}

We next establish that a time filter preserves this local calculus.
The relevant propagation bound is needed only with arbitrary polynomial
decay, which permits a direct truncation argument.  The underlying
commutator iteration is the Lieb--Robinson method
\cite{LR}, in its graded fermionic form \cite{NSY}; its use with time filters is the locality
mechanism behind quasi-adiabatic continuation and spectral flow
\cite{HW,BMNS}.

\begin{lemma}[Propagation of local observables]\label{locality:dynamics}
Let $K$ be self-adjoint and even, with a rapidly local interaction of
uniform size.  Write $\tau_t^K(A)=e^{itK}Ae^{-itK}$.  For each $D$
there are $D'$ and $M_D$, independent of volume, such that
\begin{equation}
 \|\tau_t^K(A)\|_{x,D}
       \leq C_D(1+|t|)^{M_D}\|A\|_{x,D'}.
 \label{eq:polynomial-propagation}
\end{equation}
The assertion holds also for time-dependent generators with the same
uniform bounds.  In particular evolution over a bounded parameter
interval preserves rapid locality.  If $A$ is supported in $B_r(x)$,
the error in approximating $\tau_t^K(A)$ on $B_R(x)$, for
$R\geq C(r+(1+|t|)^4)$, is bounded by
$C_D\|A\|(1+r)^2R^{-D}$.
\end{lemma}

\begin{proof}
Use \eqref{eq:ball-decomposition} to write $K$ as a sum of terms on
balls.  Taking Hermitian and even parts makes each term Hermitian
and even without changing the total or its estimates.  First retain
only terms of diameter at most $\ell$.  For
this truncated interaction define
\[
 M_{ab}=2\sum_{X\ni a,b}\|K_X\|.
\]
Uniform summability, including the number of sites in $X$, gives
$\sup_a\sum_b M_{ab}e^{d(a,b)/\ell}\leq C$; indeed each retained
distance is at most $\ell$, and the ball-volume costs are polynomial.
The iterated commutator inequality, with internal evolution removed
unitarily at each step, therefore gives
\begin{equation}
 \|[\tau_t^{K_{\leq\ell}}(A),B]_{\mathrm{gr}}\|
 \leq C\|A\|\|B\|\,|X|\,|Y|
        e^{C|t|-d(X,Y)/\ell}
 \label{eq:truncated-LR}
\end{equation}
for $A\in\mathfrak A(X)$ and $B\in\mathfrak A(Y)$.
For completeness, the $n$th iterated integral contributes $|t|^n/n!$
times a chain of $n$ matrix factors $M$.  Multiplication by
$e^{d(X,Y)/\ell}$ is bounded by the product of the exponential
weights along the chain.  Summing the intermediate sites gives
$C^n$, and summing $n$ gives \eqref{eq:truncated-LR}.  Evenness of
the generator makes the same calculation valid for odd $A,B$ with
the graded commutator.

Restore the removed terms using Duhamel's formula.  For each removed
ball term use the smaller of the trivial commutator bound and
\eqref{eq:truncated-LR}.  The centers within distance
$C\ell(1+|t|)$ of $X$, together with the radius of that term, occupy
at most a polynomial volume.  Outside that region the exponential
bound is summable.  Consequently, for every $s$, the restoration
error is at most
\begin{equation}
 C_s\|A\||X|(1+|t|)
       (1+r+\ell(1+|t|))^4\ell^{-s},
 \label{eq:range-restoration}
\end{equation}
when $X\subset B_r(x)$.  To see the power allowance explicitly, a
removed term of radius $a$ contributes its norm times at most
$C(1+r+\ell(1+|t|)+a)^2$ possible centers and at most
$C(1+a)^2$ sites.  Its arbitrarily high radius moment makes the sum
over $a>\ell/2$ bounded by the right side of
\eqref{eq:range-restoration}, after increasing the input moment by
$s+6$.

Now let $R\geq C(r+(1+|t|)^4)$ and choose $\ell=R^{1/3}$.
The truncated evolution differs from the evolution generated by its
terms contained in $B_R(x)$ by
$C\|A\||X|\operatorname{poly}(R)e^{C|t|-cR^{2/3}}$.
This is again Duhamel's formula and \eqref{eq:truncated-LR}, summed
over the boundary terms.  Both restoration errors are bounded by
$C_D\|A\||X|R^{-D}$, choosing $s$ sufficiently large in
\eqref{eq:range-restoration}.  This supplies an approximation in
$\mathfrak A(B_R(x))$.  At smaller radii use the norm bound
$\|\tau_t(A)\|=\|A\|$.  Since $|X|\leq C(1+r)^2$, this proves the
assertion for supported $A$ and then, by
\eqref{eq:ball-decomposition}, \eqref{eq:polynomial-propagation}.
The proof uses only uniform bounds on the interaction at each time,
so also proves the time-dependent assertion.
\end{proof}

\begin{lemma}[Time filters]\label{locality:filters}
Suppose $F\in L^1(\mathbb R)$ and
$\int(1+|t|)^j|F(t)|\,dt<\infty$ for every $j$.  Under the hypotheses
of Lemma~\ref{locality:dynamics},
\begin{equation}
 \mathcal T_{F,K}(A)=\int_{\mathbb R}F(t)\tau_t^K(A)\,dt
 \label{eq:time-filter}
\end{equation}
is rapidly local whenever $A$ is, with uniform bounds.  The same is
true for a finite measure consisting of such a function and a mass at
zero.  Number grade and physicality are preserved when $K$ is neutral
and physical.  Suitable symmetry of $F$ preserves adjoints.
\end{lemma}

\begin{proof}
Integrate \eqref{eq:polynomial-propagation}.  The approximation norm
is a seminorm up to its operator-norm summand, so the integral of local
approximants gives the required estimate.  The remaining assertions
follow directly by commuting the evolution with gauge transformations,
the physical algebra, and adjoints.
\end{proof}

The frequency functions used below are smooth, vanish on an interval
about zero, and have tails proportional to $1/\omega$ on one or both
half-lines.  Their inverse Fourier transforms satisfy the hypotheses
of Lemma~\ref{locality:filters}.  Here is a convenient verification.
Every positive-order derivative of such a multiplier is integrable,
so integration by parts gives arbitrary powers of decay for $|t|\geq1$.
For $0<|t|<1$, split the frequency integral at $|\omega|=|t|^{-1}$.
The inner portion is $O(1+|\log|t||)$, and one integration by parts
on the outer portion is $O(1)$.  Thus the possible singularity at
zero is integrable.  A smooth compactly supported multiplier has a
Schwartz kernel.  These facts cover both spectral transport and
the filters that retain only small energy differences.

\begin{lemma}[Weighted differences]\label{locality:difference}
Let $K,K'$ satisfy Lemma~\ref{locality:dynamics} uniformly, and assume
$K-K'$ has a rapidly local interaction of tempered size $a(z)$.
For a rapidly local $A$ centered at $x$,
\begin{equation}
 \|\tau_t^K(A)-\tau_t^{K'}(A)\|_{x,D}
 \leq C_Da(x)(1+|t|)^{M_D}\|A\|_{x,D'}.
 \label{eq:weighted-evolution-difference}
\end{equation}
The same conclusion holds after an all-moments time filter, and for
differences of bounded-parameter evolutions.  If the input itself
changes by local size $b(x)$, its separate contribution is $Cb(x)$.
All estimates retain the product of a local input size and $a(x)$.
If $A\in\mathfrak A(B_r(x))$, put $s=\kappa+2$, with $\kappa$ from
\eqref{eq:tempered-weight}.  The difference has operator norm at most
\begin{equation}
 C a(x)\|A\|(1+r)^s|t|(1+|t|)^{4s}.
 \label{eq:difference-core}
\end{equation}
For $R\geq C_*(1+r)$, with a fixed geometric constant $C_*$, it has
an approximation supported in $B_{r+R}(x)$
with error at most
\begin{equation}
 C_Da(x)\|A\|(1+r)^s
        (1+|t|)^{4D+4s+1}(1+R)^{-D}.
 \label{eq:difference-tail}
\end{equation}
Thus the power of the initial radius is independent of the tail order.
If the differing interaction vanishes throughout a ball of radius $d$
about $x$, the bounds for a fixed rapidly local input gain arbitrary
inverse powers of $1+d$.
\end{lemma}

\begin{proof}
Use the exact formula
\[
 \tau_t^K(A)-\tau_t^{K'}(A)
 =i\int_0^t\tau_s^K
       ([K-K',\tau_{t-s}^{K'}(A)])\,ds.
\]
Apply Lemma~\ref{locality:dynamics} to the inside observable,
Lemma~\ref{locality:calculus}(ii) to the commutator, and
Lemma~\ref{locality:dynamics} once more to the outside evolution.
The tempered inequality \eqref{eq:tempered-weight} is precisely what
allows the insertion at $z$ to be charged to $a(x)$.  All time costs
are polynomial and therefore integrable against the specified
filters.  The time-dependent version follows from its identical
Duhamel formula.  Linearity handles a changed input.

We give the additional radius bookkeeping for
\eqref{eq:difference-core}--\eqref{eq:difference-tail}.
For a ball decomposition about $x$, use the weighted sum
$\sum_R(1+R)^p\|A_R\|$.  Lemma~\ref{locality:dynamics} bounds its
evolved value by $C_p(1+|t|)^{4p}$ times its initial value.  Indeed,
for a radius-$r$ input, begin a dyadic decomposition at
$Q=C(1+r+(1+|t|)^4)$.  The core contributes $C\|A\|Q^p$;
the subsequent shells contribute at most
$C_M\|A\|(1+r)^2\sum_{R\geq Q}R^{p-M}$.
Choosing $M>p+2$ bounds this by $C_p\|A\|Q^p$.
The weighted insertion estimate in the proof of
Lemma~\ref{locality:calculus} costs $s=\kappa+2$ powers of the input
radius.  Duhamel at $p=0$ proves \eqref{eq:difference-core}.

For the tail first take $|t|\leq cR^{1/4}$ in the Duhamel integrand,
with $c>0$ a sufficiently small fixed constant; bounded $R$ are
covered by \eqref{eq:difference-core}.  Fix also a small $\varepsilon>0$.
Choose $\varepsilon,c$ and then $C_*$ so that the propagation lemma
applies both from radius $r$ to $r+\varepsilon R$ and from radius
$r+3\varepsilon R$ to $r+R$.  This requires only fixed constants:
if $C$ is the constant in that lemma, take
$\varepsilon<(100C)^{-1}$, $c^4<\varepsilon/(10C)$, and
$C_*>100C/\varepsilon$.
Cut the inner evolved observable at radius $r+\varepsilon R$.  Its remaining
shells have weighted sum of order $s$ at most
$C_M\|A\|(1+r)^2R^{s-M}$, by the short-time bound in
Lemma~\ref{locality:dynamics}; their commutator with the insertion
has the same bound times $Ca(x)$.  In the retained part, discard
insertion terms of radius greater than $\varepsilon R$.  Their arbitrary
radius moments give an error $C_Ma(x)\|A\|R^{-M}$.
The remaining commutator is supported in $B_{r+3\varepsilon R}(x)$ and has
norm at most $Ca(x)\|A\|R^s$.  Evolving it in the outside factor
of Duhamel and using the short-time propagation estimate gives
an approximation on $B_{r+R}(x)$ with error
$C_Ma(x)\|A\|R^{s+2-M}$.
Choose $M$ in each of these three bounds larger than the requested
order plus $s+4$, and integrate over an interval of length at most
$R^{1/4}$.  This gives the stated tail bound for short times.
For $|t|>cR^{1/4}$, use \eqref{eq:difference-core} and
$(1+|t|)^{4D}(1+R)^{-D}\geq c_D$.

Finally suppose an insertion ball of radius $a$ can occur only if
its center $z$ satisfies $d(x,z)+a\geq d$.  If that ball meets an
input shell of radius $R$, then $d\leq R+2a$.  Inserting
$(1+d)^{-M}(1+R+2a)^M$ into the shell summation proves the last
assertion, after increasing the input moments.  This includes changes
supported outside a common comparison region.
\end{proof}

To specify physical compression, let $S:U_q\to K_S$ and
$T:U_q\to K_T$ be two slot analysis isometries.  Write $J_S=\Gamma(S)$
for the vacuum-complement embedding and $\iota_T$ for the embedding of
the physical CAR algebra into the output slots, acting as the identity
on complementary modes.  The map that we estimate is
\begin{equation}
 \mathcal C_{T\leftarrow S}(A)
   =\iota_T(J_S^*AJ_S).
 \label{eq:physical-compression-map}
\end{equation}
When $T=S$ this is compression followed by identity extension; it is
a unital contractive completely positive map.  On physical input
operators it is simply change of frame.

\begin{lemma}[Compression, changes of frame, and smooth functions]
\label{locality:functional-calculus}
The map \eqref{eq:physical-compression-map}, for the frames of
Lemma~\ref{locality:frame}, preserves rapid locality.  An
operator supported in $B_r(x)$ remains localized about that ball,
with polynomial core costs and arbitrary inverse-power tails outside
$B_{Cr}(x)$.  If $A=A^*$ is bounded and rapidly local, and $f$ is
smooth on a neighborhood of its spectrum, then $f(A)$ is rapidly
local.  The constants depend on finitely many local bounds and
derivatives for each requested decay order.
\end{lemma}

\begin{proof}
Put two slot spaces side by side.  If $S,T$ are their analysis
isometries, the partial isometry $TS^*$ has rapidly decaying matrix
entries by Lemma~\ref{locality:frame}.  On their direct sum, the
anti-self-adjoint one-particle operator
\[
 \begin{pmatrix}0&-ST^*\\TS^*&0\end{pmatrix}
\]
rotates the two physical subspaces into each other through angle
$\pi/2$ and acts as zero on their complements.  Its second
quantization is a bounded-strength, rapidly local quadratic
interaction: absolute row sums and every distance moment are bounded
by \eqref{eq:slot-volume}.  Lemma~\ref{locality:dynamics} applies
over this fixed angle.  Conjugate $A\otimes I$ by this rotation and
take the vacuum expectation in the entire first slot copy, retaining
the entire second copy.  On a CAR monomial, the physical components
have moved from $S U_q$ to $T U_q$, while the complementary components
in the first copy are evaluated in their vacuum.  The resulting map
is exactly \eqref{eq:physical-compression-map}, including for odd
monomials; linearity gives the identity for every operator.  Vacuum
expectation is contractive and preserves support in the doubled slot
geometry.  This proves the assertion, and $S=T$ gives re-embedded
physical compression.  In particular no projection onto the output
complementary vacuum is left in the resulting operator.

For the functional-calculus assertion extend $f$ smoothly to a compactly
supported function on $\mathbb R$.  If $A_r$ approximates $A$ locally,
its Hermitian part does so with the same error.  The Fourier formula
and Duhamel's identity give
\[
 \|f(A)-f(A_r)\|
 \leq\left(\int_{\mathbb R}|t|\,|\widehat f(t)|\,dt\right)
       \|A-A_r\|.
\]
Since $f(A_r)$ belongs to the same local algebra, the approximation
bounds follow.  A constant value of $f$ contributes only a scalar
identity, which is local in every ball.
\end{proof}

\subsection{Pair rows and diagonal symbols}

The coherent orbit representations already prove locality of the
unperturbed Hamiltonian and bounded scalar perturbations.  Pinning zeros
will deform the pair coefficients and remove full rotation invariance.
To control those deformations and compare neighboring fluxes, we now
prove a local calculus directly for angular-momentum rows and diagonal
orbital symbols.

Write $Q_b=B_{b-1}$ for the normalized pair annihilator with index
sum $b$ in \eqref{eq:pair-rows}, $1\leq b\leq2q-1$.  Define its
ordered coefficients by
\begin{equation}
 a_b(i)=\frac{(b-2i)\sqrt{\binom qi\binom q{b-i}}}{\sqrt{S_b}},
 \qquad
 S_b=\binom{2q}{b}\frac{b(2q-b)}{2q-1}.
 \label{eq:pair-symbol-normalization}
\end{equation}
In this formula the sum for $S_b$ is over ordered $i$.  With a fixed
choice of annihilator sign,
$Q_b=2^{-1/2}\sum_{i+j=b}a_b(i)c_jc_i
=\sqrt2\sum_{i0$ is tempered with exponent $\kappa$ and
$\mathfrak s_K(a;m)\leq C_KA(m)$ for every integer $K\geq0$.
Then $D_q(a)=\sum_j a(j)c_j^*c_j$ has a physical, neutral, Hermitian
interaction of size $A(m)$.  For each output approximation order $D$,
only the seminorms through
$K_D=\lceil4D+4\kappa+40\rceil$ are needed.  The construction and
the estimate are linear in the symbol, so the same assertion holds
for differences of symbols.
\end{lemma}

\begin{proof}
Insert the analysis map on both sides of the diagonal one-particle
matrix.  The slot matrix elements are
\[
 (L_{a_1}L_{a_2})^{-1/2}\sum_j
   a(j)\xi_{a_1}(j)\xi_{a_2}(j)
                  e^{ij(\phi_2-\phi_1)}.
\]
The two radial windows must overlap, so their widths are comparable
and their radial physical separation is bounded.  Taking $K$
finite differences of the summand and summing by parts gives the
bound $C_K A(m_1)(1+d(x_1,x_2))^{-K}$.  The normalization cancels
the length of the summation interval.  At bounded-width end windows
the same statement follows from finite sums; all involved slots are
inside a bounded polar ball.

Assign the quadratic monomial to $x_1$, and pair it with its adjoint
to obtain Hermitian terms.  Vacuum-compress each assigned term using
\eqref{eq:physical-compression-map}.  Compression fixes the physical
total $D_q(a)$, so the resulting decomposition is still exact and
now each term is physical.  A monomial joining points at distance
$R$ is supported in $B_{1+R}(x_1)$; the compression lemma bounds its
approximation norm of order $D$ by $C_D(1+R)^{D+2}$.
The slot count \eqref{eq:slot-volume}, the tempered ratios, and
$K>D+\kappa+6$ therefore make the assigned absolute sum converge
with the required $D$th moment.  The stated value of $K_D$ more than
covers these losses and the fixed finite differences of the windows.
The grade and reality are preserved by compression.  Every step is
linear before pairing adjoints, which also proves the difference
assertion.
\end{proof}

We record explicitly how the symbol criterion applies after subtracting
an affine function.  Let $\rho(j,m)$ denote meridional distance between
the latitudes of indices $j,m$, and fix a center $x$ at index $m$.
Suppose there are $\beta>0$, $\kappa\geq0$, and constants $C_k$ such
that, for every $k\geq2$ and $j\in[0,q]$,
\begin{equation}
 w_q(j)^k|a^{(k)}(j)|
       \leq C_k\beta(1+\rho(j,m))^\kappa.
 \label{eq:affine-symbol-hypothesis}
\end{equation}
Define $\widetilde a_x(j)=a(j)-a(m)-a'(m)(j-m)$.
Taylor's formula and \eqref{eq:local-scale-ratios} imply
\begin{equation}
 \mathfrak s_K(\widetilde a_x;m_y)
       \leq C_K\beta(1+d(x,y))^{\kappa+8}.
 \label{eq:affine-symbol-size}
\end{equation}
Here is the bound for the two orders not already present in
\eqref{eq:affine-symbol-hypothesis}.  The index excursion between
$m$ and $j$ is at most a constant times
$w_q(j)(1+\rho(j,m))^2$, and the ratio of $w_q(j)$ to the minimum
of $w_q$ on that meridian segment is polynomially bounded by
$(1+\rho(j,m))^2$.  Integrating $a''$ once or twice therefore bounds
$w_q(j)|\widetilde a_x'(j)|$ and $|\widetilde a_x(j)|$ by the
right side of \eqref{eq:affine-symbol-size}.  On each window
the widths are comparable and meridional distance changes by a
bounded amount, proving the displayed seminorm bound.

Lemma~\ref{locality:one-body-symbol} and the weighted commutator
estimate now show that $[D_q(\widetilde a_x),O_x]$ has rapid local
size $C\beta$ whenever $O_x$ has bounded rapid local norms at $x$.
In applications one can take $\beta$ comparable to
$w_q(m)^2|a''(m)|$ and verify
\eqref{eq:affine-symbol-hypothesis} directly.  For an annular sum
commuting with $\mathcal N$ and $\sum_jj c_j^*c_j$, replacing $a$
by $\widetilde a_x$ leaves the commutator unchanged: the removed
operator is a linear combination of those two conserved quantities.

Commutators, evolution, and spectral functions of physical operators
remain physical, and neutral evolution preserves number grade.  The
strictly supported approximants used to measure locality need not
preserve the vacant-complement subspace; physical vacuum compression
is available when a physical representative is required.
The frame may therefore be fixed while proving an operator estimate,
changed when rotating an observable, or chosen compatibly at nearby
fluxes.  Lemmas~\ref{locality:filters} and~\ref{locality:difference}
ensure that the same local estimates remain available after the
spectral transports used next.
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/03-locality.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/04-pinning.tex ====
\section{Pinning zeros and transporting weighted observables}
\label{sec:pinning}

We compare zero modes at fluxes differing by one or three.  Multiplication
by a zero at the south pole gives the algebraic comparison, but is not
unitary.  We construct a unitary comparison whose effect on a local
observable is small away from that pole.  For a convex orbital weight we
also retain a sign in this comparison.  That sign will be used in the first
charge estimate in Section~\ref{sec:charge}.

Fix $d\in\{1,3\}$ and put $t=q-d$.  The identification of orbital labels
$0,\ldots,t$ embeds $U_t$ isometrically into $U_q$; write $\iota_{q,d}$ for
its exterior-algebra extension.  Its image has the last $d$ orbitals empty.
Set
\begin{equation}
 g_{q,d}(j)=\frac12\log\frac{\binom{t}{j}}{\binom qj}
 =\frac12\sum_{r=0}^{d-1}
       \log\frac{q-j-r}{q-r},\qquad 0\le j\le t.
 \label{eq:pinning-log-weight}
\end{equation}
Multiplication of a polynomial by the $d$ south-pole zero factors, one
factor for each particle, is $\iota_{q,d}\exp D_t(g_{q,d})$, up to a scalar
on each number sector.  In particular, the subspace of $Z_{n,q}$ having
these zeros is
\begin{equation}
 \iota_{q,d}\exp D_t(g_{q,d}) Z_{n,t}.
 \label{eq:pinning-kernel-identification}
\end{equation}
Throughout this section, $m$, $u=1+m$, $v=1+q-m$, and
$w=(uv/(q+1))^{1/2}$ use the larger flux $q$.  Replacing $q$ by $t$ in
these size functions changes them by bounded factors.  For every integer
$\ell\ge1$, the smooth extension of Equation~\eqref{eq:pinning-log-weight}
satisfies, for $0\le m\le t$,
\begin{equation}
 g_{q,d}^{(\ell)}(m)
 =-\frac{(\ell-1)!}{2}\sum_{r=0}^{d-1}(q-m-r)^{-\ell},
 \qquad |g_{q,d}^{(\ell)}(m)|\le C_\ell v^{-\ell},
 \qquad -g_{q,d}''(m)\asymp v^{-2}.
 \label{eq:pinning-derivatives}
\end{equation}
Here and below constants can depend on $d$ and on a stated differentiation
or localization order, but not on $q$, $n$, or $m$.

\subsection{A uniformly gapped path}

For $1\le b\le2t-1$, let $B_{t,b}$ be the normalized pair annihilator
whose coefficient at $i0$ such that
\[
 H_{q,d}(s)\ge\gamma_{\mathrm{pin}}(1-P_{q,d}(s))
 \quad(q\ge q_{\mathrm{pin}},\ d\in\{1,3\},\ 0\le s\le1)
\]
on the entire Fock space $\mathcal F_{q-d}$.
\end{lemma}

\begin{proof}
Fix an allowed unperturbed Fock gap $\gamma>0$.  We compare columns of
annihilators, rather than Hamiltonians.  This avoids a factor equal to the
number of particles.

Choose a smooth function $\ell_B(x)$ on $x\ge1$, constant for $x\le B$,
equal to $\log x$ for $x\ge2B$, and with
$|\ell_B^{(k)}(x)|\le C_k(B+x)^{-k}$ for $k\ge1$.  Replace each logarithm
$\log(q-j-r)$ in Equation~\eqref{eq:pinning-log-weight} by
$\ell_B(q-j-r)$, retaining its constant denominator term, and denote the
result by $\bar g$.  Let $\bar B_b(s)$ be the corresponding normalized
rows.  At $m=b/2$, the pair-row moment bounds of
Lemma~\ref{locality:row-symbols} imply
\begin{equation}
 \|\bar B_b(s)-B_{t,b}\|
 \le C\sqrt w\,\frac{w^2}{(v+B)^2}.
 \label{eq:pinning-rounded-row-error}
\end{equation}
Here is the normalization detail in this application.  Subtract the affine
Taylor polynomial of $\bar g$ at $m$ from each of its two arguments.  The
subtracted contribution is constant on $i+j=b$ and cancels in row
normalization.  Write $z=|i-m|/w$.  Taylor's formula, the derivative bounds
on $\ell_B$, and $w^2\le v$ give a bound
$Cw^2(v+B)^{-2}(1+z)^K$ for the remaining exponent; exponentiating costs
at most another fixed power of $1+z$.  To check this also outside
$|i-m|\le(v+B)/2$, observe that this exterior region has
$z\ge c\sqrt v$ whenever $v\ge B$, whereas logarithmic differences are
bounded by $C\log(1+v/B)$.  If $vc v$, the factor in
Equation~\eqref{eq:pinning-profile-factor} is at most $C v^{d/2}$,
whereas $|z|/w\ge c\sqrt v$.  The Gaussian tail therefore pays this
factor and every required inverse power of $w$.

To control normalization differences, first retain a smooth central
cutoff supported in $|z|\le c\min(u,v)$ and equal to one on a smaller
such interval.  Use the smooth log-gamma expression for the undeformed
row before normalization, and sum its square times $E_s^2$ and this
cutoff over all fixed integers $i$.  This is a smooth function of real
$m$, bounded below by $c w^3$ after extracting the common midpoint
binomial factor: the $O(w)$ indices with $|i-m|\asymp w$ contribute
$\asymp w^2$ each.  Its derivative of order $k$ is at most
$C_k w^{3-k}$, by the Gaussian moment bounds.  The discarded tail is
$O_D(w^{3-D})$ for every $D$, also after any fixed finite difference:
bound that difference by its finitely many values at adjacent centers,
where the scales are comparable.  The chain rule for the retained
positive normalization, followed by this tail estimate, proves the
full finite-difference estimates for the exactly normalized rows.
For bounded $w$ the normalization is bounded above and below directly.
Thus no derivative of a moving-endpoint sum is being assumed.
Lemma~\ref{locality:row-symbols} now proves that $H_{q,d}(s)$ is a rapid
interaction of bounded strength.

\emph{Flux differences.}
Use common windows for fluxes a bounded distance apart, as in
Lemma~\ref{locality:common-frames}.  With orbital labels fixed from the
north, their Hamiltonian interactions differ by size $C/v$.  Indeed
\[
 \log\binom{Q+1}{j}-\log\binom Qj
     =\log(Q+1)-\log(Q+1-j).
\]
For the path profiles, after canceling their common midpoint values,
the corresponding ratio is exactly
\[
 \left(1-\frac{z^2}{(t+1-m)^2}\right)^{-(1-s)/2}
 \left(1-\frac{z^2}{(q+1-m)^2}\right)^{-s/2}.
\]
Its difference from one has size $Cw^2/v^2\le C/v$ in the row-symbol
bounds.  The preceding central-cutoff normalization
argument, applied to the difference of the two profiles, retains this
extra factor in every finite-difference bound.  In using that argument,
the factor $w^2/v^2$ is retained throughout $|z|\le cv$, including the
part discarded by the smaller central cutoff.  Only on $|z|>cv$ is it
recovered from tail powers, using
$v^2/w^2\le C(|z|/w)^2$.  This distinction is necessary when $v$ is
much larger than $u$.  If an individual pair
coefficient is present only at the larger flux, its index excursion
satisfies $|i-m|\ge v-O(1)$.  For large $v$ its Gaussian tail pays both
the inverse of $w^2/v^2$ and every required symbol seminorm; for bounded
$v$ it is a bounded-scale estimate.  The entirely new rows lie in a
bounded south zone, where $1/v$ is bounded below.  This proves the
claimed common-frame interaction difference, including the changed
endpoint supports.  Repeating the one-flux identity handles any fixed
bounded change in flux.

\emph{Affine subtraction.}
For a smooth real
function $a$ on the orbital interval, set
$X_a=[H_{q,d}(s),D_t(a)]$.  Decompose the Hamiltonian into annuli by a
sum-of-squares partition $\sum_k\vartheta_k(b)^2=1$, of row-index width
comparable to $w_k$, and then use its Fourier wavepackets.  If $m_k$ is
the annulus center, put
\[
 a_k^\circ(j)=a(j)-a(m_k)-a'(m_k)(j-m_k).
\]
The affine contribution commutes with the annular sum, because every row
has a fixed pair index sum.  More explicitly, if $C_x$ is its Fourier
wavepacket and $C_x(a)$ is the same wavepacket with row coefficients
multiplied by $a_k^\circ(i)+a_k^\circ(j)$, then
\begin{equation}
 X_a=\int X_{a,x}\,d\mu(x),\qquad
 X_{a,x}=C_x^*C_x(a)-C_x(a)^*C_x.
 \label{eq:pinning-source-decomposition}
\end{equation}
The center measure has bounded mass in unit balls.  The wavepacket
normalization is $w_k^{-1/2}$ and its circle measure is
$w_k\,d\phi/(2\pi)$, so Fourier orthogonality proves
Equation~\eqref{eq:pinning-source-decomposition} exactly.
The weighted row bounds give size $Cw^2|a''(m)|$ whenever
Equation~\eqref{eq:affine-symbol-hypothesis} holds with
$\beta=w^2|a''(m)|$.  For $a=g_{q,d}$ this size is $C\alpha_q(m)$:
for every $k\ge2$,
\[
 w(j)^k|g_{q,d}^{(k)}(j)|
 \le C_k\frac{w(j)^2}{v(j)^2}
                \left(\frac{w(j)}{v(j)}\right)^{k-2}
 \le C_k\alpha_q(j),
\]
and $\alpha_q$ has tempered ratio exponent four, independently of $k$.
Upon changing $q$ by a bounded amount, the source interaction changes by
size $C\alpha_q/v$: differences of $g''$ gain $v^{-1}$, and the row
wavepackets change by $C/v$.  These assertions include every fixed rapid
localization order, since the estimates just used also apply after the
finite differences used in Fourier localization.

\emph{Spectral filter.}
We use the spectral-filter construction of quasi-adiabatic
continuation~\cite{HW,BMNS}, with locality supplied by Section~\ref{sec:locality}.
Choose a smooth odd real function $\eta$ that is zero on
$[-\gamma_{\mathrm{pin}}/2,\gamma_{\mathrm{pin}}/2]$ and equals
$\operatorname{sgn}(\omega)$ for $|\omega|\ge\gamma_{\mathrm{pin}}$.
Let $r(\omega)=\eta(\omega)/\omega$, with value zero near zero, and use
the spectral calculus of $\operatorname{ad}_{H}(A)=[H,A]$ to set
\[
 Y_{q,d}(s)=r(\operatorname{ad}_{H_{q,d}(s)})X_g.
\]
The function $r$ and each of its derivatives belong to $L^2(\mathbb R)$.
Its inverse Fourier transform therefore has every absolute polynomial
moment: use Cauchy--Schwarz on $|t|\le1$, and the $L^2$ norm of a
sufficiently high derivative of $r$ on $|t|>1$.  Lemma~\ref{locality:filters}
and Equation~\eqref{eq:pinning-source-decomposition} give rapid locality
with size $\alpha_q$.

The spectral multiplier of $D_t(g)$ is $\eta(\omega)$, so $Y^*=-Y$.
If $P=P_{q,d}(s)$ and $Q=1-P$, the gap gives
\[
 YP=QD_t(g)P,\qquad PY=-PD_t(g)Q,\qquad PYP=0.
\]
Differentiating Equation~\eqref{eq:pinning-path-kernel} gives
$\partial_sP=QD_t(g)P+PD_t(g)Q=[Y,P]$.  The unitary solution therefore
transports $P$.  Both $H_{q,d}(s)$ and $D_t(g)$ commute with number and
with $\sum_jj c_j^*c_j$, proving the two symmetries.

Finally compare two fluxes in common frames.  The change of $X_g$ has
size $\alpha_q/v$.  The Hamiltonian change has size $1/v$.  Inserting
the latter into the time evolution in the filter by Duhamel's formula
costs $\alpha_q/v$, by Lemma~\ref{locality:difference}.  All filters are
the same for every flux and every path parameter.  This proves the
difference assertion.
\end{proof}

The isometry used subsequently is
$\mathcal U_{q,d}=\iota_{q,d}U_{q,d}(1)$ restricted to $Z_{n,q-d}$.
By Equation~\eqref{eq:pinning-kernel-identification}, its image is exactly
the subspace with $d$ south-pole zeros.

\begin{corollary}[A fixed observable in the northern region]
\label{pinning:northern-observable}
Let $O$ be a neutral operator of norm at most one supported on $B_r(x)$,
where $r\ge2$ and $x$ has latitude index $m$.  There are fixed constants
$b,C_*$, and $c=8$, independent of every tail order below, such that,
if $q>Cr^b(1+m)$, the operator
\[
 \Delta_{q,d}(O)=U_{q,d}(1)^*OU_{q,d}(1)-O
\]
satisfies
\begin{align}
 \|\Delta_{q,d}(O)\|&\le C r^c\frac{1+m}{q^2},\label{eq:pinning-northern-norm}\\
 \inf_{A\in\mathfrak A(B_{r+R}(x))}\|\Delta_{q,d}(O)-A\|
 &\le C_D r^c\frac{1+m}{q^2}(1+R)^{-D}
 \quad(R\ge C_*(1+r)).\label{eq:pinning-northern-tail}
\end{align}
In particular, it admits a decomposition
\begin{equation}
 \Delta_{q,d}(O)=\sum_{\nu\ge0}D_\nu,\qquad
 D_\nu\in\mathfrak A(B_{C_*2^\nu r}(x)),\qquad
 \|D_\nu\|\le C_D r^c\frac{1+m}{q^2}2^{-\nu D}.
 \label{eq:pinning-northern-shells}
\end{equation}
For $|q-q'|\le3$, with the same $d$ and identical northern slots,
$\Delta_{q,d}(O)-\Delta_{q',d}(O)$ obeys all these estimates with
$q^{-2}$ replaced by $q^{-3}$.  In particular, for every fixed $B$,
the shell decomposition can be chosen so that
\begin{equation}
 \sum_{\nu\ge0}(C_*2^\nu r)^B\|D_\nu\|
 \le C_B r^{B+c}\frac{1+m}{q^2},
 \label{eq:pinning-northern-moment}
\end{equation}
and the same moment estimate holds for the flux difference with $q^{-3}$.
\end{corollary}

\begin{proof}
At the center the cutoff gives $v\asymp q$, so
$\alpha_q(m)\le C(1+m)/q^2$ and
$\alpha_q(m)/v(m)\le C(1+m)/q^3$.
Use the supported-observable bounds in
Lemma~\ref{locality:difference}, first for the self-adjoint path
generators $iY_{q,d}(s)$ and $0$.  Since
$\alpha_q=u/((q+1)v)$, its tempered ratio exponent can be taken to be
four: each of $u$ and $v^{-1}$ costs at most two powers of distance.
Equations~\eqref{eq:difference-core}--\eqref{eq:difference-tail} give
a core factor $r^6$ and every tail order beyond radius $Cr$.
Apply the same bounds directly to $iY_{q,d}(s)$ and
$iY_{q',d}(s)$ for the comparison.  Their difference has size
$\alpha_q/v=u/((q+1)v^2)$, whose ratio exponent is at most six, and
therefore costs $r^8$.  Thus $c=8$ suffices for both assertions.
Choose $b$ large enough that the initial ball uses identical northern
slots.  The common-frame generator comparison already includes the
padded south modes, so this same bound covers the endpoint changes.
Take the ball approximations by the normalized partial trace onto the
corresponding slot algebra.  This contraction has error at most twice
the best approximation error and preserves number grade.  Differences
at radii $C_*2^\nu r$ give one decomposition satisfying
Equation~\eqref{eq:pinning-northern-shells} for all tail orders,
after increasing $C_*$ by one fixed factor.  Choose the tail order
greater than $B+1$ and sum
the resulting geometric series to obtain
Equation~\eqref{eq:pinning-northern-moment}.
\end{proof}

\subsection{Convex weighted observables}

For fixed $00$.  The common wavepacket decomposition gives
\begin{equation}
 F_x=-\rho_xG_x+E_x,
 \label{eq:pinning-local-proportionality}
\end{equation}
where $G_x$ has size $C\alpha_q(m)$ and $E_x$ has size
$C\beta_q(m)/w(m)$, at every fixed rapid order.  We verify the improved
error explicitly.  The function $a=f+\rho_x g$ has $a''(m)=0$.
Subtract its affine Taylor polynomial, as in
Equation~\eqref{eq:pinning-source-decomposition}.  In a row window of
width $w$, the third-order remainder is bounded, with all scaled
derivatives and polynomially weighted tails, by
\[
 Cw^3\left(\frac{f''(m)}{L+m}+
             \frac{\rho_x(-g''(m))}{v}\right)
 \le C\frac{\beta_q(m)}{w}.
\]
The last inequality uses $w^2\le u,v$ and $u\le L+m$.
For windows outside this central region, derivative ratios have
polynomial growth and the row tails absorb those powers.  The weighted
row estimate applied to $C_x(a)$ proves the claimed source error; the
same time filter preserves it.  This proves
Equation~\eqref{eq:pinning-local-proportionality} without making any
assertion about the sign of individual unfiltered row pieces.

Write $R_g=\int G_x\,d\mu(x)$, $R_f=\int F_x\,d\mu(x)$ and
$T=\int\sqrt{\rho_x}G_x\,d\mu(x)$.  Each integral is finite at fixed
flux.  From Equation~\eqref{eq:pinning-raising}, a reversed product with
a raising operator on the left vanishes in the compression, giving
$PG_x^*G_yP=P[G_x^*,G_y]P$.  Expanding
Equation~\eqref{eq:pinning-local-proportionality} therefore gives the
exact identity
\begin{align}
 P(R_g^*R_f+R_f^*R_g)P
 ={}&-2PT^*TP \notag\\
 &-\iint(\sqrt{\rho_x}-\sqrt{\rho_y})^2
          P[G_x^*,G_y]P\,d\mu(x)d\mu(y) \notag\\
 &+\iint P\bigl([G_x^*,E_y]+[E_x^*,G_y]\bigr)P
            \,d\mu(x)d\mu(y).
 \label{eq:pinning-negative-square}
\end{align}

We give the norm bounds for the last two integrals, since their spatial
summability is essential.  If $D=\operatorname{dist}(x,y)$, rapid
localization and the even parity of the pieces imply, for every fixed
$M$,
\[
 \|[G_x^*,G_y]\|\le C_M\alpha_x\alpha_y(1+D)^{-M},
 \qquad
 \|[G_x^*,E_y]\|\le
        C_M\alpha_x\frac{\beta_y}{w_y}(1+D)^{-M}.
\]
Here subscripts denote evaluation at the corresponding center.
The logarithmic derivative of $\rho$ is bounded by
$C((L+m)^{-1}+v^{-1})$.  Using radial resolution $w$ and the polynomial
ratio bounds of Section~\ref{sec:locality} consequently gives a fixed
exponent $k$ such that
\[
 |\sqrt{\rho_x}-\sqrt{\rho_y}|
 \le C\sqrt{\rho_x}\,\frac{D}{w_x}(1+D)^k.
\]
This bound follows by integrating the logarithmic derivative along the
meridian between the two latitudes when the distance is at most a small
multiple of $w_x$; outside that region its
right side dominates the polynomial ratio bound after increasing $k$.
Since $\rho_x\alpha_x^2\asymp A_x$, choose $M$ above all these
polynomial exponents plus the two-dimensional volume exponent.  Summing
first in $y$ bounds the second line of
Equation~\eqref{eq:pinning-negative-square} by
$C\int A_x/w_x^2\,d\mu(x)$, and its third line by
$C\int A_x/w_x\,d\mu(x)$.  Since $w\ge1$ and $-2PT^*TP\le0$,
Equation~\eqref{eq:pinning-compressed-derivative} is at most
$C\int_0^t A_q(m)/w(m)\,dm$ in quadratic form.  Conjugate back by
$U_{q,d}(s)$ and integrate over $0\le s\le1$ to obtain
Equation~\eqref{eq:pinning-one-sided}.
\end{proof}

\begin{corollary}[Cost of changing a calibration state]
\label{pinning:calibration-cost}
Let $q^0=3\lfloor q/3\rfloor$ and $r=q-q^0\in\{0,1,2\}$.
Consider the interaction $K_{q,3}(f)$ on $\mathcal F_{q-3}$ and its
common-frame comparison with $K_{q^0,3}(f)$.  Embed a unit vector
$\xi\in Z_{n,q^0-3}$ by the common orbital labels, or instead grow it
to flux $q-3$ using the $r$ isometries $\mathcal U_{Q,1}$.  The following
costs are each bounded by
\begin{equation}
 C\int_0^{q-3}\frac{A_q(m)}{v(m)}\,dm:
 \label{eq:pinning-calibration-cost}
\end{equation}
the change of interaction in the embedded state, and the change of its
expectation between the embedded and grown states.  The same bounds
hold after selecting any common collection of source-center pieces,
and after adding their absolute bounds.  In particular the statement
applies to the filled vector at flux $q^0-3$ and to separate northern
and southern portions of the interaction.
\end{corollary}

\begin{proof}
The first assertion is the integrated interaction difference in
Proposition~\ref{pinning:weighted-transport}; vacant extra modes are
compressed after comparison in the common frame.  For one growth step,
differentiate the expectation of the interaction along $U_{Q,1}(s)$.
The generator has size $\alpha_Q\le C/v$, while the observable
interaction has size $A_q$.  The weighted commutator calculus bounds
the derivative in operator norm by $C\int A_q/v$.  Finite-parameter
conjugation preserves this bound.  There are at most two growth steps,
and all size functions for their fluxes are comparable.  Applying this
argument to each selected source piece before summing proves the last
assertion, including comparisons with the directly embedded lower-flux
reference on common northern slots.
\end{proof}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/04-pinning.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/05-flags.tex ====
\section{Reading zero modes by orthogonal branches}
\label{sec:flags}

We now turn the pinning maps into coordinates on every zero space.  At
each step we either record a hole or remove an electron.  The coordinates
are orthogonal, although the holes themselves have not been assigned
positions.  The purpose of the construction is quantitative: a local
observable near the north pole can change substantially only when the
coordinates record a hole sufficiently far along the descent toward that
pole.  We prove this assertion as an operator inequality, and then use
rotation averaging to obtain a uniform comparison in the one-hole spaces.

Throughout this section, all lower bounds on the flux are absorbed into
one fixed integer $q_{\mathrm{stop}}\geq 4$.  We stop every descent when
$q\leq q_{\mathrm{stop}}$.  Constants may depend on this stopping value,
on the uniform constants of the local calculus, and on a fixed decay
exponent.  They never depend on $q$ or on the particle number.

\subsection{The algebraic decomposition}

Let $P_q$ be the orthogonal projection onto the Fock zero space
$Z_q=\bigoplus_n Z_{n,q}$.  Write $n_q=c_q^*c_q$ for occupation of the
south-pole orbital.  In a nonzero sector $Z_{n,q}$ set
\begin{equation}
 h=q+3-3n.
 \label{eq:flags-hole-count}
\end{equation}
For $n\geq 1$, divisibility by the cube of every pair determinant gives
\begin{equation}
 Z_{n,q}=\left\{
  \prod_{iq_{\mathrm{stop}}$, define
\[
 \mathcal F_{n,q}=\ker(c_q|_{Z_{n,q}}),\qquad
 \mathcal E_{n,q}=Z_{n,q}\ominus\mathcal F_{n,q}.
\]
Then $\mathcal F_{n,q}=Z_{n,q}^{(1)}$.  Contraction by $c_q$ maps
$\mathcal E_{n,q}$ bijectively onto $Z_{n-1,q}^{(3)}$.  If $\mathsf T_q$ denotes
the polar part of $c_q|_{Z_q}$, the maps
\[
 J_{q,F}=\mathcal U_{q,1},\qquad
 J_{q,E}=\mathsf T_q^*\mathcal U_{q,3}
\]
are isometries onto the two orthogonal branches.  Consequently,
\begin{equation}
 Z_{n,q}\simeq Z_{n,q-1}\oplus Z_{n-1,q-3}.
 \label{eq:flags-two-branches}
\end{equation}
The second summand is absent for $n=0$.  In the first summand $h$ decreases
by one; in the second it is unchanged.
\end{lemma}

\begin{proof}
The absence of orbital $q$ is equivalent to divisibility by the north
spinor coordinate in every variable, which is precisely one pin at the
south pole.  Evaluation of one electron at that pole leaves the three
pair zeros attached to every remaining electron.  This proves that the
range of $c_q$ lies in $Z_{n-1,q}^{(3)}$.

To prove surjectivity, use the affine coordinate in which the south-pole
coefficient is the coefficient of the highest power.  After factoring
the Laughlin polynomial, the map on symmetric polynomials extracts the
coefficient of $z_n^h$.  A basis of its target consists of monomial
symmetric functions indexed by partitions with at most $n-1$ parts, all
at most $h$.  Append a part equal to $h$ and take the corresponding
monomial symmetric function in $n$ variables, with each distinct monomial
included once.  Extraction returns the original monomial symmetric function.
This proves surjectivity, including $h=0$.  Restriction to the orthogonal
complement of the kernel is therefore bijective, and its polar part is
unitary onto the range.  Composing with the endpoint transports gives
the stated isometries.  The assertions about $h$ follow directly from
\eqref{eq:flags-hole-count}.
\end{proof}

Figure~\ref{fig:flags-branches} displays the changes in flux, particle
number, and hole number in the two branches.

\begin{figure}[tb]
\centering
\begin{tikzpicture}[every node/.style={align=center},>=stealth]
 \node (root) at (0,0) {$Z_{n,q}$\\$h=q+3-3n$};
 \node (left) at (-3.1,-2) {$Z_{n,q-1}$\\$h-1$ holes};
 \node (right) at (3.1,-2) {$Z_{n-1,q-3}$\\$h$ holes};
 \draw[->] (root) -- (left);
 \draw[->] (root) -- (right);
 \node[anchor=east] at (-2.1,-0.8) {$F$: record a flag\\at $q$};
 \node[anchor=west] at (2.1,-0.8) {$E$: remove\\one electron};
\end{tikzpicture}
\caption{One step of the orthogonal decomposition.  The displayed spaces
are coordinate spaces for the two branches.  A flag is a record of an
$F$ step; it is not a measured position of a quasihole.}
\label{fig:flags-branches}
\end{figure}

The remaining issue in this decomposition is analytic.  A polar
decomposition need not be local when its nonzero singular values approach
zero.  The next lemma rules out that problem uniformly in the flux.

\subsection{A local polar map}

\begin{lemma}[Occupation gap and local representatives]
\label{lem:flags-polar}
There is $\varepsilon>0$, independent of $q$ and of the number sector,
such that
\begin{equation}
 P_q n_qP_q\geq\varepsilon P_{\mathcal E_q},
 \qquad \mathcal E_q=\bigoplus_n\mathcal E_{n,q}.
 \label{eq:flags-occupation-gap}
\end{equation}
The polar map $\mathsf T_q$ and the projections onto the two branches, restricted
to $Z_q$, have bounded physical representatives rapidly localized at the
south pole.  The representatives preserve $Z_q$ and its orthogonal
complement.  They have respectively the number and index grades of $c_q$
and of the identity.
\end{lemma}

\begin{proof}
We first prove the singular-value bound, keeping track of the restriction
of pair rows.  The normalized rows are
\[
 B_{q,b}=\sum_{\substack{0\leq i0$ be the uniform
endpoint gap from Lemma~\ref{pinning:uniform-gap}.  By
\eqref{eq:flags-retained-mass}, the Hamiltonian compressed to the
south-empty sector has a gap at least $\delta/4$ above
$\bigoplus_n\mathcal F_{n,q}$.

The CAR give the exact identity
\[
 \sum_b[B_{q,b},n_q]^*[B_{q,b},n_q]
 =n_q\sum_{k=1}^{q}p_{q,k}n_{q-k}.
\]
The coefficient sum is
\[
 \sum_{k=1}^{q}p_{q,k}=\frac{4q-2}{q+1}<4.
\]
One way to see this is to write
$p_{q,k}=k\binom{2q-k-1}{q-1}/\binom{2q-2}{q-1}$ and apply the
hockey-stick identity twice.  For $\psi\in Z_q$, the two top singleton
rows also imply $c_{q-1}c_q\psi=c_{q-2}c_q\psi=0$.  Hence
\begin{equation}
 \sum_b\|[B_{q,b},n_q]\psi\|^2
 \leq2\|c_q\psi\|^2.
 \label{eq:flags-emptying-energy}
\end{equation}
Let $Q=1-n_q$ and let $P_F$ project onto
$\bigoplus_n\mathcal F_{n,q}$.  Since
$B_{q,b}\psi=0$, the restricted gap gives
\[
 \frac\delta4\|Q\psi-P_F\psi\|^2
 \leq\sum_b\|B_{q,b}Q\psi\|^2
 \leq2\|c_q\psi\|^2.
\]
The occupied and vacant components are orthogonal, so
\[
 \|\psi-P_F\psi\|^2
 \leq(1+8/\delta)\|c_q\psi\|^2.
\]
Thus \eqref{eq:flags-occupation-gap} holds with
$\varepsilon=\delta/(\delta+8)$.

To construct local representatives, take a real smooth frequency cutoff
$\chi$ equal to one near zero and supported strictly inside the uniform
unperturbed gap.  Apply its time filter to $c_q$:
\[
 A_q=\int_{\mathbb R}\widehat\chi(t)
          e^{itH_q}c_qe^{-itH_q}\,dt,
\]
with the Fourier normalization incorporated into $\widehat\chi$.
Contraction preserves zero modes.  The cutoff therefore gives
$A_qP_q=c_qP_q$ and $[A_q,P_q]=0$.  The local calculus makes $A_q$
rapidly localized at the south pole, with uniform constants.  Choose a
smooth function $\eta$ on a fixed interval containing the spectrum of
$A_q^*A_q$, equal to zero near zero and to $x^{-1/2}$ for
$x\geq\varepsilon$.  Then
\[
 \widetilde{\mathsf T}_q=A_q\eta(A_q^*A_q)
\]
is rapidly localized by smooth functional calculus and agrees with
$\mathsf T_q$ on $Z_q$.  Its products
$\widetilde{\mathsf T}_q^*\widetilde{\mathsf T}_q$ and
$1-\widetilde{\mathsf T}_q^*\widetilde{\mathsf T}_q$ represent the branch projections on
$Z_q$.  The construction preserves number and index grades because
$H_q$ preserves both and $A_q^*A_q$ has grade zero.  It also preserves
$P_q$ in both directions.  No claim about a spectral gap of
$A_q^*A_q$ outside $Z_q$ is needed: $\eta$ is smooth on that entire
spectral interval.
\end{proof}

\subsection{One-step comparisons}

Write
\[
 K_{q,d}(f)=\mathcal U_{q,d}^*D_q(f)\mathcal U_{q,d}
              -D_{q-d}(f)
\]
on the corresponding smaller zero space.  Proposition~
\ref{pinning:weighted-transport} supplies localized representatives for
these operators, with the stated size and flux-comparison estimates.

\begin{proposition}[Weighted observable at one branch]
\label{prop:flags-weighted-step}
Fix $p\in(0,2)$, $L\geq2$, and $f(j)=f_{L,p}(j)$.  In the orthogonal
coordinates \eqref{eq:flags-two-branches},
\begin{equation}
 \begin{split}
 (J_{q,F}\oplus J_{q,E})^*D_q(f)(J_{q,F}\oplus J_{q,E})
  ={}&\begin{pmatrix}
   D_{q-1}(f)+K_{q,1}(f)&0\\
   0&D_{q-3}(f)+f(q)+K_{q,3}(f)
  \end{pmatrix}+R_q(f),\\
 &\|R_q(f)\|\leq C_p\frac{f(q)}{(L+q)^2}.
 \end{split}
 \label{eq:flags-weighted-step}
\end{equation}
The notation in the left side means the unitary whose columns are the
two branch isometries.  The bound includes the off-diagonal blocks.
For affine $f$ the remainder is zero and $K_{q,d}(f)=0$.
\end{proposition}

\begin{proof}
The $F$ block is the definition of $K_{q,1}(f)$.  For an affine sequence,
the grades of $\mathsf T_q$ give
\[
 D_q(f)\mathsf T_q=\mathsf T_qD_q(f)-f(q)\mathsf T_q
\]
on the zero spaces, and both branch projections commute with $D_q(f)$.
The endpoint transports commute with the number and index operators.
This proves the affine assertion, including the scalar $f(q)$ in $E$.

For a general $f$, subtract its affine Taylor polynomial at $q$.
The remainder $a(j)=f(j)-f(q)-f'(q)(j-q)$ satisfies
\[
 |a(j)|\leq C_p\frac{f(q)}{(L+q)^2}
                   (1+q-j)^{p+4},\qquad 0\leq j\leq q.
\]
The same polynomial bounds hold for the finite differences needed for
localization.  In the south-pole frame this says that $D_q(a)$ has
one-body interaction size at most $C_pf(q)/(L+q)^2$, times a fixed
polynomial in distance from the pole.  Commuting it with any of the
rapidly localized representatives in Lemma~\ref{lem:flags-polar} thus
has norm at most that size: decompose the representative into ball
shells and sum its arbitrarily high inverse-power tails against this
polynomial.  In the $E$ block use
$\mathsf T_q[D_q(a),\mathsf T_q^*]$; for the off-diagonal blocks use the commutator with
a branch projection.  Compression and the endpoint isometries do not
increase these norms.  This proves \eqref{eq:flags-weighted-step}.
\end{proof}

For a general observable supported far to the north, the polar map
contributes an even smaller error, because its representative is
localized at the opposite pole.  We record the precise form used below.

\begin{lemma}[Northern comparison]
\label{lem:flags-northern-step}
There are fixed $c\geq0$ and $b_0\geq1$ with the following property.
Let $O=O^*$ be neutral, of norm at most one, supported on a slot ball of
radius $r\geq2$ centered at latitude index $m$, and put $u=1+m$.
If $q>C r^{b_0}u$, identify all northern slots in the fluxes being
compared.  The two diagonal branch blocks of $O$ equal
\[
 O+\mathcal D_{q,1}(O)\quad\hbox{and}\quad
 O+\mathcal D_{q,3}(O)
\]
up to a matrix remainder of norm $C_Dq^{-D}$ for every fixed $D$.
Each $\mathcal D_{q,d}(O)$ is neutral and self-adjoint.  If $x$ is its
original center, then, for fixed $c,C_*<\infty$ and every $D>0$,
\begin{equation}
 \begin{split}
 \|\mathcal D_{q,d}(O)\|&\leq Cr^cu/q^2,\\
 \inf_{A_R\in\mathfrak A(B_R(x))}
       \|\mathcal D_{q,d}(O)-A_R\|
  &\leq C_Dr^cu q^{-2}R^{-D}\qquad(R\geq C_*r).
 \end{split}
 \label{eq:flags-northern-size}
\end{equation}
For $|q-q'|\leq2$ and fixed $d$, the difference between these changes,
in common northern slots, obeys the same two estimates with $q^{-2}$
replaced by $q^{-3}$.  The exponent $c$ and core constant $C_*$ are
independent of $D$.
\end{lemma}

\begin{proof}
For $F$, this is Corollary~\ref{pinning:northern-observable}.
Its norm and tail estimates are
Equations~\eqref{eq:pinning-northern-norm} and
\eqref{eq:pinning-northern-tail}; enlarge the fixed core constant to
write the outer ball radius as $R$ instead of $r+R$.
For $E$, commute $O$ through the local representative of $\mathsf T_q$ before
applying that corollary with $d=3$.  The support of $O$ is a distance
comparable with $\sqrt q$ from the south pole when $b_0$ is increased
if necessary.  Rapid locality therefore makes the polar commutator and
the off-branch blocks $O(q^{-D})$ for every $D$.  The same estimate
handles the finitely many trimmed orbitals.  The difference assertion
for the remaining changes is the same-corollary comparison of the
pinning transports at bounded flux difference.
\end{proof}

\subsection{Histories and a linear reference expectation}

Iterate the two branch coordinates until the flux reaches
$q_{\mathrm{stop}}$.  A word $\omega$ records its successive $F$ and
$E$ choices; its terminal number and flux are denoted by $n_\omega$
and $q_\omega$.  The resulting unitary is
\begin{equation}
 \mathcal R_{n,q}:Z_{n,q}\longrightarrow
       \bigoplus_{\omega}Z_{n_\omega,q_\omega}.
 \label{eq:flags-history-map}
\end{equation}
For a fixed readout axis and fixed filters, the maps $J_{q,F}$,
$J_{q,E}$, and $\mathcal R_{n,q}$ are defined on physical Fock spaces
independently of the auxiliary slot frames.  Rebuilding frames outside
the common northern slots changes only the representations used to
prove locality estimates; it does not redefine these maps or their
history coordinates.
An $F$ step taken at flux $b$ records one flag with value $b$.  At a
terminal space we add $q_\omega+3-3n_\omega$ flags, all with value zero.
Let $\mathcal B(\omega)$ be this multiset.  Each word has exactly $h$
flags.  The vacuum follows only $F$ steps, with the same terminal
convention.  We do not resolve the bounded-dimensional terminal space
further.

Fix $a\in(0,2)$.  On the direct sum in
\eqref{eq:flags-history-map}, define the positive diagonal operator
\begin{equation}
 W_m(\omega)=\sum_{b\in\mathcal B(\omega)}
       \min\left\{1,\left(\frac{1+m}{1+b}\right)^a\right\}.
 \label{eq:flags-history-weight}
\end{equation}
Its value is scalar on each terminal summand.  In particular $W_m=0$
on the filled zero space, and $W_m\geq(1+q)^{-a}$ whenever $h>0$.

We next fix the scalar used to center observables.  Put
$q^0=3\lfloor q/3\rfloor$, and let $\Omega_{q^0}$ be the normalized
filled zero mode at that flux.  Embed its one-particle space into $U_q$
by sending orbital $j$ to orbital $j$, and then use the slot embedding
at flux $q$, with the orthogonal complement of the embedded one-particle
space vacant.  Define
\begin{equation}
 \operatorname{ref}_q(O)=
 \langle\Omega_{q^0},O\Omega_{q^0}\rangle
 \label{eq:flags-reference}
\end{equation}
in this padded realization.  This is a positive linear functional of
norm one on the slot algebra.  At $q=q^0$ it is the filled expectation.
For $q^0=0$ the convention is $U_0=\mathbb C$ with its unique normalized
one-electron filled vector.  Outside the common northern region only
linearity, the norm-one bound, and the exact filled expectation at
$q=q^0$ will be used.

\begin{lemma}[Compatibility of reference expectations]
\label{lem:flags-reference-compatibility}
Let two fluxes $q,q'$ use common northern slots, and let
$s\leq\min(q,q')$.  Embed a fixed vector of $\mathcal F_s$ into either
system by the same orbital labels, with the orthogonal complement of
the embedded one-particle space vacant.  The two states have identical
expectations on the algebra of common northern slots.  In particular,
references at fluxes with the same nearest lower filled flux agree on
that algebra.
\end{lemma}

\begin{proof}
Expand a slot observable into normally ordered CAR monomials.  Its
expectation in an embedded state is a linear combination of the state's
normally ordered orbital correlations.  The coefficients use only the
analysis-frame entries of the slots occurring in the monomial.  Entries
at orbital labels above $s$ contribute zero, because those orbitals are
vacant.  At labels at most $s$, the common northern frame entries are
identical.  Thus every monomial has the same expectation in both
realizations.  This also proves the assertion after physical compression
of the slot observable, which leaves these matrix elements unchanged.
\end{proof}

The parent and its $E$ child use filled states at $q^0$ and $q^0-3$,
respectively.  Their expectations are related by the filled $E$ step.
By contrast, the references at $q-3$ and $q^0-3$ use the same filled
state and agree on common northern slots by
Lemma~\ref{lem:flags-reference-compatibility}.  For a rapidly localized
operator, apply this exact identity to a truncation supported in those
slots; the remaining difference is at most twice the truncation error.
The common-frame construction permits these conventions for every
frame entering a comparison, with uniform estimates.

\begin{theorem}[Local observables in history coordinates]
\label{thm:flags-local-readout}
For every fixed $a\in(0,2)$ there are $B,C<\infty$ such that the
following holds uniformly in $n,q$ and in the allowed slot frames.
Let $O=O^*$ be a neutral slot observable of norm at most one, supported
in a ball of radius $r\geq2$ with center of latitude index $m$.  Its
compression to $Z_{n,q}$ satisfies
\begin{equation}
 \pm\left(
 \mathcal R_{n,q}P_{n,q}OP_{n,q}\mathcal R_{n,q}^*
       -\operatorname{ref}_q(O)I\right)
 \leq C r^B W_m.
 \label{eq:flags-local-readout}
\end{equation}
Here $P_{n,q}$ denotes the zero-space projection in the number-$n$
sector.  More generally, for a convergent decomposition
$A=\sum_\nu A_\nu$ into neutral self-adjoint observables supported in
balls about the same center, of respective radii $r_\nu\geq2$, the
right side can be replaced by
$CW_m\sum_\nu r_\nu^B\|A_\nu\|$.
\end{theorem}

\begin{proof}
The proof keeps $O$ unchanged while descending through common northern
slots.  Only the small changes caused by each transport are estimated
inductively.  This distinction prevents an increasing radius from
being assigned repeatedly to the original observable.

We first describe the centered one-step identities under the northern
condition of Lemma~\ref{lem:flags-northern-step}.  For an $E$ step
put $t=q-3$, so $t^0=q^0-3$, and write $R_{q,E}(O)$ for its uncentered
polar remainder in Lemma~\ref{lem:flags-northern-step}.  The filled
$E$ step at $q^0$, together with compatibility of the northern
references, gives the exact scalar identity
\[
 \operatorname{ref}_q(O)-\operatorname{ref}_t(O)
 =\operatorname{ref}_{t^0}\bigl(
     \mathcal D_{q^0,3}(O)+R_{q^0,E}(O)\bigr).
\]
Thus the parent-to-child reference change is determined by a filled
step.  Define
\[
 \begin{split}
 R_{q,E}'(O)&=R_{q,E}(O)
           -\operatorname{ref}_{t^0}(R_{q^0,E}(O))I,\\
 s_q(O)&=\operatorname{ref}_t(\mathcal D_{q,3}(O))
         -\operatorname{ref}_{t^0}(\mathcal D_{q^0,3}(O)).
 \end{split}
\]
The references in the second line use the same filled state.
Lemma~\ref{lem:flags-reference-compatibility}, first on common northern
slots and then on rapid tails by norm approximation, therefore gives
\[
 s_q(O)=\operatorname{ref}_{t^0}\bigl(
     \mathcal D_{q,3}(O)-\mathcal D_{q^0,3}(O)\bigr)
     +O(q^{-D}).
\]
The bounded-flux comparison in Lemma~\ref{lem:flags-northern-step}
supplies the additional factor $q^{-1}$.  Substituting these scalar
identities into the branch comparison yields
\begin{equation}
 \begin{split}
 J_{q,E}^*(O-\operatorname{ref}_q(O))J_{q,E}
 ={}&(O-\operatorname{ref}_t(O))
    +\bigl(\mathcal D_{q,3}(O)
               -\operatorname{ref}_t(\mathcal D_{q,3}(O))\bigr)\\
    &+s_q(O)I+R_{q,E}'(O),\\
 |s_q(O)|\leq{}&Cr^c u/q^3+C_Dq^{-D},\qquad
 \|R_{q,E}'(O)\|\leq C_Dq^{-D}.
 \end{split}
 \label{eq:flags-centered-E}
\end{equation}
Here and below the symbols denote compressions to the relevant child
zero space.  When $h=0$ the comparison is its own filled calibration,
so all centered contributions vanish exactly.

For an $F$ step, $t=q-1$.  The nearest smaller filled fluxes are either
identical or differ by three.  In the latter case apply the filled
$E$ comparison just used.  Together with
\eqref{eq:flags-northern-size}, this proves
\begin{equation}
 J_{q,F}^*(O-\operatorname{ref}_q(O))J_{q,F}
 =O-\operatorname{ref}_t(O)+S_{q,F}(O),\qquad
 \|S_{q,F}(O)\|\leq Cr^cu/q^2+C_Dq^{-D}.
 \label{eq:flags-centered-F}
\end{equation}
The off-diagonal blocks have norm $C_Dq^{-D}$.  An $F$ step already
records a flag, so its entire error will be charged to that flag.

Here is a uniform closure argument, including the parameter choices.
Let $c,b_0$ be as in Lemma~\ref{lem:flags-northern-step}.  Choose
$b>\max\{b_0,c\}$, then choose $B>\max\{ab,c\}$ large enough to
absorb the fixed polynomial costs of the local calculus.  A constant
$M$ will be fixed after $B$.  Set
\[
 \tau=Mr^b u.
\]
If $q\leq\tau$ and $h>0$, every flag has $b'\leq q$, so
\[
 W_m\geq(2Mr^b)^{-a}I.
\]
The norm bound $\|O-\operatorname{ref}_q(O)\|\leq2$ proves
\eqref{eq:flags-local-readout} in this region with constant
$2(2M)^a$.  When $h=0$ the centered compression is zero.  Increasing
$M$ includes all stopping cases in this argument.

Fix a finite $Q$, and let $K_Q$ be the least constant in
\eqref{eq:flags-local-readout} for fluxes at most $Q$, with the
chosen $B$, all number sectors, and all allowed frames.  This number
is finite: for $h>0$ use $W_m\geq(1+Q)^{-a}$, while the filled
compression is exactly centered.  We prove
\begin{equation}
 K_Q\leq C_M+\frac12K_Q
 \label{eq:flags-bootstrap-constant}
\end{equation}
with $C_M$ independent of $Q$.

Suppose $q>\tau$.  Expand the unchanged $O$ down the branching tree,
using \eqref{eq:flags-centered-E} and
\eqref{eq:flags-centered-F}, until the current flux is at most
$\tau$.  The original northern slots, center, and radius are unchanged
through this part of the descent.  The terminal comparisons have just
been bounded.  In an $E$ child, decompose
$\mathcal D_{q,3}(O)$ into its core and dyadic ball shells, all centered
at $m$.  Equation~\eqref{eq:pinning-northern-moment}, with a tail order
larger than $B+2$, gives
\[
 \sum_\nu r_\nu^B\|\mathcal D_{q,3}(O)_\nu\|
 \leq C(B)r^{B+c}u/q^2.
\]
Applying the definition of $K_Q$ to each smaller-flux shell, and using
linearity of the reference, bounds its centered contribution by
\[
 K_QC(B)r^{B+c}u/q^2
\]
times the remaining history weight in that child.  Along any word,
the flux strictly decreases; thus
\[
 \sum_{q'>\tau}\frac{u}{(q')^2}\leq C\frac{u}{\tau}
       =\frac{C}{Mr^b}.
\]
Consequently all induction-dependent contributions are bounded by
\[
 K_Q\frac{C(B)}M r^{B+c-b}W_m.
\]
Choose $M$ so large that this is at most
$\tfrac12 K_Qr^BW_m$.  This choice is possible because $b>c$ and
$r\geq2$.

We verify that the other errors have a bound independent of $K_Q$.
At a node with positive remaining hole number, its identity is bounded
by the sum of the identities assigned to its remaining flags.  A
scalar electron error may therefore be charged to every such flag.
For a flag at $\ell$, the total charge from ancestors in
\eqref{eq:flags-centered-E} is at most
\begin{equation}
 C\frac{r^cu}{\max\{\tau,1+\ell\}^2}.
 \label{eq:flags-scalar-tail}
\end{equation}
The $F$ error in \eqref{eq:flags-centered-F} occurs at its own flag
and obeys the same bound, up to a fixed constant.  Write
$w_\ell=\min\{1,(u/(1+\ell))^a\}$.  Since $a<2$ and $\tau=Mr^bu$,
\[
 \frac{r^cu}{\max\{\tau,1+\ell\}^2}
 \leq C M^{a-2}r^{c+b(a-2)}w_\ell
 \leq C_M r^B w_\ell.
\]
The $q^{-D}$ remainders, including the off-diagonal blocks, obey the
same estimate after choosing $D>a+2$.  For a self-adjoint off-diagonal
block, its norm bounds the full block matrix above and below by that
norm times the identity at its node, so the same charge applies.
Nodes with $h=0$ contribute nothing, by the exact centered filled
identity.  Summation of these diagonal bounds along words proves
\eqref{eq:flags-bootstrap-constant}.

It follows that $K_Q\leq2C_M$ for every $Q$, proving the uniform
claim.  Finally, the assertion for $A=\sum_\nu A_\nu$ follows by
linearity of the reference and by summing the form inequalities.
\end{proof}

The theorem estimates a compression to the zero spaces.  It does not
claim that ordinary local fluctuations vanish in the filled state.
It also applies to coherent superpositions of histories: all charges
above are diagonal operator bounds, rather than bounds conditional on
a classical choice of word.

\subsection{Rotation averaging in a one-hole space}

The history estimate still depends on a chosen readout axis.  In this
subsection, a one-hole space means a space with quasihole degree $h=1$.
Representation theory then removes the axis dependence and yields an
integrated estimate with no factor of the sphere area.

\begin{corollary}[One-hole comparison]
\label{cor:flags-one-hole}
Suppose $h=1$, equivalently $q=3n-2$.  Let $\psi,\phi$ be any two unit
vectors in $Z_{n,q}$.  Let $\{O_x\}$ be a measurable family of neutral
self-adjoint observables of norm at most one, supported in balls of a
fixed radius $r\geq2$ about $x$, with center measure of bounded density.
There are constants $C,B'<\infty$, independent of $n,q$, such that
\begin{equation}
 \int\left|
 \langle\psi,O_x\psi\rangle-\langle\phi,O_x\phi\rangle
 \right|\,dx\leq Cr^{B'}.
 \label{eq:flags-one-hole}
\end{equation}
The same conclusion holds for rapidly localized families, with the
right side bounded by the corresponding fixed rapid-locality seminorm.
For a family whose norms are bounded by $A$, multiply the right side by
$A$.
\end{corollary}

\begin{proof}
Choose $a\in(1,2)$ in Theorem~\ref{thm:flags-local-readout}.  The
symmetric-polynomial factor in \eqref{eq:flags-polynomial-space} has
degree one in each variable.  It is the irreducible spin-$n/2$
representation, so $Z_{n,q}$ is irreducible and has dimension $n+1$.

When $h=1$, an $F$ branch has $h=0$ and hence dimension one.  Before
that branch all steps are $E$, which lower the flux by three.
Therefore at most one one-dimensional history has a flag at any
specified nonterminal flux.  The history that reaches the stopping
region without an $F$ step has bounded terminal dimension.  It follows
that, as an operator on $Z_{n,q}$,
\begin{equation}
 \operatorname{Tr}(W_0)
 \leq C+\sum_{b\geq0}(1+b)^{-a}\leq C_a.
 \label{eq:flags-one-hole-trace}
\end{equation}
The trace is unchanged on conjugating back to the physical zero space.
Write $\widehat W_0=\mathcal R_{n,q}^*W_0\mathcal R_{n,q}$ for that
physical operator.

Let $V_q(g)$ denote the rotation representation, with normalized Haar
measure $dg$.  Schur's lemma gives
\[
 \int_{\mathrm{SU}(2)}V_q(g)\widehat W_0V_q(g)^*\,dg
 =\frac{\operatorname{Tr}(\widehat W_0)}{n+1}I.
\]
For each rotation use the readout axis whose north pole is the image
of the original north pole.  Precisely, write
$x(g)=g\cdot\mathrm{north}$ and
$W^{g}=V_q(g)\widehat W_0V_q(g)^*$.
Use the rotated frame and rotated branch construction at $x(g)$.
Theorem~\ref{thm:flags-local-readout}, applied to $O_{x(g)}$, gives
\[
 \bigl|\langle\psi,O_{x(g)}\psi\rangle
       -\langle\phi,O_{x(g)}\phi\rangle\bigr|
 \leq Cr^{B'}\bigl(\langle\psi,W^g\psi\rangle
                    +\langle\phi,W^g\phi\rangle\bigr).
\]
The two reference expectations cancel in this inequality.
Changes between local frames cost only a fixed polynomial in $r$ by
the local calculus.  Integrating rotations and multiplying by the
sphere area yields at most
$Cr^{B'}q\operatorname{Tr}(W_0)/(n+1)$, which is uniformly bounded
because $q=3n-2$.  For any center measure with bounded mass in unit
balls, spread the mass at each center over a ball of fixed radius.
The resulting density relative to area is bounded uniformly.  The
operator originally assigned to $x$ is supported in a ball of radius
$r+1$ about every point in that spreading ball, so the same pointwise
bound applies before integration.  This reduces the general center
measure to the area estimate.  Finally, summing ball shells proves the
assertion for rapid families.
\end{proof}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/05-flags.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/06-charge.tex ====
\section{Charge bounds and rotation averaging}
\label{sec:charge}

The history estimate of Theorem~\ref{thm:flags-local-readout} controls a
local observable by weighted flags.  To treat arbitrary hole number by
rotation averaging, we compare these weights with a physical one-body
observable, first with a slowly decreasing weight and then with a
summable weight.

Increase the fixed stopping flux in the history construction, if
necessary, so that it is at least eight and all pinning comparisons
above it are valid, including shifts by at most three.  Write
$q_{\rm s}=q_{\mathrm{stop}}$ and let $\mathcal R_{n,q}$ denote
the history unitary in \eqref{eq:flags-history-map}.  For $L\ge2$ and
$00$ such
that, for every flux and every nonzero zero-mode space $Z_{n,q}$,
\begin{equation}\label{eq:charge-pooled}
 \mathcal R_{n,q}\bigl(C_q(f)\mathbf1-P_{n,q}D_q(f)P_{n,q}\bigr)\mathcal R_{n,q}^*
 \ \ge\ c S_{L,p}.
\end{equation}
Here compression to $Z_{n,q}$ is understood, and $P_{n,q}$ denotes its
orthogonal projection.  The constants are independent of $q,n$ and of
the readout axis.  When $h=0$, both sides vanish.
\end{proposition}

The obstruction to this estimate occurs at electron steps.  Along a
history, each F step contributes approximately $-f(q)/3$ to
$D_q(f)-C_q(f)\mathbf1$, supplying a credit for its new flag.  Each E
step contributes a positive scalar correction.  When at least two
flags remain, divide this scalar cost between them.  The scalar tail
estimate below leaves the strictly positive margin
\[
 \frac13-\frac{1+p}{6(1-p)}=\frac5{42}\qquad(p=1/8).
\]
With one remaining flag, there is no such margin.  We instead combine
the scalar with the transported observable and compare it to a filled
step; the one-hole comparison of Corollary~\ref{cor:flags-one-hole}
makes the resulting error summably small.  These two cases prove the
first charge estimate.

Rotation averaging then bounds integrated local-expectation differences
between two zero-mode states by $C(q+1)^{7/8}$ times the sum of their
hole numbers.  This still grows with the
area, but it is enough to prove the charge estimate again with $p=3/2$.
For a polar annulus $1+m\asymp M$, use this averaged bound while the
flux is moderate relative to $M$; the transport interaction has a
factor $(q+1)^{-2}$ that pays for the area dependence.  At larger
flux, apply the original fixed-axis history estimate directly to the
annulus.  The two resulting sums are small when the new weight scale
$L$ is large.  The summable weight then gives the area-independent
local-expectation bound at the end of this section.

\subsection{Scalar telescoping and summable error bounds}

We estimate $D_q(f)-C_q(f)\mathbf1$ from above.  An F step contributes
the scalar $C_{q-1}(f)-C_q(f)$, and an E step contributes
\begin{equation}\label{eq:charge-electron-scalar}
 \ell_q=C_{q-3}(f)+f(q)-C_q(f).
\end{equation}
For the continuous comparison define
\begin{equation}\label{eq:charge-continuous-scalar}
 F(x)=\frac1x\int_0^x f(t)\,dt,\qquad
 \ell(x)=-2F'(x)+f'(x)\quad(x>0),
\end{equation}
with the continuous extensions at zero.

\begin{lemma}[Scalar estimates]\label{lem:charge-scalars}
Fix $p\in(0,2)$ and a lower stopping flux $q_{\rm s}\ge8$.  There is a
function $\varepsilon_p(L)\to0$ as $L\to\infty$ with the following
properties, uniformly for $q\ge q_{\rm s}$:
\begin{align}
 \left|C_{q-1}(f)-C_q(f)+\frac13f(q)\right|
 &\le\varepsilon_p(L)f(q),\label{eq:charge-F-scalar}\\
 \sum_{q\ge q_{\rm s}}
 \frac{|\ell_q-\ell_{3\lfloor q/3\rfloor}|}{f(q)}
 &\le\varepsilon_p(L).\label{eq:charge-calibration-scalar}
\end{align}
The function $\ell$ is nonnegative.  If $0L,
 \end{cases}\label{eq:charge-scalar-differences}
\end{align}
for $r=0,1,2$.  We give details because the sharper second estimate is
needed for the summable weight.  The identity
$d_j=\int (1-|t-j-1|)_+f''(t)\,dt$ expresses
\eqref{eq:charge-positive-scalar} as $\int_0^q \kappa_q(t)f''(t)\,dt$.
The function $\kappa_q$ is linear between consecutive integers and has values
\[
 \kappa_q(i)=\frac{i(i+1)}{Q_q}\ (0\le i\le q-2),\qquad
 \kappa_q(q-1)=\frac{2q}{3(q+1)},\qquad \kappa_q(q)=0.
\]
On $[0,q-2]$ its difference from $t^2/q^2$ is at most
$C(t/q^2+t^2/q^3)$, and on $[q-2,q]$ that difference is bounded by a
constant.  The error in its integral against $f''$ is consequently at
most
\[
 C\left(q^{-2}\int_0^q tf''(t)\,dt+
 q^{-3}\int_0^q t^2f''(t)\,dt+
 \int_{q-2}^q f''(t)\,dt\right).
\]
For $q\le L$ use $f''\le C/L^2$; for $q>L$ use
$\int_0^q tf''\le1$, $\int_0^q t^2f''\le2qF(q)$, and
$f''(t)\le C f(t)(L+t)^{-2}$.  This proves the first term of
\eqref{eq:charge-scalar-errors}.  The continuous identity
$\ell(x)=x^{-2}\int_0^x t^2f''(t)\,dt$ implies
$\ell'(x)=f''(x)-2\ell(x)/x$, which proves the oscillation estimate.

For \eqref{eq:charge-scalar-differences}, difference the positive
formula directly:
\[
\begin{split}
 \ell_q-\ell_{q-1}
 ={}&-\frac{2(q-1)}{Q_qQ_{q-1}}
      \sum_{j=0}^{q-4}(j+1)(j+2)d_j\\
 &+\frac{(q-1)(q-2)}{3q(q+1)}d_{q-3}
  +\frac{2q}{3(q+1)}d_{q-2}.
\end{split}
\]
The first sum is bounded by $CqF(q)$, as follows by its integral
representation and $\int_0^q t^2f''\le2qF(q)$.
This gives $CF(q)/q^2$ when $q>L$; the last two terms cost
$Cf(q)/q^2$.  Below $L$ use $d_j\le C/L^2$ in the displayed
formula.  A bounded number of differences proves the claimed bound.

The exact F-step identity is
\[
 C_{q-1}(f)-C_q(f)+\frac13 f(q)
 =\frac{2}{3q(q+1)}\sum_{j=0}^{q-1}\bigl(f(j)-f(q)\bigr).
\]
For $q\le L$ its ratio to $f(q)$ is $O(L^{-1})$.  For $q>L$ use
\begin{equation}\label{eq:charge-average-weight}
 F(q)\le
 \begin{cases}
 f(q)/(1-p),&p<1,\\
 C_pL/q,&p>1.
 \end{cases}
\end{equation}
The resulting ratio is $O(L^{-1})$ also when $1L$, dropping the factor
$(u/(L+u))^2$ gives $B_q\le C F(q)/q$.
These estimates and \eqref{eq:charge-average-weight} prove the first
bound in \eqref{eq:charge-common-sums}.
On the northern half of the sphere $v\ge(q+1)/2$, whereas on the
southern half $A_q(m)\le C f(q)(L+q)^{-2}$.  Therefore
\[
 \frac{J_q}{f(q)}\le
 \frac{C B_q}{(q+1)f(q)}+
 \frac{C\log(q+2)}{(L+q)^2}.
\]
The first term sums to $O(L^{-1})$: above $L$ it is bounded by
$Cq^{-2}$ for $p<1$ and by $CL^{1-p}q^{p-3}$ for $p>1$.
The second sums to $O((1+\log L)/L)$.

For the supremum in \eqref{eq:charge-first-sums}, use $CL^{-2}$
when $q\le L$ and $C(q+1)^{-2}$ otherwise.  The latter divided by
$f(q)$ is $O(L^{-p}q^{p-2})$, whose sum is $O(L^{-1})$ for $p<1$.
On the northern half, $w\ge c\sqrt u$, so the last integral is at
most
\[
 \frac{C}{(q+1)^2}\int_0^{q/2}
 \frac{f(m)u^{3/2}}{(L+u)^2}\,dm
 +\frac{C\sqrt{q+1}\,f(q)}{(L+q)^2}.
\]
After division by $f(q)$, both terms are bounded by
$C\sqrt{q+1}/L^2$ for $q\le L$ and by $Cq^{-3/2}$ for $q>L$,
provided $p<1/2$.  Their sums are $O(L^{-1/2})$.
\end{proof}

\subsection{Calibration and the first charge estimate}

Set $K_q:=K_{q,3}(f)$ on $\mathcal F_{q-3}$.  Its compression to
$Z_{n-1,q-3}$ is the transported change in an E step from $Z_{n,q}$,
as in Proposition~\ref{prop:flags-weighted-step}.  Its center terms
have size $A_q(m)$.  A direct estimate of $\ell_q$ would accumulate a scalar
even in a filled state.  We instead calibrate $K_q+\ell_q$ by a
filled step at the nearest lower flux divisible by three.

Put $q^0=3\lfloor q/3\rfloor$ and $r=q-q^0\in\{0,1,2\}$.
Start with the filled state at flux $q^0-3$ and increase the flux
$r$ times by F transport at the same south pole.  The resulting unit
vector $\chi_q$ lies at flux $q-3$ and has the minimum possible hole
number $r$.  If $r=0$, it is the filled state itself.

\begin{lemma}[Calibrated electron step]\label{lem:charge-calibration}
For $q$ above the fixed stopping range,
\begin{equation}\label{eq:charge-calibrated-scalar}
 \left|\ell_q+\langle K_q\rangle_{\chi_q}\right|
 \le C\left(J_q+|\ell_q-\ell_{q^0}|
              +\frac{f(q)}{(L+q)^2}\right).
\end{equation}
For any collection of northern center terms of $K_q$, their expectation
in $\chi_q$ may instead be replaced by the linear reference functional
of Theorem~\ref{thm:flags-local-readout} at child flux $q-3$; the
additional error is at most $CJ_q$.  This remains true when the choice between the two centerings
is made separately on disjoint annuli.
\end{lemma}

\begin{proof}
In the filled E step at $q^0$, both parent and child compressions of
$D(f)-C(f)\mathbf1$ vanish.  Proposition~\ref{prop:flags-weighted-step}
therefore gives
$|\ell_{q^0}+\langle K_{q^0}\rangle|\le
C f(q^0)(L+q^0)^{-2}$.
Corollary~\ref{pinning:calibration-cost} compares this filled-step
expectation first with the directly embedded lower-flux state and then
with its at most two F-growth transports.  Its bound is $CJ_q$ for
each comparison, proving \eqref{eq:charge-calibrated-scalar} after
adding $|\ell_q-\ell_{q^0}|$.

For a northern source center, the linear reference functional of
Theorem~\ref{thm:flags-local-readout}, applied at child flux $q-3$, is
the expectation in the same directly embedded filled state at $q^0-3$,
using the common slots.
The last assertion of Corollary~\ref{pinning:calibration-cost} applies
to any selected collection of source pieces and bounds the sum of
absolute comparison errors by $CJ_q$.  It therefore also permits the
annulus-dependent choice of centering in the statement.
\end{proof}

For completeness, the elementary rule for summing history bounds is
as follows.  At a node of flux $q$ with positive hole number, every
descendant flag is at an index at most $q$, and hence
\begin{equation}\label{eq:charge-node-lower-bound}
 S_{L,p}\ge h f(q)\mathbf1\ge f(q)\mathbf1
\end{equation}
on that node's full descendant space.  A node error bounded by
$\eta_q f(q)\mathbf1$ can consequently be replaced by
$\eta_q S_{L,p}$ there.  If $\sum_q\eta_q\le\eta$, the sum of all
these node errors is at most $\eta S_{L,p}$: on each history, each
flag appears only at ancestor fluxes, each visited at most once.
This is a comparison of diagonal operators after the node form
bounds have been applied.  It also controls an off-diagonal
remainder by its operator norm.  At a node with no holes, use the
exact vanishing of the centered compression instead of this rule.

\begin{proof}[Proof of Proposition~\ref{prop:charge-pooled} for $p=1/8$]
Apply Proposition~\ref{prop:flags-weighted-step} recursively to
$D_q(f)-C_q(f)\mathbf1$.  The norm remainder at a node is at most
$C f(q)(L+q)^{-2}$, and its total cost is $o_L(1)S_{L,p}$ by
\eqref{eq:charge-node-lower-bound} and
Lemma~\ref{lem:charge-sums}.  F transport has norm at most $CB_q$.
Together with \eqref{eq:charge-F-scalar}, its contribution is
\[
 -\bigl(\tfrac13-o_L(1)\bigr)f(q)
\]
for the flag created at that step.

At an E step with one remaining hole, $q\equiv1\pmod3$, so $\chi_q$
also has one hole.  Compare the child vector to $\chi_q$ using Corollary~\ref{cor:flags-one-hole}.
The difference of the $K_q$ expectations is at most
$C\sup_m A_q(m)$.  This is a two-sided form bound since it holds
for every unit vector in the child space.  The calibration error
and all one-hole errors have total cost $o_L(1)S_{L,p}$ by
Lemmas~\ref{lem:charge-scalars} and \ref{lem:charge-sums}.

At an E step with at least two remaining holes, Proposition~\ref{pinning:one-sided}
bounds the increase from $K_q$ by
$C\int A_q(m)/w\,dm$.  Its total cost is again $o_L(1)S_{L,p}$.
It remains to pay the positive part of $\ell_q$.
Divide that scalar equally among the remaining flags.  A fixed flag
then pays at most one half of each $(\ell_q)_+$ at such an ancestor.
The E-step intervals are disjoint, so
Lemma~\ref{lem:charge-scalars} bounds the total payment for a flag at
$k$ by
\[
 \left(\frac{1+p}{6(1-p)}+o_L(1)\right)f(k)
 =\bigl(\tfrac3{14}+o_L(1)\bigr)f(k).
\]

At terminal fluxes there are only finitely many spaces.  Uniformly
on them, $f(j)=1+O(L^{-1})$, and hence
\[
 D_q(f)-C_q(f)\mathbf1=-\frac h3\mathbf1+O(L^{-1}).
\]
For $h=0$ the expression is exactly zero by rotational invariance;
for $h\ge1$ the error is $O(L^{-1})h$, which is also
$O(L^{-1})$ times the terminal flag weight.  Terminal flags
therefore receive the same credit $1/3-o_L(1)$.
Combining all bounds yields
\[
 \mathcal R_{n,q}(D_q(f)-C_q(f)\mathbf1)\mathcal R_{n,q}^*
 \le-\bigl(\tfrac13-\tfrac3{14}-o_L(1)\bigr)S_{L,p}.
\]
The strict margin is $5/42$.  Choose $L=L_0$ so that the total error
is less than $5/84$ and take $c=5/84$.
\end{proof}

We record what this first estimate gives after rotation averaging.
It will be applied to annular portions of the next transport
interaction, with their center size factored out.

\begin{corollary}[First averaged comparison]\label{cor:charge-weak-average}
Let $W$ be a neutral Hermitian interaction with bounded strength per
unit area and fixed rapid locality bounds.  For unit vectors
$\psi\in Z_{n,q}$ and $\chi\in Z_{n',q}$ with hole numbers $h,h'$,
\begin{equation}\label{eq:charge-weak-average}
 |\langle W\rangle_\psi-\langle W\rangle_\chi|
 \le C_W(q+1)^{7/8}(h+h').
\end{equation}
For radius-$r$ interactions of unit local norm one can take
$C_W\le C(1+r)^B$ for a fixed $B$.
\end{corollary}

\begin{proof}
To specify the rotation average on a physical zero space, let
$V_{n,q}(g)$ denote its rotation representation and define
\[
 S_{L,p}^{g}=V_{n,q}(g)\mathcal R_{n,q}^*S_{L,p}
             \mathcal R_{n,q}V_{n,q}(g)^*.
\]
Thus $S_{L,p}^{g}$ acts on $Z_{n,q}$, whereas $S_{L,p}$ itself acts
in history coordinates.  This is the history construction obtained by
rotating a fixed readout frame by $g$; its estimates are uniform in
$g$.  Use this convention separately in each number sector.

For a local term centered at $x(g)=g\cdot\mathrm{north}$, use
Theorem~\ref{thm:flags-local-readout} in the frame rotated by $g$,
with exponent $a=7/4$.  The local term itself need not belong to a
rotation-covariant family; the estimate is pointwise in $g$.  Since
$(1+b)^{-a}\le C f_{L_0,1/8}(b)$, the local comparison is bounded
by the corresponding rotated $S_{L_0,1/8}$.  Its reference scalar
cancels between the two vectors.  By irreducibility of $U_q$,
normalized rotation averaging gives the one-particle identity
\begin{equation}\label{eq:charge-rotation-average}
 \int_{SU(2)} D_q(f)^{g}\,dg
 =\frac{\sum_{j=0}^q f(j)}{q+1}\,\mathcal N,
\end{equation}
where Haar measure has mass one.  Proposition~\ref{prop:charge-pooled}
for $p=1/8$ consequently gives
\[
 \int_{SU(2)}\langle S_{L_0,1/8}^{g}\rangle_\psi\,dg
 \le\frac{h}{3c(q+1)}\sum_{j=0}^q f_{L_0,1/8}(j).
\]
The physical area is $2\pi q$, and the center density is bounded.
Multiplying by that area and using
$\sum_{j=0}^q f_{L_0,1/8}(j)\le C(q+1)^{7/8}$ proves the result.
The same argument applies to any center measure with bounded mass
in unit balls: spread each center uniformly over a ball of fixed
radius and regard its observable as centered at the new point.  The
resulting measure has bounded area density, and the support radius
increases by only a fixed constant.  Thus the preceding integral
estimate applies to both discrete and continuous center measures.  Finally,
a rapid shell expansion multiplies the radius-$r$ estimate by a summable series of shell
norms times $(1+r)^B$.
\end{proof}

\subsection{The summable weight}

We now fix $p=3/2$, keeping the already chosen $L_0$ and the constant
in Corollary~\ref{cor:charge-weak-average} fixed.  The new scale $L$
will be chosen at the end.  Calibrate every E step with positive
hole number by Lemma~\ref{lem:charge-calibration}.  Its scalar error,
the branch remainders, and all F-step errors have total cost
$o_L(1)S_{L,3/2}$ by the estimates already proved.  It remains to
bound the centered E interactions.

Divide centers into annuli $M\le1+m<2M$, where $M=1,2,4,\ldots$.
Write
\[
 a_M=\left(\frac{M}{L+M}\right)^2,\qquad f_M=f(M),\qquad
 \delta=\frac1{24}.
\]
On this annulus the local interaction size is at most
$C(q+1)^{-2}f_Ma_M$.  Choose a fixed sufficiently large $C_0$ and
separate fluxes at $T_M=C_0M^{1+\delta}$.
An annulus is present only if $q+1\ge M$.

\begin{proof}[Proof of Proposition~\ref{prop:charge-pooled} for $p=3/2$]
First consider $q\le T_M$.  Center the annular interaction at
$\chi_q$.  If the child has $h>0$ holes, the calibration state has
$r\le h$ holes, so Corollary~\ref{cor:charge-weak-average}, applied
at child flux $q-3$, bounds the centered interaction in absolute
quadratic form by
\begin{equation}\label{eq:charge-near-cost}
 C(q+1)^{-2}f_M a_M(q+1)^{7/8}h\mathbf1.
\end{equation}
The child flag weight is at least $hf(q)$.
For $M\le q+1\le T_M+1$,
$f_M/f(q)\le C M^{p\delta}$.  Thus summing the relative cost
\eqref{eq:charge-near-cost} over these fluxes gives
\begin{equation}\label{eq:charge-near-sum}
 C a_M M^{p\delta}\sum_{q+1\ge M}(q+1)^{-1-1/8}
 \le C a_M M^{-(1/8-p\delta)}
 =C a_M M^{-1/16}.
\end{equation}
The finitely many fluxes near the stopping range obey the same
estimate after increasing its constant.

Now let $q>T_M$.  With $C_0$ sufficiently large, the annulus lies
in the common northern region.  Center it by the linear reference
functional in Theorem~\ref{thm:flags-local-readout}.
Lemma~\ref{lem:charge-calibration} accounts for this change of
centering with the already budgeted error $CJ_q$.
For a center in the annulus, each descendant history $\omega$ satisfies
\begin{equation}\label{eq:charge-weight-comparison}
 \begin{split}
 W_m(\omega)
 &\le C\sum_{k\in\mathcal B(\omega)}
          \min\left(1,\left(\frac{M}{1+k}\right)^a\right)\\
 &\le\frac C{f_M}\sum_{k\in\mathcal B(\omega)}f(k)
  =\frac C{f_M}S_{L,3/2}(\omega).
 \end{split}
\end{equation}
This is also a diagonal operator inequality in the descendant history
space.
Indeed, for $k\le M$, $f(k)\ge f(M)$; for $k>M$, use $a=7/4>p$
and $M/(1+k)\le C(L+M)/(L+k)$.  The annulus has area $O(M)$.
The local readout estimate therefore bounds its centered
interaction by
\[
 C(q+1)^{-2} f_Ma_M\frac M{f_M}S_{L,3/2}.
\]
For rapid interactions this formula follows by applying the
radius-$r$ bound to each shell and summing its norm times
$(1+r)^B$.  The shell center stays in the same annulus even when
its support extends beyond it; shells reaching the south are
covered by the large-radius part of the readout estimate.
Summing over $q>T_M$ gives
\begin{equation}\label{eq:charge-far-sum}
 C a_M M\sum_{q>T_M}(q+1)^{-2}S_{L,3/2}
 \le C a_M M^{-\delta}S_{L,3/2}.
\end{equation}

Both resulting sums over dyadic $M$ tend to zero with $L$.
Explicitly, for every $0<\eta<2$,
\begin{equation}\label{eq:charge-dyadic-sum}
 \sum_{M\in\{1,2,4,\ldots\}}
 \left(\frac M{L+M}\right)^2M^{-\eta}
 \le C_\eta L^{-\eta}.
\end{equation}
For $M\le L$ this follows by summing $L^{-2}M^{2-\eta}$;
for $M>L$ it follows by summing $M^{-\eta}$.
Apply this with $\eta=1/16$ and $\eta=1/24$ to
\eqref{eq:charge-near-sum} and \eqref{eq:charge-far-sum}.
The node summation rule after
\eqref{eq:charge-node-lower-bound} now gives an error
$o_L(1)S_{L,3/2}$ for the entire centered E contribution.

There is no uncompensated electron scalar in this argument.
Every F flag and every terminal flag contributes
$-(1/3-o_L(1))f(k)$, while all E contributions and all remainders
cost $o_L(1)S_{L,3/2}$.  Choose a fixed $L=L_1$, after $L_0$ and
the constant in Corollary~\ref{cor:charge-weak-average}, so that
the combined error is at most $1/6$.  This proves
\eqref{eq:charge-pooled} with $c=1/6$.
\end{proof}

\subsection{Rotation averaging and local interactions}

The summability of $f_{L_1,3/2}$ removes the power of the area in
Corollary~\ref{cor:charge-weak-average}.  We state the resulting
estimate in the form needed for the energy argument.

\begin{theorem}[Local expectations are linear in the number of holes]
\label{thm:charge-local-linear}
Let $q=3(N-1)$ and let $W$ be a neutral Hermitian interaction whose
center density and rapid locality bounds are uniform in $q$.
For every unit vector $\psi\in Z_{n,q}$,
\begin{equation}\label{eq:charge-local-linear}
 \bigl|\langle W\rangle_\psi-
          \langle W\rangle_{\mathrm{Laughlin},N}\bigr|
 \le C_W(N-n).
\end{equation}
For interactions supported in radius $r$ with local norm at most
one, $C_W$ is bounded by $C(1+r)^B$ for a fixed exponent $B$.
The same conclusion holds for zero-mode density matrices by
linearity, with the expected value of $N-\mathcal N$ on the right.
\end{theorem}

\begin{proof}
Use the local readout estimate with $a=7/4$, now comparing
$W_0$ to $S_{L_1,3/2}$.  Since the flux is divisible by three,
the reference is the filled Laughlin expectation.
The rotation average \eqref{eq:charge-rotation-average} and the
second part of Proposition~\ref{prop:charge-pooled} give
\[
 \int_{SU(2)}\langle S_{L_1,3/2}^{g}\rangle_\psi\,dg
 \le\frac{h}{3c(q+1)}\sum_{j=0}^q f_{L_1,3/2}(j)
 \le\frac{C h}{q+1},
\]
because $L_1$ is fixed and $\sum_{j\ge0}f_{L_1,3/2}(j)<\infty$.
Integration over centers costs area $O(q+1)$, exactly as in the
proof of Corollary~\ref{cor:charge-weak-average}.  The result is
$C_Wh=3C_W(N-n)$; absorb the factor three into $C_W$.
Polynomial radius costs and rapid shell summability are preserved
by that argument.  Decomposing a density matrix into number
sectors and then into pure states proves the last assertion.
\end{proof}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/06-charge.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/07-energy.tex ====
\section{Local removal of interaction energy}
\label{sec:energy}

The estimate on zero modes controls the cost of a missing electron.  We now
connect an arbitrary state to the zero space by a local process that removes
particles.  Its interaction energy decays exponentially, and its expected
particle loss is bounded by its initial interaction energy.  In particular,
adding electrons above Laughlin filling has a uniform energy cost.

Write $B_p=B(v_p)$, $0\le p\le 2q-2$, for the normalized pair annihilators
of \eqref{eq:pair-rows}, and put $d_a=2q-1$.  For a rotation $g\in SU(2)$,
$A(g)$ denotes the conjugate of an operator $A$ by the Fock representation.
Haar measure $dg$ has mass one.  The rotation average of any normalized
pair row resolves the interaction:
\begin{equation}\label{eq:pair-resolution}
 d_a\int B_p(g)^*B_p(g)\,dg=H_q.
\end{equation}
This is Schur's lemma on the spin-$(q-1)$ pair space $V_q$.

\begin{theorem}[Local energy descent]\label{thm:local-energy-descent}
There are constants $c>0$, $L<\infty$, and $q_0$ such that, for every
$q\ge q_0$, there is a measurable family of rapidly local physical
operators $J_y$ on $\mathcal F_q$ satisfying
\begin{equation}\label{eq:energy-descent}
 \int J_y^*J_y\,d\nu_q(y)=H_q,
 \qquad
 \int J_y^*H_qJ_y\,d\nu_q(y)\le H_q^2-cH_q.
\end{equation}
Every $J_y$ has a definite particle loss $r_y\in\{2,\ldots,L\}$, so that
$[\mathcal N,J_y]=-r_yJ_y$.  The center measure has bounded mass per unit
ball, and all rapid-locality bounds are independent of $q$ and of the
particle sector.
\end{theorem}

The first operation in the construction is $B_0(g)$, which removes a pair
near the point $g\cdot\mathrm{north}$.  We then partially empty a fixed
neighborhood of that point.  This second operation suppresses the nearby
pair correlations left behind by the first removal.  We first identify the
part of $H_q^2$ that pays for the surviving correlations.

\subsection{The four-body term available for descent}

The maps $\mathcal L_k$ and $W_4$ are defined in
\eqref{eq:lift} and \eqref{eq:wedge-maps}.  Thus
$\mathcal L_4(|u\rangle\langle v|)=B(u)^*B(v)$ and
$W_4(v\otimes w)=v\wedge w$.
Let $P_{q,\ell}$ be the projection in $V_q\otimes V_q$ onto total spin
$2(q-1)-\ell$, for $0\le\ell\le2q-2$, and set
\begin{equation}\label{eq:high-pair-blocks}
 R_q^{\mathrm{hi}}=\sum_{\ell=23}^{2q-2}P_{q,\ell},
 \qquad R_q^{\mathrm{lo}}=I-R_q^{\mathrm{hi}}.
\end{equation}
For large $q$, $R_q^{\mathrm{lo}}$ contains precisely the small deficits
$\ell=0,\ldots,22$.
Proposition~\ref{prop:retained-blocks}, proved in the appendix, gives
\begin{equation}\label{eq:retained-energy}
 H_q^2\ge c_0H_q+
 \mathcal L_4(W_4R_q^{\mathrm{hi}}W_4^*)
 \qquad(00$ and $\eta(x)=0$ for $x\le0$,
one may take
$T(x)=\eta(x-1)/(\eta(x-1)+\eta(3-x))$.
The estimate follows by differentiating near $x=3$; an exponential
$e^{-1/(3-x)}$ times any fixed negative power of $3-x$ is bounded by a
constant times $e^{-1/(2(3-x))}$.  Away from that endpoint the estimate is
immediate from smoothness.

For an integer $M\ge2$, put $t_j=T(j/M)$ and $n_j=c_j^*c_j$.  The two
operators
\begin{equation}\label{eq:single-mode-loss}
 K_{j,0}=I-n_j+t_jn_j,
 \qquad K_{j,1}=\sqrt{1-t_j^2}\,c_j
\end{equation}
define a trace-preserving channel, since
$K_{j,0}^*K_{j,0}+K_{j,1}^*K_{j,1}=I$.
Compose these channels in increasing order of $j$, for $0\le j<3M$.
Write $K_\alpha$ for the resulting products of Kraus operators, where
$\alpha\in\{0,1\}^{3M}$, and write $\mathcal E_M$ for the channel.
Its dual on observables is
$\mathcal E_M^*(O)=\sum_\alpha K_\alpha^*OK_\alpha$.

The canonical anticommutation relations imply a useful exact formula.
On an even normal-ordered monomial, the dual of the $j$th channel
multiplies by $t_j$ for each occurrence of $c_j$ or $c_j^*$.
Indeed, if neither occurs, the even monomial commutes with both operators
of mode $j$ and completeness gives the claim.  If exactly one occurs,
the loss contribution vanishes and the no-loss contribution gives $t_j$.
If both occur, writing them as an occupation factor gives $t_j^2$.
Consequently
\begin{equation}\label{eq:evacuated-interaction}
 \mathcal E_M^*(H_q)=\sum_{b=1}^{2q-1}\widetilde B_{b-1}^*
                                      \widetilde B_{b-1},
 \qquad
 \widetilde B_{b-1}
   =\sum_{\substack{iM}B_{b-1}^*B_{b-1}+\varepsilon_MI
 \quad\hbox{on }\mathcal F_q.
\end{equation}
\end{lemma}
\begin{proof}
The following two elementary estimates specialize the general pair
localization bounds to the cutoff used here.  In particular, the
exponential estimate on distant rows will let us preserve coefficient
one on their energy.  Both follow directly from the coefficients in
\eqref{eq:pair-rows}.  For $b\le q/2$ and every fixed integer $r\ge0$,
\begin{equation}\label{eq:pair-absolute-moments}
 \sum_{\substack{i10M$ and $q\ge30M$,
\begin{equation}\label{eq:pair-remote-tail}
 \sum_{\substack{i0$.
Here is a direct verification.  Set
\[
 p_{q,b}(i)=\frac{\binom qi\binom q{b-i}}{\binom{2q}b}.
\]
The exact pair formula gives
\begin{equation}\label{eq:pair-hypergeometric}
 |v_{b-1}(i,b-i)|^2
 =\frac{2(2q-1)(2i-b)^2}{b(2q-b)}p_{q,b}(i),
 \qquad
 \frac{p_{q,b}(i+1)}{p_{q,b}(i)}
 =\frac{(q-i)(b-i)}{(i+1)(q-b+i+1)}.
\end{equation}
When $b\le q/2$, these ratios, their inverses, and symmetry about $b/2$
show
\[
 p_{q,b}(i)\le Cb^{-1/2}
                  \exp\{-c_2(i-b/2)^2/b\}.
\]
For completeness, on the upper half $i\ge(b-1)/2$, the first factor
in the ratio is at most one and the second is at most
$\exp\{-(2i+1-b)/(b+1)\}$.  Summing logarithms from a middle
index gives the Gaussian upper bound relative to the middle value.  In the range $|i-b/2|\le\sqrt b$, the absolute value of
that logarithm is at most $C(1+|i-b/2|)/b$.  Summing these lower bounds and
using $\sum_i p_{q,b}(i)=1$ bounds the middle value by $C/\sqrt b$.
Insertion in \eqref{eq:pair-hypergeometric}, followed by summing Gaussian
moments, proves \eqref{eq:pair-absolute-moments}.

To prove \eqref{eq:pair-remote-tail}, there is nothing to check if
$b>q+3M$, because the sum is empty.  Otherwise $b\le q+3M\le11q/10$,
so $2(2q-1)/[b(2q-b)]\le C/b$ in
\eqref{eq:pair-hypergeometric}.
For every allowed $i\le2b/5$ and $b\ge20$, the ratio in
\eqref{eq:pair-hypergeometric} is at least $4/3$.
Starting with $i<3M<3b/10$ and taking at least $b/10-O(1)$ steps toward
$2b/5$ gives $p_{q,b}(i)\le Ce^{-c b}$, since each probability is at most
one.  The square root of \eqref{eq:pair-hypergeometric} is therefore at
most $C\sqrt b\,e^{-c_1b}$, and there are at most $b$ terms.  This proves
\eqref{eq:pair-remote-tail}.

The modified row vanishes when $b\le M$.  For $M10M$ the coefficients of
$\widetilde B_{b-1}-B_{b-1}$ are supported where $i<3M$ or $j<3M$.
The increasing ordering reduces this to $i<3M$.
Equation~\eqref{eq:pair-remote-tail} bounds this difference in operator
norm by $Cb^{3/2}e^{-c_1b}$, while normalization of the pair vector gives
$\|B_{b-1}\|\le\sqrt b$.  The norm of the difference of the two row
squares is therefore summable over $b>10M$, with sum at most
$Ce^{-c_3M}$.  Combining the three ranges proves the assertion, with
$\varepsilon_M\le C(M^{-1/2}+M^{-13/2}+e^{-c_3M})$.
\end{proof}

\subsection{Rotation averaging suppresses the small-deficit blocks}

Retaining only the rows whose index sum exceeds $M$ gives a positive
operator on the two pair factors:
\begin{equation}\label{eq:pair-tail-average}
 A_{q,M}=d_a\int
 |v_0(g)\rangle\langle v_0(g)|\otimes
 \left(\sum_{k+1>M}|v_k(g)\rangle\langle v_k(g)|\right)\,dg.
\end{equation}
If the sum includes all $k$, the operator equals $I$ by Schur's lemma.
Consequently $0\le A_{q,M}\le I$.  This bound handles every retained
block with the same coefficient one as in \eqref{eq:retained-energy}.
It remains to make the coefficients on the finitely many unretained
blocks small and bound their lifts by $H_q$.

\begin{lemma}[Vanishing weight on fixed deficits]\label{lem:pair-spin-tail}
For $A_{q,M}$ in \eqref{eq:pair-tail-average}, there are coefficients
$0\le a_{q,M,\ell}\le1$ such that
\[
 A_{q,M}=\sum_{\ell=0}^{2q-2}a_{q,M,\ell}P_{q,\ell}.
\]
For every fixed $\ell\ge0$,
\begin{equation}\label{eq:spin-tail-limit}
 \lim_{M\to\infty}\limsup_{q\to\infty}a_{q,M,\ell}=0.
\end{equation}
Moreover, for each fixed $\ell$ there is $C_\ell<\infty$ such that
\begin{equation}\label{eq:fixed-block-energy}
 \mathcal L_4(W_4P_{q,\ell}W_4^*)\le C_\ell H_q
\end{equation}
for all sufficiently large $q$.
\end{lemma}
\begin{proof}
The tensor product of two spin-$(q-1)$ representations is multiplicity
free.  Hence rotation invariance and $0\le A_{q,M}\le I$ prove the first
assertion.  Put $a=q-1$ and $d_{q,\ell}=4q-3-2\ell$.
If $C_{q}(\ell,k)$ is the coupling coefficient of $v_0\otimes v_k$ in
total spin $2a-\ell$ at total lowering degree $k$, then
\begin{equation}\label{eq:spin-tail-coefficient}
 a_{q,M,\ell}=\frac{2q-1}{d_{q,\ell}}
                    \sum_{k+1>M}|C_q(\ell,k)|^2.
\end{equation}
The unrestricted sum, including all $k$, has coefficient exactly one.

We give the fixed-$k$ limit, including its normalization.  At a fixed
total degree, the two spin lowering operators, divided by $\sqrt{2a}$,
converge to multiplication by two independent oscillator variables
$X,Y$.  The highest vector of deficit $\ell$ converges to
$(X-Y)^\ell/\sqrt{2^\ell\ell!}$: applying the raising operator gives
successive coefficient ratio
$-\sqrt{(\ell-p)/(p+1)}$ in the limit, which fixes this normalized vector.
Normalized subsequent lowering multiplies by
$(X+Y)/\sqrt{2(k-\ell)}$ at degree $k$.  Thus the degree-$k$ coupled
vector converges, in the orthonormal monomial basis, to
\[
 \frac{(X-Y)^\ell(X+Y)^{k-\ell}}
      {2^{k/2}\sqrt{\ell!(k-\ell)!}}.
\]
Its coefficient of $Y^k/\sqrt{k!}$ has squared modulus
$2^{-k}\binom{k}{\ell}$, and hence
\[
 |C_q(\ell,k)|^2\longrightarrow2^{-k}\binom{k}{\ell}.
\]
There are only finitely many degrees below a fixed $M$.  Subtracting
these from the exact unrestricted coefficient one gives
\[
 \lim_{q\to\infty}a_{q,M,\ell}
 =1-\frac12\sum_{\ell\le k\le M-1}2^{-k}\binom{k}{\ell}.
\]
The identity
$\sum_{k=\ell}^{\infty}2^{-k}\binom{k}{\ell}=2$
proves \eqref{eq:spin-tail-limit}.  This finite-head argument requires no
uniform convergence over an unbounded set of coupling coefficients.

For \eqref{eq:fixed-block-energy}, choose a normalized highest vector
$z_{q,\ell}=\sum_{p=0}^{\ell}s_pv_p\otimes v_{\ell-p}$, with
$\sum_p|s_p|^2=1$.  Its wedge annihilator is
$\sum_p\overline{s_p}B_{\ell-p}B_p$.
Every $B_{\ell-p}$ uses only the first $\ell+2$ orbitals and has norm at
most $\sqrt{\ell+2}$.  Therefore
\[
 \|B(W_4z_{q,\ell})\psi\|^2
 \le(\ell+2)\sum_{p=0}^{\ell}\|B_p\psi\|^2.
\]
Resolve $P_{q,\ell}$ by the orbit of its highest vector and use
\eqref{eq:pair-resolution}.  This yields
\[
 \mathcal L_4(W_4P_{q,\ell}W_4^*)
 \le\frac{d_{q,\ell}}{2q-1}(\ell+2)(\ell+1)H_q,
\]
whose coefficient is bounded for fixed $\ell$.
\end{proof}

\begin{proof}[Proof of Theorem~\ref{thm:local-energy-descent}]
For the moment fix $M$, and define
\[
 J_{g,\alpha}=K_\alpha(g)B_0(g),
 \qquad d\nu_q(g,\alpha)=(2q-1)\,dg
\]
with counting measure in $\alpha$.
Completeness of the loss channel and \eqref{eq:pair-resolution} give
$\int J_y^*J_y\,d\nu_q=H_q$.
Lemma~\ref{lem:evacuation-rows}, applied to $B_0(g)\psi$ and then averaged,
gives
\begin{align}
 \int J_y^*H_qJ_y\,d\nu_q(y)
 &=d_a\int B_0(g)^*\mathcal E_{M,g}^*(H_q)B_0(g)\,dg\notag\\
 &\le\mathcal L_4(W_4A_{q,M}W_4^*)+\varepsilon_MH_q.
 \label{eq:loss-four-body}
\end{align}
The equality between the averaged pair products and the lifted four-body
operator uses ordered tensor factors.  There is no factor of two:
$B(v\wedge w)=B(w)B(v)$ and the lift sums each ordered pair once.

By Lemma~\ref{lem:pair-spin-tail} and positivity of the lift,
\[
 \mathcal L_4(W_4A_{q,M}W_4^*)
 \le\mathcal L_4(W_4R_q^{\mathrm{hi}}W_4^*)
       +\left(\sum_{\ell=0}^{22}C_\ell a_{q,M,\ell}\right)H_q.
\]
Fix $c_0=1/50$ in \eqref{eq:retained-energy}.  Choose $M$ large enough,
and then $q$ large enough, that
$\varepsilon_M+\sum_{\ell=0}^{22}C_\ell a_{q,M,\ell}\le c_0/2$.
Equations~\eqref{eq:retained-energy} and \eqref{eq:loss-four-body} prove
\eqref{eq:energy-descent} with $c=c_0/2$.

Each $K_\alpha$ is a product of $3M$ operators of particle loss zero or
one, so $J_{g,\alpha}$ has loss between $2$ and $L=3M+2$.
All modes involved in $J_{g,\alpha}$ have index below $3M$, apart from
identity factors.  To see operator-norm locality directly, use the frame
isometry $\mathsf S_q:U_q\to\ell^2(\Lambda_q)$ and write $c(f)=B(f)$ on the slot
Fock space.  If $P_R$ cuts off slots outside the radius-$R$ ball around
$g\cdot\mathrm{north}$, the canonical anticommutation relations give
\[
 \|c(\mathsf S_qe_j(g))-c(P_R\mathsf S_qe_j(g))\|
   =\|(I-P_R)\mathsf S_qe_j(g)\|_2\le C_{D,M}R^{-D}.
\]
The last estimate follows from Lemma~\ref{locality:frame} and the slot
volume bound, with a larger decay order before summing squares.
The same estimate for a product follows by telescoping its finitely many
factors, or by Lemma~\ref{locality:calculus}.  Thus the jumps are rapidly
local around $g\cdot\mathrm{north}$, uniformly in $q$.
There are only $2^{3M}$ auxiliary labels, with $M$ now fixed.
The pushforward of $(2q-1)dg$ to the physical sphere has area density
$(2q-1)/(2\pi q)$; the remaining rotation angle has mass one.
Including all auxiliary labels therefore gives total center density
$2^{3M}(2q-1)/(2\pi q)$, uniformly bounded in $q$ for this fixed $M$.
These observations prove all locality and density assertions.
\end{proof}

\subsection{Particle loss, excess charge, and a coercive Fock Hamiltonian}

Let $q=3(N-1)$ and let $\rho_t$ evolve by the trace-preserving equation
whose dual generator is
\begin{equation}\label{eq:loss-generator}
 \mathcal D_q(O)=\int J_y^*OJ_y\,d\nu_q(y)-\tfrac12\{H_q,O\}.
\end{equation}
This is a finite-dimensional Lindblad generator~\cite{Lindblad}.  Positivity and trace
preservation also follow directly by iterating variation of constants,
with the completely positive gain map
$\rho\mapsto\int J_y\rho J_y^*\,d\nu_q(y)$ and the no-jump map
$\rho\mapsto e^{-tH_q/2}\rho e^{-tH_q/2}$.
We write $\langle O\rangle_t=\operatorname{Tr}(\rho_tO)$.

\begin{proposition}[Control of particle number]\label{prop:grand-canonical-coercivity}
There are constants $C_{\mathrm{num}}<\infty$, $\mu>0$, $a>0$, and
$C_G<\infty$, independent of sufficiently large $q=3(N-1)$, such that
\begin{equation}\label{eq:excess-number-bound}
 \mathcal N-N\le C_{\mathrm{num}}H_q.
\end{equation}
The operator
\begin{equation}\label{eq:coercive-G}
 G_q=H_q+\mu(N-\mathcal N)
\end{equation}
satisfies
\begin{equation}\label{eq:G-coercivity}
 G_q\ge a\bigl(H_q+|N-\mathcal N|\bigr)
 \ge g\bigl(I-P_{\mathrm L,N}\bigr)
\end{equation}
for a constant $g>0$, with $P_{\mathrm L,N}$ extended by zero on the
other Fock sectors.  For every initial density matrix, the evolution
\eqref{eq:loss-generator} obeys
\begin{align}
 \langle H_q\rangle_t&\le e^{-ct}\langle H_q\rangle_0,
       \label{eq:loss-energy-decay}\\
 0\le\langle\mathcal N\rangle_0-\langle\mathcal N\rangle_t
    &\le C_{\mathrm{num}}\langle H_q\rangle_0,
       \label{eq:loss-number-control}\\
 \langle G_q\rangle_t&\le C_G\langle G_q\rangle_0.
       \label{eq:loss-G-control}
\end{align}
Every limit point $\rho_\infty$ is supported on $\ker H_q$, and
\begin{equation}\label{eq:loss-hole-control}
 0\le\operatorname{Tr}\rho_\infty(N-\mathcal N)
       \le C_G\mu^{-1}\langle G_q\rangle_0.
\end{equation}
\end{proposition}
\begin{proof}
Theorem~\ref{thm:local-energy-descent} gives
$\mathcal D_q(H_q)\le-cH_q$, proving
\eqref{eq:loss-energy-decay}.  Since $[\mathcal N,J_y]=-r_yJ_y$,
\[
 -\mathcal D_q(\mathcal N)=\int r_yJ_y^*J_y\,d\nu_q(y),
 \qquad 2H_q\le-\mathcal D_q(\mathcal N)\le LH_q.
\]
Integration proves \eqref{eq:loss-number-control} with
$C_{\mathrm{num}}=L/c$.
Compactness of the density matrices in each fixed finite-dimensional
Fock space gives limit points as $t\to\infty$.  By energy decay each is
supported on $\ker H_q$.  Lemma~\ref{lem:zero-modes} shows that this kernel
contains no sector of particle number exceeding $N$.  Applying
\eqref{eq:loss-number-control} to a state of definite particle number $n$
and passing to a limit point gives $n-N\le C_{\mathrm{num}}\langle H_q\rangle_0$.
This proves \eqref{eq:excess-number-bound} on each sector, and hence on
Fock space.

Choose $0<\mu\le\min(1,(2C_{\mathrm{num}})^{-1})$.
In sectors $n\le N$, $G_q=H_q+\mu(N-n)$ dominates
$\mu(H_q+N-n)$.  In sectors $n>N$, \eqref{eq:excess-number-bound} gives
$G_q\ge H_q/2$ and $H_q+n-N\le(1+C_{\mathrm{num}})H_q$.
This proves the first inequality in \eqref{eq:G-coercivity} with
$a=\min(\mu,[2(1+C_{\mathrm{num}})]^{-1})$.
For $n\ne N$, $|N-n|\ge1$; for $n=N$, the uniform gap and uniqueness in
Theorem~\ref{thm:unperturbed} give
$H_{N,q}\ge(1/25)(I-P_{\mathrm L,N})$.
Thus the second inequality holds with $g=a/25$.

Finally, energy decay and number control give
\[
 \langle G_q\rangle_t
 \le\langle G_q\rangle_0+\mu C_{\mathrm{num}}\langle H_q\rangle_0
 \le(1+\mu C_{\mathrm{num}}/a)\langle G_q\rangle_0.
\]
Take $C_G=1+\mu C_{\mathrm{num}}/a$.  Passing to a limit point, where
$H_q=0$, proves \eqref{eq:loss-hole-control}.
\end{proof}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/07-energy.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/08-stability.tex ====
\section{Relative bounds and stability}\label{sec:stability}

The preceding sections provide two estimates with different roles.
The zero-mode bound controls a local observable after particles have
been removed. The loss evolution connects an arbitrary state to that
zero space at a cost measured by its initial interaction energy.
We first combine them into a relative form bound. Spectral transport
will then put the disorder perturbation in the class covered by that
bound.

Throughout this section, $q=3(N-1)$ is sufficiently large,
$\Omega\in Z_{N,q}$ is the unit Laughlin vector, and $H=H_q$.
Choose the fixed $\mu>0$ from
Proposition~\ref{prop:grand-canonical-coercivity} and write
\begin{equation}\label{eq:stability-G}
 G=H+\mu(N-\mathcal N).
\end{equation}
Thus $G$ is positive, has kernel $\mathbb C\Omega$, and has a uniform
gap. Moreover it controls both $H$ and $|N-\mathcal N|$.

\subsection{A relative bound for terms that annihilate the ground state}

We use the local norm $\|A\|_{x,\ell}$ of
\eqref{locality:ball-norm} at one fixed order $\ell$.
Partition the sphere into cells of uniformly bounded diameter whose
centers satisfy the two-dimensional volume bound of
Section~\ref{sec:locality}. For a continuous interaction, collect
all terms centered in a cell and assign their integral to that cell's
center. Moving a center a bounded distance changes the local norm by
a fixed factor. We normalize the total localization norm in each cell
to at most one.

Physical operators act trivially on the complementary slot modes;
the inequalities below are on physical Fock space. Averaging ball
approximants over total-slot-number rotations preserves support and
approximation error, so approximants of a neutral operator may be
chosen neutral. Taking Hermitian parts gives Hermitian approximants.

Choose $\ell$ larger than the polynomial support-radius exponent in
Theorem~\ref{thm:charge-local-linear}, and larger than any fixed
geometric exponents needed below. A dyadic decomposition into ball
approximants shows that the zero-mode estimate extends to interactions
with bounded total $\|\cdot\|_{x,\ell}$ per cell. Explicitly, the
shell of radius $2^k$ has norm $O(2^{-k\ell})$, while its zero-mode
cost is $O(2^{kB})$ for a fixed $B<\ell$; the series converges.

\begin{proposition}[Relative form bound]\label{prop:relative-bound}
For this fixed sufficiently large $\ell$, there is a constant $C$
independent of $q$ such that
\begin{equation}\label{eq:relative-bound}
 -CG\ \le\ \sum_x A_x\ \le\ CG
\end{equation}
whenever the $A_x$ are physical, neutral, Hermitian operators satisfying
$A_x\Omega=0$ and $\|A_x\|_{x,\ell}\le1$.
If the sum or integral of localization norms in each cell is at most
$S$, the conclusion becomes $-CSG\le\sum_xA_x\le CSG$.
\end{proposition}

\begin{proof}
Fix $q$ for the moment and let $K=K_q$ be the least constant in
\eqref{eq:relative-bound} for the stated class. It is finite: every
admissible sum annihilates $\Omega$ on both sides, its norm is bounded
by the finite number of cells, and $G$ has a positive gap on
$\Omega^\perp$. This observation gives no useful uniform bound;
we obtain one from the loss evolution.

Let $J_y$ be the jumps of Theorem~\ref{thm:local-energy-descent},
including their bounded auxiliary indices in the measure $dy$.
They obey
\[
 \int J_y^*J_y\,dy=H,
 \qquad J_y\Omega=0\quad\text{for almost every }y.
\]
The second assertion follows by taking the expectation of the first
in $\Omega$. Put $C_{xy}=[A_x,J_y]$ and
$D_{xy}=1+d(x,y)$. Since $A_x$ is even, the ordinary commutator
vanishes for disjointly supported approximants, including when $J_y$
is odd. Lemma~\ref{locality:calculus}(iii) gives
\begin{equation}\label{eq:commutator-norms}
 \|C_{xy}\|\le C D_{xy}^{-\ell},
 \qquad \|C_{xy}\|_{x,\ell}\le C,
 \qquad
 \|C_{xy}^*C_{xy}\|_{x,\ell}\le C D_{xy}^{-\ell}.
\end{equation}
The last estimate retains the same order $\ell$ required of $A_x$.
Thus, after integration in $y$, the positive operators
$C_{xy}^*C_{xy}$ remain in the class whose best relative-bound constant
is $K$. Fixing one polynomial norm makes this closure possible.

Every $C_{xy}$ annihilates $\Omega$, because both $A_x$ and $J_y$
do. Therefore $C_{xy}^*C_{xy}$ is a physical, positive, neutral,
centered operator to which the definition of $K$ applies. Choose
\begin{equation}\label{eq:distance-weight-choice}
 20$ such that
\[
 \operatorname{Tr}(\rho_t H)\le e^{-ct}
          \operatorname{Tr}(\rho_0 H),\qquad
 \operatorname{Tr}(\rho_t G)\le C\operatorname{Tr}(\rho_0 G),
 \qquad H\le CG.
\]
Integrating \eqref{eq:relative-derivative} therefore costs at most
$C\sqrt K\operatorname{Tr}(\rho_0 G)$.

Along a sequence $t_j\to\infty$, finite dimensionality gives a
limit state $\rho_\infty$ supported on $Z_q$. Its sectors have
$n\le N$ by Lemma~\ref{lem:zero-modes}. The zero-mode bound and
$\langle\Omega,A\Omega\rangle=0$ show that
\[
 |\operatorname{Tr}(\rho_\infty A)|
 \le C\operatorname{Tr}(\rho_\infty(N-\mathcal N))
 =C\mu^{-1}\operatorname{Tr}(\rho_\infty G)
 \le C\operatorname{Tr}(\rho_0G).
\]
Combining the two bounds, and then taking the supremum over all
admissible interactions and states, gives
\[
 K\le C+C\sqrt K.
\]
Solving this quadratic inequality for $\sqrt K$ proves a bound
independent of $q$, as required.
\end{proof}

\subsection{Transporting the ground state}

The perturbation is not termwise centered in the sense of
Proposition~\ref{prop:relative-bound}. Spectral transport produces
that property. We give the argument explicitly because it must follow
the perturbed ground line rather than keep the original line fixed.
The smooth frequency filter implements the quasiadiabatic idea
of~\cite{HW} in the exact spectral-flow form of~\cite{BMNS}; the
locality estimates needed here were established
in Section~\ref{sec:locality}.

Let $\varphi$ be real and measurable, $\|\varphi\|_\infty\le1$.
On Fock space set
\[
 V=d\Gamma(T_q(\varphi)),\qquad H_s=H+sV,
 \qquad -1\le s\le1.
\]
The coherent resolution \eqref{eq:toeplitz-resolution} writes $V$
as a bounded-density integral of neutral Hermitian terms
\[
 V_x=\kappa_q\varphi(x)c(k_x)^*c(k_x).
\]
They are rapidly local with uniform bounds by
Lemma~\ref{locality:frame}. The same holds for $H$, using the
rotations of $v_0=e_0\wedge e_1$:
\[
 H=(2q-1)\int_{SU(2)} B(v_0(g))^*B(v_0(g))\,dg.
\]
The measure has uniformly bounded density on the physical sphere.
In particular every $H_s$ has uniform interaction bounds for
$|s|\le1$, even though $\|V\|$ can grow with $N$.

Fix $g_0=1/25$ and work initially on a connected parameter interval
containing zero where the $N$-sector ground state is simple and the
gap above it exceeds $g_0/2$. Such an interval exists at every fixed
flux by finite-dimensional perturbation theory. Choose once and for
all a smooth odd real function $F$ satisfying
\begin{equation}\label{eq:transport-filter}
 F(\omega)=-\frac1\omega\quad (|\omega|\ge g_0/2),
 \qquad F(\omega)=0\quad (|\omega|\le g_0/4).
\end{equation}
It can be chosen with an inverse Fourier kernel having every absolute
polynomial moment. The $1/\omega$ tail is square-integrable and
has integrable derivatives of all positive orders; near time zero
Plancherel gives local integrability, and repeated integration by
parts gives arbitrary decay for large time.

For each term of $V$, define $Y_x(s)$ by applying this frequency
filter with respect to $H_s$. In an eigenbasis of $H_s$,
\begin{equation}\label{eq:transport-matrix-elements}
 \langle a|Y_x(s)|b\rangle
 =F(E_a-E_b)\langle a|V_x|b\rangle.
\end{equation}
Oddness of $F$ makes $Y_x$ anti-Hermitian. Every $Y_x$ is physical,
neutral, and rapidly local with uniform bounds; put
$Y(s)=\int Y_x(s)\,dA(x)$ and solve
\[
 U'(s)=Y(s)U(s),\qquad U(0)=I.
\]
This unitary preserves number. If $P_s$ is the $N$-sector ground
projection, the usual spectral derivative formula and
\eqref{eq:transport-filter} give $P_s'=[Y(s),P_s]$.
Consequently $U(s)P_0U(s)^*=P_s$. Neutrality is important here:
the matrix elements crossing the ground projection stay in the
$N$-particle sector. No assertion about a perturbed Fock-space gap
is needed.

For each $x$ separately, define
\begin{equation}\label{eq:transport-centered-terms}
 \begin{split}
 Q_x(s)&=U(s)^*\bigl(V_x+[H_s,Y_x(s)]\bigr)U(s),\\
 a_x(s)&=\langle\Omega,Q_x(s)\Omega\rangle,
 \qquad A_x(s)=Q_x(s)-a_x(s)I.
 \end{split}
\end{equation}
These are Hermitian neutral physical operators. For an excited
$N$-sector eigenvector $a$ and the ground vector $0$, their
unconjugated off-diagonal matrix element is
\[
 \bigl(1+(E_a-E_0)F(E_a-E_0)\bigr)
       \langle a|V_x|0\rangle=0.
\]
Hermiticity gives the reverse vanishing. Thus each $Q_x(s)$
preserves $\mathbb C\Omega$, and $A_x(s)\Omega=0$ exactly.
The commutator with $H_s$ and the finite-parameter conjugation by
$U(s)$ preserve rapid locality, uniformly on the bootstrap interval.
The scalar satisfies $|a_x(s)|\le\|Q_x(s)\|$; it can be assigned
to the same center. Hence the interaction $A_x(s)$ satisfies
Proposition~\ref{prop:relative-bound} with a uniform size bound.

Let $E_0(s)$ be the $N$-sector ground energy. Differentiating the
pulled-back Hamiltonian and taking its expectation in $\Omega$
gives
\begin{equation}\label{eq:transport-relative-derivative}
 \frac{d}{ds}\bigl(U(s)^*H_sU(s)-E_0(s)I\bigr)
 =\int A_x(s)\,dA(x),
 \qquad
 -CG\le\int A_x(s)\,dA(x)\le CG.
\end{equation}
All differentiation is finite-dimensional; the integral notation
may equally be collected into cells. On the $N$-sector, $G=H$.
Integrating in either parameter direction yields
\begin{equation}\label{eq:final-form-bound}
 U(s)^*H_sU(s)-E_0(s)I\ge(1-C|s|)H
 \qquad\text{on }\bigwedge^N U_q.
\end{equation}
The kernel on this interval is $\mathbb C\Omega$, so the min--max
principle gives a gap of at least $(1-C|s|)g_0$.

Choose $\lambda_*>0$ with $\lambda_*\le1$ and
$C\lambda_*\le1/4$. The improved lower bound $3g_0/4$ prevents
the gap from reaching the bootstrap boundary $g_0/2$ anywhere in
$[-\lambda_*,\lambda_*]$. Indeed a first boundary point would
contradict continuity of the ordered eigenvalues and
\eqref{eq:final-form-bound}. The construction therefore extends
over this entire interval at every sufficiently large flux. Taking
$\Delta_*=g_0/2$ proves Theorem~\ref{thm:main}.
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//sections/08-stability.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcore.code.tex ====

\ProvidesPackageRCS{pgfcore.code.tex}

\newif\ifpgf@draftmode
\def\pgf@typeout{\immediate\write0}

\ifdefined\pgfmathloaded\else
  \input pgfmath.code.tex
\fi

\ifdefined\pgfintloaded\else
  \input pgfint.code.tex
\fi

\input pgfcorepoints.code.tex
\input pgfcorepathconstruct.code.tex
\input pgfcorepathusage.code.tex
\input pgfcorescopes.code.tex
\input pgfcoregraphicstate.code.tex
\input pgfcoretransformations.code.tex
\input pgfcorequick.code.tex
\input pgfcoreobjects.code.tex
\input pgfcorepathprocessing.code.tex
\input pgfcorearrows.code.tex
\input pgfcoreshade.code.tex
\input pgfcoreimage.code.tex
\input pgfcoreexternal.code.tex
\input pgfcorelayers.code.tex
\input pgfcoretransparency.code.tex
\input pgfcorepatterns.code.tex
\input pgfcorerdf.code.tex

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcore.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex ====

\ProvidesFileRCS{pgfcorearrows.code.tex}




\def\pgfdeclarearrow#1{%
  \let\pgf@decl@arrow@defaults\pgfutil@empty%
  \let\pgf@decl@arrow@means\relax%
  \let\pgf@decl@arrow@code\relax%
  \pgfkeys{/pgf/@arrows decl/.cd,
    name=,
    setup code=,
    cache=true,
    bending mode=orthogonal,
    parameters=,%
    #1%
  }%
  \ifx\pgf@decl@arrow@name@end\pgfutil@empty%
    \pgferror{Declaring unnamed arrow}%
  \else%
    \pgf@arrow@letter{name@end}%
    \pgf@arrow@letter{name@start}%
    \expandafter\let\csname pgf@ar@start@\pgf@decl@arrow@name@start\endcsname\pgf@decl@arrow@name@end%
    \expandafter\let\expandafter\pgf@old@code\csname pgf@ar@code@\pgf@decl@arrow@name@end\endcsname%
    \expandafter\let\expandafter\pgf@old@means\csname pgf@ar@means@\pgf@decl@arrow@name@end\endcsname%
    \ifx\pgf@decl@arrow@code\relax%
      \ifx\pgf@decl@arrow@means\relax%
        \pgferror{You must set either the 'means' or the drawing code' keys for arrow tip '\pgf@decl@arrow@name@end'}%
      \else%
        \ifx\pgf@old@code\relax%
          \let\pgf@arrow@tip@sequence\pgfutil@empty%
          \let\pgf@arrow@translate\relax%
          \expandafter\let\expandafter\pgf@arrows@direct\csname pgf@arrows@direct@name@end@\pgf@decl@arrow@means\endcsname%
          \ifx\pgf@arrows@direct\relax%
            \let\pgf@arrows@options\pgfutil@empty%
            \expandafter\pgfarrows@initial@parser\pgf@decl@arrow@means[]\pgf@stop%
          \else%
            \let\pgf@arrow@tip@sequence\pgf@arrows@direct%
          \fi%
          \pgf@arrow@letter@\pgf@arrow@tip@sequence{means}%
          \expandafter\let\csname pgf@ar@code@\pgf@decl@arrow@name@end\endcsname\relax%
        \else%
          \pgferror{Arrow tip '\pgf@decl@arrow@name@end' was already
            defined with key 'drawing code' previously and you cannot change this}%
        \fi%
      \fi%
    \else%
      \ifx\pgf@decl@arrow@means\relax%
        \ifx\pgf@old@means\relax%
          \pgf@arrow@letter{code}%
          \pgf@arrow@letter{defaults}%
          \pgf@arrow@letter{setup}%
          \pgf@arrow@letter{bending@mode}%
          \pgf@arrow@letter{par}%
          \expandafter\let\csname pgf@ar@do@cache@\pgf@decl@arrow@name@end\endcsname\pgf@decl@arrow@cache%
        \else%
          \pgferror{Arrow tip '\pgf@decl@arrow@name@end' was already
            defined with key 'means' previously and you cannot change this}%
        \fi%
      \else%
        \pgferror{You cannot set both the 'means' and also the 'drawing code'
          keys for arrow tip '\pgf@decl@arrow@name@end'}%
      \fi%
    \fi%
  \fi%
}

\def\pgf@arrow@letter#1{%
  \expandafter\pgf@arrow@letter@\expandafter{\csname pgf@decl@arrow@#1\endcsname}{#1}%
}
\def\pgf@arrow@letter@#1#2{%
  \expandafter\let\csname pgf@ar@#2@\pgf@decl@arrow@name@end\endcsname#1%
}

\pgfkeys{
  /pgf/@arrows decl/.cd,
  name/.code={%
    \pgfutil@in@-{#1}%
    \ifpgfutil@in@%
      \pgf@arrows@name@decomp#1\pgf@stop%
    \else%
      \def\pgf@decl@arrow@name@end{#1}\let\pgf@decl@arrow@name@start\pgf@decl@arrow@name@end%
    \fi},
  means/.store in=\pgf@decl@arrow@means,
  setup code/.store in=\pgf@decl@arrow@setup,
  drawing code/.store in=\pgf@decl@arrow@code,
  cache/.store in=\pgf@decl@arrow@cache,
  bending mode/.is choice,
  bending mode/none/.code=\let\pgf@decl@arrow@bending@mode\pgfutil@empty,
  bending mode/orthogonal/.code=\def\pgf@decl@arrow@bending@mode{\pgfpointcurvilinearbezierorthogonal},
  bending mode/polar/.code=\def\pgf@decl@arrow@bending@mode{\pgfpointcurvilinearbezierpolar},
  parameters/.store in=\pgf@decl@arrow@par,
  defaults/.code={%
    \let\pgf@arrows@options\pgfutil@empty%
    \pgfkeys{/pgf/arrow keys/.cd,#1}%
    \let\pgf@decl@arrow@defaults\pgf@arrows@options%
  }
}

\def\pgf@arrows@name@decomp#1-#2\pgf@stop{%
  \def\pgf@decl@arrow@name@start{#1}%
  \def\pgf@decl@arrow@name@end{#2}%
}



\pgfkeys{/handlers/.tip/.code=%
  \expandafter\expandafter\expandafter\pgf@arrows@unravel\pgfkeyscurrentpath/\pgf@stop%
  \expandafter\pgf@arrows@key@call\expandafter{\pgf@arrows@unravelled}{#1}}
\def\pgf@arrows@unravel#1/{\pgfutil@ifnextchar\pgf@stop{\def\pgf@arrows@unravelled{#1}\pgfutil@gobble}{\pgf@arrows@unravel}}
\def\pgf@arrows@key@call#1#2{\pgfdeclarearrow{name={#1},means={#2}}}





\def\pgfarrowdraw#1{%
  {%
    \pgfsetarrowsend{#1}%
    \pgf@arrow@compute@shortening\pgf@end@tip@sequence%
    \pgf@arrow@draw@arrow\pgf@end@tip@sequence\pgf@xb%
  }%
}




\def\pgfarrowtotallength#1{%
  {%
    \pgfsetarrowsend{#1}%
    \pgf@arrow@compute@shortening\pgf@end@tip@sequence%
    \expandafter\expandafter\expandafter%
  }%
  \expandafter\expandafter\expandafter\pgf@x\expandafter\the\expandafter\pgf@xb\expandafter\pgf@xa\the\pgf@xa%
}






\def\pgfsetarrowsend#1{%
  \let\pgf@arrow@tip@sequence\pgfutil@empty%
  \pgf@arrows@translatefalse%
  \expandafter\let\expandafter\pgf@arrows@direct\csname pgf@arrows@direct@name@end@#1\endcsname%
  \ifx\pgf@arrows@direct\relax%
    \edef\pgf@marshal{\noexpand\pgfarrows@initial@parser#1[]\noexpand\pgf@stop}%
    \pgf@marshal%
  \else%
    \let\pgf@arrow@tip@sequence\pgf@arrows@direct%
  \fi%
  \let\pgf@end@tip@sequence\pgf@arrow@tip@sequence%
}

\newif\ifpgf@arrows@translate

\def\pgfarrows@initial@parser{%
  \pgfutil@ifnextchar[\pgfarrows@initial@parser@{\pgfarrows@initial@parser@[]}}%

\def\pgfarrows@initial@parser@[#1]{%
  \let\pgf@arrows@options\pgfutil@empty%
  \pgfkeys{/pgf/arrow keys/.cd,#1}%
  \let\pgf@arrows@options@initial\pgf@arrows@options%
  \pgfarrows@parser%
}

\def\pgfarrows@parser#1[{%
  \pgfkeys@spdef\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty%
    \let\pgf@next\pgf@arrows@empty%
  \else%
    \ifx\pgf@temp\pgf@dot@text%
      \let\pgf@next\pgf@arrows@dot@parsed%
    \else%
      \let\pgf@untranslated\pgf@temp%
      \ifpgf@arrows@translate%
        \pgf@arrow@swapper%
      \fi%
      \expandafter\ifx\csname pgf@ar@code@\pgf@temp\endcsname\relax
        \expandafter\ifx\csname pgf@ar@means@\pgf@temp\endcsname\relax
          \let\pgf@next\pgf@arrows@single@char@parser%
          \let\pgf@temp\pgf@untranslated%
        \else%
          \let\pgf@next\pgf@arrows@shorthand@parsed%
        \fi%
      \else%
        \let\pgf@next\pgf@arrows@meta@parsed%
      \fi%
    \fi%
  \fi%
  \expandafter\pgf@next\pgf@temp[%
}

\def\pgf@arrows@empty[#1]{%
  \pgfutil@ifnextchar\pgf@stop\pgf@arrows@parser@done\pgfarrows@parser%
}

\def\pgf@arrows@single@char@parser#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgf@dot@text%
    \let\pgf@next\pgf@arrows@dot@parsed%
  \else%
    \let\pgf@untranslated\pgf@temp%
    \ifpgf@arrows@translate%
      \pgf@arrow@swapper%
    \fi%
    \expandafter\ifx\csname pgf@ar@code@\pgf@temp\endcsname\relax
      \expandafter\ifx\csname pgf@ar@means@\pgf@temp\endcsname\relax
        \let\pgf@temp\pgf@untranslated%
        \let\pgf@next\pgf@arrows@unknown%
      \else%
        \let\pgf@next\pgf@arrows@shorthand@parsed%
      \fi%
    \else%
      \let\pgf@next\pgf@arrows@meta@parsed%
    \fi
  \fi
  \expandafter\pgf@next\pgf@temp[]%
}
\def\pgf@arrows@unknown#1[]#2[#3]{%
  \pgferror{Unknown arrow tip kind '#1#2'}%
}

\def\pgf@arrows@meta@parsed#1[#2]{%
  \let\pgf@arrows@options\pgf@arrows@options@initial%
  \pgfkeys{/pgf/arrow keys/.cd,#2}%
  \expandafter\pgf@arrows@meta@set\expandafter{\pgf@arrows@options}{#1}{\pgf@arrow@handle}%
  \pgfutil@ifnextchar\pgf@stop\pgf@arrows@parser@done\pgfarrows@parser%
}

\def\pgf@arrows@parser@done#1{%
}

\def\pgf@arrows@dot@parsed#1[#2]{%
  \pgf@arrows@append@to@tips{\pgf@arrow@handle@dot}%
  \pgfutil@ifnextchar\pgf@stop\pgf@arrows@parser@done\pgfarrows@parser%
}

\def\pgf@arrows@meta@set#1#2#3{%
  \pgf@arrows@append@to@tips{#3{#2}{#1}}%
}
\def\pgf@arrows@append@to@tips#1{%
  \let\pgf@tempa\pgf@arrow@tip@sequence%
  \def\pgf@tempb{#1}%
  \ifpgf@arrows@translate%
    \let\pgf@tempa\pgf@tempb%
    \let\pgf@tempb\pgf@arrow@tip@sequence%
  \fi%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgf@arrow@tip@sequence%
  \expandafter\expandafter\expandafter{\expandafter\pgf@tempa\pgf@tempb}%
}

\def\pgf@arrows@shorthand@parsed#1[#2]{%
  \let\pgf@arrows@options\pgf@arrows@options@initial%
  \pgfkeys{/pgf/arrow keys/.cd,#2}%
  \ifx\pgf@arrows@options\pgfutil@empty%
    \expandafter\pgf@arrows@append@to@tips\expandafter{%
      \expandafter\pgf@arrow@handle@shorthand@empty\expandafter{\csname pgf@ar@means@#1\endcsname}}%
  \else%
    \expandafter\expandafter\expandafter\pgf@arrows@meta@set\expandafter\expandafter\expandafter{%
      \expandafter\pgf@arrows@options\expandafter}\expandafter{\csname pgf@ar@means@#1\endcsname}{\pgf@arrow@handle@shorthand}%
  \fi%
  \pgfutil@ifnextchar\pgf@stop\pgf@arrows@parser@done\pgfarrows@parser%
}



\def\pgf@arrow@handle@shorthand@empty#1{#1}

\def\pgf@arrow@handle@shorthand#1#2{%
  \def\pgf@temp@opt{#2}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgf@arrows@nested@options@temp%
  \expandafter\expandafter\expandafter{\expandafter\pgf@temp@opt\pgf@arrows@nested@options}%
  \expandafter\let\expandafter\pgf@arrows@nested@options\expandafter\pgf@arrows@nested@options@temp%
  \expandafter#1%
  \expandafter\def\expandafter\pgf@arrows@nested@options\expandafter{\pgf@arrows@nested@options}%
}

\let\pgf@arrows@nested@options\pgfutil@empty





\def\pgfsetarrowsstart#1{%
  \let\pgf@arrow@tip@sequence\pgfutil@empty%
  \pgf@arrows@translatetrue%
  \expandafter\let\expandafter\pgf@arrows@direct\csname pgf@arrows@direct@name@start@#1\endcsname%
  \ifx\pgf@arrows@direct\relax%
    \edef\pgf@marshal{\noexpand\pgfarrows@initial@parser#1[]\noexpand\pgf@stop}%
    \pgf@marshal%
  \else%
    \let\pgf@arrow@tip@sequence\pgf@arrows@direct%
  \fi%
  \let\pgf@start@tip@sequence\pgf@arrow@tip@sequence%
}

\def\pgf@arrow@swapper{%
  \expandafter\let\expandafter\pgf@temp\csname pgf@ar@start@\pgf@temp\endcsname%
  \ifx\pgf@temp\relax%
    \def\pgf@temp{undefined}%
  \fi%
}

\let\pgf@start@tip@sequence\pgfutil@empty
\let\pgf@end@tip@sequence\pgfutil@empty


\expandafter\def\csname pgf@arrows@direct@name@start@\endcsname{}
\expandafter\def\csname pgf@arrows@direct@name@end@\endcsname{}



\newdimen\pgfarrowsep

\newif\ifpgfarrowswap
\newif\ifpgfarrowreversed
\newif\ifpgfarrowharpoon
\newif\ifpgfarrowopen

\let\pgf@arrows@stroke@color\pgfutil@empty
\let\pgf@arrows@fill@color\pgfutil@empty

\def\pgfarrows@length@scale{1}
\def\pgfarrows@width@scale{1}
\def\pgfarrows@slant{0}

\let\pgfarrows@scale@list\pgfutil@empty
\def\pgfarrowsaddtolengthscalelist#1{\expandafter\def\expandafter\pgfarrows@scale@list\expandafter{\pgfarrows@scale@list#1\pgfarrows@length@scale#1}}
\def\pgfarrowsaddtowidthscalelist#1{\expandafter\def\expandafter\pgfarrows@scale@list\expandafter{\pgfarrows@scale@list#1\pgfarrows@width@scale#1}}

\pgfkeys{
  /pgf/arrow keys/.cd,
  scale/.code={%
    \pgfmathparse{#1}%
    \expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\def\expandafter\pgfarrows@length@scale\expandafter{\pgfmathresult}}%
    \expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\def\expandafter\pgfarrows@width@scale\expandafter{\pgfmathresult}}%
  },
  scale length/.code={\pgfmathparse{#1}\expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\def\expandafter\pgfarrows@length@scale\expandafter{\pgfmathresult}}},
  scale width/.code={\pgfmathparse{#1}\expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\def\expandafter\pgfarrows@width@scale\expandafter{\pgfmathresult}}},
  slant/.code={\pgfmathparse{#1}\expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\def\expandafter\pgfarrows@slant\expandafter{\pgfmathresult}}},
  sep/.code={
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowsep\pgf@x}%
  },
  sep/.default=0.88pt .3 1,
  swap/.code=\pgfarrowsaddtooptions{\ifpgfarrowswap\pgfarrowswapfalse\else\pgfarrowswaptrue\fi},
  reversed/.code=\pgfarrowsaddtooptions{\ifpgfarrowreversed\pgfarrowreversedfalse\else\pgfarrowreversedtrue\fi},
  harpoon/.is choice,
  harpoon/.default=true,
  harpoon/true/.code=\pgfarrowsaddtooptions{\pgfarrowharpoontrue},
  harpoon/false/.code=\pgfarrowsaddtooptions{\pgfarrowharpoonfalse},
  left/.style={harpoon},
  right/.style={harpoon,swap},
  color/.code=\pgfarrowsaddtooptions{\def\pgf@arrows@stroke@color{#1}},
  fill/.code={%
    \def\pgf@temp{#1}%
    \ifx\pgf@temp\pgf@nonetext%
      \pgfarrowsaddtooptions{\pgfarrowopentrue}
    \else
      \pgfarrowsaddtooptions{\pgfarrowopenfalse\def\pgf@arrows@fill@color{#1}}
    \fi
  },
  fill/.value required,
  open/.style={fill=none},
  .unknown/.code={
    \expandafter\pgfutil@in@\expandafter!\expandafter{\pgfkeyscurrentname}%
    \ifpgfutil@in@%
      \expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\def\expandafter\pgf@arrows@stroke@color\expandafter{\pgfkeyscurrentname}}%
    \else%
      \pgfutil@doifcolorelse{\pgfkeyscurrentname}
      {%
        \expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\def\expandafter\pgf@arrows@stroke@color\expandafter{\pgfkeyscurrentname}}%
      }
      {%
        \edef\pgf@temp{\pgfkeyscurrentname}%
        \pgfkeys{/errors/unknown key/.expand once=\expandafter{\pgf@temp}{#1}}%
      }
      \fi
    }
}
\def\pgf@nonetext{none}

\def\pgfarrowsaddtooptions#1{\expandafter\def\expandafter\pgf@arrows@options\expandafter{\pgf@arrows@options#1}}
\def\pgfarrowsaddtolateoptions#1{\expandafter\def\expandafter\pgf@arrows@options\expandafter{\pgf@arrows@options\pgf@arrows@add@to@late@options{#1}}}
\def\pgf@arrows@add@to@late@options#1{\expandafter\def\expandafter\pgf@arrows@late@options\expandafter{\pgf@arrows@late@options#1}}



\def\pgfarrowsthreeparameters#1{%
  \pgfarrowsthreeparameters@#1 +0 +0 +0 \pgf@stop%
}
\def\pgfarrowsthreeparameters@#1 #2 #3 #4\pgf@stop{%
  \pgfmathsetlength\pgf@x{#1}%
  \pgfmathsetmacro\pgf@temp@a{#2}%
  \pgfmathsetmacro\pgf@temp@b{#3}%
  \edef\pgfarrowstheparameters{{\the\pgf@x}{\pgf@temp@a}{\pgf@temp@b}}%
}

\def\pgfarrowsfourparameters#1{%
  \pgfarrowsfourparameters@#1 +0 +0 +0 \pgf@stop%
}
\def\pgfarrowsfourparameters@#1:#2 #3 #4 #5\pgf@stop{%
  \pgfmathsetmacro\pgf@temp@z{#1}%
  \pgfmathsetlength\pgf@x{#2}%
  \pgfmathsetmacro\pgf@temp@a{#3}%
  \pgfmathsetmacro\pgf@temp@b{#4}%
  \edef\pgfarrowstheparameters{{\pgf@temp@z}{\the\pgf@x}{\pgf@temp@a}{\pgf@temp@b}}%
}

\def\pgfarrows@angle@setup#1#2#3#4{%
  \pgfarrowslinewidthdependent{#2}{#3}{#4}
  \pgf@xc\pgf@x
  \pgf@yc#1 pt%
  \pgf@yc.5\pgf@yc%
  \pgfpointpolar{\pgf@yc}{\pgf@xc}
  \pgfarrowlength\pgf@x%
  \pgf@y2\pgf@y%
  \expandafter\pgf@arrows@add@to@late@options\expandafter{\expandafter\pgfarrowwidth\the\pgf@y}%
}

\def\pgfarrows@angle@setup@prime#1{%
  \pgf@yc#1 pt %
  \pgf@yc=0.5\pgf@yc
  \pgfmathtan@{\pgf@sys@tonumber\pgf@yc}%
  \pgfarrowwidth\pgfmathresult\pgfarrowlength%
  \pgfarrowwidth2\pgfarrowwidth%
}

\def\pgfarrowslinewidthdependent#1#2#3{%
  \pgf@x#1%
  \ifdim\pgfinnerlinewidth>0pt%
    \pgf@arrows@inner@line@width@dep{#2}{#3}%
  \else%
    \advance\pgf@x by#2\pgflinewidth%
  \fi%
}
\def\pgf@arrows@inner@line@width@dep#1#2{%
  \pgf@xa\pgflinewidth%
  \pgf@xb-.5\pgflinewidth%
  \pgf@xb#2\pgf@xb%
  \advance\pgf@xa by\pgf@xb%
  \pgf@xb\pgfinnerlinewidth%
  \pgf@xb-.5\pgf@xb
  \advance\pgf@xa by#2\pgf@xb%
  \advance\pgf@x by#1\pgf@xa%
}


\def\pgfarrowslengthdependent#1#2#3#4{%
  #4#1%
  \advance#4by#2\pgfarrowlength%
  \advance#4by#3\pgflinewidth%
}




\def\pgf@arrow@fullname#1{pgf@@ar@#1@\the\pgflinewidth @\pgfinnerlinewidth @\ifpgfarrowreversed r\fi @\pgf@arrows@stroke@color @\pgf@arrows@fill@color @\csname pgf@ar@par@#1\endcsname}
\def\pgf@arrow@id@count{0}%


\def\pgfarrows@getid#1#2{%
  \let\pgf@arrows@late@options\pgfutil@empty%
  \csname pgf@ar@defaults@#1\endcsname%
  \pgf@arrows@options@scope
  #2\relax%
  \pgf@arrows@nested@options%
  \pgf@arrows@late@options%
  \pgfarrows@scale@list%
  \expandafter\global\expandafter\let\expandafter\pgf@arrow@id\csname\pgf@arrow@fullname{#1}\endcsname\relax%
  \ifx\pgf@arrow@id\relax%
    \pgf@arrows@instantiate{#1}
  \fi%
}

\def\pgf@arrows@instantiate#1{%
  \pgfutil@tempcnta\pgf@arrow@id@count\relax%
  \advance\pgfutil@tempcnta by1\relax%
  \xdef\pgf@arrow@id@count{\the\pgfutil@tempcnta}%
  \expandafter\global\expandafter\let\csname\pgf@arrow@fullname{#1}\endcsname\pgf@arrow@id@count%
  \global\let\pgf@arrow@id\pgf@arrow@id@count%
  {%
    \pgfclearid%
    \csname pgf@ar@setup@#1\endcsname%
    \ifpgfarrowreversed%
      \pgf@arrows@handle@reverse%
    \fi%
    \expandafter\global\expandafter\let\csname pgf@ar@saves@\pgf@arrow@id\endcsname\pgf@arrows@saves%
    \expandafter\global\expandafter\let\csname pgf@ar@hull@\pgf@arrow@id\endcsname\pgf@arrows@convexhull%
    \expandafter\xdef\csname pgf@ar@ends@\pgf@arrow@id\endcsname{{\pgf@arrows@the@tipend}{\pgf@arrows@the@backend}{\pgf@arrows@the@lineend}}%
    \expandafter\xdef\csname pgf@ar@visual@\pgf@arrow@id\endcsname{{\pgf@arrows@the@visualtipend}{\pgf@arrows@the@visualbackend}{}}%
    \edef\pgf@arrow@code{%
      \ifpgfarrowreversed\noexpand\pgftransformxscale{-1}\fi%
      \expandafter\noexpand\csname pgf@ar@code@#1\endcsname%
    }%
    \expandafter\global\expandafter\let\csname pgf@ar@inst@code@\pgf@arrow@id\endcsname\pgf@arrow@code%
    \expandafter\ifx\csname pgf@ar@do@cache@#1\endcsname\pgf@truetext%
      \pgfsysprotocol@getcurrentprotocol\pgf@arrow@temp%
      {%
        \pgfinterruptpath%
          \let\pgfusepath=\pgf@nousepath@here%
          \pgf@relevantforpicturesizefalse%
          \pgftransformreset%
          \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
          \pgfsysprotocol@bufferedtrue%
          \pgfscope%
          \pgf@arrow@code%
          \endpgfscope%
          \pgfsysprotocol@getcurrentprotocol\pgf@@arrow@temp%
          \expandafter\gdef\expandafter\pgf@arrow@code\expandafter{\expandafter\pgfsysprotocol@literal\expandafter{\pgf@@arrow@temp}}%
        \endpgfinterruptpath%
      }%
      \pgfsysprotocol@setcurrentprotocol\pgf@arrow@temp%
    \fi%
    \expandafter\global\expandafter\let\csname pgf@ar@cache@\pgf@arrow@id\endcsname\pgf@arrow@code%
  }%
}
\def\pgf@truetext{true}

\def\pgf@arrows@copy@tipend{\pgf@arrows@the@tipend}
\def\pgf@arrows@copy@backend{\pgf@arrows@the@backend}
\def\pgf@arrows@copy@lineend{\pgf@arrows@the@lineend}
\def\pgf@arrows@zeropt{0pt}%

\let\pgf@arrows@saves\pgfutil@empty%
\let\pgf@arrows@convexhull\pgfutil@empty%
\let\pgf@arrows@the@tipend\pgf@arrows@zeropt%
\let\pgf@arrows@the@backend\pgf@arrows@zeropt%
\let\pgf@arrows@the@lineend\pgf@arrows@zeropt%
\let\pgf@arrows@the@visualtipend\pgf@arrows@copy@tipend%
\let\pgf@arrows@the@visualbackend\pgf@arrows@copy@backend%


\def\pgf@arrows@handle@reverse{%
  \pgf@x\pgf@arrows@the@visualtipend\pgf@x-\pgf@x%
  \pgf@y\pgf@arrows@the@visualbackend\pgf@y-\pgf@y
  \edef\pgf@arrows@the@visualtipend{\the\pgf@y}%
  \edef\pgf@arrows@the@visualbackend{\the\pgf@x}%
  \pgf@x\pgf@arrows@the@tipend\pgf@x-\pgf@x%
  \pgf@y\pgf@arrows@the@backend\pgf@y-\pgf@y
  \edef\pgf@arrows@the@tipend{\the\pgf@y}%
  \edef\pgf@arrows@the@backend{\the\pgf@x}%
  \pgf@x\pgf@arrows@the@lineend\pgf@x-\pgf@x\edef\pgf@arrows@the@lineend{\the\pgf@x}%
  \let\pgf@temp\pgf@arrows@convexhull%
  \let\pgf@arrows@convexhull\pgfutil@empty%
  \let\pgf@arrow@hull@point\pgf@arrow@hull@point@reverse%
  \pgf@temp%
}
\def\pgf@arrow@hull@point@reverse#1#2{%
  \pgf@x#1%
  \pgfarrowshullpoint{-\pgf@x}{#2}%
}

\def\pgf@nousepath@here#1{\pgferror{The definition of an arrow may not use \string\pgfusepath}}

\def\pgfarrowssavethe#1{%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgf@arrows@saves%
  \expandafter\expandafter\expandafter{\expandafter\pgf@arrows@saves\expandafter#1\the#1\relax}
}

\def\pgfarrowssave#1{%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgf@arrows@saves%
  \expandafter\expandafter\expandafter{\expandafter\pgf@arrows@saves\expandafter\def\expandafter#1\expandafter{#1}}
}

\def\pgfarrowshullpoint#1#2{%
  \pgf@x#1\relax%
  \pgf@y#2\relax%
  \edef\pgf@arrows@temp{\noexpand\pgf@arrows@convexhull\noexpand\pgf@arrow@hull@point{\the\pgf@x}{\the\pgf@y}}%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@arrows@convexhull\expandafter\expandafter\expandafter{\pgf@arrows@temp}%
}

\def\pgfarrowsupperhullpoint#1#2{%
  \pgf@x#1\relax%
  \pgf@y#2\relax%
  \ifdim\pgf@y>0pt
    \edef\pgf@arrows@temp{\noexpand\pgf@arrows@convexhull\noexpand\pgf@arrow@hull@point{\the\pgf@x}{\the\pgf@y}\ifpgfarrowharpoon\else\noexpand\pgf@arrow@hull@point{\the\pgf@x}{-\the\pgf@y}\fi}%
  \else
    \edef\pgf@arrows@temp{\noexpand\pgf@arrows@convexhull\noexpand\pgf@arrow@hull@point{\the\pgf@x}{\the\pgf@y}}%
  \fi
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@arrows@convexhull\expandafter\expandafter\expandafter{\pgf@arrows@temp}%
}

\def\pgfarrowssettipend#1{\pgf@x#1\edef\pgf@arrows@the@tipend{\the\pgf@x}}
\def\pgfarrowssetbackend#1{\pgf@x#1\edef\pgf@arrows@the@backend{\the\pgf@x}}
\def\pgfarrowssetlineend#1{\pgf@x#1\edef\pgf@arrows@the@lineend{\the\pgf@x}}
\def\pgfarrowssetvisualtipend#1{\pgf@x#1\edef\pgf@arrows@the@visualtipend{\the\pgf@x}}
\def\pgfarrowssetvisualbackend#1{\pgf@x#1\edef\pgf@arrows@the@visualbackend{\the\pgf@x}}



\def\pgf@arrow@compute@shortening#1{%
  \let\pgf@arrow@handle\pgf@arrow@compute@shortening@
  \let\pgf@arrow@handle@dot\pgf@arrow@after@line@endtrue%
  \pgf@arrow@after@line@endfalse%
  \pgf@xa0pt%
  \pgf@xb0pt%
  #1%
}
\newif\ifpgf@arrow@after@line@end

\def\pgf@arrow@compute@shortening@#1#2{%
  {\pgfarrows@getid{#1}{#2}\ifnum\pgf@arrow@flex@mode>0\relax\global\pgf@precise@shorteningtrue\fi\expandafter}\expandafter\pgf@x\the\pgfarrowsep%
  \expandafter\expandafter\expandafter\pgf@arrow@cont@short\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
}
\def\pgf@dot@text{.}

\def\pgf@arrow@cont@short#1#2#3{%
  \advance\pgf@xb by#1%
  \pgf@xc#2%
  \advance\pgf@xb by-\pgf@xc%
  \advance\pgf@xb by\pgf@x%
  \ifpgf@arrow@after@line@end%
    \advance\pgf@xa by#1%
    \advance\pgf@xa by\pgf@x%
    \pgf@xc#2%
    \advance\pgf@xa by-\pgf@xc%
  \else%
    \pgf@xa#1%
    \advance\pgf@xa by\pgf@x%
    \pgf@xc#3%
    \advance\pgf@xa by-\pgf@xc%
  \fi%
}



\def\pgf@arrow@rigid@arrow#1#2{%
  {%
    \pgf@xb=#2%
    \pgftransformxshift{-\pgf@xb}%
    \let\pgf@arrow@handle\pgf@arrow@rigid
    \let\pgf@arrow@handle@dot\relax%
    #1%
  }%
}


\def\pgf@arrow@rigid#1#2{%
  {%
    \pgfarrows@getid{#1}{#2}%
    \expandafter\expandafter\expandafter\pgf@arrow@drawer@shift\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
    \ifdim\pgfarrows@slant pt=0pt%
    \else%
      \pgftransformxslant{\pgfarrows@slant}%
    \fi%
    \ifpgfarrowswap%
      \pgftransformyscale{-1}%
    \fi%
    {%
      \csname pgf@ar@saves@\pgf@arrow@id\endcsname%
      \pgf@arrows@rigid@hull%
    }%
  \expandafter}%
  \expandafter\pgftransformxshift\expandafter{\the\pgf@xc}%
}





\def\pgf@arrow@draw@arrow#1#2{%
  {%
    \pgf@xb=#2%
    \pgftransformxshift{-\pgf@xb}%
    \let\pgf@arrow@handle\pgf@arrow@drawer
    \let\pgf@arrow@handle@dot\relax%
    #1%
  }%
}


\def\pgf@arrow@drawer#1#2{%
  {%
    \pgfarrows@getid{#1}{#2}%
    \expandafter\expandafter\expandafter\pgf@arrow@drawer@shift\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
    \ifdim\pgfarrows@slant pt=0pt%
    \else%
      \pgftransformxslant{\pgfarrows@slant}%
    \fi%
    \ifpgfarrowswap%
      \pgftransformyscale{-1}%
    \fi%
    {%
      \csname pgf@ar@saves@\pgf@arrow@id\endcsname%
      \pgfscope%
        \pgf@arrows@color@setup%
        \pgflowlevelsynccm\csname pgf@ar@cache@\pgf@arrow@id\endcsname%
      \endpgfscope%
      \pgf@arrows@rigid@hull%
    }%
  \expandafter}%
  \expandafter\pgftransformxshift\expandafter{\the\pgf@xc}%
}

\def\pgf@arrows@color@setup@restore@std@colors{%
  \pgfutil@namelet{\string\color@pgfstrokecolor}{pgf@strokecolor@global}%
  \pgfutil@namelet{\string\color@pgffillcolor}{pgf@fillcolor@global}%
}%

\def\pgf@arrows@color@setup{%
  \ifx\pgf@arrows@stroke@color\pgfutil@empty\else\pgfsetstrokecolor{\pgf@arrows@stroke@color}\fi%
  \ifx\pgf@arrows@fill@color\pgfutil@empty%
    \ifx\pgf@strokecolor@global\pgf@fillcolor@global
    \else
      \pgf@arrows@color@setup@restore@std@colors
      \pgfsetfillcolor{pgfstrokecolor}%
    \fi%
  \else%
    \pgf@arrows@color@setup@restore@std@colors
    \pgfsetfillcolor{\pgf@arrows@fill@color}%
  \fi%
}

\def\pgf@arrow@drawer@shift#1#2#3{%
  \pgf@xb#2\pgftransformxshift{-\pgf@xb}%
  \pgf@xc#1%
  \advance\pgf@xc by\pgfarrowsep%
  \advance\pgf@xc by-\pgf@xb%
}

\def\pgf@arrows@rigid@hull{%
  \ifpgf@relevantforpicturesize%
    \expandafter\let\expandafter\pgf@temp\csname pgf@ar@hull@\pgf@arrow@id\endcsname%
    \ifx\pgf@temp\pgfutil@empty\else%
      \let\pgf@arrow@hull@point\pgf@arrow@hull@point@first%
      \pgf@temp%
      \pgf@arrow@update@bb%
    \fi%
  \fi
}



\def\pgf@arrow@hull@point@first#1#2{%
  \pgf@x#1\pgf@y#2%
  \pgf@xa\pgf@pt@aa\pgf@x%
  \advance\pgf@xa by\pgf@pt@ba\pgf@y%
  \pgf@ya\pgf@pt@ab\pgf@x%
  \advance\pgf@ya by\pgf@pt@bb\pgf@y%
  \pgf@xb\pgf@xa\pgf@yb\pgf@ya%
  \let\pgf@arrow@hull@point\pgf@arrow@hull@point@other%
}
\def\pgf@arrow@hull@point@other#1#2{%
  \pgfutil@tempdima#1\pgfutil@tempdimb#2%
  \pgf@x\pgf@pt@aa\pgfutil@tempdima%
  \advance\pgf@x by\pgf@pt@ba\pgfutil@tempdimb%
  \pgf@y\pgf@pt@ab\pgfutil@tempdima%
  \advance\pgf@y by\pgf@pt@bb\pgfutil@tempdimb%
  \ifdim\pgf@x<\pgf@xa\pgf@xa\pgf@x\else\ifdim\pgf@x>\pgf@xb\pgf@xb\pgf@x\fi\fi%
  \ifdim\pgf@y<\pgf@ya\pgf@ya\pgf@y\else\ifdim\pgf@y>\pgf@yb\pgf@yb\pgf@y\fi\fi%
}

\def\pgf@arrow@update@bb{%
  \advance\pgf@xa by\pgf@pt@x%
  \advance\pgf@ya by\pgf@pt@y%
  \advance\pgf@xb by\pgf@pt@x%
  \advance\pgf@yb by\pgf@pt@y%
  \ifdim\pgf@picmaxx=-16000pt\relax%
    \global\pgf@picminx\pgf@xa%
    \global\pgf@picmaxx\pgf@xb%
    \global\pgf@picminy\pgf@ya%
    \global\pgf@picmaxy\pgf@yb%
  \else%
    \ifdim\pgf@xa<\pgf@picminx\global\pgf@picminx\pgf@xa\fi%
    \ifdim\pgf@ya<\pgf@picminy\global\pgf@picminy\pgf@ya\fi%
    \ifdim\pgf@xb>\pgf@picmaxx\global\pgf@picmaxx\pgf@xb\fi%
    \ifdim\pgf@yb>\pgf@picmaxy\global\pgf@picmaxy\pgf@yb\fi%
  \fi%
}




\def\pgfsetarrows#1{\pgf@arrows#1\pgf@stop}
\def\pgf@arrows{\pgfutil@ifnextchar[\pgf@arrows@test@opt\pgf@arrows@}%
\def\pgf@arrows@#1-#2\pgf@stop{%
  \pgfsetarrowsstart{#1}%
  \pgfsetarrowsend{#2}%
}
\def\pgf@arrows@test@opt[{%
  \pgfutil@ifnextchar-{\pgf@arrows@[}%
  \pgf@arrows@test@opt@%
}
\def\pgf@arrows@test@opt@#1]{%
  \pgfutil@ifnextchar\pgf@stop{%
    \let\pgf@arrows@options\pgf@arrows@options@scope%
    \pgfkeys{/pgf/arrow keys/.cd,#1}%
    \let\pgf@arrows@options@scope\pgf@arrows@options%
    \pgfutil@gobble%
  }{%
    \pgf@arrows@[#1]%
  }%
}

\let\pgf@arrows@options@scope\pgfutil@empty







\pgfdeclarearrow{
  name = .,
  drawing code =
}



\pgfdeclarearrow{
  name = _,
  defaults = {sep},
  drawing code =
}




\pgfdeclarearrow{ name = To,  means = } %
\pgfdeclarearrow{ name = Bar, means = } %
\pgfkeys{
  <-> /.tip           = {To},
  >-< /.tip           = {>[reversed]},
  | /.tip             = {Bar}
}




\pgfkeys {}

\def\pgf@arrows@direct@def#1#2{\expandafter\pgf@arrows@direct@def@\expandafter{\csname pgf@ar@means@#2\endcsname}{#1}}
\def\pgf@arrows@direct@def@#1#2{\expandafter\def\csname pgf@arrows@direct@name@#2\endcsname{\pgf@arrow@handle@shorthand@empty{#1}}}
\pgf@arrows@direct@def{start@[}{]}
\pgf@arrows@direct@def{start@]}{[}
\pgf@arrows@direct@def{start@spaced [}{spaced ]}
\pgf@arrows@direct@def{start@spaced ]}{spaced [}
\pgf@arrows@direct@def{end@[}{[}
\pgf@arrows@direct@def{end@]}{]}
\pgf@arrows@direct@def{end@spaced [}{spaced [}
\pgf@arrows@direct@def{end@spaced ]}{spaced ]}

\def\pgfsetarrowoptions#1#2{\expandafter\def\csname pgf@arrow@compat@opt@#1\endcsname{#2}}
\def\pgfgetarrowoptions#1{\csname pgf@arrow@compat@opt@#1\endcsname}
\def\pgfarrowsdeclare#1#2#3#4{%
  \pgfdeclarearrow{ name  ={#1}-{#2}, setup code ={#3}, drawing code={#4}, parameters/.expand once={\csname pgf@arrow@compat@opt@#2\endcsname}}%
  \expandafter\def\csname pgf@arrow@compat@opt@#2\endcsname{0}}
\def\pgfarrowsleftextend#1{\pgfmathsetlength\pgf@xa{#1}\pgfarrowssetbackend{\pgf@xa}}
\def\pgfarrowsrightextend#1{\pgfmathsetlength\pgf@xb{#1}\pgfarrowssettipend{\pgf@xb}}
\def\pgfarrowsdeclarealias#1#2#3#4{\pgfdeclarearrow{ name  ={#1}-{#2}, means ={#4} } }
\def\pgfarrowsdeclarereversed#1#2#3#4{\pgfdeclarearrow{ name ={#1}-{#2}, means={{#4}[reversed]}}}
\def\pgfarrowsdeclarecombine{\pgfutil@ifnextchar*{\pgfarrowsdeclarecombine@star}{\pgf@@arrowsdeclarecombine}}
\def\pgf@@arrowsdeclarecombine{\pgfutil@ifnextchar[{\pgf@arrowsdeclarecombine}{\pgf@arrowsdeclarecombine[0pt]}}
\def\pgf@arrowsdeclarecombine[#1]#2#3#4#5#6#7{\def\pgf@@temp{#1}\ifx\pgf@@temp\pgf@linewidthtext\def\pgf@@temp{+0pt 1}\fi%
  \pgfdeclarearrow{name ={#2}-{#3}, means={#5[sep/.expand once=\pgf@@temp]#6}}}
\def\pgf@linewidth@text{\pgflinewidth}
\def\pgfarrowsdeclarecombine@star*{\pgfutil@ifnextchar[{\pgf@arrowsdeclarecombine@star}{\pgf@arrowsdeclarecombine@star[0pt]}}
\def\pgf@arrowsdeclarecombine@star[#1]#2#3#4#5#6#7{\def\pgf@@temp{#1}\ifx\pgf@@temp\pgf@linewidthtext\def\pgf@@temp{+0pt 1}\fi%
  \pgfdeclarearrow{name ={#2}-{#3}, means={#5[sep/.expand once=\pgf@@temp].#6}}}
\def\pgfarrowsdeclaredouble{\pgfutil@ifnextchar[{\pgf@arrowsdeclaredouble}{\pgf@arrowsdeclaredouble[0pt]}}
\def\pgf@arrowsdeclaredouble[#1]#2#3#4#5{\pgfarrowsdeclarecombine[#1]{#2}{#3}{#4}{#5}{#4}{#5}}
\def\pgfarrowsdeclaretriple{\pgfutil@ifnextchar[{\pgf@arrowsdeclaretriple}{\pgf@arrowsdeclaretriple[0pt]}}
\def\pgf@arrowsdeclaretriple[#1]#2#3#4#5{ \pgfarrowsdeclarecombine[#1]{pgf@trip@#2}{pgf@trip@#3}{#4}{#5}{#4}{#5}%
  \pgfarrowsdeclarecombine[#1]{#2}{#3}{pgf@trip@#2}{pgf@trip@#3}{#4}{#5}}
\def\pgf@linewidthtext{\pgflinewidth}

\pgfarrowsdeclare{stealth}{stealth}
{
  \pgfutil@tempdima=0.28pt%
  \pgfutil@tempdimb=\pgflinewidth%
  \ifdim\pgfinnerlinewidth>0pt%
    \pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
  \fi%
  \advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
  \pgfarrowsleftextend{+-3\pgfutil@tempdima}
  \pgfarrowsrightextend{+5\pgfutil@tempdima}
}
{
  \pgfutil@tempdima=0.28pt%
  \pgfutil@tempdimb=\pgflinewidth%
  \ifdim\pgfinnerlinewidth>0pt%
    \pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
  \fi%
  \advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
  \pgfpathmoveto{\pgfqpoint{5\pgfutil@tempdima}{0pt}}
  \pgfpathlineto{\pgfqpoint{-3\pgfutil@tempdima}{4\pgfutil@tempdima}}
  \pgfpathlineto{\pgfpointorigin}
  \pgfpathlineto{\pgfqpoint{-3\pgfutil@tempdima}{-4\pgfutil@tempdima}}
  \pgfusepathqfill
}
\pgfarrowsdeclarereversed{stealth reversed}{stealth reversed}{stealth}{stealth}
\pgfarrowsdeclare{to}{to}
{
  \pgfutil@tempdima=-0.84pt%
  \advance\pgfutil@tempdima by-1.3\pgflinewidth%
  \pgfutil@tempdimb=0.21pt%
  \advance\pgfutil@tempdimb by.625\pgflinewidth%
  \pgfarrowsleftextend{+\pgfutil@tempdima}
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfsetlinewidth{0.8\pgflinewidth}
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfqpoint{-3\pgfutil@tempdima}{4\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{-2.75\pgfutil@tempdima}{2.5\pgfutil@tempdima}}
  {\pgfqpoint{0pt}{0.25\pgfutil@tempdima}}
  {\pgfqpoint{0.75\pgfutil@tempdima}{0pt}}
  \pgfpathcurveto
  {\pgfqpoint{0pt}{-0.25\pgfutil@tempdima}}
  {\pgfqpoint{-2.75\pgfutil@tempdima}{-2.5\pgfutil@tempdima}}
  {\pgfqpoint{-3\pgfutil@tempdima}{-4\pgfutil@tempdima}}
  \pgfusepathqstroke
}
\pgfkeys{To /.tip = to}
\pgfarrowsdeclare{to reversed}{to reversed}
{
  \pgfutil@tempdima=-0.21pt%
  \advance\pgfutil@tempdima by-0.475\pgflinewidth%
  \pgfutil@tempdimb=0.98pt%
  \advance\pgfutil@tempdimb by1.45\pgflinewidth%
  \pgfarrowsleftextend{+\pgfutil@tempdima}
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfsetlinewidth{+0.8\pgflinewidth}
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfqpoint{3.5\pgfutil@tempdima}{4\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{3.25\pgfutil@tempdima}{2.5\pgfutil@tempdima}}
  {\pgfqpoint{0.5\pgfutil@tempdima}{0.25\pgfutil@tempdima}}
  {\pgfqpoint{-0.25\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{0.5\pgfutil@tempdima}{-0.25\pgfutil@tempdima}}
  {\pgfqpoint{3.25\pgfutil@tempdima}{-2.5\pgfutil@tempdima}}
  {\pgfqpoint{3.5\pgfutil@tempdima}{-4\pgfutil@tempdima}}
  \pgfusepathqstroke
}
\pgfarrowsdeclare{latex}{latex}
{
  \pgfutil@tempdima=0.28pt%
  \pgfutil@tempdimb=\pgflinewidth%
  \ifdim\pgfinnerlinewidth>0pt%
    \pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
  \fi%
  \advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
  \pgfarrowsleftextend{+-1\pgfutil@tempdima}
  \pgfarrowsrightextend{+9\pgfutil@tempdima}
}
{
  \pgfutil@tempdima=0.28pt%
  \pgfutil@tempdimb=\pgflinewidth%
  \ifdim\pgfinnerlinewidth>0pt%
    \pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
  \fi%
  \advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
  \pgfpathmoveto{\pgfqpoint{9\pgfutil@tempdima}{0pt}}
  \pgfpathcurveto
  {\pgfqpoint{6.3333\pgfutil@tempdima}{.5\pgfutil@tempdima}}
  {\pgfqpoint{2\pgfutil@tempdima}{2\pgfutil@tempdima}}
  {\pgfqpoint{-1\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{-1\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{2\pgfutil@tempdima}{-2\pgfutil@tempdima}}
  {\pgfqpoint{6.3333\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
  {\pgfqpoint{9\pgfutil@tempdima}{0pt}}
  \pgfusepathqfill
}
\pgfarrowsdeclarereversed{latex reversed}{latex reversed}{latex}{latex}
\pgfarrowsdeclare{@bar}{@bar}
{
  \pgfarrowsleftextend{+-0.25\pgflinewidth}
  \pgfarrowsrightextend{+.75\pgflinewidth}
}
{
  \pgfutil@tempdima=2pt%
  \advance\pgfutil@tempdima by1.5\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetrectcap
  \pgfpathmoveto{\pgfqpoint{0.25\pgflinewidth}{-\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0.25\pgflinewidth}{\pgfutil@tempdima}}
  \pgfusepathqstroke
}
\pgfkeys{Bar /.tip = @bar}
\pgfarrowsdeclare{space}{space}
{
  \pgfutil@tempdima=0.88pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfarrowsleftextend{0pt}
  \pgfarrowsrightextend{\pgfutil@tempdima}
}
{}



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex ====

\ProvidesFileRCS{pgfcoreexternal.code.tex}



\newif\ifpgfexternal@aux@in@dpth
\newif\ifpgfexternal@info

\pgfkeys{
    /pgf/images/include external/.code={\pgfimage{#1}},
    /pgf/images/aux in dpth/.is if=pgfexternal@aux@in@dpth,
    /pgf/images/aux in dpth/.default=true,
    /pgf/images/trim external/.code n args={4}{%
        \def\pgf@external@kern@left{#1}%
        \def\pgf@external@kern@bottom{#2}%
        \def\pgf@external@kern@right{#3}%
        \def\pgf@external@kern@top{#4}%
        \ifx\pgf@external@kern@left\pgfutil@empty\def\pgf@external@kern@left{0sp}\fi%
        \ifx\pgf@external@kern@bottom\pgfutil@empty\def\pgf@external@kern@bottom{0sp}\fi%
        \ifx\pgf@external@kern@right\pgfutil@empty\def\pgf@external@kern@right{0sp}\fi%
        \ifx\pgf@external@kern@top\pgfutil@empty\def\pgf@external@kern@top{0sp}\fi%
    },
    /pgf/images/trim external={1truein}{1truein}{1truein}{1truein},
    /pgf/images/external info/.is if=pgfexternal@info,
    /pgf/images/external info/.default=true,
}



\newif\ifpgfexternalreadmainaux
\pgfexternalreadmainauxtrue


\def\pgfrealjobname#1{%
  \global\let\pgfactualjobname=\jobname
  \edef\pgf@tempa{\expandafter\string\csname #1\endcsname}%
  \edef\pgf@tempb{\expandafter\string\csname\jobname\endcsname}%
  \ifx\pgf@tempa\pgf@tempb%
  \else%
    \pgf@external@grabshipouttrue%
    \pgfexternal@nofiles%
    \ifpgfexternalreadmainaux
        \gdef\jobname{#1}%
    \fi
    \ifpgfexternal@aux@in@dpth
        \csname newwrite\endcsname\w@pgfexternal@auxout
    \fi
    \pgfexternal@geometry@compatibility
  \fi%
  \gdef\pgfrealjobname##1{}%
}

\def\pgfexternal@geometry@compatibility{%
    \pgfutil@ifundefined{geometry}{%
    }{%
        \pgf@typeout{Package TikZ externalization: calling \string\geometry{driver=none} during externalization.^^J}%
        \geometry{driver=none}%
    }%
}%

\def\pgfexternal@nofiles{%
    \let\pgfexternal@nofiles@=\relax
    \def\relax{\relax}%
    \csname nofiles\endcsname
    \let\relax=\pgfexternal@nofiles@
}%

\newif\ifpgf@external@grabshipout
\newbox\pgfexternal@startupbox

\pgfutil@ifundefined{AtBeginDocument}{}{%
    \AtBeginDocument{%
      \ifpgf@external@grabshipout%
        \global\let\pgfexternal@originalshipout=\shipout%
        \global\def\shipout{\setbox\pgfpic=}%
        \maxdeadcycles=10000%
        {%
          \output{\global\setbox\pgfexternal@startupbox=\vbox{\csname @begindvi\endcsname\unvbox255}}%
          \hbox{}\eject%
        }%
      \fi%
    }
}%

\pgfutil@ifundefined{AtEndDocument}{}{%
    \AtEndDocument{%
      \ifpgf@external@grabshipout
        \pgfutil@ifundefined{pgfexternal@did@a@shipout}{%
          \pgfexternal@error@no@shipout
        }{}%
      \fi
    }%
}

\def\pgfexternal@error@no@shipout{%
    \pgferror{Sorry, image externalization failed: the resulting image was EMPTY. I tried to externalize '\pgfactualjobname'. Perhaps there was a typo somewhere? Please check that your document contains '\string\beginpgfgraphicnamed{\pgfactualjobname} ... \string\endpgfgraphicnamed'}%
}%



\def\pgf@externalbegin#1{%
  \let\pgf@next=\pgf@external@normal%
  \ifpgf@external@grabshipout%
    \edef\pgf@tempa{\expandafter\string\csname #1\endcsname}%
    \edef\pgf@tempb{\expandafter\string\csname\pgfactualjobname\endcsname}%
    \ifx\pgf@tempa\pgf@tempb%
      \let\pgf@next=\pgf@external@grab%
    \fi%
  \fi%
  \pgf@next{#1}%
}


\AtBeginDocument{
  \let\beginpgfgraphicnamed=\pgf@externalbegin%
  \let\endpgfgraphicnamed=\unskip
}


\def\pgf@external@normal#1{%
  \let\pgf@filename=\pgfutil@empty%
  \expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#1}%
  \ifx\pgf@filename\pgfutil@empty%
    \let\pgf@next=\relax%
  \else%
    \let\pgf@next=\pgf@replacepicturebygraphic%
  \fi%
  \pgf@next%
}

\long\def\pgf@replacepicturebygraphic#1\endpgfgraphicnamed{%
    \expandafter\pgfincludeexternalgraphics\expandafter{\pgf@filename}\unskip
}

\def\pgfincludeexternalgraphics#1{%
    \begingroup
    \pgfexternalreaddpth{#1}%
    \pgfkeysifdefined{/pgf/images/include external/#1/.@cmd}{%
        \pgfkeysgetvalue{/pgf/images/include external/#1/.@cmd}\pgf@tempa
        \pgfkeyslet{/pgf/images/include external/.@cmd}\pgf@tempa
    }{}%
    \setbox1=\hbox{\pgfkeysvalueof{/pgf/images/include external/.@cmd}{#1}\pgfeov}%
    \ifdim\pgfexternaltrimleft=0sp \else \kern\pgfexternaltrimleft\relax \fi
    \ifdim\pgfexternaldepth=0pt
        \box1
    \else
        \dimen0=\pgfexternaldepth\relax
        \hbox{\lower\dimen0 \box1 }%
    \fi
    \ifdim\pgfexternaltrimright=0sp \else \kern\pgfexternaltrimright\relax \fi
    \endgroup
}

\def\pgfexternalreaddpth#1{%
    \edef\pgfexternalreaddpth@restore{%
        \noexpand\endlinechar=\the\endlinechar\space
        \noexpand\catcode`\noexpand\@=\the\catcode`\@\space
    }%
    \def\pgfexternaldepth{0sp}%
    \def\pgfexternaltrimleft{0sp}%
    \def\pgfexternaltrimright{0sp}%
    \endlinechar=-1 %
    \catcode`\@=11
    \openin\r@pgf@reada=#1.dpth
    \pgfincludeexternalgraphics@read@dpth
    \pgfexternalreaddpth@restore
}%
\def\pgfincludeexternalgraphics@read@dpth{%
    \ifeof\r@pgf@reada
        \closein\r@pgf@reada
    \else
        \read\r@pgf@reada to\pgfincludeexternalgraphics@auxline
        \ifx\pgfincludeexternalgraphics@auxline\pgfutil@empty
        \else
            \expandafter\pgfincludeexternalgraphics@read@dpth@line\pgfincludeexternalgraphics@auxline\pgfincludeexternalgraphics@read@dpth@line@EOI
        \fi
        \expandafter\pgfincludeexternalgraphics@read@dpth
    \fi
}%

\def\pgfexternal@restore#1{#1}%

\long\def\pgfincludeexternalgraphics@read@dpth@line@getfirst#1#2\pgfincludeexternalgraphics@read@dpth@line@EOI{%
    \def\pgf@first{#1}%
}%
\long\def\pgfincludeexternalgraphics@read@dpth@line#1\pgfincludeexternalgraphics@read@dpth@line@EOI{%
    \pgfincludeexternalgraphics@read@dpth@line@getfirst#1\pgfincludeexternalgraphics@read@dpth@line@EOI
    \expandafter\ifcat\expandafter\noexpand\pgf@first\relax
        \expandafter\ifx\pgf@first\pgfexternal@restore
            #1%
        \else
            \pgfutil@ifundefined{if@filesw}{%
            }{%
                \if@filesw
                    {%
                    \toks0={#1}%
                    \immediate\write\@auxout{%
                        \noexpand\def\noexpand\dpthimport{\the\toks0}\noexpand\dpthimport}%
                    }%
                \fi
            }%
        \fi
    \else%
        \def\pgfexternaldepth{#1}%
    \fi
}%

\def\pgfexternalstorecommand#1{%
}%
\def\pgfexternalstorecommand@isexporting#1{%
    \immediate\write\w@pgfexternal@auxout{\noexpand\pgfexternal@restore{#1}}%
}%



\def\pgf@external@grab#1{%
  \def\pgf@filename{#1}%
  \ifpgfexternal@aux@in@dpth
    \begingroup
    \pgf@external@init@aux@in@dpth
    \let\G@refundefinedtrue=\pgf@external@grab@refundefinedtrue
  \fi
  \gdef\pgf@trimleft@final{0sp}%
  \gdef\pgf@trimright@final{0sp}%
  \setbox\pgfpic=\hbox\bgroup\bgroup%
    \let\endpgfgraphicnamed=\pgf@externalend%
}

{\catcode`\^=12 \gdef\pgfexternal@hat{^}}

\expandafter\let\expandafter\pgf@external@grab@refundefinedtrue@orig\csname G@refundefinedtrue\endcsname

\def\pgf@external@grab@refundefinedtrue{%
    \pgf@external@grab@refundefinedtrue@orig
    \begingroup
    \def\n{\pgfexternal@hat\pgfexternal@hat J}%
    \pgfexternalstorecommand{%
      \pgf@external@grab@refundefinedtrue@code
      \noexpand\immediate\noexpand\write16{\pgf@external@grab@refundefinedtrue@warning}%
      \noexpand\G@refundefinedtrue
    }%
    \endgroup
}%

\def\pgf@external@grab@refundefinedtrue@code{}

\def\pgf@external@grab@refundefinedtrue@warning{%
    LaTeX Warning: External picture `\pgfactualjobname' contains undefined references\noexpand\on@line.\n
}%

\let\pgf@external@@protected@write@orig=\protected@write
\long\def\pgf@external@@protected@write@immediate#1#2#3{%
  \begingroup
    \let\pgf@write@=\write
    \def\write{\noexpand\immediate\pgf@write@}%
    \pgf@external@@protected@write@orig{#1}{#2}{#3}%
  \endgroup
}%

\def\pgf@external@init@aux@in@dpth{%
  \let\pgfexternalstorecommand=\pgfexternalstorecommand@isexporting
  \csname @fileswtrue\endcsname
  \immediate\openout\w@pgfexternal@auxout=\pgf@filename.dpth
  \let\@auxout=\w@pgfexternal@auxout
  \let\protected@write=\pgf@external@@protected@write@immediate
}%

\def\pgf@externalend@storeshifts#1{%
  \immediate\write#1{\the\dp\pgfpic}%
  \ifx\pgf@trimleft@final\pgfutil@empty\else
    \immediate\write#1{\noexpand\pgfexternal@restore{\noexpand\def\noexpand\pgfexternaltrimleft{\pgf@trimleft@final}}}%
  \fi
  \ifx\pgf@trimright@final\pgfutil@empty\else
    \immediate\write#1{\noexpand\pgfexternal@restore{\noexpand\def\noexpand\pgfexternaltrimright{\pgf@trimright@final}}}%
  \fi
  \ifpgfexternal@info
    \immediate\write#1{\noexpand\pgfexternal@restore{\noexpand\def\noexpand\pgfexternalwidth{\the\wd\pgfpic}}}%
    \immediate\write#1{\noexpand\pgfexternal@restore{\noexpand\def\noexpand\pgfexternalheight{\the\dimen0}}}%
  \fi
}
\def\pgf@externalend{%
  \unskip\egroup\egroup%
  {%
    \def\pgf@external@trim{0}%
    \def\pgf@external@store@dpth{0}%
    \ifpgf@trim@lowlevel
      \gdef\pgf@trimleft@final{}%
      \gdef\pgf@trimright@final{}%
    \else
      \ifdim\pgf@trimleft@final=0sp  \gdef\pgf@trimleft@final{}  \else\def\pgf@external@trim{1}\fi
      \ifdim\pgf@trimright@final=0sp \gdef\pgf@trimright@final{} \else\def\pgf@external@trim{1}\fi
      \if1\pgf@external@trim
          \setbox\pgfpic=\hbox{%
              \ifx\pgf@trimleft@final\pgfutil@empty\else\kern-\pgf@trimleft@final\fi
              \box\pgfpic
              \ifx\pgf@trimright@final\pgfutil@empty\else\kern-\pgf@trimright@final\fi
          }%
          \def\pgf@external@store@dpth{1}%
      \fi
    \fi
    \parindent0pt %
    \hoffset=0pt %
    \voffset=0pt
    \dimen0\ht\pgfpic%
    \advance\dimen0\dp\pgfpic%
    \ifdim\dp\pgfpic=0pt\relax
    \else%
      \def\pgf@external@store@dpth{1}%
    \fi
    \ifpgfexternal@info
      \def\pgf@external@store@dpth{1}%
    \fi
    \if1\pgf@external@store@dpth
      \ifpgfexternal@aux@in@dpth
        \pgf@externalend@storeshifts\@auxout
        \immediate\closeout\@auxout
      \else
        \immediate\openout\pgf@plotwrite=\pgf@filename.dpth
        \pgf@externalend@storeshifts\pgf@plotwrite
        \immediate\closeout\pgf@plotwrite
      \fi
    \fi
    \pgfsys@prepare@papersize{\the\wd\pgfpic}{\the\dimen0}%
    \setbox0=\vbox{%
      \kern -\pgf@external@kern@top\relax%
      \hbox{%
        \kern -\pgf@external@kern@left\relax%
        \hbox to0pt{%
          \wd\pgfexternal@startupbox=0pt %
          \ht\pgfexternal@startupbox=0pt %
          \dp\pgfexternal@startupbox=0pt %
          \box\pgfexternal@startupbox%
          \pgfsys@atbegindocument\hss}%
        \box\pgfpic%
        \kern\pgf@external@kern@right\relax%
      }%
      \kern\pgf@external@kern@bottom\relax%
    }%
    \let\pgfexternal@nointerlineskip@orig=\nointerlineskip
    \let\nointerlineskip=\pgfexternal@nointerlineskip
    \pgfexternal@originalshipout\box0 %
    \gdef\pgfexternal@did@a@shipout{1}%
  }%
  \ifpgfexternal@aux@in@dpth
    \endgroup
  \fi
}

\def\pgfexternal@nointerlineskip{%
    \ifvmode
      \pgfexternal@nointerlineskip@orig
    \else
      \relax%
    \fi
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex ====

\ProvidesFileRCS{pgfcoregraphicstate.code.tex}


\newdimen\pgflinewidth



\def\pgfsetlinewidth#1{%
  \pgfmathsetlength\pgflinewidth{#1}%
  \global\pgflinewidth=\pgflinewidth%
  \pgfsys@setlinewidth{\the\pgflinewidth}%
  \ignorespaces}



\def\pgfsetinnerlinewidth#1{%
  \pgfmathsetlength\pgf@x{#1}%
  \edef\pgfinnerlinewidth{\the\pgf@x}%
}
\def\pgfinnerlinewidth{0pt}



\def\pgfsetinnerstrokecolor#1{\def\pgfinnerstrokecolor{#1}}
\def\pgfinnerstrokecolor{white}



\def\pgfsetmiterlimit#1{%
  \ifdim#1pt<1pt\pgferror{miter limit cannot be less than 1}\fi%
  \pgfsys@setmiterlimit{#1}%
  \ignorespaces}



\def\pgfsetdash#1#2{%
  \def\pgf@temp{}%
  \def\pgf@next{\pgf@strip}%
  \pgf@strip#1{pgf@stop}%
  \pgfmathsetlength\pgf@x{#2}%
  \pgfsys@setdash{\pgf@temp}{\the\pgf@x}%
  \ignorespaces}

\def\pgf@strip#1{%
  \def\pgf@@temp{#1}%
  \ifx\pgf@@temp\pgf@stop%
    \let\pgf@next=\relax%
  \else%
    \pgfmathsetlength\pgf@x{#1}%
    \ifx\pgf@temp\pgfutil@empty%
      \edef\pgf@temp{\the\pgf@x}%
    \else%
      \edef\pgf@temp{\pgf@temp,\the\pgf@x}%
    \fi%
  \fi\pgf@next}

\def\pgf@stop{pgf@stop}



\def\pgfsetstrokecolor#1{%
  \pgfutil@colorlet{pgfstrokecolor}{#1}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfstrokecolor}}%
  \expandafter\let\expandafter\pgf@temp\csname\string\color@pgfstrokecolor\endcsname
  \global\let\pgf@strokecolor@global=\pgf@temp
  \expandafter\pgf@setstrokecolor\pgf@temp%
}
\def\pgf@setstrokecolor#1#2#3#4#5{%
  \expandafter\ifx\csname pgfsys@color@#4@stroke\endcsname\relax%
    \pgferror{Unsupported color model `#4'. Sorry}%
  \else%
    \edef\pgf@colmarshal{\expandafter\noexpand\csname pgfsys@color@#4@stroke\endcsname}%
    \pgf@uncomma#5,,%
    \pgf@colmarshal%
  \fi}

\def\pgf@uncomma#1,{%
  \def\pgf@coltest{#1}%
  \ifx\pgf@coltest\pgfutil@empty%
    \let\pgf@colnext=\relax%
  \else%
    \expandafter\def\expandafter\pgf@colmarshal\expandafter{\pgf@colmarshal{#1}}%
    \let\pgf@colnext=\pgf@uncomma%
  \fi%
  \pgf@colnext%
}



\def\pgfsetfillcolor#1{%
  \pgfutil@colorlet{pgffillcolor}{#1}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgffillcolor}}%
  \expandafter\let\expandafter\pgf@temp\csname\string\color@pgffillcolor\endcsname
  \global\let\pgf@fillcolor@global=\pgf@temp
  \expandafter\pgf@setfillcolor\pgf@temp
}
\def\pgf@setfillcolor#1#2#3#4#5{%
  \expandafter\ifx\csname pgfsys@color@#4@fill\endcsname\relax%
    \pgferror{Unsupported color model `#4'. Sorry}%
  \else%
    \edef\pgf@colmarshal{\expandafter\noexpand\csname pgfsys@color@#4@fill\endcsname}%
    \pgf@uncomma#5,,%
    \pgf@colmarshal%
  \fi}




\def\pgfsetcolor#1{%
  \pgfutil@colorlet{pgfstrokecolor}{#1}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfstrokecolor}}%
  \expandafter\let\expandafter\pgf@temp\csname\string\color@pgfstrokecolor\endcsname
  \global\let\pgf@strokecolor@global=\pgf@temp
  \global\let\pgf@fillcolor@global=\pgf@temp
  \expandafter\pgf@setcolor\pgf@temp%
}
\def\pgf@setcolor#1#2#3#4#5{%
  \expandafter\ifx\csname pgfsys@color@#4\endcsname\relax%
    \pgferror{Unsupported color model `#4'. Sorry}%
  \else%
    \edef\pgf@colmarshal{\expandafter\noexpand\csname pgfsys@color@#4\endcsname}%
    \pgf@uncomma#5,,%
    \pgf@colmarshal%
  \fi}

\def\XC@bcolor{\pgfsys@color@reset}


\def\pgfsetbuttcap{\pgfsys@buttcap\ignorespaces}



\def\pgfsetroundcap{\pgfsys@roundcap\ignorespaces}



\def\pgfsetrectcap{\pgfsys@rectcap\ignorespaces}



\def\pgfsetmiterjoin{\pgfsys@miterjoin\ignorespaces}



\def\pgfsetbeveljoin{\pgfsys@beveljoin\ignorespaces}



\def\pgfsetroundjoin{\pgfsys@roundjoin\ignorespaces}



\def\pgfseteorule{\pgfsys@eoruletrue\ignorespaces}



\def\pgfsetnonzerorule{\pgfsys@eorulefalse\ignorespaces}



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex ====

\ProvidesFileRCS{pgfcoreimage.code.tex}




\def\pgfdeclareimage{\pgfutil@ifnextchar[{\pgf@declareimage}{\pgf@declareimage[]}}
\def\pgf@declareimage[#1]#2#3{%
  \pgfqkeys{/pgf/images}{height=,width=,page=,interpolate=false,mask=,#1}%
  \gdef\pgf@filename{}%
  \ifx\pgf@imagepage\pgfutil@empty%
  \else%
  \expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#3.page\pgf@imagepage}%
  \fi%
  \ifx\pgf@filename\pgfutil@empty%
    \expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#3}%
  \else%
    \pgfkeys{/pgf/images/page=}%
  \fi%
  \ifx\pgf@filename\pgfutil@empty%
    \pgfwarning%
    {File "#3" not found when defining image "#2".
      Tried all extensions in "\pgfsys@imagesuffixlist"}%
    \pgf@declaredraftimage{#2}{#3}%
  \else%
    \ifpgf@draftmode%
      \pgf@declaredraftimage{#2}{#3}%
    \else%
      \pgfsys@defineimage%
    \fi%
  \fi%
  \expandafter\global\expandafter\let\csname pgf@image@#2!\endcsname=\pgf@image%
}


\pgfkeys{
    /pgf/images/draft/.is if=pgf@draftmode,
    /pgf/images/draft/.default=true}
\pgfkeys{/pgf/images/width/.estore in=\pgf@imagewidth}
\pgfkeys{/pgf/images/height/.estore in=\pgf@imageheight}
\pgfkeys{/pgf/images/page/.estore in=\pgf@imagepage}
\pgfkeys{/pgf/images/interpolate/.cd,.code=\edef\pgf@imageinterpolate{#1},.default=true}
\let\pgf@imageinterpolate\pgfutil@empty
\pgfkeys{/pgf/images/mask/.code=%
  {%
    \edef\pgf@imagemask{#1}%
    \ifx\pgf@imagemask\pgfutil@empty%
    \else%
      \pgfutil@ifundefined{pgf@mask@#1}%
      {\pgferror{Undefined mask "#1".}%
        \edef\pgf@imagemask{}}%
      {\edef\pgf@imagemask{\csname pgf@mask@#1\endcsname}%
      }%
    \fi%
  }}


\def\pgf@findfile#1:#2+#3{%
  \pgfutil@IfFileExists{#3#1}%
  {\xdef\pgf@filename{#3#1}}%
  {\def\pgf@mightbeempty{#2}%
    \ifx\pgf@mightbeempty\pgfutil@empty\else%
    \pgf@findfile#2+{#3}%
    \fi}}

\def\pgf@declaredraftimage#1#2{%
  \ifx\pgf@imagewidth\pgfutil@empty%
    \pgfwarning{Missing width for image "#1" ("#2") in draft mode. Using 1cm instead}%
    \edef\pgf@imagewidth{1cm}%
  \fi%
  \ifx\pgf@imageheight\pgfutil@empty%
    \pgfwarning{Missing height for image "#1" ("#2") in draft mode. Using 1cm instead}%
    \edef\pgf@imageheight{1cm}%
  \fi%
  \ifx\pgf@imagepage\pgfutil@empty\else\edef\pgf@imagepagetext{ page \pgf@imagepage}\fi%
  \edef\pgf@image{%
    \hbox to \pgf@imagewidth{%
      \vrule\kern-0.4pt%
      \vbox to \pgf@imageheight{%
        \hrule\vfil%
        \hbox to \pgf@imagewidth{\hskip-10cm\hfil\noexpand\pgfutil@font@tiny#2\pgf@imagepage\hfil\hskip-10cm}%
        \vfil\hrule}%
      \kern-0.4pt\vrule}%
  }%
}




\def\pgfdeclaremask{\pgfutil@ifnextchar[\pgf@declaremask{\pgf@declaremask[]}}
\def\pgf@declaremask[#1]#2#3{%
  \pgfqkeys{/pgf/images/mask}{matte={1 1 1},#1}%
  \def\pgf@mask{}%
  \gdef\pgf@filename{}%
  \expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#3}%
  \ifx\pgf@filename\pgfutil@empty%
    \pgfwarning%
    {File "#3" not found when defining mask "#2".
      Tried all extensions in "\pgfsys@imagesuffixlist"}%
  \else%
    \pgfsys@definemask%
  \fi%
  \expandafter\global\expandafter\let\csname pgf@mask@#2\endcsname=\pgf@mask%
}

\pgfkeys{/pgf/images/mask/matte/.cd,.estore in=\pgf@maskmatte,.value required}




\def\pgfaliasimage#1#2{%
  \expandafter\global\expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@image@#2!\endcsname%
  \expandafter\global\expandafter\let\csname pgf@image@#1!\endcsname=\pgf@temp%
  }



\def\pgfuseimage#1{%
  \def\pgf@imagename{pgf@image@#1}%
  \pgf@tryextensions{\pgf@imagename}{\pgfalternateextension}%
  \expandafter\pgfutil@ifundefined\expandafter{\pgf@imagename}%
  {\pgferror{Undefined image "#1"}}%
  {{\leavevmode\csname\pgf@imagename\endcsname}}}

\def\pgf@tryextensions#1#2{%
  \edef\pgf@args{[#2!]}\expandafter\pgf@@tryextensions\pgf@args{#1}}
\def\pgf@@tryextensions[#1!#2]#3{%
  \expandafter\pgfutil@ifundefined\expandafter{#3#1!#2}%
  {\def\pgf@temp{#2}%
    \ifx\pgf@temp\pgfutil@empty%
    \edef#3{#3!}%
    \else%
    \pgf@@tryextensions[#2]{#3}%
    \fi}%
  {\edef#3{#3#1!#2}}}



\def\pgfalternateextension{}




\def\pgfimage{\pgfutil@ifnextchar[\pgf@imagecom{\pgf@imagecom[]}}
\def\pgf@imagecom[#1]#2{%
  \pgfdeclareimage[#1]{pgflastimage}{#2}%
  \pgfuseimage{pgflastimage}}


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex ====

\ProvidesFileRCS{pgfcorelayers.code.tex}



\def\pgfdeclarelayer#1{%
  \pgfutil@ifundefined{pgf@layerbox@#1}{%
    \expandafter\expandafter\csname pgf@newbox\endcsname\csname pgf@layerbox@#1\endcsname%
    \expandafter\expandafter\csname pgf@newbox\endcsname\csname pgf@layerboxsaved@#1\endcsname%
  }{}%
}
\let\pgf@newbox=\newbox %


\def\pgfsetlayers#1{%
  \let\pgf@layerlist\pgfutil@empty%
  \pgf@dosetlayer#1,,\relax%
}

\def\pgf@dosetlayer#1,#2,\relax{%
  \ifx\pgf@layerlist\pgfutil@empty%
    \edef\pgf@layerlist{\pgfutil@trimspaces{#1}}%
  \else
    \edef\pgf@layerlist{\pgf@layerlist,\pgfutil@trimspaces{#1}}%
  \fi
  \def\pgf@test{#2}%
  \ifx\pgf@test\pgfutil@empty%
  \else%
    \pgf@dosetlayer#2,\relax%
  \fi%
}

\pgfsetlayers{main}


\def\pgfonlayer@name{main}

\def\pgfonlayer#1{%
  \pgfutil@ifundefined{pgf@layerbox@#1}{%
     \pgferror{Sorry, the requested layer '#1' could not be found. Maybe you misspelled it?}%
   \bgroup
     \begingroup
  }{%
      \begingroup
        \edef\pgf@temp{#1}%
        \ifx\pgf@temp\pgfonlayer@name
          \def\pgf@temp{%
            \bgroup
            \begingroup
          }%
      \else
        \let\pgfonlayer@name=\pgf@temp
        \pgfonlayer@assert@is@active
        \def\pgf@temp{%
          \expandafter\global\expandafter%
          \setbox\csname pgf@layerbox@#1\endcsname=\hbox to 0pt%
            \bgroup%
              \expandafter\box\csname pgf@layerbox@#1\endcsname%
              \begingroup%
        }%
      \fi
   \pgfsetlinewidth{0.4pt}%
   \pgf@temp
  }%
}
\def\endpgfonlayer{%
      \endgroup%
      \hss
    \egroup%
  \endgroup
}

\let\startpgfonlayer=\pgfonlayer
\let\stoppgfonlayer=\endpgfonlayer

\def\pgfdiscardlayername{discard}

\def\pgfonlayer@assert@is@active{%
  \ifx\pgfonlayer@name\pgfdiscardlayername
  \else
    \begingroup
    \def\pgfonlayer@isactive{0}%
    \expandafter\pgf@assert@layer@is@active@loop\pgf@layerlist,,\relax%
    \if0\pgfonlayer@isactive
       \pgfonlayer@assert@fail
    \fi
    \endgroup
  \fi
}%
\def\pgfonlayer@assert@fail{%
  \pgferror{Sorry, the requested layer '\pgfonlayer@name' is not 
   part of the layer list. Please verify that you provided 
   \string\pgfsetlayers\space and that '\pgfonlayer@name' is part of this list}%
}%
\def\pgf@assert@layer@is@active@loop#1,#2,\relax{%
  \edef\pgf@test{#1}%
  \ifx\pgf@test\pgfonlayer@name
     \def\pgfonlayer@isactive{1}%
  \else
    \def\pgf@test{#2}%
    \ifx\pgf@test\pgfutil@empty%
    \else%
    \pgf@assert@layer@is@active@loop#2,\relax%
    \fi%
  \fi
}


\def\pgf@insertlayers{%
  \expandafter\pgf@dolayer\pgf@layerlist,,\relax%
}
\def\pgf@maintext{main}%
\def\pgf@dolayer#1,#2,\relax{%
  \def\pgf@test{#1}%
  \ifx\pgf@test\pgf@maintext%
    \box\pgf@layerbox@main%
  \else%
    \pgfsys@beginscope%
      \expandafter\box\csname pgf@layerbox@#1\endcsname%
    \pgfsys@endscope%
  \fi%
  \def\pgf@test{#2}%
  \ifx\pgf@test\pgfutil@empty%
  \else%
    \pgf@dolayer#2,\relax%
  \fi%
}

\def\pgf@savelayers{%
  \expandafter\pgf@dosavelayer\pgf@layerlist,,\relax%
}
\def\pgf@dosavelayer#1,#2,\relax{%
  \def\pgf@test{#1}%
  \ifx\pgf@test\pgf@maintext%
  \else%
    \setbox\csname pgf@layerboxsaved@#1\endcsname=\box\csname pgf@layerbox@#1\endcsname%
  \fi%
  \def\pgf@test{#2}%
  \ifx\pgf@test\pgfutil@empty%
  \else%
    \pgf@dosavelayer#2,\relax%
  \fi%
}

\def\pgf@restorelayers{%
  \expandafter\pgf@dorestorelayer\pgf@layerlist,,\relax%
}
\def\pgf@dorestorelayer#1,#2,\relax{%
  \def\pgf@test{#1}%
  \ifx\pgf@test\pgf@maintext%
  \else%
    \global\setbox\csname pgf@layerbox@#1\endcsname=\box\csname pgf@layerboxsaved@#1\endcsname%
  \fi%
  \def\pgf@test{#2}%
  \ifx\pgf@test\pgfutil@empty%
  \else%
    \pgf@dorestorelayer#2,\relax%
  \fi%
}

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex ====

\ProvidesFileRCS{pgfcoreobjects.code.tex}





\def\pgfdefobject#1#2#3#4{%
  \pgfinterruptpath%
    \pgf@relevantforpicturesizefalse%
    \pgfsys@defobject{#1}{#2}{#3}{#4}%
  \endpgfinterruptpath%
  \ignorespaces%
}



\def\pgfuseobject#1{\pgfsys@beginscope\pgfsys@useobject{#1}{}\pgfsys@endscope}



\def\pgfuseobjectmagnify#1{%
  \pgfsys@beginscope%
  \pgfsys@useobject{#1}{\pgfsys@transformxyscale{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}}%
  \pgfsys@endscope%
}


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex ====

\ProvidesFileRCS{pgfcorepathconstruct.code.tex}


\newdimen\pgf@path@lastx
\newdimen\pgf@path@lasty

\let\pgfgetpath=\pgfsyssoftpath@getcurrentpath
\let\pgfsetpath=\pgfsyssoftpath@setcurrentpath




\newif\ifpgf@arccorners

\def\pgfsetcornersarced#1{%
  \pgf@process{#1}%
  \edef\pgf@corner@arc{{\the\pgf@x}{\the\pgf@y}}%
  \pgf@arccornerstrue%
  \ifdim\pgf@x=0pt%
    \ifdim\pgf@y=0pt\relax%
      \pgf@arccornersfalse%
    \fi%
  \fi%
}

\def\pgf@roundcornerifneeded{%
  \ifpgf@arccorners\expandafter\pgfsyssoftpath@specialround\pgf@corner@arc\fi%
}




\def\pgf@lt@moveto#1#2{%
  \pgf@protocolsizes{#1}{#2}%
  \pgfsyssoftpath@moveto{\the#1}{\the#2}%
}
\def\pgf@lt@lineto#1#2{%
  \pgf@protocolsizes{#1}{#2}%
  \pgfsyssoftpath@lineto{\the#1}{\the#2}%
}
\def\pgf@lt@curveto#1#2#3#4#5#6{%
  \pgf@protocolsizes{#1}{#2}%
  \pgf@protocolsizes{#3}{#4}%
  \pgf@protocolsizes{#5}{#6}%
  \pgfsyssoftpath@curveto{\the#1}{\the#2}{\the#3}{\the#4}{\the#5}{\the#6}%
}

\let\pgf@lt@closepath\pgfsyssoftpath@closepath

\let\pgf@nlt@moveto\pgf@lt@moveto
\let\pgf@nlt@lineto\pgf@lt@lineto
\let\pgf@nlt@curveto\pgf@lt@curveto
\let\pgf@nlt@closepath\pgf@lt@closepath

\let\pgf@nlt@list\pgfutil@empty %



\def\pgfpathmoveto#1{%
  \pgfpointtransformed{#1}%
  \pgf@nlt@moveto{\pgf@x}{\pgf@y}%
  \global\pgf@path@lastx=\pgf@x%
  \global\pgf@path@lasty=\pgf@y%
}

\def\pgf@protocolsizes#1#2{%
  \ifpgf@relevantforpicturesize%
    \ifdim#1<\pgf@picminx\global\pgf@picminx#1\fi%
    \ifdim#1>\pgf@picmaxx\global\pgf@picmaxx#1\fi%
    \ifdim#2<\pgf@picminy\global\pgf@picminy#2\fi%
    \ifdim#2>\pgf@picmaxy\global\pgf@picmaxy#2\fi%
    \ifpgf@size@hooked%
      \let\pgf@size@hook@x#1\let\pgf@size@hook@y#2\pgf@path@size@hook%
    \fi%
  \fi%
  \ifdim#1<\pgf@pathminx\global\pgf@pathminx#1\fi%
  \ifdim#1>\pgf@pathmaxx\global\pgf@pathmaxx#1\fi%
  \ifdim#2<\pgf@pathminy\global\pgf@pathminy#2\fi%
  \ifdim#2>\pgf@pathmaxy\global\pgf@pathmaxy#2\fi%
}
\newif\ifpgf@size@hooked
\let\pgf@path@size@hook=\pgfutil@empty%

\def\pgf@resetpathsizes{%
  \global\pgf@pathmaxx=-16000pt\relax%
  \global\pgf@pathminx=16000pt\relax%
  \global\pgf@pathmaxy=-16000pt\relax%
  \global\pgf@pathminy=16000pt\relax%
}

\def\pgf@getpathsizes#1{%
  \edef#1{{\the\pgf@pathmaxx}{\the\pgf@pathminx}{\the\pgf@pathmaxy}{\the\pgf@pathminy}}%
}
\def\pgf@setpathsizes#1{%
  \expandafter\pgf@@setpathsizes#1%
}
\def\pgf@@setpathsizes#1#2#3#4{%
  \global\pgf@pathmaxx=#1\relax%
  \global\pgf@pathminx=#2\relax%
  \global\pgf@pathmaxy=#3\relax%
  \global\pgf@pathminy=#4\relax%
}






\def\pgfpathlineto#1{%
  \pgfpointtransformed{#1}%
  \pgf@roundcornerifneeded%
  \pgf@nlt@lineto{\pgf@x}{\pgf@y}%
  \global\pgf@path@lastx=\pgf@x%
  \global\pgf@path@lasty=\pgf@y%
}




\def\pgfpathclose{%
  \pgf@roundcornerifneeded%
  \pgf@nlt@closepath%
}



\def\pgfpathcurveto#1#2#3{%
  \pgfpointtransformed{#3}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgfpointtransformed{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgfpointtransformed{#1}%
  \pgf@roundcornerifneeded%
  \pgf@nlt@curveto{\pgf@x}{\pgf@y}{\pgf@xa}{\pgf@ya}{\pgf@xb}{\pgf@yb}%
  \global\pgf@path@lastx=\pgf@xb%
  \global\pgf@path@lasty=\pgf@yb%
}




\def\pgfpathquadraticcurveto#1#2{%
  \pgfpointtransformed{#2}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgfpointtransformed{#1}%
  \pgf@xc=.6666666\pgf@x%
  \pgf@yc=.6666666\pgf@y%
  \pgf@xa=.33333333\pgf@xb%
  \pgf@ya=.33333333\pgf@yb%
  \advance\pgf@xa by\pgf@xc%
  \advance\pgf@ya by\pgf@yc%
  \advance\pgf@xc by.3333333\pgf@path@lastx%
  \advance\pgf@yc by.3333333\pgf@path@lasty%
  \pgf@roundcornerifneeded%
  \pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@xa}{\pgf@ya}{\pgf@xb}{\pgf@yb}%
  \global\pgf@path@lastx=\pgf@xb%
  \global\pgf@path@lasty=\pgf@yb%
}





\def\pgfpatharc#1#2#3{%
  {%
    \pgfmathparse{#1}\let\pgf@temp@a=\pgfmathresult%
    \pgfmathparse{#2}\let\pgf@temp@b=\pgfmathresult%
    \pgfutil@in@{and }{#3}%
    \ifpgfutil@in@%
      \pgf@arc@get@radii#3\pgf@arc@stop%
    \else
      \pgf@arc@get@radii#3and #3\pgf@arc@stop%
    \fi%
    \pgf@arc@local@angle@a=\pgf@temp@a pt%
    \pgf@arc@local@angle@b=\pgf@temp@b pt%
    \loop%
      \pgfutil@tempdima=\pgf@arc@local@angle@a%
      \advance\pgfutil@tempdima by-\pgf@arc@local@angle@b\relax%
      \ifdim\pgfutil@tempdima<0pt\relax%
        \pgfutil@tempdima=-\pgfutil@tempdima\relax%
      \fi%
    \ifdim\pgfutil@tempdima>90pt\relax%
      \ifdim\pgfutil@tempdima>115pt\relax%
        \pgf@arc@temp=90pt%
      \else%
        \pgf@arc@temp=60pt%
      \fi%
      \ifdim\pgf@arc@local@angle@b>\pgf@arc@local@angle@a\relax%
        {%
          \pgf@arc@local@angle@b=\pgf@arc@local@angle@a\relax%
          \advance\pgf@arc@local@angle@b by\pgf@arc@temp\relax%
          \pgf@arc%
        }
        \advance\pgf@arc@local@angle@a by\pgf@arc@temp\relax%
      \else
        {%
          \pgf@arc@local@angle@b=\pgf@arc@local@angle@a\relax%
          \advance\pgf@arc@local@angle@b by-\pgf@arc@temp\relax%
          \pgf@arc%
        }%
        \advance\pgf@arc@local@angle@a by-\pgf@arc@temp\relax%
      \fi%
    \repeat%
    \pgf@roundcornerifneeded%
    \pgf@arc%
  }%
}
\dimendef\pgf@arc@local@angle@a=0
\dimendef\pgf@arc@local@angle@b=1
\dimendef\pgf@arc@temp=2

\def\pgf@arc@get@radii#1and #2\pgf@arc@stop{%
  \pgfmathparse{#1}\let\pgf@arc@radius@a=\pgfmathresult%
  \pgfmathparse{#2}\let\pgf@arc@radius@b=\pgfmathresult%
}


\def\pgf@arc{%
  {%
  \pgfutil@tempdima=\pgf@arc@radius@a pt%
  \pgfutil@tempdimb=\pgf@arc@radius@b pt%
  \pgf@xa=\pgf@arc@local@angle@a\relax%
  \pgf@xb=\pgf@arc@local@angle@b\relax%
  \advance\pgf@xb by-\pgf@xa\relax%
  \ifdim\pgf@xb<0pt\relax%
    \pgf@xb=-\pgf@xb\relax%
  \fi%
  \ifdim\pgf@xb=90.0pt%
    \def\pgfmathresult{0.55228475}%
  \else%
    \pgfmathparse{1.333333333*tan(.25*\pgf@sys@tonumber{\pgf@xb})}%
  \fi%
  \pgfutil@tempdima=\pgfmathresult\pgfutil@tempdima%
  \pgfutil@tempdimb=\pgfmathresult\pgfutil@tempdimb%
  \pgf@xa=\pgf@arc@local@angle@a\relax%
  \ifdim\pgf@arc@local@angle@b>\pgf@arc@local@angle@a\relax%
    \advance\pgf@xa by 90pt\relax%
  \else%
    \advance\pgf@xa by -90pt\relax%
  \fi%
  \edef\pgf@arc@angle{\pgf@sys@tonumber{\pgf@xa}}%
  \pgfpointtransformed{\pgfpointpolar{\pgf@arc@angle}{\pgfutil@tempdima and \pgfutil@tempdimb}}%
  \advance\pgf@x by-\pgf@pt@x%
  \advance\pgf@y by-\pgf@pt@y%
  \pgf@xa=\pgf@path@lastx%
  \pgf@ya=\pgf@path@lasty%
  \advance\pgf@xa by \pgf@x%
  \advance\pgf@ya by \pgf@y%
  \pgfpointtransformed{\pgfpointpolar{\pgf@sys@tonumber{\pgf@arc@local@angle@a}}{\pgf@arc@radius@a pt and \pgf@arc@radius@b pt}}%
  \pgf@xb=\pgf@path@lastx%
  \pgf@yb=\pgf@path@lasty%
  \advance\pgf@xb by -\pgf@x%
  \advance\pgf@yb by -\pgf@y%
  \pgfpointtransformed{\pgfpointpolar{\pgf@sys@tonumber{\pgf@arc@local@angle@b}}{\pgf@arc@radius@a pt and \pgf@arc@radius@b pt}}%
  \advance\pgf@xb by \pgf@x%
  \advance\pgf@yb by \pgf@y%
  \ifdim\pgf@arc@local@angle@b>\pgf@arc@local@angle@a\relax%
    \advance\pgf@arc@local@angle@b by -90pt\relax%
  \else%
    \advance\pgf@arc@local@angle@b by 90pt\relax%
  \fi%
  \pgfpointtransformed{\pgfpointpolar{\pgf@sys@tonumber{\pgf@arc@local@angle@b}}{\pgfutil@tempdima and \pgfutil@tempdimb}}%
  \advance\pgf@x by-\pgf@pt@x%
  \advance\pgf@y by-\pgf@pt@y%
  \pgf@xc=\pgf@xb\relax%
  \pgf@yc=\pgf@yb\relax%
  \advance \pgf@xc by \pgf@x\relax%
  \advance \pgf@yc by \pgf@y\relax%
  \pgf@nlt@curveto{\pgf@xa}{\pgf@ya}{\pgf@xc}{\pgf@yc}{\pgf@xb}{\pgf@yb}%
  \global\pgf@path@lastx=\pgf@xb%
  \global\pgf@path@lasty=\pgf@yb%
  }%
}



\def\pgfpatharcaxes#1#2#3#4{%
  {%
    \pgftransformtriangle{\pgfpointorigin}{#3}{#4}%
    \pgfpatharc{#1}{#2}{1pt}%
  }%
}




\def\pgfpatharcto#1#2#3#4#5#6{%
  {%
    \pgfmathsetmacro\pgf@arcto@rx{abs(#1)}%
    \pgfmathsetmacro\pgf@arcto@ry{abs(#2)}%
    \ifdim\pgf@arcto@rx pt=0pt%
      \gdef\pgf@marshal{\pgfpathlineto{#6}}%
    \else
    \ifdim\pgf@arcto@ry pt=0pt%
      \gdef\pgf@marshal{\pgfpathlineto{#6}}%
    \else
    \pgfmathsetmacro\pgf@arcto@phi{#3}%
    \pgfmathsetmacro\pgf@arcto@fA{#4}%
    \ifdim\pgf@arcto@fA pt=0pt
    \else
      \pgfmathsetmacro\pgf@arcto@fA{1.0} %
    \fi
    \pgfmathsetmacro\pgf@arcto@fS{#5}%
    \ifdim\pgf@arcto@fS pt=0pt
    \else
      \pgfmathsetmacro\pgf@arcto@fS{1.0} %
    \fi
    \pgf@process{#6}
    \edef\pgf@arcto@xb{\the\pgf@x}%
    \edef\pgf@arcto@yb{\the\pgf@y}%
    \pgftransforminvert%
    \pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@path@lastx}{\pgf@path@lasty}}}
    \edef\pgf@arcto@xa{\the\pgf@x}
    \edef\pgf@arcto@ya{\the\pgf@y}
    \edef\pgf@temp@a{\pgf@arcto@xa,\pgf@arcto@ya}
    \edef\pgf@temp@b{\pgf@arcto@xb,\pgf@arcto@yb}
    \ifx\pgf@temp@a\pgf@temp@b%
      \global\let\pgf@marshal\pgfutil@empty
    \else
    \pgftransformreset
    \pgftransformrotate{-\pgf@arcto@phi}
    \pgf@process{
      \pgfpointtransformed{\pgfpointscale{.5}{\pgfpointdiff
          {\pgfqpoint{\pgf@arcto@xb}{\pgf@arcto@yb}}
          {\pgfqpoint{\pgf@arcto@xa}{\pgf@arcto@ya}}
        }
      }
    }
    \edef\pgf@arcto@xaprime{\pgf@sys@tonumber\pgf@x}
    \edef\pgf@arcto@yaprime{\pgf@sys@tonumber\pgf@y}
    \pgfmathsetmacro\pgf@arcto@frac@x{\pgf@arcto@xaprime/\pgf@arcto@rx}
    \pgfmathsetmacro\pgf@arcto@frac@y{\pgf@arcto@yaprime/\pgf@arcto@ry}
    \pgfmathsetmacro\pgf@arcto@lambda{
      \pgf@arcto@frac@x*\pgf@arcto@frac@x+\pgf@arcto@frac@y*\pgf@arcto@frac@y
    }
    \ifdim\pgf@arcto@lambda pt>1pt%
      \pgfmathsetmacro\pgf@arcto@sqrt@lambda{sqrt(\pgf@arcto@lambda)}
      \pgfmathsetmacro\pgf@arcto@rx{\pgf@arcto@sqrt@lambda*\pgf@arcto@rx}
      \pgfmathsetmacro\pgf@arcto@ry{\pgf@arcto@sqrt@lambda*\pgf@arcto@ry}
    \fi
    \pgfmathsetmacro\pgf@arcto@xaprime@abs{abs(\pgf@arcto@xaprime)}
    \pgfmathsetmacro\pgf@arcto@yaprime@abs{abs(\pgf@arcto@yaprime)}
    \pgfmathmax@{\pgf@arcto@rx,\pgf@arcto@ry,\pgf@arcto@xaprime@abs,\pgf@arcto@yaprime@abs}
    \pgfmathsetmacro\pgf@arcto@scaling{20/\pgfmathresult}
    \pgfmathsetmacro\pgf@arcto@rx@scaled{\pgf@arcto@scaling*\pgf@arcto@rx}
    \pgfmathsetmacro\pgf@arcto@ry@scaled{\pgf@arcto@scaling*\pgf@arcto@ry}
    \pgfmathsetmacro\pgf@arcto@xaprime@scaled{\pgf@arcto@scaling*\pgf@arcto@xaprime}
    \pgfmathsetmacro\pgf@arcto@yaprime@scaled{\pgf@arcto@scaling*\pgf@arcto@yaprime}
    \ifdim\pgf@arcto@rx pt>\pgf@arcto@ry pt%
      \pgfmathsetmacro\pgf@arcto@rx@over@ry{\pgf@arcto@rx/\pgf@arcto@ry}
      \pgfmathsetmacro\pgf@arcto@ry@over@rx{\pgf@arcto@ry/\pgf@arcto@rx}
      \pgfmathsetmacro\pgf@arcto@temp{\pgf@arcto@ry@over@rx*\pgf@arcto@xaprime@scaled}
      \pgfmathsetmacro\pgf@arcto@numerator{
        \pgf@arcto@ry@scaled*\pgf@arcto@ry@scaled-
        \pgf@arcto@yaprime@scaled*\pgf@arcto@yaprime@scaled-
        \pgf@arcto@temp*\pgf@arcto@temp
      }
      \pgfmathsetmacro\pgf@arcto@denominator{
        \pgf@arcto@yaprime@scaled*\pgf@arcto@yaprime@scaled+
        \pgf@arcto@temp*\pgf@arcto@temp
      }
    \else
      \pgfmathsetmacro\pgf@arcto@rx@over@ry{\pgf@arcto@rx/\pgf@arcto@ry}
      \pgfmathsetmacro\pgf@arcto@ry@over@rx{\pgf@arcto@ry/\pgf@arcto@rx}
      \pgfmathsetmacro\pgf@arcto@temp{\pgf@arcto@rx@over@ry*\pgf@arcto@yaprime@scaled}
      \pgfmathsetmacro\pgf@arcto@numerator{
        \pgf@arcto@rx@scaled*\pgf@arcto@rx@scaled-
        \pgf@arcto@xaprime@scaled*\pgf@arcto@xaprime@scaled-
        \pgf@arcto@temp*\pgf@arcto@temp
      }
      \pgfmathsetmacro\pgf@arcto@denominator{
        \pgf@arcto@xaprime@scaled*\pgf@arcto@xaprime@scaled+
        \pgf@arcto@temp*\pgf@arcto@temp
      }
    \fi
    \pgfmathsetmacro\pgf@arcto@frac{
      \pgf@arcto@numerator/\pgf@arcto@denominator
    }
    \ifdim\pgf@arcto@frac pt<0pt
      \pgfmathsetmacro\pgf@arcto@factor{0}
    \else
      \pgfmathsetmacro\pgf@arcto@factor{sqrt(\pgf@arcto@frac)}
    \fi
    \ifx\pgf@arcto@fA\pgf@arcto@fS
      \pgfmathsetmacro\pgf@arcto@factor{-\pgf@arcto@factor}
    \fi
    \pgfmathsetmacro\pgf@arcto@cxprime{
      \pgf@arcto@factor*\pgf@arcto@rx@over@ry*\pgf@arcto@yaprime
    }
    \pgfmathsetmacro\pgf@arcto@cyprime{
      -\pgf@arcto@factor*\pgf@arcto@ry@over@rx*\pgf@arcto@xaprime
    }
    \pgftransformreset
    \pgftransformrotate{\pgf@arcto@phi}
    \pgf@process{
      \pgfpointtransformed{\pgfqpoint{\pgf@arcto@cxprime pt}{\pgf@arcto@cyprime pt}}
    }
    \edef\pgf@arcto@temp{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
    \pgf@process{\pgfpointadd{\pgf@arcto@temp}{
        \pgfpointscale{.5}{
          \pgfpointadd
          {\pgfqpoint{\pgf@arcto@xa}{\pgf@arcto@ya}}
          {\pgfqpoint{\pgf@arcto@xb}{\pgf@arcto@yb}}        }
      }
    }
    \edef\pgf@arcto@cx{\the\pgf@x}
    \edef\pgf@arcto@cy{\the\pgf@y}
    \pgfmathsetmacro\pgf@arcto@vec@x{(\pgf@arcto@xaprime-\pgf@arcto@cxprime)/\pgf@arcto@rx}
    \pgfmathsetmacro\pgf@arcto@vec@y{(\pgf@arcto@yaprime-\pgf@arcto@cyprime)/\pgf@arcto@ry}
    \pgfmathsetmacro\pgf@arcto@denominator{veclen(\pgf@arcto@vec@x,\pgf@arcto@vec@y)}
    \pgfmathsetmacro\pgf@arcto@frac{\pgf@arcto@vec@x/\pgf@arcto@denominator}
    \pgfmathsetmacro\pgf@arcto@theta@start{acos(\pgf@arcto@frac)}
    \ifdim\pgf@arcto@vec@y pt<0pt
      \pgfmathsetmacro\pgf@arcto@theta@start{-\pgf@arcto@theta@start}
    \fi
    \pgfmathsetmacro\pgf@arcto@vec@x{(-\pgf@arcto@xaprime-\pgf@arcto@cxprime)/\pgf@arcto@rx}
    \pgfmathsetmacro\pgf@arcto@vec@y{(-\pgf@arcto@yaprime-\pgf@arcto@cyprime)/\pgf@arcto@ry}
    \pgfmathsetmacro\pgf@arcto@denominator{veclen(\pgf@arcto@vec@x,\pgf@arcto@vec@y)}
    \pgfmathsetmacro\pgf@arcto@frac{\pgf@arcto@vec@x/\pgf@arcto@denominator}
    \pgfmathsetmacro\pgf@arcto@theta@end{acos(\pgf@arcto@frac)}
    \ifdim\pgf@arcto@vec@y pt<0pt
      \pgfmathsetmacro\pgf@arcto@theta@end{-\pgf@arcto@theta@end}
    \fi
    \pgfmathsetmacro\pgf@arcto@delta@theta{abs(\pgf@arcto@theta@start-\pgf@arcto@theta@end)}
    \ifdim\pgf@arcto@fA pt=0pt%
      \ifdim\pgf@arcto@delta@theta pt>180pt%
        \ifdim\pgf@arcto@theta@end pt>\pgf@arcto@theta@start pt
          \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end-360}
        \else
          \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end+360}
        \fi
      \fi
    \else
      \ifdim\pgf@arcto@delta@theta pt<180pt%
        \ifdim\pgf@arcto@theta@end pt>\pgf@arcto@theta@start pt
          \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end-360}
        \else
          \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end+360}
        \fi
      \fi
    \fi
    \xdef\pgf@marshal{\noexpand
      \pgfpatharcaxes{\pgf@arcto@theta@start}{\pgf@arcto@theta@end}
      {\noexpand\pgfpointpolar{\pgf@arcto@phi}{\pgf@arcto@rx}}
      {\noexpand\pgfpointpolar{\pgf@arcto@phi+90}{\pgf@arcto@ry}}
    }
    \fi\fi\fi
  }
  \pgf@marshal
}



\def\pgfpatharctomaxstepsize{45}

\def\pgfpatharctoprecomputed#1#2#3#4#5#6#7#8{%
    \begingroup
    \pgf@process{#1}%
    \edef\pgfpath@center@x{\the\pgf@x}%
    \edef\pgfpath@center@y{\the\pgf@y}%
    \def\pgfpath@completearcend{#4}%
    \pgf@xa=#2pt
    \pgf@xb=#3pt
    \edef\pgfpath@startangle{#2pt}%
    \edef\pgfpath@endangle{\pgf@sys@tonumber\pgf@xb}%
    \pgf@ya=\pgf@xb
    \advance\pgf@ya by-\pgf@xa
    \ifx\pgfpatharctomaxstepsize\pgfutil@empty
        \def\pgfpath@N{1}%
        \pgf@xc=\pgf@ya
    \else
        \pgf@xc=\pgf@ya%
        \ifdim\pgf@xc<0pt
            \multiply\pgf@xc by-1
        \fi
        \divide\pgf@xc by\pgfpatharctomaxstepsize\relax
        \afterassignment\pgfutil@gobble@until@relax
        \c@pgf@counta=\the\pgf@xc\relax
        \advance\c@pgf@counta by1
        \edef\pgfpath@N{\the\c@pgf@counta}%
        \pgf@xc=\pgf@ya
        \divide\pgf@xc by\c@pgf@counta
    \fi
    \edef\pgfpath@h{\pgf@sys@tonumber\pgf@xc}%
    \pgf@xc=0.116355283466289\pgf@xc %
    \divide\pgf@xc by20
    \pgf@xa=#7\pgf@xc
    \edef\pgfpath@scale@A{\pgf@sys@tonumber\pgf@xa}%
    \pgf@xa=#8\pgf@xc
    \edef\pgfpath@scale@B{\pgf@sys@tonumber\pgf@xa}%
    \c@pgf@countd=1
    \pgfutil@loop
    \ifnum\c@pgf@countd<\pgfpath@N\relax
        \pgf@xa=\pgfpath@startangle %
        \pgf@xb=\pgfpath@h pt
        \multiply\pgf@xb by\c@pgf@countd
        \advance\pgf@xa by\pgf@xb
        \edef\pgfpath@angle@i{\pgf@sys@tonumber\pgf@xa}%
        \pgfpatharcofellipse@{%
            \pgfpoint
                {\pgfpath@center@x + #5*cos(\pgfpath@angle@i)}
                {\pgfpath@center@y + #6*sin(\pgfpath@angle@i)}%
        }%
        \advance\c@pgf@countd by1
    \pgfutil@repeat
    \pgfpatharcofellipse@{\pgfpath@completearcend}%
    \endgroup
}%
\def\pgfpatharcofellipse@#1{%
    \begingroup
    \pgf@process{#1}%
    \edef\pgfpath@endpt{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
    \pgfpathcurveto{
        \begingroup
        \global\pgf@x=\pgf@path@lastx
        \global\pgf@y=\pgf@path@lasty
        \pgf@xa=\pgf@x \advance\pgf@xa by-\pgfpath@center@x
        \pgf@ya=\pgf@y \advance\pgf@ya by-\pgfpath@center@y
        \global\advance\pgf@x by-\pgfpath@scale@A\pgf@ya
        \global\advance\pgf@y by \pgfpath@scale@B\pgf@xa
        \endgroup
    }{%
        \begingroup
        \pgfpath@endpt
        \pgf@xa=\pgf@x \advance\pgf@xa by-\pgfpath@center@x
        \pgf@ya=\pgf@y \advance\pgf@ya by-\pgfpath@center@y
        \global\advance\pgf@x by \pgfpath@scale@A\pgf@ya
        \global\advance\pgf@y by-\pgfpath@scale@B\pgf@xa
        \endgroup
    }{%
        \pgfpath@endpt
    }%
    \endgroup
}










\def\pgfpathellipse#1#2#3{%
  \pgfpointtransformed{#1}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgfpointtransformed{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \advance\pgf@xa by-\pgf@pt@x%
  \advance\pgf@ya by-\pgf@pt@y%
  \pgfpointtransformed{#3}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \advance\pgf@xb by-\pgf@pt@x%
  \advance\pgf@yb by-\pgf@pt@y%
  {%
    \advance\pgf@xa by\pgf@xc%
    \advance\pgf@ya by\pgf@yc%
    \pgf@nlt@moveto{\pgf@xa}{\pgf@ya}%
  }%
  \pgf@x=0.55228475\pgf@xb%
  \pgf@y=0.55228475\pgf@yb%
  \advance\pgf@x by\pgf@xa%
  \advance\pgf@y by\pgf@ya%
  \advance\pgf@x by\pgf@xc%
  \advance\pgf@y by\pgf@yc%
  \edef\pgf@temp{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
  \pgf@x=0.55228475\pgf@xa%
  \pgf@y=0.55228475\pgf@ya%
  \advance\pgf@x by\pgf@xb%
  \advance\pgf@y by\pgf@yb%
  {%
    \advance\pgf@x by\pgf@xc%
    \advance\pgf@y by\pgf@yc%
    \advance\pgf@xb by\pgf@xc%
    \advance\pgf@yb by\pgf@yc%
    \pgf@temp%
    \pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@x}{\pgf@y}{\pgf@xb}{\pgf@yb}%
  }%
  \pgf@xa=-\pgf@xa%
  \pgf@ya=-\pgf@ya%
  \pgf@x=0.55228475\pgf@xa%
  \pgf@y=0.55228475\pgf@ya%
  \advance\pgf@x by\pgf@xb%
  \advance\pgf@y by\pgf@yb%
  \advance\pgf@x by\pgf@xc%
  \advance\pgf@y by\pgf@yc%
  \edef\pgf@temp{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
  \pgf@x=0.55228475\pgf@xb%
  \pgf@y=0.55228475\pgf@yb%
  \advance\pgf@x by\pgf@xa%
  \advance\pgf@y by\pgf@ya%
  {%
    \advance\pgf@x by\pgf@xc%
    \advance\pgf@y by\pgf@yc%
    \advance\pgf@xa by\pgf@xc%
    \advance\pgf@ya by\pgf@yc%
    \pgf@temp%
    \pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@x}{\pgf@y}{\pgf@xa}{\pgf@ya}%
  }%
  \pgf@xb=-\pgf@xb%
  \pgf@yb=-\pgf@yb%
  \pgf@x=0.55228475\pgf@xb%
  \pgf@y=0.55228475\pgf@yb%
  \advance\pgf@x by\pgf@xa%
  \advance\pgf@y by\pgf@ya%
  \advance\pgf@x by\pgf@xc%
  \advance\pgf@y by\pgf@yc%
  \edef\pgf@temp{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
  \pgf@x=0.55228475\pgf@xa%
  \pgf@y=0.55228475\pgf@ya%
  \advance\pgf@x by\pgf@xb%
  \advance\pgf@y by\pgf@yb%
  {%
    \advance\pgf@x by\pgf@xc%
    \advance\pgf@y by\pgf@yc%
    \advance\pgf@xb by\pgf@xc%
    \advance\pgf@yb by\pgf@yc%
    \pgf@temp%
    \pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@x}{\pgf@y}{\pgf@xb}{\pgf@yb}%
  }%
  \pgf@xa=-\pgf@xa%
  \pgf@ya=-\pgf@ya%
  \pgf@x=0.55228475\pgf@xa%
  \pgf@y=0.55228475\pgf@ya%
  \advance\pgf@x by\pgf@xb%
  \advance\pgf@y by\pgf@yb%
  \advance\pgf@x by\pgf@xc%
  \advance\pgf@y by\pgf@yc%
  \edef\pgf@temp{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
  \pgf@x=0.55228475\pgf@xb%
  \pgf@y=0.55228475\pgf@yb%
  \advance\pgf@x by\pgf@xa%
  \advance\pgf@y by\pgf@ya%
  {%
    \advance\pgf@x by\pgf@xc%
    \advance\pgf@y by\pgf@yc%
    \advance\pgf@xa by\pgf@xc%
    \advance\pgf@ya by\pgf@yc%
    \pgf@temp%
    \pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@x}{\pgf@y}{\pgf@xa}{\pgf@ya}%
  }%
  \pgf@nlt@closepath%
  \pgf@nlt@moveto{\pgf@xc}{\pgf@yc}%
}




\def\pgfpathcircle#1#2{\pgfpathellipse{#1}{\pgfpoint{#2}{0pt}}{\pgfpoint{0pt}{#2}}}





\def\pgfpathrectangle{%
  \let\pgfrect@next=\pgf@specialrect%
  \ifpgf@pt@identity%
    \ifpgf@arccorners%
    \else%
      \ifx\pgf@nlt@list\pgfutil@empty%
        \let\pgfrect@next=\pgf@normalrect%
      \fi%
    \fi%
  \fi%
  \pgfrect@next%
}

\def\pgf@normalrect#1#2{%
  \pgf@process{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgfpointtransformed{#1}%
  \pgfsyssoftpath@rect{\the\pgf@x}{\the\pgf@y}{\the\pgf@xa}{\the\pgf@ya}%
  \pgf@protocolsizes{\pgf@x}{\pgf@y}%
  \advance\pgf@x by\pgf@xa\relax%
  \advance\pgf@y by\pgf@ya\relax%
  \pgf@protocolsizes{\pgf@x}{\pgf@y}%
}

\def\pgf@specialrect#1#2{%
  \pgf@process{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{#1}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \advance\pgf@xa by\pgf@xb%
  \advance\pgf@ya by\pgf@yb%
  \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
  \pgfpathclose%
  \pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
}


\def\pgfpathrectanglecorners#1#2{%
  \pgf@process{#2}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgf@process{#1}%
  \advance\pgf@xc by-\pgf@x%
  \advance\pgf@yc by-\pgf@y%
  \pgfpathrectangle{#1}{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
}



\pgfkeys{
  /pgf/stepx/.initial=1cm,
  /pgf/stepy/.initial=1cm,
  /pgf/step/.code={\pgf@process{#1}\pgfkeysalso{/pgf/stepx/.expanded=\the\pgf@x,/pgf/stepy/.expanded=\the\pgf@y}},
  /pgf/step/.value required
}

\def\pgfpathgrid{\pgfutil@ifnextchar[{\pgf@pathgrid}{\pgf@pathgrid[]}}
\def\pgf@pathgrid[#1]#2#3{%
  \pgfset{#1}%
  \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/stepx}}%
  \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/stepy}}%
  \pgf@process{#3}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \ifdim\pgf@xa>\pgf@xb%
    \pgf@x=\pgf@xb%
    \pgf@xb=\pgf@xa%
    \pgf@xa=\pgf@x%
  \fi%
  \ifdim\pgf@ya>\pgf@yb%
    \pgf@y=\pgf@yb%
    \pgf@yb=\pgf@ya%
    \pgf@ya=\pgf@y%
  \fi%
  \ifdim \pgf@yc > .01pt\relax%
    \c@pgf@counta=\pgf@ya\relax%
    \c@pgf@countb=\pgf@yc\relax%
    \divide\c@pgf@counta by\c@pgf@countb\relax%
    \pgfutil@tempdima=\c@pgf@counta\pgf@yc\relax%
    \ifdim\pgfutil@tempdima<\pgf@ya%
      \advance\pgfutil@tempdima by\pgf@yc%
    \fi%
    \pgfutil@tempdimb\pgf@x
    \pgfutil@loop%
      {%
        \pgf@xa=\pgfutil@tempdimb%
        \pgf@ya=\pgfutil@tempdima%
        \pgf@pos@transform{\pgf@xa}{\pgf@ya}
        \pgf@nlt@moveto{\pgf@xa}{\pgf@ya}%
        \pgf@xa=\pgf@xb%
        \pgf@ya=\pgfutil@tempdima%
        \pgf@pos@transform{\pgf@xa}{\pgf@ya}
        \pgf@nlt@lineto{\pgf@xa}{\pgf@ya}%
      }%
    \advance\pgfutil@tempdima by\pgf@yc%
    \ifdim\pgfutil@tempdima<\pgf@yb%
    \pgfutil@repeat%
    \advance\pgfutil@tempdima by-0.01pt\relax%
    \ifdim\pgfutil@tempdima<\pgf@yb%
      {%
        \pgf@xa=\pgfutil@tempdimb%
        \pgf@ya=\pgfutil@tempdima%
        \pgf@pos@transform{\pgf@xa}{\pgf@ya}
        \pgf@nlt@moveto{\pgf@xa}{\pgf@ya}%
        \pgf@xa=\pgf@xb%
        \pgf@ya=\pgfutil@tempdima%
        \pgf@pos@transform{\pgf@xa}{\pgf@ya}
        \pgf@nlt@lineto{\pgf@xa}{\pgf@ya}%
      }%
    \fi%
  \fi%
  \ifdim \pgf@xc > .01pt\relax%
    \c@pgf@counta=\pgf@xa\relax%
    \c@pgf@countb=\pgf@xc\relax%
    \divide\c@pgf@counta by\c@pgf@countb\relax%
    \pgfutil@tempdimb=\c@pgf@counta\pgf@xc\relax%
    \ifdim\pgfutil@tempdimb<\pgf@xa%
      \advance\pgfutil@tempdimb by\pgf@xc%
    \fi%
    \pgfutil@loop%
      {%
        \pgf@xc=\pgfutil@tempdimb%
        \pgf@yc=\pgf@ya%
        \pgf@pos@transform{\pgf@xc}{\pgf@yc}
        \pgf@nlt@moveto{\pgf@xc}{\pgf@yc}%
        \pgf@xc=\pgfutil@tempdimb%
        \pgf@yc=\pgf@yb%
        \pgf@pos@transform{\pgf@xc}{\pgf@yc}
        \pgf@nlt@lineto{\pgf@xc}{\pgf@yc}%
      }%
      \advance\pgfutil@tempdimb by\pgf@xc%
    \ifdim\pgfutil@tempdimb<\pgf@xb%
    \pgfutil@repeat%
    \advance\pgfutil@tempdimb by-0.01pt\relax%
    \ifdim\pgfutil@tempdimb<\pgf@xb%
      {%
        \pgf@xc=\pgfutil@tempdimb%
        \pgf@yc=\pgf@ya%
        \pgf@pos@transform{\pgf@xc}{\pgf@yc}
        \pgf@nlt@moveto{\pgf@xc}{\pgf@yc}%
        \pgf@xc=\pgfutil@tempdimb%
        \pgf@yc=\pgf@yb%
        \pgf@pos@transform{\pgf@xc}{\pgf@yc}
        \pgf@nlt@lineto{\pgf@xc}{\pgf@yc}%
      }%
    \fi%
  \fi%
  \pgf@process{#3}%
  \pgf@pos@transform{\pgf@x}{\pgf@y}%
  \pgf@nlt@moveto{\pgf@x}{\pgf@y}%
}




\def\pgfpathparabola#1#2{%
  {%
    \pgf@process{#2}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@process{#1}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgfutil@tempswatrue%
    \ifdim\pgf@xb=0pt\relax%
      \ifdim\pgf@yb=0pt\relax%
        \pgfutil@tempswafalse%
      \fi%
    \fi%
    {%
      \ifpgfutil@tempswa%
        \pgf@arccornersfalse
      \else%
      \fi%
      \pgfutil@tempswatrue%
      \ifdim\pgf@xc=0pt\relax%
        \ifdim\pgf@yc=0pt\relax%
          \pgfutil@tempswafalse%
        \fi%
      \fi%
      \ifpgfutil@tempswa
      {%
        \pgf@pt@x=\pgf@path@lastx%
        \pgf@pt@y=\pgf@path@lasty%
        \pgfpathcurveto%
          {\pgfqpoint{.1125\pgf@xc}{.225\pgf@yc}}%
          {\pgfqpoint{.5\pgf@xc}{\pgf@yc}}%
          {\pgfqpoint{\pgf@xc}{\pgf@yc}}%
      }%
      \fi%
    }%
    \ifpgfutil@tempswa%
      \pgf@xc=\pgf@xb%
      \pgf@yc=\pgf@yb%
      {%
        \pgf@pt@x=\pgf@path@lastx%
        \pgf@pt@y=\pgf@path@lasty%
        \pgfpathcurveto%
          {\pgfqpoint{.5\pgf@xc}{0\pgf@yc}}%
          {\pgfqpoint{.8875\pgf@xc}{.775\pgf@yc}}%
          {\pgfqpoint{\pgf@xc}{\pgf@yc}}%
      }%
    \fi%
  }%
}





\def\pgfpathsine#1{%
  {%
    \pgf@process{#1}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgf@pt@x=\pgf@path@lastx%
    \pgf@pt@y=\pgf@path@lasty%
    \pgfpathcurveto%
      {\pgfqpoint{.3260\pgf@xc}{.5120\pgf@yc}}%
      {\pgfqpoint{.6380\pgf@xc}{\pgf@yc}}%
      {\pgfqpoint{\pgf@xc}{\pgf@yc}}%
  }%
}


\def\pgfpathcosine#1{%
  {%
    \pgf@process{#1}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgf@pt@x=\pgf@path@lastx%
    \pgf@pt@y=\pgf@path@lasty%
    \pgfpathcurveto%
      {\pgfqpoint{.3620\pgf@xc}{0pt}}%
      {\pgfqpoint{.6740\pgf@xc}{.4880\pgf@yc}}%
      {\pgfqpoint{\pgf@xc}{\pgf@yc}}%
  }%
}



\def\pgfpathcurvebetweentime{\pgf@ignoremovetofalse\pgf@@pathcurvebetweentime}
\def\pgfpathcurvebetweentimecontinue{\pgf@ignoremovetotrue\pgf@@pathcurvebetweentime}
\newif\ifpgf@ignoremoveto

\def\pgf@@pathcurvebetweentime#1#2#3#4#5#6{%
  \pgfmathparse{#1}%
  \let\pgf@time@s=\pgfmathresult%
  \pgfmathparse{#2}%
  \let\pgf@time@t=\pgfmathresult%
  \ifdim\pgf@time@s pt>\pgf@time@t pt\relax%
    \pgfmathsetmacro\pgf@time@s{1-#1}%
    \pgfmathsetmacro\pgf@time@t{1-#2}%
    \pgf@@@pathcurvebetweentime{\pgf@time@t}{#6}{#5}{#4}{#3}%
  \else%
    \pgf@@@pathcurvebetweentime{\pgf@time@t}{#3}{#4}{#5}{#6}%
  \fi%
}

\def\pgf@@@pathcurvebetweentime#1#2#3#4#5{%
  \pgf@process{#2}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgf@process{%
    \pgf@process{#3}%
    \pgf@xa=#1\pgf@x%
    \pgf@ya=#1\pgf@y%
    \pgf@process{#2}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \advance\pgf@x by-#1\pgf@xb%
    \advance\pgf@y by-#1\pgf@yb%
    \advance\pgf@x by\pgf@xa%
    \advance\pgf@y by\pgf@ya%
  }%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{%
    \pgf@process{#4}%
    \pgf@xa=#1\pgf@x%
    \pgf@ya=#1\pgf@y%
    \pgf@process{#3}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \advance\pgf@xc by-#1\pgf@x%
    \advance\pgf@yc by-#1\pgf@y%
    \pgf@x=\pgf@xb%
    \pgf@y=\pgf@yb%
    \advance\pgf@x by#1\pgf@xa%
    \advance\pgf@y by#1\pgf@ya%
    \advance\pgf@x by-#1\pgf@xb%
    \advance\pgf@y by-#1\pgf@yb%
    \advance\pgf@x by#1\pgf@xc%
    \advance\pgf@y by#1\pgf@yc%
  }%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{\pgfpointcurveattime{#1}{#2}{#3}{#4}{#5}}%
  \ifx#1\pgf@time@t%
    \pgfmathdivide@{\pgf@time@s}{\pgf@time@t}%
    \pgfmathadd@{-\pgfmathresult}{1}%
    \let\pgf@time@s=\pgfmathresult%
    \edef\pgf@marshal{%
      \noexpand\pgf@@@pathcurvebetweentime{\noexpand\pgf@time@s}%
        {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
        {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
    }%
  \else%
    \ifpgf@ignoremoveto%
      \edef\pgf@marshal{%
        \noexpand\pgfpathcurveto{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
          {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
      }%
    \else%
      \edef\pgf@marshal{%
        \noexpand\pgfpathmoveto{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
        \noexpand\pgfpathcurveto{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
          {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
      }%
    \fi%
  \fi%
  \pgf@marshal%
}


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex ====

\ProvidesFileRCS{pgfcorepathprocessing.code.tex}



\def\pgfprocesssplitpath#1{%
  \let\pgfprocessresultpathprefix\pgfutil@empty%
  \let\pgfprocessresultpathsuffix\pgfutil@empty%
  \let\pgf@next\pgf@process@split%
  \expandafter\pgf@process@split#1\pgfsyssoftpath@movetotoken{}{}\pgf@stop%
}

\def\pgf@process@split#1\pgfsyssoftpath@movetotoken#2#3#4{%
  \ifx#4\pgf@stop%
    \expandafter\def\expandafter\pgfprocessresultpathsuffix\expandafter{\pgfprocessresultpathsuffix#1}%
    \let\pgf@next\pgfutil@gobble%
  \else%
    \expandafter\expandafter\expandafter\def%
    \expandafter\expandafter\expandafter\pgfprocessresultpathprefix%
    \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathprefix\pgfprocessresultpathsuffix#1}%
    \def\pgfprocessresultpathsuffix{\pgfsyssoftpath@movetotoken{#2}{#3}}%
  \fi%
  \pgf@next#4%
}




\def\pgfprocesssplitsubpath#1{%
  \let\pgf@tempa\pgfutil@emtpy%
  \let\pgf@tempb\pgfutil@emtpy%
  \let\pgf@tempc\pgfutil@emtpy%
  \let\pgf@tempd\pgfutil@emtpy%
  \let\pgfprocessresultsubpathprefix\pgfutil@empty%
  \let\pgfprocessresultsubpathsuffix\pgfutil@empty%
  \let\pgf@next\pgf@split@subpath%
  \expandafter\pgf@split@subpath#1\pgf@stop%
}

\newif\ifpgf@split@move

\def\pgf@split@subpath#1#2#3#4{%
  \ifx#4\pgf@stop%
    \expandafter\def\expandafter\pgfprocessresultsubpathsuffix\expandafter{\pgfprocessresultsubpathsuffix#1{#2}{#3}}%
    \let\pgf@next\pgfutil@gobble%
  \else%
    \pgf@split@movetrue%
    \ifx#1\pgfsyssoftpath@curvetosupportatoken%
      \pgf@split@movefalse%
    \else
      \ifx#1\pgfsyssoftpath@curvetosupportbtoken%
        \pgf@split@movefalse%
      \fi%
    \fi%
    \ifpgf@split@move%
      \expandafter\expandafter\expandafter\def%
      \expandafter\expandafter\expandafter\pgfprocessresultsubpathprefix%
      \expandafter\expandafter\expandafter{%
        \expandafter\pgfprocessresultsubpathprefix\pgfprocessresultsubpathsuffix}%
      \def\pgfprocessresultsubpathsuffix{#1{#2}{#3}}%
    \else%
      \expandafter\def\expandafter\pgfprocessresultsubpathsuffix\expandafter{\pgfprocessresultsubpathsuffix#1{#2}{#3}}%
    \fi%
  \fi%
  \pgf@next#4%
}





\def\pgfprocesspathextractpoints#1{%
  \ifx#1\pgfutil@empty%
    \let\pgfpointfirstonpath=\pgfpointorigin%
    \let\pgfpointsecondonpath=\pgfpointorigin%
    \let\pgfpointsecondlastonpath=\pgfpointorigin%
    \let\pgfpointlastonpath=\pgfpointorigin%
  \else%
    \expandafter\pgf@extractprocessorfirst#1\pgf@stop%
  \fi%
}

\def\pgf@extractprocessorfirst#1#2#3#4{%
  \def\pgfpointfirstonpath{\pgfqpoint{#2}{#3}}%
  \ifx#4\pgf@stop%
    \let\pgfpointsecondonpath=\pgfpointfirstonpath%
    \let\pgfpointsecondlastonpath=\pgfpointfirstonpath%
    \let\pgfpointlastonpath=\pgfpointfirstonpath%
    \let\next=\pgfutil@gobble%
  \else
    \let\next=\pgf@extractprocessorsecond%
  \fi%
  \next#4%
}

\def\pgf@extractprocessorsecond#1{%
  \ifx#1\pgfsyssoftpath@movetotoken%
    \let\pgf@next=\pgf@extractprocessorfirst%
  \else%
    \let\pgf@next=\pgf@@extractprocessorsecond%
  \fi%
  \pgf@next#1%
}
\def\pgf@@extractprocessorsecond#1#2#3#4{%
  \def\pgfpointsecondonpath{\pgfqpoint{#2}{#3}}%
  \let\pgfpointsecondlastonpath=\pgfpointfirstonpath%
  \let\pgfpointlastonpath=\pgfpointsecondonpath%
  \ifx#4\pgf@stop%
    \let\next=\pgfutil@gobble%
  \else
    \let\next=\pgf@extractprocessorother%
  \fi%
  \next#4%
}

\def\pgf@extractprocessorother#1{%
  \ifx#1\pgfsyssoftpath@movetotoken%
    \let\pgf@next=\pgf@extractprocessorfirst%
  \else%
    \let\pgf@next=\pgf@@extractprocessorother%
  \fi%
  \pgf@next#1%
}
\def\pgf@@extractprocessorother#1#2#3#4{%
  \let\pgfpointsecondlastonpath=\pgfpointlastonpath%
  \def\pgfpointlastonpath{\pgfqpoint{#2}{#3}}%
  \ifx#4\pgf@stop%
    \let\next=\pgfutil@gobble%
  \fi%
  \next#4%
}




\def\pgfprocesscheckclosed#1#2{%
  {%
    \global\let\pgf@proc@todo=\relax%
    \let\pgfsyssoftpath@movetotoken=\pgfutil@gobbletwo%
    \let\pgfsyssoftpath@linetotoken=\pgfutil@gobbletwo%
    \let\pgfsyssoftpath@curvetosupportatoken=\pgfutil@gobbletwo%
    \let\pgfsyssoftpath@curvetosupportbtoken=\pgfutil@gobbletwo%
    \let\pgfsyssoftpath@curvetotoken=\pgfutil@gobbletwo%
    \def\pgfsyssoftpath@rectcornertoken{\gdef\pgf@proc@todo{#2}\pgfutil@gobbletwo}%
    \def\pgfsyssoftpath@rectsizetoken{\gdef\pgf@proc@todo{#2}\pgfutil@gobbletwo}%
    \def\pgfsyssoftpath@closepathtoken{\gdef\pgf@proc@todo{#2}\pgfutil@gobbletwo}%
    #1%
  }%
  \pgf@proc@todo%
}



\def\pgfprocessround#1#2{%
  \expandafter\pgf@processroundcheck\expandafter#1\expandafter#2#1\pgfsyssoftpath@specialroundtoken\pgf@stop%
}

\def\pgf@processroundcheck#1#2#3\pgfsyssoftpath@specialroundtoken#4\pgf@stop{%
  \def\pgf@test{#4}%
  \ifx\pgf@test\pgfutil@empty%
    \let#2=#1%
  \else%
    \pgf@@processround#1#2%
  \fi%
}


\def\pgf@@processround#1#2{%
  \let\pgfprocess@newpath\pgfutil@empty%
  \let\pgfprocess@moveto\pgfutil@empty%
  \let\pgfprocess@firstto\pgfutil@empty%
  \let\pgfprocess@segment\pgfutil@empty%
  \pgf@xa=0pt%
  \pgf@ya=0pt%
  \expandafter\pgfprocess@round#1\pgf@stop{0pt}{0pt}%
  \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@moveto}%
  \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@segment}%
  \let#2=\pgfprocess@newpath%
}

\def\pgfprocess@round#1#2#3{%
  \ifx#1\pgf@stop%
    \let\next=\relax%
  \else%
    \ifx#1\pgfsyssoftpath@specialroundtoken%
      \def\pgfprocess@savex{#2}%
      \def\pgfprocess@savey{#3}%
      \let\next=\pgfprocess@specialround%
      \ifdim#2=0pt%
        \ifdim#3=0pt%
          \let\next=\pgfprocess@round%
        \fi%
      \fi%
    \else%
      \ifx\pgfprocess@firstto\pgfutil@empty%
        \def\pgfprocess@firstto{{#2}{#3}}%
      \fi%
      \pgf@xa=#2%
      \pgf@ya=#3%
      \ifx#1\pgfsyssoftpath@movetotoken%
        \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@moveto}%
        \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@segment}%
        \def\pgfprocess@moveto{#1{#2}{#3}}%
        \let\pgfprocess@firstto=\pgfutil@empty%
        \let\pgfprocess@segment=\pgfutil@empty%
      \else%
        \pgfutil@g@addto@macro\pgfprocess@segment{#1{#2}{#3}}%
      \fi%
      \let\next=\pgfprocess@round%
    \fi%
  \fi%
  \next%
}

\def\pgfprocess@specialround#1#2#3{%
  \ifx\pgfprocess@firstto\pgfutil@empty%
    \def\pgfprocess@firstto{{#2}{#3}}%
  \fi%
  \let\next=\pgfprocess@round%
  \ifx#1\pgfsyssoftpath@linetotoken%
    \let\next=\pgfprocess@specialroundcope%
  \else%
    \ifx#1\pgfsyssoftpath@curvetosupportatoken%
      \let\next=\pgfprocess@specialroundcurveto%
    \else%
      \ifx#1\pgfsyssoftpath@closepathtoken%
        \let\next=\pgfprocess@specialroundclose%
      \fi%
    \fi%
  \fi%
  \next#1{#2}{#3}%
}%

\def\pgfprocess@specialroundcope#1#2#3#4#5#6{%
  \let\next=\pgfprocess@round%
  \let\pgfprocess@continueafterrounding=\pgfprocess@round%
  \ifx#4\pgfsyssoftpath@linetotoken%
    \pgf@xc=#5%
    \pgf@yc=#6%
    \let\next=\pgfprocess@@specialround%
  \else%
    \ifx#4\pgfsyssoftpath@curvetosupportatoken%
      \pgf@xc=#5%
      \pgf@yc=#6%
      \let\next=\pgfprocess@@specialround%
    \else%
      \ifx#4\pgfsyssoftpath@closepathtoken%
        \pgf@xc=#5%
        \pgf@yc=#6%
        \let\next=\pgfprocess@@specialround%
      \else
        \ifx#4\pgfsyssoftpath@specialroundtoken%
          \let\next=\pgfprocess@@findrightcoordinates%
        \fi%
      \fi%
    \fi%
  \fi%
  \next#1{#2}{#3}#4{#5}{#6}%
}

\def\pgfprocess@@findrightcoordinates#1#2#3#4#5#6#7#8#9{%
  \pgf@xc=#8%
  \pgf@yc=#9%
  \pgfprocess@@specialround#1{#2}{#3}#4{#5}{#6}#7{#8}{#9}%
}

\def\pgfprocess@@specialround#1#2#3{%
  \pgfutil@g@addto@macro\pgfprocess@segment{#1}%
  \pgf@xb=#2%
  \pgf@yb=#3%
  \edef\pgf@marshal%
  {\noexpand\pgfpointlineatdistance{\pgfprocess@savex}%
    {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
    {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}}%
  \pgf@process{\pgf@marshal}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \edef\pgfprocess@addition{{\the\pgf@x}{\the\pgf@y}}%
  \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
  \edef\pgf@marshal%
  {\noexpand\pgfpointlineatdistance{\pgfprocess@savey}%
    {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
    {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}}%
  \pgf@process{\pgf@marshal}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  {%
    \pgf@x=\pgf@xb%
    \pgf@y=\pgf@yb%
    \advance\pgf@x by-\pgf@xa%
    \advance\pgf@y by-\pgf@ya%
    \advance\pgf@xa by 0.5522847\pgf@x%
    \advance\pgf@ya by 0.5522847\pgf@y%
    \edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@curvetosupportatoken{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
  }%
  {%
    \pgf@x=\pgf@xb%
    \pgf@y=\pgf@yb%
    \advance\pgf@x by-\pgf@xc%
    \advance\pgf@y by-\pgf@yc%
    \advance\pgf@xc by 0.5522847\pgf@x%
    \advance\pgf@yc by 0.5522847\pgf@y%
    \edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@curvetosupportbtoken{\the\pgf@xc}{\the\pgf@yc}}%
    \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
  }%
  \edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@curvetotoken{\the\pgf@xc}{\the\pgf@yc}}%
  \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
  \pgf@xa=#2%
  \pgf@ya=#3%
  \pgfprocess@continueafterrounding%
}

\def\pgfprocess@specialroundcurveto#1#2#3#4#5#6{%
  \pgfutil@g@addto@macro\pgfprocess@segment{#1{#2}{#3}#4{#5}{#6}}%
  \pgf@xa=#5%
  \pgf@ya=#6%
  \pgfprocess@specialroundcope}

\def\pgfprocess@specialroundclose{%
  \let\next=\pgfprocess@round%
  \ifx\pgfprocess@moveto\pgfutil@empty%
  \else%
    \ifx\pgfprocess@firstto\pgfutil@empty%
    \else%
      \expandafter\pgfprocess@@specialclosetarget\pgfprocess@firstto%
      \let\pgfprocess@continueafterrounding=\pgfprocess@cleanupafterclose%
      \edef\next{%
        \noexpand\pgfprocess@@specialround%
        \expandafter\expandafter\expandafter\noexpand\expandafter\pgfprocess@@specialclosemoveto\pgfprocess@moveto%
      }%
    \fi%
  \fi%
  \next%
}

\def\pgfprocess@@specialclosetarget#1#2{%
  \pgf@xc=#1%
  \pgf@yc=#2%
}

\def\pgfprocess@@specialclosemoveto#1#2#3{%
  \pgfsyssoftpath@linetotoken{#2}{#3}%
}


\def\pgfprocess@cleanupafterclose#1#2#3{%
  \edef\pgfprocess@moveto{\noexpand\pgfsyssoftpath@movetotoken{\the\pgf@xc}{\the\pgf@yc}}%
  \edef\pgf@marshal{\noexpand\pgfprocess@round\noexpand\pgfsyssoftpath@closepathtoken{\the\pgf@xc}{\the\pgf@yc}}%
  \pgf@marshal%
}



\def\pgfprocesspathreplacestartandend#1#2#3{%
  \ifx#1\pgfutil@empty%
  \else%
  {%
    \pgfsyssoftpath@getcurrentpath\pgf@replace@origpath%
    \let\pgf@prepath=\pgfutil@empty%
    \pgf@process{#3}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{#2}%
    \expandafter\pgf@replaceprocessfirst#1\pgf@stop%
    \pgfsyssoftpath@getcurrentpath\pgf@restpath%
    \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef%
    \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter#1%
    \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{%
      \expandafter\expandafter\expandafter\pgf@prepath%
      \expandafter\pgf@newstart\pgf@restpath}%
    \pgfsyssoftpath@setcurrentpath\pgf@replace@origpath%
  }%
  \fi%
}

\def\pgf@replaceprocessfirst#1#2#3#4{%
  \def\pgf@origstart{#1{#2}{#3}}%
  \edef\pgf@newstart{\noexpand#1{\the\pgf@x}{\the\pgf@y}}%
  \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
  \ifx#4\pgf@stop%
    \let\pgf@next=\pgfutil@gobble%
  \else%
    \let\pgf@next=\pgf@replaceprocessother%
    \let\pgf@@next=\pgf@@replaceprocessother%
  \fi%
  \pgf@next#4%
}

\def\pgf@replaceprocessother#1{%
  \ifx#1\pgfsyssoftpath@movetotoken%
    \pgf@replace@handle@move%
  \fi%
  \pgf@@next#1%
}
\def\pgf@@replaceprocessother#1#2#3#4{%
  \ifx#4\pgf@stop%
    \edef\pgf@restpathaddition{{\noexpand#1{\the\pgf@xa}{\the\pgf@ya}}}%
    \expandafter\pgfsyssoftpath@addtocurrentpath\pgf@restpathaddition%
    \let\pgf@next=\pgfutil@gobble%
  \else%
    \pgfsyssoftpath@addtocurrentpath{#1{#2}{#3}}%
  \fi%
  \pgf@next#4%
}

\def\pgf@replace@handle@move{%
  \pgfsyssoftpath@getcurrentpath\pgf@restpath%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\pgf@prepath%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{%
    \expandafter\expandafter\expandafter\pgf@prepath%
    \expandafter\pgf@origstart\pgf@restpath}%
  \let\pgf@@next=\pgf@replaceprocessfirst%
}

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex ====

\ProvidesFileRCS{pgfcorepathusage.code.tex}



\pgfkeys{
  /pgf/stroke/.code=\let\pgf@up@stroke\pgf@up@stroke@text\pgf@up@path@neededtrue,
  /pgf/draw/.code=\let\pgf@up@stroke\pgf@up@stroke@text\pgf@up@path@neededtrue,
  /pgf/fill/.code=\let\pgf@up@fill\pgf@up@fill@text\pgf@up@path@neededtrue,
  /pgf/clip/.code=\let\pgf@up@clip\pgf@up@clip@text\pgf@up@path@neededtrue,
  /pgf/discard/.code=,
  /pgf/use as bounding box/.code=\let\pgf@up@bb\pgf@do@up@bb,
  /pgf/arrow keys/flex/.code=\pgferror{You need to say \string\usetikzlibrary{bending} for flexing and bending arrows},
  /pgf/arrow keys/flex'/.code=\pgferror{You need to say \string\usetikzlibrary{bending} for flexing and bending arrows},
  /pgf/arrow keys/bend/.code=\pgferror{You need to say \string\usetikzlibrary{bending} for flexing and bending arrows},
  /pgf/arrow keys/quick/.code=\pgfarrowsaddtooptions{\let\pgf@arrow@flex@mode\pgf@arrow@mode@is@quick},
}

\pgfkeys{
  /pgf/.cd,
  tips/.is choice,
  tips/.default=true,
  tips/proper/.code=\let\pgf@tips@mode\pgf@tips@mode@onproper,
  tips/on proper draw/.code=\let\pgf@tips@mode\pgf@tips@mode@onproperdraw,
  tips/true/.code=\let\pgf@tips@mode\pgf@tips@mode@true,
  tips/on draw/.code=\let\pgf@tips@mode\pgf@tips@mode@ondraw,
  tips/never/.code=\let\pgf@tips@mode\pgf@tips@mode@false,
  tips/false/.code=\let\pgf@tips@mode\pgf@tips@mode@false,
}
\def\pgf@tips@mode@onproper{4}
\def\pgf@tips@mode@onproperdraw{3}
\def\pgf@tips@mode@true{2}
\def\pgf@tips@mode@ondraw{1}
\def\pgf@tips@mode@false{0}
\let\pgf@tips@mode\pgf@tips@mode@ondraw


\newif\ifpgf@precise@shortening
\def\pgf@arrow@mode@is@quick{0}
\let\pgf@arrow@flex@mode\pgf@arrow@mode@is@quick

\newif\ifpgf@up@path@needed
\newif\ifpgf@up@draw@arrows
\def\pgf@up@stroke@text{stroke}
\def\pgf@up@fill@text{fill}
\def\pgf@up@clip@text{clip}
\def\pgf@do@up@bb{\pgf@relevantforpicturesizefalse}

\def\pgfusepath#1{%
  \pgf@up@path@neededfalse%
  \pgf@up@draw@arrowsfalse%
  \let\pgf@up@stroke\pgfutil@empty%
  \let\pgf@up@fill\pgfutil@empty%
  \let\pgf@up@clip\pgfutil@empty%
  \let\pgf@up@bb\pgfutil@empty%
  \pgfset{#1}%
  \expandafter\def\expandafter\pgf@up@action\expandafter{\csname pgfsys@\pgf@up@fill\pgf@up@stroke\endcsname}%
  \ifnum\pgf@tips@mode=2\relax%
    \pgf@up@path@neededtrue%
  \fi%
  \ifnum\pgf@tips@mode=4\relax%
    \pgf@up@path@neededtrue%
  \fi%
  \ifpgf@up@path@needed%
  \else%
    \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
  \fi%
  \ifx\pgf@up@stroke\pgfutil@empty%
    \ifx\pgf@up@fill\pgfutil@empty%
      \let\pgf@up@action=\pgfutil@empty%
      \ifx\pgf@up@clip\pgfutil@empty%
      \else%
        \let\pgf@up@action=\pgfsys@discardpath%
      \fi%
    \fi%
  \fi%
  \pgfsyssoftpath@getcurrentpath\pgf@last@processed@path
  \pgfprocessround{\pgf@last@processed@path}{\pgf@last@processed@path}%
  \pgfsyssoftpath@setcurrentpath\pgf@last@processed@path%
  \ifpgf@relevantforpicturesize%
    \ifx\pgf@up@stroke\pgfutil@empty%
    \else%
      \ifdim\pgf@picmaxx=-16000pt\relax%
      \else%
        \pgf@x=\pgf@pathminx\advance\pgf@x by-.5\pgflinewidth%
        \ifdim\pgf@x<\pgf@picminx\global\pgf@picminx\pgf@x\fi%
        \pgf@y=\pgf@pathminy\advance\pgf@y by-.5\pgflinewidth%
        \ifdim\pgf@y<\pgf@picminy\global\pgf@picminy\pgf@y\fi%
        \pgf@x=\pgf@pathmaxx\advance\pgf@x by.5\pgflinewidth%
        \ifdim\pgf@x>\pgf@picmaxx\global\pgf@picmaxx\pgf@x\fi%
        \pgf@y=\pgf@pathmaxy\advance\pgf@y by.5\pgflinewidth%
        \ifdim\pgf@y>\pgf@picmaxy\global\pgf@picmaxy\pgf@y\fi%
      \fi%
    \fi%
  \fi%
  \ifx\pgf@up@clip\pgfutil@empty%
    \ifx\pgf@up@stroke\pgfutil@empty%
      \ifx\pgf@up@action\pgfutil@empty%
        \ifnum\pgf@tips@mode=2\relax%
          \pgf@up@draw@arrows@only%
        \fi%
        \ifnum\pgf@tips@mode=4\relax%
          \pgf@up@draw@arrows@only%
        \fi%
      \else%
        \pgfsyssoftpath@invokecurrentpath%
        \pgf@up@action%
      \fi%
    \else%
      \pgfgetpath\pgf@arrowpath%
      \pgf@path@setup@tempswa%
      \pgfprocesscheckclosed{\pgf@arrowpath}{\pgfutil@tempswafalse}%
      \pgf@path@check@proper%
      \ifpgfutil@tempswa%
        \pgf@check@for@arrow@and@animation%
        \pgf@prepare@end@of@path%
        \begingroup%
          \pgf@prepare@start@of@path%
      \fi%
          \pgfsyssoftpath@invokecurrentpath%
          \pgf@up@action%
          \ifdim\pgfinnerlinewidth>0pt\relax%
            \pgf@stroke@inner@line%
          \fi%
      \ifpgfutil@tempswa%
          \pgf@add@arrow@at@start%
        \endgroup%
        \pgf@add@arrow@at@end%
      \fi%
    \fi%
  \else%
    \pgfsyssoftpath@invokecurrentpath%
    \pgfsys@clipnext%
    \pgf@up@action%
    \pgf@relevantforpicturesizefalse%
  \fi%
  \pgf@up@bb%
  \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
  \pgf@resetpathsizes%
  \ignorespaces%
}
\def\pgf@path@setup@tempswa{%
  \ifnum\pgf@tips@mode>0\relax
    \pgfutil@tempswatrue%
  \else
    \pgfutil@tempswafalse%
  \fi%
}
\def\pgf@up@draw@arrows@only{%
  \pgfgetpath\pgf@arrowpath%
  \pgfutil@tempswatrue%
  \pgfprocesscheckclosed{\pgf@arrowpath}{\pgfutil@tempswafalse}%
  \pgf@path@check@proper%
  \ifpgfutil@tempswa%
    \pgf@check@for@arrow@and@animation%
    \pgf@prepare@end@of@path%
    \begingroup%
      \pgf@prepare@start@of@path%
      \pgf@add@arrow@at@start%
    \endgroup%
    \pgf@add@arrow@at@end%
  \fi%
}

\def\pgf@check@for@arrow@and@animation{\pgfsys@if@fresh@currentid{\pgf@check@for@arrow@and@animation@}{}}%
\def\pgf@check@for@arrow@and@animation@{%
  \expandafter\ifx\csname pgfsysanim@path@is@animated@\pgf@sys@id@current@id @\pgfsys@current@type\endcsname\pgfutil@empty%
    \ifx\pgf@end@tip@sequence\pgfutil@empty%
      \ifx\pgf@start@tip@sequence\pgfutil@empty%
      \else%
        \pgf@check@for@arrow@and@animation@error%
      \fi%
    \else%
      \pgf@check@for@arrow@and@animation@error%
    \fi%
  \fi%
}
\def\pgf@check@for@arrow@and@animation@error{\pgferror{Animated path may not have normal arrow tips. Use a base path with arrow tips}}

\def\pgf@path@check@proper{%
  \ifpgfutil@tempswa%
    \ifnum\pgf@tips@mode>2\relax%
      \pgf@path@check@proper@%
    \fi%
  \fi%
}

\def\pgf@path@check@proper@{%
  {%
    \pgf@x0pt\pgf@y\pgf@x%
    \pgfutil@tempswatrue%
    \let\pgfsyssoftpath@movetotoken\pgf@path@proper@init%
    \let\pgfsyssoftpath@linetotoken\pgf@path@proper@test%
    \let\pgfsyssoftpath@curvetosupportatoken\pgf@path@proper@test%
    \let\pgfsyssoftpath@curvetosupportbtoken=\pgf@path@proper@test%
    \let\pgfsyssoftpath@curvetotoken\pgf@path@proper@test%
    \let\pgfsyssoftpath@rectcornertoken\pgf@path@proper@test%
    \let\pgfsyssoftpath@rectsizetoken\pgf@path@proper@zero@test%
    \let\pgfsyssoftpath@closepathtoken\pgf@path@proper@test%
    \pgf@arrowpath%
    \expandafter
  }%
  \ifpgfutil@tempswa\pgfutil@tempswafalse\else\pgfutil@tempswatrue\fi%
}

\def\pgf@path@proper@init#1#2{\pgfutil@tempswatrue\pgf@x#1\pgf@y#2}%
\def\pgf@path@proper@test#1#2{%
  \ifdim\pgf@x=#1\relax\else\pgfutil@tempswafalse\fi%
  \ifdim\pgf@y=#2\relax\else\pgfutil@tempswafalse\fi}
\def\pgf@path@proper@zero@test#1#2{%
  \ifdim\pgf@x=0pt\relax\else\pgfutil@tempswafalse\fi%
  \ifdim\pgf@y=0pt\relax\else\pgfutil@tempswafalse\fi}




\def\pgf@stroke@inner@line{%
  \let\pgf@temp@save=\pgf@strokecolor@global
  \pgfsys@beginscope%
  {%
    \pgfsys@setlinewidth{\pgfinnerlinewidth}%
    \pgfsetstrokecolor{\pgfinnerstrokecolor}%
    \pgfsyssoftpath@invokecurrentpath%
    \pgfsys@stroke%
  }%
  \pgfsys@endscope%
  \global\let\pgf@strokecolor@global=\pgf@temp@save
}

\let\pgf@prepare@start@of@path\relax%





\def\pgfsetshortenstart#1{\pgfmathsetlength\pgf@shorten@start@additional{#1}}
\def\pgfsetshortenend#1{\pgfmathsetlength\pgf@shorten@end@additional{#1}}

\newdimen\pgf@shorten@end@additional
\newdimen\pgf@shorten@start@additional




\newif\ifpgf@worry



\def\pgf@prepare@end@of@path{%
  \let\pgfprocessresultpathsuffix\relax%
  \let\pgfprocessresultsubpathsuffix\relax%
  \pgfsyssoftpath@getcurrentpath\pgf@arrowpath%
  \ifx\pgf@arrowpath\pgfutil@empty\else%
    \pgf@worryfalse%
    \ifx\pgf@end@tip@sequence\pgfutil@empty%
    \else%
      \pgf@worrytrue%
    \fi%
    \pgf@precise@shorteningfalse%
    \pgf@arrow@compute@shortening\pgf@end@tip@sequence%
    \advance\pgf@xa by\pgf@shorten@end@additional%
    \advance\pgf@xb by\pgf@shorten@end@additional%
    \ifdim\pgf@xa=0pt\relax\else\pgf@worrytrue\fi%
    \edef\pgf@path@shortening@distance{\the\pgf@xa}%
    \edef\pgf@arrow@tip@total@length{\the\pgf@xb}%
    \ifpgf@worry%
      \pgfprocesssplitpath{\pgf@arrowpath}%
      \pgfprocesssplitsubpath{\pgfprocessresultpathsuffix}%
      \expandafter\pgf@parse@end\pgfprocessresultsubpathsuffix\pgf@stop\pgf@stop\pgf@stop%
      \pgf@prep@end%
      \ifdim\pgf@path@shortening@distance=0pt\else\pgf@do@shorten@end\fi%
      \expandafter\expandafter\expandafter\def%
      \expandafter\expandafter\expandafter\pgf@arrowpath%
      \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathprefix\pgfprocessresultpathsuffix}%
      \pgfsyssoftpath@setcurrentpath\pgf@arrowpath%
    \fi%
  \fi%
}

\def\pgf@parse@end#1#2#3#4#5#6{%
  \ifx#4\pgf@stop%
    \def\pgfpointlastonpath{\pgfqpoint{#2}{#3}}%
    \let\pgf@next\relax%
    \let\pgf@do@shorten@end\relax%
    \let\pgf@do@draw@end\pgf@do@draw@straightend%
    \let\pgf@prep@end\pgf@prep@movetoend%
  \else\ifx#4\pgfsyssoftpath@curvetosupportatoken%
    \def\pgfsubpathfourthlasttoken{#1}%
    \def\pgfpointfourthlastonpath{\pgfqpoint{#2}{#3}}%
    \def\pgfpointthirdlastonpath{\pgfqpoint{#5}{#6}}%
    \ifpgf@precise@shortening%
      \let\pgf@do@shorten@end\pgf@do@shorten@curvedend%
      \let\pgf@do@draw@end\pgf@do@draw@curvedend%
      \let\pgf@prep@end\pgf@prep@curveend%
    \else%
      \def\pgfsubpathstart{\noexpand#1{#2}{#3}\noexpand#4{#5}{#6}}%
      \let\pgf@do@shorten@end\pgf@do@shorten@straightend%
      \let\pgf@do@draw@end\pgf@do@draw@straightend%
      \let\pgf@prep@end\pgf@prep@straightend%
    \fi%
    \let\pgf@next\pgf@parse@end@curve@cont%
  \else%
    \def\pgfsubpathstart{\noexpand#1{#2}{#3}\noexpand#4}%
    \def\pgfpointsecondlastonpath{\pgfqpoint{#2}{#3}}%
    \def\pgfpointlastonpath{\pgfqpoint{#5}{#6}}%
    \let\pgfpointfourthlastonpath\relax%
    \let\pgfpointthirdlastonpath\relax%
    \let\pgf@next\pgf@parse@end@gobble@three%
    \let\pgf@do@shorten@end\pgf@do@shorten@straightend%
    \let\pgf@do@draw@end\pgf@do@draw@straightend%
    \let\pgf@prep@end\pgf@prep@straightend%
  \fi\fi%
  \pgf@next%
}

\def\pgf@parse@end@gobble@three#1#2#3{}%
\def\pgf@parse@end@curve@cont#1#2#3#4#5#6#7#8#9{%
  \def\pgfpointsecondlastonpath{\pgfqpoint{#2}{#3}}%
  \def\pgfpointlastonpath{\pgfqpoint{#5}{#6}}%
  \ifpgf@precise@shortening%
  \else%
    \expandafter\def\expandafter\pgfsubpathstart\expandafter{\pgfsubpathstart\noexpand#1{#2}{#3}\noexpand#4}%
  \fi%
}

\def\pgf@prep@movetoend{%
  \pgf@process{\pgfpointlastonpath}%
  \pgf@xb\pgf@x
  \pgf@yb\pgf@y
  \pgf@xc\pgf@x
  \pgf@yc\pgf@y
}
\def\pgf@prep@straightend{%
  \let\pgf@ref\pgfpointsecondlastonpath
  \ifx\pgfpointlastonpath\pgfpointsecondlastonpath%
    \ifx\pgfpointthirdlastonpath\relax%
    \else%
      \ifx\pgfpointlastonpath\pgfpointthirdlastonpath%
        \let\pgf@ref\pgfpointfourthlastonpath%
      \else
        \let\pgf@ref\pgfpointthirdlastonpath%
      \fi%
    \fi%
  \fi%
  \pgfpointlineatdistance{\pgf@path@shortening@distance}{\pgfpointlastonpath}{\pgf@ref}%
  \pgf@xa\pgf@x%
  \pgf@ya\pgf@y%
}


\def\pgf@do@shorten@straightend{%
  \edef\pgfprocessresultsubpathsuffix{\pgfsubpathstart{\the\pgf@xa}{\the\pgf@ya}}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgfprocessresultpathsuffix%
  \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultsubpathprefix\pgfprocessresultsubpathsuffix}%
}



\def\pgf@add@arrow@at@end{%
  \ifx\pgf@arrowpath\pgfutil@empty\else%
    \ifx\pgf@end@tip@sequence\pgfutil@empty\else%
      \pgf@do@draw@end%
    \fi%
  \fi%
}

\def\pgf@do@draw@straightend{%
  {%
    \pgftransformreset%
    \pgftransformarrow{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
    \pgf@arrow@draw@arrow\pgf@end@tip@sequence\pgf@arrow@tip@total@length%
  }%
}







\def\pgf@prepare@start@of@path{%
  \ifx\pgf@arrowpath\pgfutil@empty\else%
    \pgf@worryfalse%
    \ifx\pgf@start@tip@sequence\pgfutil@empty\else\pgf@worrytrue\fi%
    \pgf@precise@shorteningfalse%
    \pgf@arrow@compute@shortening\pgf@start@tip@sequence%
    \advance\pgf@xa by\pgf@shorten@start@additional%
    \advance\pgf@xb by\pgf@shorten@start@additional%
    \ifdim\pgf@xa=0pt\relax\else\pgf@worrytrue\fi%
    \edef\pgf@path@shortening@distance{\the\pgf@xa}%
    \edef\pgf@arrow@tip@total@length{\the\pgf@xb}%
    \ifpgf@worry%
      \ifx\pgfprocessresultpathsuffix\relax%
        \pgfprocesssplitpath{\pgf@arrowpath}%
      \fi%
      \expandafter\pgf@parse@start\pgfprocessresultpathsuffix\pgf@stop\pgf@stop\pgf@stop%
      \pgf@prep@start%
      \ifdim\pgf@path@shortening@distance=0pt\else\pgf@do@shorten@start\fi%
      \expandafter\expandafter\expandafter\def%
      \expandafter\expandafter\expandafter\pgf@arrowpath%
      \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathprefix\pgfprocessresultpathsuffix}%
      \pgfsyssoftpath@setcurrentpath\pgf@arrowpath%
    \fi%
  \fi%
}

\def\pgf@parse@start#1#2#3#4#5#6{%
  \def\pgfpointfirstonpath{\pgfqpoint{#2}{#3}}%
  \def\pgfpointsecondonpath{\pgfqpoint{#5}{#6}}%
  \let\pgfpointthirdonpath\relax%
  \let\pgfpointfourthonpath\relax%
  \def\pgfsubpathfirsttoken{\noexpand#1}%
  \def\pgfsubpathsecondtoken{\noexpand#4}%
  \ifx#4\pgf@stop%
    \let\pgf@next\relax%
    \let\pgf@do@shorten@start\relax%
    \let\pgf@prep@start\pgf@prep@movetostart%
    \let\pgf@do@draw@start\pgf@do@draw@straightstart%
  \else\ifx#4\pgfsyssoftpath@curvetosupportatoken%
    \ifpgf@precise@shortening%
      \let\pgf@next\pgf@parse@start@curve@cont%
      \let\pgf@do@shorten@start\pgf@do@shorten@curvedstart%
      \let\pgf@do@draw@start\pgf@do@draw@curvedstart%
      \let\pgf@prep@start\pgf@prep@curvedstart%
    \else%
      \let\pgf@next\pgf@parse@start@curve@cont@straight%
      \let\pgf@do@shorten@start\pgf@do@shorten@straightstart%
      \let\pgf@do@draw@start\pgf@do@draw@straightstart%
      \let\pgf@prep@start\pgf@prep@straightstart%
    \fi%
  \else%
    \let\pgf@next\pgf@parse@start@till@stop%
    \let\pgf@do@shorten@start\pgf@do@shorten@straightstart%
    \let\pgf@do@draw@start\pgf@do@draw@straightstart%
    \let\pgf@prep@start\pgf@prep@straightstart%
  \fi\fi%
  \pgf@next%
}

\def\pgf@parse@start@till@stop#1\pgf@stop\pgf@stop\pgf@stop{\def\pgfsubpathend{#1}}%

\def\pgf@parse@start@curve@cont#1#2#3#4#5#6#7\pgf@stop\pgf@stop\pgf@stop{%
  \def\pgfpointthirdonpath{\pgfqpoint{#2}{#3}}%
  \def\pgfpointfourthonpath{\pgfqpoint{#5}{#6}}%
  \def\pgfsubpathend{#7}%
}

\def\pgf@parse@start@curve@cont@straight#1#2#3#4#5#6#7\pgf@stop\pgf@stop\pgf@stop{%
  \def\pgfpointthirdonpath{\pgfqpoint{#2}{#3}}%
  \def\pgfpointfourthonpath{\pgfqpoint{#5}{#6}}%
  \def\pgfsubpathend{#1{#2}{#3}#4{#5}{#6}#7}%
}

\def\pgf@prep@movetostart{%
  \pgf@process{\pgfpointfirstonpath}%
  \pgf@xb\pgf@x
  \pgf@yb\pgf@y
  \pgf@xc\pgf@x
  \pgf@yc\pgf@y
}
\def\pgf@prep@straightstart{%
  \let\pgf@ref\pgfpointsecondonpath
  \ifx\pgfpointfirstonpath\pgfpointsecondonpath%
    \ifx\pgfpointthirdonpath\relax%
    \else%
      \ifx\pgfpointfirstonpath\pgfpointthirdonpath%
        \let\pgf@ref\pgfpointfourthonpath%
      \else
        \let\pgf@ref\pgfpointthirdonpath%
      \fi%
    \fi%
  \fi%
  \pgfpointlineatdistance{\pgf@path@shortening@distance}{\pgfpointfirstonpath}{\pgf@ref}%
  \pgf@xa\pgf@x%
  \pgf@ya\pgf@y%
}

\def\pgf@do@shorten@straightstart{%
  \edef\pgfprocessresultpathsuffix{\pgfsubpathfirsttoken{\the\pgf@xa}{\the\pgf@ya}\pgfsubpathsecondtoken{\the\pgf@xc}{\the\pgf@yc}}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgfprocessresultpathsuffix%
  \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathsuffix\pgfsubpathend}%
}



\def\pgf@add@arrow@at@start{%
  \ifx\pgf@arrowpath\pgfutil@empty\else%
    \ifx\pgf@start@tip@sequence\pgfutil@empty\else%
      \pgf@do@draw@start%
    \fi%
  \fi%
}

\def\pgf@do@draw@straightstart{%
  {%
    \pgftransformreset%
    \pgftransformarrow{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
    \pgf@arrow@draw@arrow\pgf@start@tip@sequence\pgf@arrow@tip@total@length%
  }%
}



\let\pgf@shorten@end=\pgfutil@empty
\let\pgf@shorten@start=\pgfutil@empty


\endinput%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex ====

\ProvidesFileRCS{pgfcorepatterns.code.tex}

\def\pgfdeclarepatternformonly{%
  \def\pgf@pattern@type{formonly}%
  \pgfutil@ifnextchar[{\pgf@declarepattern@checkarg}{\pgf@declarepattern@checkarg[]}%
}


\def\pgfdeclarepatterninherentlycolored{%
  \def\pgf@pattern@type{inherentlycolored}%
  \pgfutil@ifnextchar[{\pgf@declarepattern@checkarg}{\pgf@declarepattern@checkarg[]}%
}





\def\pgf@declarepattern@checkarg[#1]{%
  \def\pgf@pattern@tempvars{#1}%
  \ifx\pgf@pattern@tempvars\pgfutil@empty%
    \expandafter\let\expandafter\pgf@next\csname pgf@declarepattern\pgf@pattern@type\endcsname%
  \else%
    \expandafter\let\expandafter\pgf@next\csname pgf@declarepattern\pgf@pattern@type @mutable\endcsname%
  \fi%
  \pgf@next}

\long\def\pgf@declarepatternformonly#1#2#3#4#5{\pgf@declarepattern{#1}{#2}{#3}{#4}{#5}{0}}

\long\def\pgf@declarepatterninherentlycolored#1#2#3#4#5{\pgf@declarepattern{#1}{#2}{#3}{#4}{#5}{1}}

\long\def\pgf@declarepatternformonly@mutable#1#2#3#4#5{%
  \def\pgf@marshal{\pgf@declarepatternmutable{#1}}%
  \expandafter\pgf@marshal\expandafter{\pgf@pattern@tempvars}{#2}{#3}{#4}{#5}{2}%
}

\long\def\pgf@declarepatterninherentlycolored@mutable#1#2#3#4#5#6{%
  \def\pgf@marshal{\pgf@declarepatternmutable{#1}}%
  \expandafter\pgf@marshal\expandafter{\pgf@pattern@tempvars}{#2}{#3}{#4}{#5}{3}%
}

\def\pgfsys@patternmatrix{{1.0}{0.0}{0.0}{1.0}{0.0pt}{0.0pt}}
\def\pgf@declarepattern#1#2#3#4#5#6{%
  \pgfutil@ifundefined{pgf@pattern@name@#1}{%
  \pgfsysprotocol@getcurrentprotocol\pgf@pattern@temp%
  {%
    \pgfinterruptpath%
      \pgfpicturetrue%
      \pgf@relevantforpicturesizefalse%
      \pgftransformreset%
      \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
      \pgfsysprotocol@bufferedtrue%
      \pgfsys@beginscope%
      \pgfsetarrows{-}%
      #5%
      \pgfsys@endscope%
      \pgfsysprotocol@getcurrentprotocol\pgf@pattern@code%
      \global\let\pgf@pattern@code=\pgf@pattern@code%
    \endpgfinterruptpath%
    \pgf@process{#2}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{#3}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@process{#4}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgfutil@tempcnta=\pgf@pattern@number%
    \advance\pgfutil@tempcnta by1\relax%
    \xdef\pgf@pattern@number{\the\pgfutil@tempcnta}%
    \expandafter\xdef\csname pgf@pattern@name@#1\endcsname{\the\pgfutil@tempcnta}%
    \expandafter\gdef\csname pgf@pattern@type@#1\endcsname{#6}%
    \xdef\pgf@marshal{\noexpand\pgfsys@declarepattern
      {\csname pgf@pattern@name@#1\endcsname}%
      {\the\pgf@xa}{\the\pgf@ya}{\the\pgf@xb}{\the\pgf@yb}%
      {\the\pgf@xc}{\the\pgf@yc}%
      \pgfsys@patternmatrix%
      {\pgf@pattern@code}{#6}}%
  }%
  \pgfsysprotocol@setcurrentprotocol\pgf@pattern@temp%
  \expandafter\global\expandafter\let\csname pgf@pattern@instantiate@#1\endcsname=\pgf@marshal%
  }
  {%
    \pgferror{Pattern `#1' already defined}%
  }%
}

\def\pgf@pattern@number{0}%

\def\pgf@declarepatternmutable#1#2#3#4#5#6#7{%
  \pgfutil@ifundefined{pgf@pattern@name@#1}{%
    \expandafter\gdef\csname pgf@pattern@name@#1\endcsname{#1}%
    \expandafter\gdef\csname pgf@pattern@variables@#1\endcsname{#2}%
    \expandafter\gdef\csname pgf@pattern@lowerleft@#1\endcsname{#3}%
    \expandafter\gdef\csname pgf@pattern@upperright@#1\endcsname{#4}%
    \expandafter\gdef\csname pgf@pattern@tilesize@#1\endcsname{#5}%
    \expandafter\long\expandafter\gdef\csname pgf@pattern@code@#1\endcsname{#6}%
    \expandafter\gdef\csname pgf@pattern@type@#1\endcsname{#7}%
  }{\pgferror{The pattern `#1' is already defined}}%
}

\def\pgf@ifpatternisinherentlycolored#1#2#3{%
  \expandafter\ifodd\csname pgf@pattern@type@#1\endcsname\relax#2\else#3\fi%
}

\def\pgf@ifpatternismutable#1#2#3{%
  \expandafter\ifnum\csname pgf@pattern@type@#1\endcsname>1\relax#2\else#3\fi%
}

\def\pgfpatternreleasename#1{\expandafter\let\csname pgf@pattern@name@#1\endcsname\relax}






\def\pgfsetfillpattern#1#2{%
  \pgfutil@ifundefined{pgf@pattern@name@#1}%
  {%
    \pgferror{Undefined pattern `#1'}%
  }%
  {%
    \pgf@ifpatternismutable{#1}%
    {%
      \let\pgf@pattern@tempvars\pgfutil@empty%
      \expandafter\expandafter\expandafter\pgf@pattern@check@vars%
        \csname pgf@pattern@variables@#1\endcsname,\pgf@stop,%
      \edef\pgf@pattern@nametemp{pgf@pattern@#1@\pgf@pattern@tempvars}%
      \expandafter\pgfutil@ifundefined\expandafter{\pgf@pattern@nametemp}%
      {%
        \pgf@ifpatternisinherentlycolored{#1}%
          {\let\pgf@set@fillpattern@declare\pgfdeclarepatterninherentlycolored}%
          {\let\pgf@set@fillpattern@declare\pgfdeclarepatternformonly}%
        \pgf@set@fillpattern@declare%
          {\pgf@pattern@nametemp}%
          {\csname pgf@pattern@lowerleft@#1\endcsname}%
          {\csname pgf@pattern@upperright@#1\endcsname}%
          {\csname pgf@pattern@tilesize@#1\endcsname}%
          {\csname pgf@pattern@code@#1\endcsname}%
      }%
      {%
      }%
      \expandafter\pgf@set@fillpattern\expandafter{\pgf@pattern@nametemp}{#2}%
      \expandafter\gdef\csname\pgf@pattern@nametemp\endcsname{#1}%
    }%
    {%
      \pgf@set@fillpattern{#1}{#2}%
    }%
  }%
}


\def\pgf@set@fillpattern#1#2{%
  \pgfutil@ifundefined{pgf@pattern@name@#1}{%
    \pgferror{Undefined pattern `#1'}}
  {%
    \csname pgf@pattern@instantiate@#1\endcsname%
    \expandafter\global\expandafter\let\csname pgf@pattern@instantiate@#1\endcsname=\relax%
    \pgf@ifpatternisinherentlycolored{#1}{%
      \pgfsys@setpatterncolored{\csname pgf@pattern@name@#1\endcsname}%
    }{%
      \pgfutil@colorlet{pgf@tempcolor}{#2}%
      \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgf@tempcolor}}%
      \pgfutil@extractcolorspec{pgf@tempcolor}{\pgf@tempcolor}%
      \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}%
      \expandafter\pgf@set@fill@patternuncolored\pgf@rgbcolor\relax{#1}%
    }%
  }%
}

\def\pgf@set@fill@patternuncolored#1,#2,#3\relax#4{%
  \pgfsys@setpatternuncolored{\csname pgf@pattern@name@#4\endcsname}{#1}{#2}{#3}%
}

\def\pgf@pattern@check@vars#1,{%
  \ifx#1\pgf@stop%
    \let\pgf@next\relax%
  \else%
    \afterassignment\pgfmath@gobbletilpgfmath@%
    \expandafter\let\expandafter\pgf@pattern@char#1#1\pgfmath@%
    \ifx\pgf@pattern@char/%
      \edef\pgf@pattern@tempvar{(\pgfkeysvalueof{#1})}%
    \else%
      \expandafter\ifcat\pgf@pattern@char\relax%
        \edef\pgf@pattern@tempvar{(\the#1)}%
      \else%
        \edef\pgf@pattern@tempvar{(#1)}%
      \fi%
    \fi%
    \edef\pgf@pattern@tempvars{\pgf@pattern@tempvars\pgf@pattern@tempvar}%
    \let\pgf@next\pgf@pattern@check@vars%
  \fi%
  \pgf@next%
}

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex ====

\ProvidesFileRCS{pgfcorepoints.code.tex}

\newdimen\pgf@picminx
\newdimen\pgf@picmaxx
\newdimen\pgf@picminy
\newdimen\pgf@picmaxy

\newdimen\pgf@pathminx
\newdimen\pgf@pathmaxx
\newdimen\pgf@pathminy
\newdimen\pgf@pathmaxy

\newif\ifpgf@relevantforpicturesize

\def\pgf@process#1{{#1\global\pgf@x=\pgf@x\global\pgf@y=\pgf@y}}


\def\pgfextract@process#1#2{%
    \pgf@process{#2}%
    \edef#1{\noexpand\global\pgf@x=\the\pgf@x\noexpand\relax\noexpand\global\pgf@y=\the\pgf@y\noexpand\relax}%
}
\let\pgfsavepgf@process\pgfextract@process%



\def\pgfpoint#1#2{%
  \pgfmathsetlength\pgf@x{#1}%
  \pgfmathsetlength\pgf@y{#2}\ignorespaces}



\def\pgfqpoint#1#2{\global\pgf@x=#1\relax\global\pgf@y=#2\relax}




\def\pgfpointorigin{\global\pgf@x=0pt \global\pgf@y=\pgf@x\ignorespaces}




\def\pgfpointtransformed#1{%
  \pgf@process{%
    #1%
    \pgf@pos@transform@glob%
  }%
}



\def\pgfpointdiff#1#2{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{#2}%
  \global\advance\pgf@x by-\pgf@xa\relax%
  \global\advance\pgf@y by-\pgf@ya\relax\ignorespaces}


\def\pgfpointadd#1#2{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{#2}%
  \global\advance\pgf@x by\pgf@xa%
  \global\advance\pgf@y by\pgf@ya}




\def\pgfpointscale#1#2{%
  \pgf@process{#2}%
  \pgfmathparse{#1}%
  \global\pgf@x=\pgfmathresult\pgf@x%
  \global\pgf@y=\pgfmathresult\pgf@y%
}
\def\pgfqpointscale#1#2{%
  \pgf@process{#2}%
  \global\pgf@x=#1\pgf@x%
  \global\pgf@y=#1\pgf@y%
}



\def\pgfpointintersectionoflines#1#2#3#4{%
  {%
    \pgf@process{#2}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{#1}%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \pgf@ya=-\pgf@ya%
    \c@pgf@counta=\pgf@xa%
    \ifnum\c@pgf@counta<0\relax%
      \c@pgf@counta=-\c@pgf@counta\relax%
    \fi%
    \c@pgf@countb=\pgf@ya%
    \ifnum\c@pgf@countb<0\relax%
      \c@pgf@countb=-\c@pgf@countb\relax%
    \fi%
    \advance\c@pgf@counta by\c@pgf@countb\relax%
    \divide\c@pgf@counta by 65536\relax%
    \ifnum\c@pgf@counta>0\relax%
      \divide\pgf@xa by\c@pgf@counta\relax%
      \divide\pgf@ya by\c@pgf@counta\relax%
    \fi%
    \pgf@xc=\pgf@sys@tonumber{\pgf@ya}\pgf@x%
    \advance\pgf@xc by\pgf@sys@tonumber{\pgf@xa}\pgf@y%
    \pgf@process{#4}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@process{#3}%
    \advance\pgf@xb by-\pgf@x%
    \advance\pgf@yb by-\pgf@y%
    \pgf@yb=-\pgf@yb%
    \c@pgf@counta=\pgf@xb%
    \ifnum\c@pgf@counta<0\relax%
      \c@pgf@counta=-\c@pgf@counta\relax%
    \fi%
    \c@pgf@countb=\pgf@yb%
    \ifnum\c@pgf@countb<0\relax%
      \c@pgf@countb=-\c@pgf@countb\relax%
    \fi%
    \advance\c@pgf@counta by\c@pgf@countb\relax%
    \divide\c@pgf@counta by 65536\relax%
    \ifnum\c@pgf@counta>0\relax%
      \divide\pgf@xb by\c@pgf@counta\relax%
      \divide\pgf@yb by\c@pgf@counta\relax%
    \fi%
    \pgf@yc=\pgf@sys@tonumber{\pgf@yb}\pgf@x%
    \advance\pgf@yc by\pgf@sys@tonumber{\pgf@xb}\pgf@y%
    \pgfsettransform{{\pgf@sys@tonumber\pgf@ya}{\pgf@sys@tonumber\pgf@yb}{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@xb}{0pt}{0pt}}%
    \pgftransforminvert%
    \pgf@process{\pgfpointtransformed{\pgfpoint{\pgf@xc}{\pgf@yc}}}%
  }%
}



\def\pgfpointintersectionofcircles#1#2#3#4#5{%
  {%
    \pgf@process{#1}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgfmathsetlength{\pgf@xc}{#3}%
    \pgf@process{#2}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgfmathsetlength{\pgf@yc}{#4}%
    \c@pgf@counta=1\relax%
    \loop%
      \pgf@scale@downfalse%
      \ifdim\pgf@xc>50pt\relax%
        \pgf@scale@downtrue%
      \fi%
      \ifdim\pgf@yc>50pt\relax%
        \pgf@scale@downtrue%
      \fi%
    \ifpgf@scale@down%
      \multiply\c@pgf@counta by2\relax%
      \divide\pgf@xa by2\relax%
      \divide\pgf@ya by2\relax%
      \divide\pgf@xb by2\relax%
      \divide\pgf@yb by2\relax%
      \divide\pgf@xc by2\relax%
      \divide\pgf@yc by2\relax%
    \repeat%
    \dimen0=\pgf@xb%
    \advance\dimen0 by-\pgf@xa%
    \dimen1=\pgf@yb%
    \advance\dimen1 by-\pgf@ya%
    \pgf@x=\dimen0\relax%
    \pgf@x=\pgf@sys@tonumber{\pgf@x}\pgf@x%
    \dimen3=\pgf@x%
    \pgf@x=\dimen1\relax%
    \advance\dimen3 by\pgf@sys@tonumber{\pgf@x}\pgf@x%
    \pgfmathparse{sqrt(\the\dimen3)}%
    \dimen2=\pgfmathresult pt%
    \pgfmathreciprocal@{\pgfmathresult}%
    \dimen5=\pgfmathresult pt%
    \dimen4=\dimen3\relax%
    \pgf@x=\pgf@xc%
    \advance\dimen4 by\pgf@sys@tonumber{\pgf@x}\pgf@x\relax%
    \pgf@x=\pgf@yc%
    \advance\dimen4 by-\pgf@sys@tonumber{\pgf@x}\pgf@x\relax%
    \dimen4=.5\dimen4%
    \dimen4=\pgf@sys@tonumber{\dimen5}\dimen4%
    \dimen7=\pgf@sys@tonumber{\dimen4}\dimen4\relax%
    \pgfmathparse{sqrt(\pgf@sys@tonumber{\pgf@xc}\pgf@xc-\the\dimen7)}%
    \dimen6=\pgfmathresult pt%
    \dimen8=\pgf@sys@tonumber{\dimen4}\dimen5\relax%
    \dimen9=\pgf@sys@tonumber{\dimen6}\dimen5\relax%
    \ifnum#5=1\relax%
      \pgf@x=\pgf@xa%
      \advance\pgf@x by\pgf@sys@tonumber{\dimen0}\dimen8\relax%
      \advance\pgf@x by\pgf@sys@tonumber{\dimen1}\dimen9\relax%
      \pgf@y=\pgf@ya%
      \advance\pgf@y by\pgf@sys@tonumber{\dimen1}\dimen8\relax%
        \pgf@xb=\pgf@sys@tonumber{\dimen0}\dimen9%
        \pgf@xb=-\pgf@xb%
      \advance\pgf@y by\pgf@xb\relax%
    \else%
      \pgf@x=\pgf@xa%
      \advance\pgf@x by\pgf@sys@tonumber{\dimen0}\dimen8\relax%
        \pgf@xb=\pgf@sys@tonumber{\dimen1}\dimen9%
        \pgf@xb=-\pgf@xb%
      \advance\pgf@x by\pgf@xb\relax%
      \pgf@y=\pgf@ya%
      \advance\pgf@y by\pgf@sys@tonumber{\dimen1}\dimen8\relax%
      \advance\pgf@y by\pgf@sys@tonumber{\dimen0}\dimen9\relax%
    \fi%
    \pgf@x=\c@pgf@counta\pgf@x%
    \pgf@y=\c@pgf@counta\pgf@y%
    \pgf@process{}%
  }%
}
\newif\ifpgf@scale@down



\def\pgfpointlineattime#1#2#3{%
  \pgf@process{#3}%
  \pgf@xa\pgf@x%
  \pgf@ya\pgf@y%
  \pgf@xc\pgf@x%
  \pgf@yc\pgf@y%
  \pgf@process{#2}%
  \pgf@xb\pgf@x%
  \pgf@yb\pgf@y%
  \pgfmathsetmacro\pgf@temp{#1}%
  \advance\pgf@xa by-\pgf@x%
  \advance\pgf@ya by-\pgf@y%
  \global\advance\pgf@x by\pgf@temp\pgf@xa%
  \global\advance\pgf@y by\pgf@temp\pgf@ya%
}



\def\pgfpointlineatdistance#1#2#3{%
  \pgfmathsetlength\pgf@xa{#1}%
  \pgf@process{#2}%
  \pgf@xb\pgf@x%
  \pgf@yb\pgf@y%
  \pgf@process{#3}%
  \pgf@xc\pgf@x%
  \pgf@yc\pgf@y%
  \global\advance\pgf@x by-\pgf@xb\relax%
  \global\advance\pgf@y by-\pgf@yb\relax%
  \pgf@process{\pgfpointnormalised{}}%
  \pgf@ya=\pgf@xa\relax%
  \pgf@xa=\pgf@sys@tonumber{\pgf@x}\pgf@xa%
  \pgf@ya=\pgf@sys@tonumber{\pgf@y}\pgf@ya%
  \global\pgf@x=\pgf@xb\relax%
  \global\pgf@y=\pgf@yb\relax%
  \global\advance\pgf@x by\pgf@xa\relax%
  \global\advance\pgf@y by\pgf@ya\relax%
}



\def\pgfpointcurveattime#1#2#3#4#5{%
  \pgfmathparse{#1}%
  \let\pgf@time@s=\pgfmathresult%
  \global\pgf@x=\pgfmathresult pt%
  \global\pgf@x=-\pgf@x%
  \advance\pgf@x by 1pt%
  \edef\pgf@time@t{\pgf@sys@tonumber{\pgf@x}}%
  \pgf@process{#5}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgf@process{#4}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{#3}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{#2}%
  \global\pgf@x=\pgf@time@t\pgf@x\global\advance\pgf@x by\pgf@time@s\pgf@xa%
  \global\pgf@y=\pgf@time@t\pgf@y\global\advance\pgf@y by\pgf@time@s\pgf@ya%
  \pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
  \pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
  \pgf@xb=\pgf@time@t\pgf@xb\advance\pgf@xb by\pgf@time@s\pgf@xc%
  \pgf@yb=\pgf@time@t\pgf@yb\advance\pgf@yb by\pgf@time@s\pgf@yc%
  \global\pgf@x=\pgf@time@t\pgf@x\global\advance\pgf@x by\pgf@time@s\pgf@xa%
  \global\pgf@y=\pgf@time@t\pgf@y\global\advance\pgf@y by\pgf@time@s\pgf@ya%
  \pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
  \pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \global\pgf@x=\pgf@time@t\pgf@x\global\advance\pgf@x by\pgf@time@s\pgf@xa%
  \global\pgf@y=\pgf@time@t\pgf@y\global\advance\pgf@y by\pgf@time@s\pgf@ya%
}




\def\pgfpointarcaxesattime#1#2#3#4#5#6{%
  \pgfmathsetmacro\pgf@angle@start{#5}%
  \pgfmathsetmacro\pgf@angle@end{#6}%
  \pgfmathparse{#1}%
  \global\pgf@x=\pgfmathresult pt%
  \global\pgf@x=-\pgf@x%
  \advance\pgf@x by 1pt%
  \pgfmathsetmacro\pgf@angle@mid{\pgf@angle@end*\pgfmathresult+\pgf@angle@start*\pgf@sys@tonumber{\pgf@x}}%
  \pgfmathcos@{\pgf@angle@mid}%
  \let\pgf@angle@cos\pgfmathresult%
  \pgfmathsin@{\pgf@angle@mid}%
  \let\pgf@angle@sin\pgfmathresult%
  \pgf@process{#3}%
  \edef\pgf@angle@zero@axis{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
  \pgf@process{#4}%
  \edef\pgf@angle@ninety@axis{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
  \pgf@process{\pgfpointadd{\pgfpointscale{\pgf@angle@sin}{\pgf@angle@zero@axis}}%
    {\pgfpointscale{-\pgf@angle@cos}{\pgf@angle@ninety@axis}}}%
  \ifdim\pgf@angle@start pt>\pgf@angle@end pt%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
  \else%
    \pgf@xa=-\pgf@x%
    \pgf@ya=-\pgf@y%
  \fi%
  \pgf@process{\pgfpointadd{#2}{%
      \pgfpointadd{\pgfpointscale{\pgf@angle@cos}{\pgf@angle@zero@axis}}%
    {\pgfpointscale{\pgf@angle@sin}{\pgf@angle@ninety@axis}}}}%
}



\newdimen\pgf@xx
\newdimen\pgf@xy
\newdimen\pgf@yx
\newdimen\pgf@yy
\newdimen\pgf@zx
\newdimen\pgf@zy




\def\pgfpointpolar#1#2{%
  \pgfutil@in@{and }{#2}%
  \ifpgfutil@in@%
    \pgf@polar@#2\@@%
  \else%
    \pgf@polar@#2 and #2\@@%
  \fi%
  \pgfmathparse{#1}%
  \let\pgfpoint@angle=\pgfmathresult%
  \pgfmathcos@{\pgfpoint@angle}%
  \global\pgf@x=\pgfmathresult\pgf@x%
  \pgfmathsin@{\pgfpoint@angle}%
  \global\pgf@y=\pgfmathresult\pgf@y%
}

\def\pgf@polar@#1and #2\@@{%
  \pgfmathsetlength{\pgf@y}{#2}%
  \pgfmathsetlength{\pgf@x}{#1}%
}


\def\pgfqpointpolar#1#2{%
  \global\pgf@x=#2%
  \global\pgf@y=\pgf@x%
  \pgfmathcos@{#1}%
  \global\pgf@x=\pgfmathresult\pgf@x%
  \pgfmathsin@{#1}%
  \global\pgf@y=\pgfmathresult\pgf@y\relax%
}





\def\pgfpointpolarxy#1#2{%
  \pgfutil@in@{and }{#2}%
  \ifpgfutil@in@%
    \pgf@polarxy@#2\@@%
  \else%
    \pgf@polarxy@#2and #2\@@%
  \fi%
  \pgfmathparse{#1}%
  \let\pgfpoint@angle=\pgfmathresult%
  \pgfmathcos@{\pgfpoint@angle}%
  \pgf@xa=\pgfmathresult\pgf@xa%
  \pgfmathsin@{\pgfpoint@angle}%
  \pgf@ya=\pgfmathresult\pgf@ya%
  \global\pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@xx%
  \global\advance\pgf@x by \pgf@sys@tonumber{\pgf@ya}\pgf@yx%
  \global\pgf@y=\pgf@sys@tonumber{\pgf@xa}\pgf@xy%
  \global\advance\pgf@y by \pgf@sys@tonumber{\pgf@ya}\pgf@yy}

\def\pgf@polarxy@#1and #2\@@{%
  \pgfmathsetlength{\pgf@xa}{#1}%
  \pgfmathsetlength{\pgf@ya}{#2}%
}




\def\pgfpointcylindrical#1#2#3{%
  \pgfpointpolarxy{#1}{#2}%
  \pgfmathparse{#3}%
  \global\advance\pgf@x by \pgfmathresult\pgf@zx%
  \global\advance\pgf@y by \pgfmathresult\pgf@zy}



\def\pgfpointspherical#1#2#3{%
  \pgfmathparse{#1}%
  \let\pgfpoint@angle=\pgfmathresult%
  \pgfmathsin@{\pgfpoint@angle}%
  \pgf@xb=\pgfmathresult\pgf@xx%
  \pgf@yb=\pgfmathresult\pgf@xy%
  \pgfmathcos@{\pgfpoint@angle}%
  \advance\pgf@xb by \pgfmathresult\pgf@yx%
  \advance\pgf@yb by \pgfmathresult\pgf@yy%
  \pgfmathparse{#2}%
  \let\pgfpoint@angle=\pgfmathresult%
  \pgfmathcos@{\pgfpoint@angle}%
  \pgf@xc=\pgfmathresult\pgf@xb%
  \pgf@yc=\pgfmathresult\pgf@yb%
  \pgfmathsin@{\pgfpoint@angle}%
  \advance\pgf@xc by \pgfmathresult\pgf@zx%
  \advance\pgf@yc by \pgfmathresult\pgf@zy%
  \pgfmathparse{#3}%
  \global\pgf@x=\pgfmathresult\pgf@xc%
  \global\pgf@y=\pgfmathresult\pgf@yc\relax%
}



\def\pgfpointxy#1#2{%
  \pgfmathparse{#1}%
  \let\pgftemp@x=\pgfmathresult%
  \pgfmathparse{#2}%
  \let\pgftemp@y=\pgfmathresult%
  \global\pgf@x=\pgftemp@x\pgf@xx%
  \global\advance\pgf@x by \pgftemp@y\pgf@yx%
  \global\pgf@y=\pgftemp@x\pgf@xy%
  \global\advance\pgf@y by \pgftemp@y\pgf@yy}


\def\pgfqpointxy#1#2{%
  \global\pgf@x=#1\pgf@xx%
  \global\advance\pgf@x by #2\pgf@yx%
  \global\pgf@y=#1\pgf@xy%
  \global\advance\pgf@y by #2\pgf@yy}


\def\pgfpointxyz#1#2#3{%
  \pgfmathparse{#1}%
  \let\pgftemp@x=\pgfmathresult%
  \pgfmathparse{#2}%
  \let\pgftemp@y=\pgfmathresult%
  \pgfmathparse{#3}%
  \let\pgftemp@z=\pgfmathresult%
  \global\pgf@x=\pgftemp@x\pgf@xx%
  \global\advance\pgf@x by \pgftemp@y\pgf@yx%
  \global\advance\pgf@x by \pgftemp@z\pgf@zx%
  \global\pgf@y=\pgftemp@x\pgf@xy%
  \global\advance\pgf@y by \pgftemp@y\pgf@yy%
  \global\advance\pgf@y by \pgftemp@z\pgf@zy}

\def\pgfqpointxyz#1#2#3{%
  \global\pgf@x=#1\pgf@xx%
  \global\advance\pgf@x by #2\pgf@yx%
  \global\advance\pgf@x by #3\pgf@zx%
  \global\pgf@y=#1\pgf@xy%
  \global\advance\pgf@y by #2\pgf@yy%
  \global\advance\pgf@y by #3\pgf@zy}




\def\pgfsetxvec#1{%
  \pgf@process{#1}%
  \pgf@xx=\pgf@x%
  \pgf@xy=\pgf@y%
  \ignorespaces}



\def\pgfsetyvec#1{%
  \pgf@process{#1}%
  \pgf@yx=\pgf@x%
  \pgf@yy=\pgf@y%
  \ignorespaces}



\def\pgfsetzvec#1{%
  \pgf@process{#1}%
  \pgf@zx=\pgf@x%
  \pgf@zy=\pgf@y%
  \ignorespaces}



\pgfsetxvec{\pgfpoint{1cm}{0cm}}
\pgfsetyvec{\pgfpoint{0cm}{1cm}}
\pgfsetzvec{\pgfpoint{-0.385cm}{-0.385cm}}





\def\pgfpointnormalised#1{%
  \pgf@process{#1}%
  \pgfmathatantwo{\the\pgf@y}{\the\pgf@x}%
  \let\pgf@tmp=\pgfmathresult%
  \pgfmathcos@{\pgf@tmp}%
  \pgf@x=\pgfmathresult pt\relax%
  \pgfmathsin@{\pgf@tmp}%
  \pgf@y=\pgfmathresult pt\relax%
}






\def\pgfpointborderrectangle#1#2{%
  \pgf@process{#2}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \ifnum\pgf@xa<0\relax%
    \global\pgf@x=-\pgf@x%
  \fi%
  \ifnum\pgf@ya<0\relax%
    \global\pgf@y=-\pgf@y%
  \fi%
  \pgf@xc=.125\pgf@x%
  \pgf@yc=.125\pgf@y%
  \c@pgf@counta=\pgf@xc%
  \c@pgf@countb=\pgf@yc%
  \ifnum\c@pgf@countb<\c@pgf@counta%
    \ifnum\c@pgf@counta<255\relax%
      \global\pgf@y=\pgf@yb\relax%
      \global\pgf@x=0pt\relax%
    \else%
      \pgf@xc=8192pt%
      \divide\pgf@xc by\c@pgf@counta%
      \global\pgf@y=\pgf@sys@tonumber{\pgf@xc}\pgf@y%
      \global\pgf@y=\pgf@sys@tonumber{\pgf@xb}\pgf@y%
      \ifnum\pgf@y<\pgf@yb%
        \global\pgf@x=\pgf@xb%
      \else%
        \ifnum\c@pgf@countb<255\relax%
          \global\pgf@x=\pgf@xb\relax%
          \global\pgf@y=0pt\relax%
        \else%
          \pgf@yc=8192pt%
          \divide\pgf@yc by\c@pgf@countb%
          \global\pgf@x=\pgf@sys@tonumber{\pgf@yc}\pgf@x%
          \global\pgf@x=\pgf@sys@tonumber{\pgf@yb}\pgf@x%
          \global\pgf@y=\pgf@yb%
        \fi%
      \fi%
    \fi%
  \else%
    \ifnum\c@pgf@countb<255\relax%
      \global\pgf@x=\pgf@xb\relax%
      \global\pgf@y=0pt\relax%
    \else%
      \pgf@yc=8192pt%
      \divide\pgf@yc by\c@pgf@countb%
      \global\pgf@x=\pgf@sys@tonumber{\pgf@yc}\pgf@x%
      \global\pgf@x=\pgf@sys@tonumber{\pgf@yb}\pgf@x%
      \ifnum\pgf@x<\pgf@xb%
        \global\pgf@y=\pgf@yb%
      \else%
        \ifnum\c@pgf@counta<255\relax%
          \global\pgf@y=\pgf@yb\relax%
          \global\pgf@x=0pt\relax%
        \else%
          \pgf@xc=8192pt%
          \divide\pgf@xc by\c@pgf@counta%
          \global\pgf@y=\pgf@sys@tonumber{\pgf@xc}\pgf@y%
          \global\pgf@y=\pgf@sys@tonumber{\pgf@xb}\pgf@y%
          \global\pgf@x=\pgf@xb%
        \fi%
      \fi%
    \fi%
  \fi%
  \ifnum\pgf@xa<0\relax\global\pgf@x=-\pgf@x\fi%
  \ifnum\pgf@ya<0\relax\global\pgf@y=-\pgf@y\fi%
}





\def\pgfpointborderellipse#1#2{%
  \pgf@process{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \ifdim\pgf@xa=\pgf@ya%
    \pgf@process{\pgfpointnormalised{#1}}%
    \global\pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@x%
    \global\pgf@y=\pgf@sys@tonumber{\pgf@xa}\pgf@y%
  \else%
    \ifdim\pgf@xa<\pgf@ya%
      \c@pgf@countb=\pgf@ya%
      \divide\c@pgf@countb by65536\relax%
      \global\divide\pgf@x by\c@pgf@countb%
      \global\divide\pgf@y by\c@pgf@countb%
      \pgf@xc=\pgf@x%
      \pgf@yc=8192pt%
      \global\pgf@y=.125\pgf@y%
      \c@pgf@countb=\pgf@y%
      \divide\pgf@yc by\c@pgf@countb%
      \pgf@process{#1}%
      \global\pgf@y=\pgf@sys@tonumber{\pgf@yc}\pgf@y%
      \global\pgf@y=\pgf@sys@tonumber{\pgf@xc}\pgf@y%
      \pgf@process{\pgfpointnormalised{}}%
      \global\pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@x%
      \global\pgf@y=\pgf@sys@tonumber{\pgf@ya}\pgf@y%
    \else%
      \c@pgf@countb=\pgf@xa%
      \divide\c@pgf@countb by65536\relax%
      \global\divide\pgf@x by\c@pgf@countb%
      \global\divide\pgf@y by\c@pgf@countb%
      \pgf@yc=\pgf@y%
      \pgf@xc=8192pt%
      \global\pgf@x=.125\pgf@x%
      \c@pgf@countb=\pgf@x%
      \divide\pgf@xc by\c@pgf@countb%
      \pgf@process{#1}%
      \global\pgf@x=\pgf@sys@tonumber{\pgf@yc}\pgf@x%
      \global\pgf@x=\pgf@sys@tonumber{\pgf@xc}\pgf@x%
      \pgf@process{\pgfpointnormalised{}}%
      \global\pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@x%
      \global\pgf@y=\pgf@sys@tonumber{\pgf@ya}\pgf@y%
    \fi%
  \fi%
}






\def\pgfextractx#1#2{%
  \pgf@process{#2}%
  #1=\pgf@x\relax}



\def\pgfextracty#1#2{%
  \pgf@process{#2}%
  #1=\pgf@y\relax}


\def\pgfgetlastxy#1#2{%
    \edef#1{\the\pgf@x}%
    \edef#2{\the\pgf@y}%
}%


\def\pgf@def#1#2#3{\expandafter\def\csname pgf@#1#2\endcsname{#3}}
\pgf@def{cosfrac}{0}{1}
\pgf@def{cosfrac}{1}{0.99995}    \pgf@def{cosfrac}{2}{0.9998}
\pgf@def{cosfrac}{3}{0.99955}    \pgf@def{cosfrac}{4}{0.999201}
\pgf@def{cosfrac}{5}{0.998752}   \pgf@def{cosfrac}{6}{0.998205}
\pgf@def{cosfrac}{7}{0.997559}   \pgf@def{cosfrac}{8}{0.996815}
\pgf@def{cosfrac}{9}{0.995974}   \pgf@def{cosfrac}{10}{0.995037}
\pgf@def{cosfrac}{11}{0.994004}  \pgf@def{cosfrac}{12}{0.992877}
\pgf@def{cosfrac}{13}{0.991656}  \pgf@def{cosfrac}{14}{0.990342}
\pgf@def{cosfrac}{15}{0.988936}  \pgf@def{cosfrac}{16}{0.987441}
\pgf@def{cosfrac}{17}{0.985856}  \pgf@def{cosfrac}{18}{0.984183}
\pgf@def{cosfrac}{19}{0.982424}  \pgf@def{cosfrac}{20}{0.980581}
\pgf@def{cosfrac}{21}{0.978653}  \pgf@def{cosfrac}{22}{0.976644}
\pgf@def{cosfrac}{23}{0.974555}  \pgf@def{cosfrac}{24}{0.972387}
\pgf@def{cosfrac}{25}{0.970143}  \pgf@def{cosfrac}{26}{0.967823}
\pgf@def{cosfrac}{27}{0.965429}  \pgf@def{cosfrac}{28}{0.962964}
\pgf@def{cosfrac}{29}{0.960429}  \pgf@def{cosfrac}{30}{0.957826}
\pgf@def{cosfrac}{31}{0.955157}  \pgf@def{cosfrac}{32}{0.952424}
\pgf@def{cosfrac}{33}{0.949629}  \pgf@def{cosfrac}{34}{0.946773}
\pgf@def{cosfrac}{35}{0.943858}  \pgf@def{cosfrac}{36}{0.940887}
\pgf@def{cosfrac}{37}{0.937862}  \pgf@def{cosfrac}{38}{0.934784}
\pgf@def{cosfrac}{39}{0.931655}  \pgf@def{cosfrac}{40}{0.928477}
\pgf@def{cosfrac}{41}{0.925252}  \pgf@def{cosfrac}{42}{0.921982}
\pgf@def{cosfrac}{43}{0.918669}  \pgf@def{cosfrac}{44}{0.915315}
\pgf@def{cosfrac}{45}{0.911922}  \pgf@def{cosfrac}{46}{0.90849}
\pgf@def{cosfrac}{47}{0.905024}  \pgf@def{cosfrac}{48}{0.901523}
\pgf@def{cosfrac}{49}{0.89799}   \pgf@def{cosfrac}{50}{0.894427}
\pgf@def{cosfrac}{51}{0.890835}  \pgf@def{cosfrac}{52}{0.887217}
\pgf@def{cosfrac}{53}{0.883573}  \pgf@def{cosfrac}{54}{0.879905}
\pgf@def{cosfrac}{55}{0.876216}  \pgf@def{cosfrac}{56}{0.872506}
\pgf@def{cosfrac}{57}{0.868777}  \pgf@def{cosfrac}{58}{0.865031}
\pgf@def{cosfrac}{59}{0.861269}  \pgf@def{cosfrac}{60}{0.857493}
\pgf@def{cosfrac}{61}{0.853704}  \pgf@def{cosfrac}{62}{0.849903}
\pgf@def{cosfrac}{63}{0.846092}  \pgf@def{cosfrac}{64}{0.842271}
\pgf@def{cosfrac}{65}{0.838444}  \pgf@def{cosfrac}{66}{0.834609}
\pgf@def{cosfrac}{67}{0.83077}   \pgf@def{cosfrac}{68}{0.826927}
\pgf@def{cosfrac}{69}{0.82308}   \pgf@def{cosfrac}{70}{0.819232}
\pgf@def{cosfrac}{71}{0.815383}  \pgf@def{cosfrac}{72}{0.811534}
\pgf@def{cosfrac}{73}{0.807687}  \pgf@def{cosfrac}{74}{0.803842}
\pgf@def{cosfrac}{75}{0.8}       \pgf@def{cosfrac}{76}{0.796162}
\pgf@def{cosfrac}{77}{0.792329}  \pgf@def{cosfrac}{78}{0.788502}
\pgf@def{cosfrac}{79}{0.784682}  \pgf@def{cosfrac}{80}{0.780869}
\pgf@def{cosfrac}{81}{0.777064}  \pgf@def{cosfrac}{82}{0.773268}
\pgf@def{cosfrac}{83}{0.769481}  \pgf@def{cosfrac}{84}{0.765705}
\pgf@def{cosfrac}{85}{0.761939}  \pgf@def{cosfrac}{86}{0.758185}
\pgf@def{cosfrac}{87}{0.754443}  \pgf@def{cosfrac}{88}{0.750714}
\pgf@def{cosfrac}{89}{0.746997}  \pgf@def{cosfrac}{90}{0.743294}
\pgf@def{cosfrac}{91}{0.739605}  \pgf@def{cosfrac}{92}{0.735931}
\pgf@def{cosfrac}{93}{0.732272}  \pgf@def{cosfrac}{94}{0.728628}
\pgf@def{cosfrac}{95}{0.724999}  \pgf@def{cosfrac}{96}{0.721387}
\pgf@def{cosfrac}{97}{0.717792}  \pgf@def{cosfrac}{98}{0.714213}
\pgf@def{cosfrac}{99}{0.710651}  \pgf@def{cosfrac}{100}{0.707107}





\let\pgfpointtransformednonlinear\pgfpointtransformed


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorequick.code.tex ====

\ProvidesFileRCS{pgfcorequick.code.tex}



\def\pgfpathqmoveto#1#2{\pgfsyssoftpath@moveto{#1}{#2}}



\def\pgfpathqlineto#1#2{\pgfsyssoftpath@lineto{#1}{#2}}



\def\pgfpathqcurveto#1#2#3#4#5#6{\pgfsyssoftpath@curveto{#1}{#2}{#3}{#4}{#5}{#6}}





\def\pgfpathqcircle#1{%
  {%
    \pgf@x=#1%
    \pgf@y=0.5522847\pgf@x%
    \pgfsyssoftpath@moveto{\the\pgf@x}{0pt}%
    \pgfsyssoftpath@curveto{\the\pgf@x}{\the\pgf@y}{\the\pgf@y}{\the\pgf@x}{0pt}{\the\pgf@x}%
    \pgfsyssoftpath@curveto{-\the\pgf@y}{\the\pgf@x}{-\the\pgf@x}{\the\pgf@y}{-\the\pgf@x}{0pt}%
    \pgfsyssoftpath@curveto{-\the\pgf@x}{-\the\pgf@y}{-\the\pgf@y}{-\the\pgf@x}{0pt}{-\the\pgf@x}%
    \pgfsyssoftpath@curveto{\the\pgf@y}{-\the\pgf@x}{\the\pgf@x}{-\the\pgf@y}{\the\pgf@x}{0pt}%
    \pgfsyssoftpath@closepath%
  }%
}




\def\pgfusepathqstroke{%
  \pgfsyssoftpath@flushcurrentpath%
  \pgfsys@stroke%
  \pgf@resetpathsizes%
}



\def\pgfusepathqfill{%
  \pgfsyssoftpath@flushcurrentpath%
  \pgfsys@fill%
  \pgf@resetpathsizes%
}



\def\pgfusepathqfillstroke{%
  \pgfsyssoftpath@flushcurrentpath%
  \pgfsys@fillstroke%
  \pgf@resetpathsizes%
}


\def\pgfusepathqclip{%
  \pgfsyssoftpath@flushcurrentpath%
  \pgfsys@clipnext%
  \pgfsys@discardpath%
  \pgf@resetpathsizes%
}


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorequick.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex ====

\ProvidesFileRCS{pgfcorerdf.code.tex}









\def\pgfrdfabout#1{\pgfsys@rdf@about{#1}}




\def\pgfrdfcontent#1{\pgfsys@rdf@content{#1}}




\def\pgfrdfdatatype#1{\pgfsys@rdf@datatype{#1}}




\def\pgfrdfhref#1{\pgfsys@rdf@href{#1}}




\def\pgfrdfinlist{\pgfsys@rdf@inlist}





\def\pgfrdfprefix#1{\pgfsys@rdf@prefix{#1}}





\def\pgfrdfproperty#1{\pgfsys@rdf@property{#1}}




\def\pgfrdfrel#1{\pgfsys@rdf@rel{#1}}



\def\pgfrdfresource#1{\pgfsys@rdf@resource{#1}}





\def\pgfrdfrev#1{\pgfsys@rdf@rev{#1}}





\def\pgfrdfsrc#1{\pgfsys@rdf@src{#1}}





\def\pgfrdftypeof#1{\pgfsys@rdf@typeof{#1}}





\def\pgfrdfvocab#1{\pgfsys@rdf@vocab{#1}}





\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex ====

\ProvidesFileRCS{pgfcorescopes.code.tex}


\newbox\pgfpic
\newbox\pgf@hbox

\newbox\pgf@layerbox@main

\newcount\pgf@picture@serial@count



\newif\ifpgfrememberpicturepositiononpage







\def\pgfscope{%
  \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
  \pgfsys@beginscope%
    \pgf@resetpathsizes%
    \edef\pgfscope@linewidth{\the\pgflinewidth}%
    \let\pgfscope@stroke@color=\pgf@strokecolor@global%
    \let\pgfscope@fill@color=\pgf@fillcolor@global%
    \begingroup}
\def\endpgfscope{%
    \endgroup%
    \global\pgflinewidth=\pgfscope@linewidth%
    \global\let\pgf@strokecolor@global=\pgfscope@stroke@color%
    \global\let\pgf@fillcolor@global=\pgfscope@fill@color%
  \pgfsys@endscope}





\def\pgfqbox#1{%
  \pgfsys@hbox#1%
}



\def\pgfqboxsynced#1{%
  \pgfsys@hboxsynced#1%
}



\def\pgftext{\pgfutil@ifnextchar[\pgf@text{\pgf@text[]}}%
\def\pgf@text[#1]{%
  \def\pgf@text@options{#1}%
  \pgf@maketext\pgf@after@text}
\def\pgf@after@text{%
  {%
  \def\pgf@text@hshift{center}%
  \def\pgf@text@vshift{center}%
  \expandafter\pgf@text@setkeys\expandafter{\pgf@text@options}%
  \csname pgf@halign\pgf@text@hshift\endcsname%
  \csname pgf@valign\pgf@text@vshift\endcsname%
  \pgfapproximatenonlineartransformation%
  \pgf@process{\pgfpointtransformed{\pgfqpoint{0pt}{\dp\pgf@hbox}}}%
  \pgf@protocolsizes{\pgf@x}{\pgf@y}%
  \pgf@process{\pgfpointtransformed{\pgfqpoint{\wd\pgf@hbox}{\dp\pgf@hbox}}}%
  \pgf@protocolsizes{\pgf@x}{\pgf@y}%
  \pgf@process{\pgfpointtransformed{\pgfqpoint{0pt}{\ht\pgf@hbox}}}%
  \pgf@protocolsizes{\pgf@x}{\pgf@y}%
  \pgf@process{\pgfpointtransformed{\pgfqpoint{\wd\pgf@hbox}{\ht\pgf@hbox}}}%
  \pgf@protocolsizes{\pgf@x}{\pgf@y}%
  \pgfqboxsynced{\pgf@hbox}%
  }%
}
\def\pgf@text@setkeys{\pgfqkeys{/pgf/text}}%

\pgfkeys{/pgf/text/left/.code=\def\pgf@text@hshift{left}}
\pgfkeys{/pgf/text/center/.code=}
\pgfkeys{/pgf/text/right/.code=\def\pgf@text@hshift{right}}
\pgfkeys{/pgf/text/top/.code=\def\pgf@text@vshift{top}}
\pgfkeys{/pgf/text/bottom/.code=\def\pgf@text@vshift{bottom}}
\pgfkeys{/pgf/text/base/.code=\def\pgf@text@vshift{base}}
\pgfkeys{/pgf/text/at/.cd,.code=\pgftransformshift{#1},.value required}
\pgfkeys{/pgf/text/x/.cd,.code=\pgftransformxshift{#1},.value required}
\pgfkeys{/pgf/text/y/.cd,.code=\pgftransformyshift{#1},.value required}
\pgfkeys{/pgf/text/rotate/.cd,.code=\pgftransformrotate{#1},.value required}

\def\pgf@halignleft{}%
\def\pgf@haligncenter{\pgftransformxshift{+-.5\wd\pgf@hbox}}
\def\pgf@halignright{\pgftransformxshift{+-\wd\pgf@hbox}}%
\def\pgf@valignbase{}%
\def\pgf@valignbottom{\pgftransformyshift{+\dp\pgf@hbox}}%
\def\pgf@valigncenter{\pgftransformyshift{+.5\dp\pgf@hbox}\pgftransformyshift{+-.5\ht\pgf@hbox}}%
\def\pgf@valigntop{\pgftransformyshift{+-\ht\pgf@hbox}}%


\def\pgf@maketext#1{%
  \def\pgf@@maketextafter{#1}%
  \setbox\pgf@hbox=\hbox\bgroup%
    \pgfinterruptpicture%
      \bgroup%
        \aftergroup\pgf@collectresetcolor%
        \let\next=%
}
\def\pgf@collectresetcolor{%
  \pgfutil@ifnextchar\reset@color%
  {\reset@color\afterassignment\pgf@collectresetcolor\let\pgf@temp=}%
  {\pgf@textdone}%
}
\def\pgf@textdone{%
    \endpgfinterruptpicture%
  \egroup%
  \pgf@@maketextafter%
}

\long\def\pgf@makehbox#1{%
  \setbox\pgf@hbox=\hbox{{%
    \pgfinterruptpicture%
      #1%
    \endpgfinterruptpicture%
    }}}




\def\pgfresetboundingbox{%
    \global\pgf@picmaxx=-16000pt\relax%
    \global\pgf@picminx=16000pt\relax%
    \global\pgf@picmaxy=-16000pt\relax%
    \global\pgf@picminy=16000pt\relax%
}%

\def\pgfpicture{%
  \begingroup%
    \pgfpicturetrue%
    \global\advance\pgf@picture@serial@count by1\relax%
    \edef\pgfpictureid{pgfid\the\pgf@picture@serial@count}%
    \let\pgf@nodecallback=\pgfutil@gobble%
    \pgf@picmaxx=-16000pt\relax%
    \pgf@picminx=16000pt\relax%
    \pgf@picmaxy=-16000pt\relax%
    \pgf@picminy=16000pt\relax%
    \pgf@relevantforpicturesizetrue%
    \pgf@resetpathsizes%
    \pgfutil@ifnextchar\bgroup\pgf@oldpicture\pgf@picture}
\def\pgf@oldpicture#1#2#3#4{%
  \pgfmathsetlength\pgf@picminx{#1}%
  \pgfmathsetlength\pgf@picminy{#2}%
  \pgfmathsetlength\pgf@picmaxx{#3}%
  \pgfmathsetlength\pgf@picmaxy{#4}%
  \pgf@relevantforpicturesizefalse%
  \pgf@picture}

\def\pgf@picture{%
  \setbox\pgfpic\hbox to0pt\bgroup%
    \begingroup%
    \pgfsys@beginpicture%
      \pgfsys@beginscope%
        \begingroup%
        \pgfsetcolor{.}%
        \pgfsetlinewidth{0.4pt}%
        \pgftransformreset%
        \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
        \begingroup%
          \let\pgf@setlengthorig=\setlength%
          \let\pgf@addtolengthorig=\addtolength%
          \let\pgf@selectfontorig=\selectfont%
          \let\setlength=\pgf@setlength%
          \let\addtolength=\pgf@addtolength%
          \let\selectfont=\pgf@selectfont%
          \nullfont\spaceskip0pt\xspaceskip0pt%
          \tracinglostchars=%
            \ifnum\tracinglostchars>2 2\else\tracinglostchars\fi
          \setbox\pgf@layerbox@main\hbox to0pt\bgroup%
            \begingroup%
  }
\def\endpgfpicture{%
              \ifpgfrememberpicturepositiononpage%
                \hbox to0pt{\pgfsys@markposition{\pgfpictureid}}%
              \fi%
              \ifdim\pgf@picmaxx=-16000pt\relax%
                \global\pgf@picmaxx=0pt\relax%
                \global\pgf@picminx=0pt\relax%
                \global\pgf@picmaxy=0pt\relax%
                \global\pgf@picminy=0pt\relax%
              \fi%
              \pgf@relevantforpicturesizefalse%
              \pgf@process{\pgf@baseline}%
              \xdef\pgf@shift@baseline{\the\pgf@y}%
              \pgf@process{\pgf@trimleft}%
              \global\advance\pgf@x by-\pgf@picminx
              \xdef\pgf@trimleft@final{-\the\pgf@x}%
              \pgf@process{\pgf@trimright}%
              \global\advance\pgf@x by-\pgf@picmaxx
              \xdef\pgf@trimright@final{\the\pgf@x}%
        \pgf@remember@layerlist@globally
            \endgroup%
            \hss%
          \egroup%
      \pgf@restore@layerlist@from@global
          \pgf@insertlayers%
        \endgroup%
        \pgfsys@discardpath%
        \endgroup%
      \pgfsys@endscope%
    \pgfsys@endpicture%
    \endgroup%
    \hss
  \egroup%
  \pgfsys@typesetpicturebox\pgfpic%
  \endgroup%
}

\def\pgf@remember@layerlist@globally{%
  \global\let\pgf@layerlist@=\pgf@layerlist
}%
\def\pgf@restore@layerlist@from@global{%
  \let\pgf@layerlist=\pgf@layerlist@
}%
\def\pgf@insertlayers{%
  \box\pgf@layerbox@main%
}

\def\pgf@selectfont{\pgf@selectfontorig\nullfont}

\def\pgf@setlength#1#2{%
  \begingroup%
    \pgfutil@selectfont%
    \pgf@setlengthorig#1{#2}%
    \expandafter%
  \endgroup%
  \expandafter#1\expandafter=\the#1\relax}
\def\pgf@addtolength#1#2{%
  \begingroup%
    \pgfutil@selectfont%
    \pgf@addtolengthorig#1{#2}%
    \expandafter%
  \endgroup%
  \expandafter#1\expandafter=\the#1\relax}



\def\pgfsetbaselinepointlater#1{\def\pgf@baseline{#1}}



\def\pgfsetbaselinepointnow#1{%
  \pgf@process{#1}%
  \edef\pgf@setter@baseline{\noexpand\pgfpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgfsetbaselinepointlater{\pgf@setter@baseline}%
}

\def\pgf@default@text{default}%


\def\pgfsetbaseline#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgf@default@text
    \pgfsetbaseline{\pgf@picminy}%
  \else
    \pgfsetbaselinepointlater{\pgfpoint{0pt}{#1}}%
  \fi
}
\pgfsetbaseline{\pgf@picminy}

\newif\ifpgf@trim@lowlevel
\pgfkeys{
  /pgf/trim lowlevel/.is if=pgf@trim@lowlevel,
  /pgf/trim lowlevel/.default=true,
}

\def\pgfsettrimleftpointlater#1{\def\pgf@trimleft{#1}}
\def\pgfsettrimleftpointnow#1{%
  \pgf@process{#1}%
  \edef\pgf@setter@baseline{\noexpand\pgfpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgfsettrimleftpointlater{\pgf@setter@baseline}%
}
\def\pgfsettrimleft#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgf@default@text
    \pgfsettrimleft{\pgf@picminx}
  \else
    \pgfsettrimleftpointlater{\pgfpoint{#1}{0pt}}%
  \fi
}
\pgfsettrimleft{\pgf@picminx}

\def\pgfsettrimrightpointlater#1{\def\pgf@trimright{#1}}
\def\pgfsettrimrightpointnow#1{%
  \pgf@process{#1}%
  \edef\pgf@setter@baseline{\noexpand\pgfpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgfsettrimrightpointlater{\pgf@setter@baseline}%
}
\def\pgfsettrimright#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgf@default@text
    \pgfsettrimright{\pgf@picmaxx}%
  \else
    \pgfsettrimrightpointlater{\pgfpoint{#1}{0pt}}%
  \fi
}
\pgfsettrimright{\pgf@picmaxx}



\def\pgfinterruptpath
{%
  \begingroup%
  \edef\pgf@interrupt@savex{\the\pgf@path@lastx}%
  \edef\pgf@interrupt@savey{\the\pgf@path@lasty}%
  \pgf@getpathsizes\pgf@interrupt@pathsizes%
  \pgfsyssoftpath@getcurrentpath\pgf@interrupt@path%
  \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
  \let\pgf@interrupt@lastmoveto=\pgfsyssoftpath@lastmoveto%
  \begingroup%
}
\def\endpgfinterruptpath
{%
  \endgroup%
  \pgfsyssoftpath@setcurrentpath\pgf@interrupt@path%
  \pgf@setpathsizes\pgf@interrupt@pathsizes%
  \global\pgf@path@lastx\pgf@interrupt@savex%
  \global\pgf@path@lasty\pgf@interrupt@savey%
  \global\let\pgfsyssoftpath@lastmoveto\pgf@interrupt@lastmoveto%
  \endgroup%
}




\def\pgfinterruptboundingbox
{%
  \begingroup%
    \edef\pgf@interrupt@savemaxx{\the\pgf@picmaxx}%
    \edef\pgf@interrupt@saveminx{\the\pgf@picminx}%
    \edef\pgf@interrupt@savemaxy{\the\pgf@picmaxy}%
    \edef\pgf@interrupt@saveminy{\the\pgf@picminy}%
    \pgf@picmaxx=-16000pt\relax%
    \pgf@picminx=16000pt\relax%
    \pgf@picmaxy=-16000pt\relax%
    \pgf@picminy=16000pt\relax%
    \pgf@size@hookedfalse%
    \let\pgf@path@size@hook=\pgfutil@empty%
}
\def\endpgfinterruptboundingbox
{%
    \global\pgf@picmaxx=\pgf@interrupt@savemaxx%
    \global\pgf@picmaxy=\pgf@interrupt@savemaxy%
    \global\pgf@picminx=\pgf@interrupt@saveminx%
    \global\pgf@picminy=\pgf@interrupt@saveminy%
  \endgroup%
}





\def\pgfidscope{\pgfsys@begin@idscope}
\def\endpgfidscope{\pgfsys@end@idscope}

\let\startpgfidscope\pgfidscope
\let\stoppgfidscope\pgfendidscope





\def\pgfuseid#1{%
  \edef\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \pgf@lookup@id{#1}%
    \pgfsys@use@id{\pgf@next@id}%
    \expandafter\xdef\csname pgf@id@names@#1\endcsname{{\pgf@next@id}{}}%
  \fi%
}

\def\pgf@lookup@id#1{%
  \expandafter\let\expandafter\pgf@id@name\csname pgf@id@names@#1\endcsname%
  \ifx\pgf@id@name\relax%
    \let\pgf@prev@id\pgfutil@empty%
    \let\pgf@next@id\pgfutil@empty%
  \else%
    \expandafter\pgf@id@parse\pgf@id@name%
  \fi%
  \ifx\pgf@next@id\pgfutil@empty%
    \pgfsys@new@id\pgf@next@id%
    \expandafter\xdef\csname pgf@id@names@#1\endcsname{{\pgf@prev@id}{\pgf@next@id}}%
  \fi%
}
\def\pgf@id@parse#1#2{%
  \def\pgf@prev@id{#1}%
  \def\pgf@next@id{#2}%
}




\def\pgfclearid{%
  \pgfsys@clear@id%
}



\def\pgfidrefnextuse#1#2{%
  \edef\pgf@temp{#2}\ifx\pgf@temp\pgfutil@empty\pgferror{Missing name reference for ``\string#1''}\fi%
  \pgf@lookup@id{#2}%
  \let#1\pgf@next@id%
}



\def\pgfidrefprevuse#1#2{%
  \edef\pgf@temp{#2}\ifx\pgf@temp\pgfutil@empty\pgferror{Missing name reference for ``\string#1''}\fi%
  \pgf@lookup@id{#2}%
  \let#1\pgf@prev@id%
}



\def\pgfusetype#1{%
  \edef\pgf@temp{#1}%
  \expandafter\pgfutil@ifnextchar\expandafter.\expandafter\pgf@id@use@type@add\expandafter\pgf@id@use@type@replace\pgf@temp\pgf@stop
}
\def\pgf@id@use@type@add.#1\pgf@stop{\pgfsys@append@type{#1}}
\def\pgf@id@use@type@replace#1\pgf@stop{\pgfsys@use@type{#1}}


\def\pgfpushtype{\pgfsys@push@type}



\def\pgfpoptype{\pgfsys@pop@type}





\def\pgfaliasid#1#2{%
  \expandafter\let\expandafter\pgf@temp\csname pgf@id@names@#2\endcsname%
  \expandafter\let\csname pgf@id@names@#1\endcsname\pgf@temp%
}
\def\pgfgaliasid#1#2{%
  \expandafter\let\expandafter\pgf@temp\csname pgf@id@names@#2\endcsname%
  \expandafter\global\expandafter\let\csname pgf@id@names@#1\endcsname\pgf@temp%
}



\def\pgfifidreferenced#1#2#3{%
  \expandafter\let\expandafter\pgf@id@name\csname pgf@id@names@#1\endcsname%
  \ifx\pgf@id@name\relax%
    #3%
  \else
    \expandafter\pgf@id@parse\pgf@id@name%
    \ifx\pgf@next@id\pgfutil@empty%
      #3%
    \else%
      #2%
    \fi%
  \fi%
}



\def\pgfinterruptpicture
{%
  \begingroup%
    \csname tikz@inside@picturefalse\endcsname%
    \pgfinterruptboundingbox%
      \pgftransformreset%
      \pgfinterruptpath%
        \ifx\pgf@selectfontorig\@undefined%
        \else%
          \let\setlength\pgf@setlengthorig%
          \let\addtolength\pgf@addtolengthorig%
          \let\selectfont\pgf@selectfontorig%
        \fi%
        \pgfutil@selectfont%
        \pgfpicturefalse%
        \let\pgf@positionnodelater@macro\relax%
        \pgf@savelayers%
}
\def\endpgfinterruptpicture
{%
        \pgf@restorelayers%
      \endpgfinterruptpath%
    \endpgfinterruptboundingbox%
  \endgroup%
}

\let\pgf@savelayers=\relax
\let\pgf@restorelayers=\relax

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex ====

\ProvidesFileRCS{pgfcoreshade.code.tex}

\newdimen\pgf@max
\newcount\pgf@sys@shading@range@num
\def\pgf@parsefunc#1{%
  \edef\temp{{#1}}%
  \expandafter\pgf@convertstring\temp%
  \edef\temp{{\pgf@conv}}%
  \expandafter\pgf@@parsefunc\temp}
\def\pgf@@parsefunc#1{%
  \let\pgf@bounds=\pgfutil@empty%
  \let\pgf@funcs=\pgfutil@empty%
  \let\pgf@psfuncs=\pgfutil@empty%
  \let\pgf@encode=\pgfutil@empty%
  \let\pgf@sys@shading@ranges=\pgfutil@empty%
  \pgf@sys@shading@range@num=0\relax%
  \csname pgf@parsefirst\pgf@shading@model\endcsname[#1; ]%
  \csname pgf@parselastdom\pgf@shading@model\endcsname[#1; ]%
  \csname pgf@parsemid\pgf@shading@model\endcsname[#1; ]%
  \ifx\pgf@bounds\pgfutil@empty%
    \edef\pgf@pdfparseddomain{0 1}%
    \edef\pgf@pdfparsedfunction{\pgf@singlefunc\space}%
  \else%
    \edef\pgf@pdfparseddomain{\pgf@doma\space\pgf@domb}%
    \edef\pgf@pdfparsedfunction{%
      << /FunctionType 3 /Domain [\pgf@doma\space\pgf@domb] /Functions
      [\pgf@funcs\space] /Bounds [\pgf@bounds] /Encode [0 1 \pgf@encode]
      >> }%
  \fi%
  \xdef\pgf@psfuncs{\pgf@psfuncs}%
  }
\def\pgf@parsefirstrgb[rgb(#1)=(#2,#3,#4)#5]{%
  \pgfmathsetlength\pgf@x{#1}%
  \edef\pgf@sys@shading@start@pos{\the\pgf@x}%
  \pgf@sys@bp@correct\pgf@x%
  \edef\pgf@doma{\pgf@sys@tonumber{\pgf@x}}%
  \edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
  \pgf@getrgbtuplewithmixin{#2}{#3}{#4}%
  \edef\pgf@sys@shading@start@rgb{\pgf@sys@rgb}%
  \let\pgf@sys@prevcolor=\pgf@sys@shading@start@rgb%
  \let\pgf@sys@prevpos=\pgf@sys@shading@start@pos%
  \edef\pgf@prevcolor{\pgf@rgb}%
  \edef\pgf@firstcolor{\pgf@rgb}}
\def\pgf@parselastdomrgb[rgb(#1)=(#2,#3,#4); {%
  \pgfutil@ifnextchar]{%
    \pgfmathsetlength\pgf@x{#1}%
    \edef\pgf@sys@shading@end@pos{\the\pgf@x}%
    \pgf@max=\pgf@x\relax%
    \pgf@sys@bp@correct\pgf@x%
    \edef\pgf@domb{\pgf@sys@tonumber{\pgf@x}}%
    \pgf@getrgbtuplewithmixin{#2}{#3}{#4}%
    \edef\pgf@sys@shading@end@rgb{\pgf@sys@rgb}%
    \pgfutil@gobble}{\pgf@parselastdomrgb[}}
\def\pgf@parsemidrgb[rgb(#1)=(#2,#3,#4); {\pgf@parserestrgb[}
\def\pgf@parserestrgb[rgb(#1)=(#2,#3,#4); {%
  \advance\pgf@sys@shading@range@num by1\relax%
  \pgfutil@ifnextchar]{%
    \pgf@getrgbtuplewithmixin{#2}{#3}{#4}%
    \edef\pgf@singlefunc{\space%
      << /FunctionType 2 /Domain [0 1] /C0
      [\pgf@prevcolor] /C1 [\pgf@rgb] /N 1 >> }%
    \edef\pgf@funcs{\pgf@funcs\space%
      << /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
      [\pgf@prevcolor] /C1 [\pgf@rgb] /N 1 >> }%
    \edef\pgf@psfuncs{\pgf@prevx\space \pgf@rgb\space \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
    \pgfmathsetlength\pgf@x{#1}%
    \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{{\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@rgb}}}%
    \edef\pgf@sys@prevpos{\the\pgf@x}%
    \let\pgf@sys@prevcolor=\pgf@sys@rgb%
    \pgfutil@gobble}{%
    \pgfmathsetlength\pgf@x{#1}%
    \pgf@getrgbtuplewithmixin{#2}{#3}{#4}%
    \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{{\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@rgb}}}%
    \edef\pgf@sys@prevpos{\the\pgf@x}%
    \let\pgf@sys@prevcolor=\pgf@sys@rgb%
    \edef\pgf@psfuncs{\pgf@prevx\space \pgf@rgb\space \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
    \pgf@sys@bp@correct\pgf@x%
    \edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
    \edef\pgf@bounds{\pgf@bounds\space\pgf@sys@tonumber{\pgf@x}}%
    \edef\pgf@encode{\pgf@encode\space0 1}%
    \edef\pgf@singlefunc{\space%
      << /FunctionType 2 /Domain [0 1] /C0
      [\pgf@prevcolor] /C1 [\pgf@rgb] /N 1 >> }%
    \edef\pgf@funcs{\pgf@funcs\space%
      << /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
      [\pgf@prevcolor] /C1 [\pgf@rgb] /N 1 >> }%
    \edef\pgf@prevcolor{\pgf@rgb}%
    \pgf@parserestrgb[}}

\def\pgf@getrgbtuplewithmixin#1#2#3{%
  \pgfutil@definecolor{pgfshadetemp}{rgb}{#1,#2,#3}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfshadetemp}}%
  \pgfutil@extractcolorspec{pgfshadetemp}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}%
  \expandafter\pgf@getrgb@@\pgf@rgbcolor!}
\def\pgf@getrgb@@#1,#2,#3!{%
  \def\pgf@rgb{#1 #2 #3}%
  \def\pgf@sys@rgb{{#1}{#2}{#3}}%
}

\def\pgf@parsefirstcmyk[cmyk(#1)=(#2,#3,#4,#5)#6]{%
  \pgfmathsetlength\pgf@x{#1}%
  \edef\pgf@sys@shading@start@pos{\the\pgf@x}%
  \pgf@sys@bp@correct\pgf@x%
  \edef\pgf@doma{\pgf@sys@tonumber{\pgf@x}}%
  \edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
  \pgf@getcmyktuplewithmixin{#2}{#3}{#4}{#5}%
  \edef\pgf@sys@shading@start@cmyk{\pgf@sys@cmyk}%
  \let\pgf@sys@prevcolor=\pgf@sys@shading@start@cmyk%
  \let\pgf@sys@prevpos=\pgf@sys@shading@start@pos%
  \edef\pgf@prevcolor{\pgf@cmyk}%
  \edef\pgf@firstcolor{\pgf@cmyk}}
\def\pgf@parselastdomcmyk[cmyk(#1)=(#2,#3,#4,#5); {%
  \pgfutil@ifnextchar]{%
    \pgfmathsetlength\pgf@x{#1}%
    \edef\pgf@sys@shading@end@pos{\the\pgf@x}%
    \pgf@max=\pgf@x\relax%
    \pgf@sys@bp@correct\pgf@x%
    \edef\pgf@domb{\pgf@sys@tonumber{\pgf@x}}%
    \pgf@getcmyktuplewithmixin{#2}{#3}{#4}{#5}%
    \edef\pgf@sys@shading@end@cmyk{\pgf@sys@cmyk}%
    \pgfutil@gobble}{\pgf@parselastdomcmyk[}}
\def\pgf@parsemidcmyk[cmyk(#1)=(#2,#3,#4,#5); {\pgf@parserestcmyk[}
\def\pgf@parserestcmyk[cmyk(#1)=(#2,#3,#4,#5); {%
  \advance\pgf@sys@shading@range@num by1\relax%
  \pgfutil@ifnextchar]{%
    \pgf@getcmyktuplewithmixin{#2}{#3}{#4}{#5}%
    \edef\pgf@singlefunc{\space%
      << /FunctionType 2 /Domain [0 1] /C0
      [\pgf@prevcolor] /C1 [\pgf@cmyk] /N 1 >> }%
    \edef\pgf@funcs{\pgf@funcs\space%
      << /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
      [\pgf@prevcolor] /C1 [\pgf@cmyk] /N 1 >> }%
    \edef\pgf@psfuncs{\pgf@prevx\space
      \pgf@cmyk\space \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
    \pgfmathsetlength\pgf@x{#1}%
    \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{%
      {\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@cmyk}}}%
    \edef\pgf@sys@prevpos{\the\pgf@x}%
    \let\pgf@sys@prevcolor=\pgf@sys@cmyk%
    \pgfutil@gobble}{%
    \pgfmathsetlength\pgf@x{#1}%
    \pgf@getcmyktuplewithmixin{#2}{#3}{#4}{#5}%
    \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{%
      {\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@cmyk}}}%
    \edef\pgf@sys@prevpos{\the\pgf@x}%
    \let\pgf@sys@prevcolor=\pgf@sys@cmyk%
    \edef\pgf@psfuncs{\pgf@prevx\space \pgf@cmyk\space
      \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
    \pgf@sys@bp@correct\pgf@x%
    \edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
    \edef\pgf@bounds{\pgf@bounds\space\pgf@sys@tonumber{\pgf@x}}%
    \edef\pgf@encode{\pgf@encode\space0 1}%
    \edef\pgf@singlefunc{\space%
      << /FunctionType 2 /Domain [0 1] /C0
      [\pgf@prevcolor] /C1 [\pgf@cmyk] /N 1 >> }%
    \edef\pgf@funcs{\pgf@funcs\space%
      << /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
      [\pgf@prevcolor] /C1 [\pgf@cmyk] /N 1 >> }%
    \edef\pgf@prevcolor{\pgf@cmyk}%
    \pgf@parserestcmyk[}}

\def\pgf@getcmyktuplewithmixin#1#2#3#4{%
  \pgfutil@definecolor{pgfshadetemp}{cmyk}{#1,#2,#3,#4}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfshadetemp}}%
  \pgfutil@extractcolorspec{pgfshadetemp}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{cmyk}{\pgf@cmykcolor}%
  \expandafter\pgf@getcmyk@@\pgf@cmykcolor!}
\def\pgf@getcmyk@@#1,#2,#3,#4!{%
  \def\pgf@cmyk{#1 #2 #3 #4}%
  \def\pgf@sys@cmyk{{#1}{#2}{#3}{#4}}%
}

\def\pgf@parsefirstgray[gray(#1)=(#2)#3]{%
  \pgfmathsetlength\pgf@x{#1}%
  \edef\pgf@sys@shading@start@pos{\the\pgf@x}%
  \pgf@sys@bp@correct\pgf@x%
  \edef\pgf@doma{\pgf@sys@tonumber{\pgf@x}}%
  \edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
  \pgf@getgraytuplewithmixin{#2}%
  \edef\pgf@sys@shading@start@gray{\pgf@sys@gray}%
  \let\pgf@sys@prevcolor=\pgf@sys@shading@start@gray%
  \let\pgf@sys@prevpos=\pgf@sys@shading@start@pos%
  \edef\pgf@prevcolor{\pgf@gray}%
  \edef\pgf@firstcolor{\pgf@gray}}
\def\pgf@parselastdomgray[gray(#1)=(#2); {%
  \pgfutil@ifnextchar]{%
    \pgfmathsetlength\pgf@x{#1}%
    \edef\pgf@sys@shading@end@pos{\the\pgf@x}%
    \pgf@max=\pgf@x\relax%
    \pgf@sys@bp@correct\pgf@x%
    \edef\pgf@domb{\pgf@sys@tonumber{\pgf@x}}%
    \pgf@getgraytuplewithmixin{#2}%
    \edef\pgf@sys@shading@end@gray{\pgf@sys@gray}%
    \pgfutil@gobble}{\pgf@parselastdomgray[}}
\def\pgf@parsemidgray[gray(#1)=(#2); {\pgf@parserestgray[}
\def\pgf@parserestgray[gray(#1)=(#2); {%
  \advance\pgf@sys@shading@range@num by1\relax%
  \pgfutil@ifnextchar]{%
    \pgf@getgraytuplewithmixin{#2}%
    \edef\pgf@singlefunc{\space%
      << /FunctionType 2 /Domain [0 1] /C0
      [\pgf@prevcolor] /C1 [\pgf@gray] /N 1 >> }%
    \edef\pgf@funcs{\pgf@funcs\space%
      << /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
      [\pgf@prevcolor] /C1 [\pgf@gray] /N 1 >> }%
    \edef\pgf@psfuncs{\pgf@prevx\space \pgf@gray\space
      \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
    \pgfmathsetlength\pgf@x{#1}%
    \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{%
      {\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@gray}}}%
    \edef\pgf@sys@prevpos{\the\pgf@x}%
    \let\pgf@sys@prevcolor=\pgf@sys@gray%
    \pgfutil@gobble}{%
    \pgfmathsetlength\pgf@x{#1}%
    \pgf@getgraytuplewithmixin{#2}%
    \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{%
      {\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@gray}}}%
    \edef\pgf@sys@prevpos{\the\pgf@x}%
    \let\pgf@sys@prevcolor=\pgf@sys@gray%
    \edef\pgf@psfuncs{\pgf@prevx\space \pgf@gray\space
      \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
    \pgf@sys@bp@correct\pgf@x%
    \edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
    \edef\pgf@bounds{\pgf@bounds\space\pgf@sys@tonumber{\pgf@x}}%
    \edef\pgf@encode{\pgf@encode\space0 1}%
    \edef\pgf@singlefunc{\space%
      << /FunctionType 2 /Domain [0 1] /C0
      [\pgf@prevcolor] /C1 [\pgf@gray] /N 1 >> }%
    \edef\pgf@funcs{\pgf@funcs\space%
      << /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
      [\pgf@prevcolor] /C1 [\pgf@gray] /N 1 >> }%
    \edef\pgf@prevcolor{\pgf@gray}%
    \pgf@parserestgray[}}

\def\pgf@getgraytuplewithmixin#1{%
  \pgfutil@definecolor{pgfshadetemp}{gray}{#1}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfshadetemp}}%
  \pgfutil@extractcolorspec{pgfshadetemp}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{gray}{\pgf@graycolor}%
  \expandafter\pgf@getgray@@\pgf@graycolor!}
\def\pgf@getgray@@#1!{%
  \def\pgf@gray{#1}%
  \def\pgf@sys@gray{{#1}}%
}

\def\pgf@convertstring#1{%
  \def\pgf@conv{}%
  \pgf@convert#1]%
  }
\def\pgf@convert{%
  \pgfutil@ifnextchar]{\pgfutil@gobble}%
  {%
    \pgfutil@ifnextchar;{\pgf@grabsemicolor}%
    {%
      \pgfutil@ifnextchar c{\pgf@gobblec}%
      {%
        \pgfutil@ifnextchar g{\pgf@grabgray}%
        {%
          \pgfutil@ifnextchar o{\pgf@grabcolor}%
          {%
            \pgfutil@ifnextchar m{\pgf@grabcmyk}%
            {%
              \pgfutil@ifnextchar r{\pgf@grabrgb}%
                {\pgferror{Illformed shading
                 specification}\pgf@convert}%
            }%
          }%
        }%
      }%
    }%
  }%
}
\def\pgf@savecolor#1{%
  \pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor
    {\pgf@shading@model}{\pgf@color}%
  \expandafter\pgf@convget@\expandafter{\pgf@color}{#1}%
}
\def\pgf@grabsemicolor;{%
  \edef\pgf@conv{\pgf@conv; }\pgf@convert}
\def\pgf@gobblec c{\pgf@convert}
\def\pgf@grabrgb rgb(#1)=(#2,#3,#4){%
  \pgfutil@definecolor{pgf@tempcol}{rgb}{#2,#3,#4}%
  \pgf@savecolor{#1}%
}
\def\pgf@grabcmyk myk(#1)=(#2,#3,#4,#5){%
  \pgfutil@definecolor{pgf@tempcol}{cmyk}{#2,#3,#4,#5}%
  \pgf@savecolor{#1}%
}
\def\pgf@grabgray gray(#1)=(#2){%
  \pgfutil@definecolor{pgf@tempcol}{gray}{#2}%
  \pgf@savecolor{#1}%
}
\def\pgf@grabcolor olor(#1)=(#2){%
  \pgfutil@colorlet{pgf@tempcol}{#2}%
  \pgf@savecolor{#1}%
}
\def\pgf@convget@#1#2{%
  \edef\pgf@conv{\pgf@conv \pgf@shading@model(#2)=(#1)}\pgf@convert}


\newcount\pgf@shadingcount
\pgf@shadingcount=0
{
  \catcode`\/=0
  \catcode`\\=12
  /gdef/pgf@shadingnum{\/the/pgf@shadingcount\}
}


\newif\ifpgfshadingmodelrgb
\newif\ifpgfshadingmodelcmyk
\newif\ifpgfshadingmodelgray
\def\pgf@setup@shading@model{%
  \pgfshadingmodelrgbtrue
  \pgfshadingmodelcmykfalse
  \pgfshadingmodelgrayfalse
  \XC@sdef\pgf@mod@test{\XC@tgt@mod{natural}}%
  \def\pgf@shading@device{/DeviceRGB}%
  \def\pgf@shading@ps@device{setrgbcolor}%
  \def\pgf@shading@functional@range{0 1 0 1 0 1}%
  \def\pgf@shading@model{rgb}%
  \ifx\pgf@mod@test\XC@mod@cmyk
    \def\pgf@shading@device{/DeviceCMYK}%
    \def\pgf@shading@ps@device{setcmykcolor}%
    \def\pgf@shading@functional@range{0 1 0 1 0 1 0 1}%
    \def\pgf@shading@model{cmyk}%
    \pgfshadingmodelrgbfalse
    \pgfshadingmodelcmyktrue
  \fi
  \ifx\pgf@mod@test\XC@mod@gray
    \def\pgf@shading@device{/DeviceGray}%
    \def\pgf@shading@ps@device{setgray}%
    \def\pgf@shading@functional@range{0 1}%
    \def\pgf@shading@model{gray}%
    \pgfshadingmodelrgbfalse
    \pgfshadingmodelgraytrue
  \fi
  \edef\pgf@sys@driver@dvisvgm{pgfsys-dvisvgm.def}%
  \ifx\pgfsysdriver\pgf@sys@driver@dvisvgm
    \def\pgf@shading@model{rgb}%
  \fi
  \edef\pgf@sys@driver@texforht{pgfsys-tex4ht.def}%
  \ifx\pgfsysdriver\pgf@sys@driver@texforht
    \def\pgf@shading@model{rgb}%
  \fi
}



\def\pgfdeclarehorizontalshading{%
  \pgf@setup@shading@model
  \pgfutil@ifnextchar[%
    \pgf@declarehorizontalshading{\pgf@declarehorizontalshading[]}}
\def\pgf@declarehorizontalshading[#1]#2#3#4{%
  \expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}%
  \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgfutil@empty%
    \global\expandafter\let\csname pgf@num@pgfshading#2!\endcsname\pgfutil@empty
    \pgfsys@horishading{#2}{#3}{#4}%
  \else%
    \global\advance\pgf@shadingcount 1\relax
    \global\expandafter\edef\csname pgf@num@pgfshading#2!\endcsname{\pgf@shadingnum}%
    \expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfsys@horishading}%
    \expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}}%
    \expandafter\let\csname @pgfshading#2!\endcsname=\pgfutil@empty%
  \fi}



\def\pgfdeclareverticalshading{%
  \pgf@setup@shading@model
  \pgfutil@ifnextchar[%
    \pgf@declareverticalshading{\pgf@declareverticalshading[]}}
\def\pgf@declareverticalshading[#1]#2#3#4{%
  \expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}%
  \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgfutil@empty%
    \global\expandafter\let\csname pgf@num@pgfshading#2!\endcsname=\pgfutil@empty
    \pgfsys@vertshading{#2}{#3}{#4}%
  \else%
    \global\advance\pgf@shadingcount 1\relax
    \global\expandafter\edef\csname pgf@num@pgfshading#2!\endcsname{\pgf@shadingnum}%
    \expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfsys@vertshading}%
    \expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}}%
    \expandafter\let\csname @pgfshading#2!\endcsname=\pgfutil@empty%
  \fi}



\def\pgfdeclareradialshading{%
  \pgf@setup@shading@model
  \pgfutil@ifnextchar[%
    \pgf@declareradialshading{\pgf@declareradialshading[]}}
\def\pgf@declareradialshading[#1]#2#3#4{%
  \expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}%
  \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgfutil@empty%
    \global\expandafter\let\csname pgf@num@pgfshading#2!\endcsname=\pgfutil@empty
    \pgfsys@radialshading{#2}{#3}{#4}%
  \else%
    \global\advance\pgf@shadingcount 1\relax
    \global\expandafter\edef\csname pgf@num@pgfshading#2!\endcsname{\pgf@shadingnum}%
    \expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfsys@radialshading}%
    \expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}}%
    \expandafter\let\csname @pgfshading#2!\endcsname=\pgfutil@empty%
  \fi}





\def\pgfdeclarefunctionalshading{%
  \pgf@setup@shading@model
  \pgfutil@ifnextchar[%
    \pgf@declarefunctionalshading{\pgf@declarefunctionalshading[]}}
\def\pgf@declarefunctionalshading[#1]#2#3#4#5#6{%
  \expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}%
  \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgfutil@empty%
    \global\expandafter\let\csname pgf@num@pgfshading#2!\endcsname=\pgfutil@empty
    \pgfshade@functionaldo{#2}{#3}{#4}{#5}{#6}%
  \else%
    \global\advance\pgf@shadingcount 1\relax
    \global\expandafter\edef\csname pgf@num@pgfshading#2!\endcsname{\pgf@shadingnum}%
    \expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfshade@functionaldo}%
    \expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}{#5}{#6}}%
    \expandafter\let\csname @pgfshading#2!\endcsname=\pgfutil@empty%
  \fi}
\def\pgfshade@functionaldo#1#2#3#4#5{%
  \begingroup
    #4%
    \pgfsys@functionalshading{#1}{#2}{#3}{#5}%
    \expandafter\pgfmath@smuggleone\csname @pgfshading#1!\endcsname
  \endgroup
}

\def\pgfshadecolortorgb#1#2{%
  \pgfutil@colorlet{pgf@tempcol}{#1}%
  \pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}%
  \expandafter\pgfshading@rgb\pgf@rgbcolor\relax%
  \edef#2{\pgf@sys@tonumber{\pgf@xa}\space\pgf@sys@tonumber{\pgf@xb}\space\pgf@sys@tonumber{\pgf@xc}\space}%
  \c@pgf@counta\escapechar%
  \escapechar-1\relax%
  \expandafter\edef\csname\string#2red\endcsname{\pgf@sys@tonumber{\pgf@xa}\space}%
  \expandafter\edef\csname\string#2green\endcsname{\pgf@sys@tonumber{\pgf@xb}\space}%
  \expandafter\edef\csname\string#2blue\endcsname{\pgf@sys@tonumber{\pgf@xc}\space}%
  \escapechar\c@pgf@counta%
}
\def\pgfshading@rgb#1,#2,#3\relax{%
  \pgf@xa=#1pt%
  \pgf@xb=#2pt%
  \pgf@xc=#3pt%
}

\def\pgfshadecolortocmyk#1#2{%
  \pgfutil@colorlet{pgf@tempcol}{#1}%
  \pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{cmyk}{\pgf@cmykcolor}%
  \expandafter\pgfshading@cmyk\pgf@cmykcolor\relax%
  \edef#2{\pgf@sys@tonumber{\pgf@xa}\space\pgf@sys@tonumber{\pgf@xb}\space
    \pgf@sys@tonumber{\pgf@xc}\space\pgf@sys@tonumber{\pgf@xd}\space}%
  \c@pgf@counta\escapechar%
  \escapechar-1\relax%
  \expandafter\edef\csname\string#2cyan\endcsname{%
    \pgf@sys@tonumber{\pgf@xa}\space}%
  \expandafter\edef\csname\string#2magenta\endcsname{%
    \pgf@sys@tonumber{\pgf@xb}\space}%
  \expandafter\edef\csname\string#2yellow\endcsname{%
    \pgf@sys@tonumber{\pgf@xc}\space}%
  \expandafter\edef\csname\string#2black\endcsname{%
    \pgf@sys@tonumber{\pgf@xd}\space}%
  \escapechar\c@pgf@counta
}
\def\pgfshading@cmyk#1,#2,#3,#4\relax{%
  \pgf@xa=#1pt%
  \pgf@xb=#2pt%
  \pgf@xc=#3pt%
  \pgf@xd=#4pt%
}

\def\pgfshadecolortogray#1#2{%
  \pgfutil@colorlet{pgf@tempcol}{#1}%
  \pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{gray}{\pgf@graycolor}%
  \expandafter\pgfshading@gray\pgf@graycolor\relax
  \edef#2{\pgf@sys@tonumber{\pgf@xa}\space}%
  \c@pgf@counta\escapechar
  \escapechar-1\relax
  \expandafter\edef\csname\string#2gray\endcsname{%
    \pgf@sys@tonumber{\pgf@xa}\space}%
  \escapechar\c@pgf@counta
}
\def\pgfshading@gray#1\relax{%
  \pgf@xa=#1pt%
}


\def\pgffuncshadingrgbtocmyk{%
  1.0 exch sub 3 1 roll
  1.0 exch sub 3 1 roll
  1.0 exch sub 3 1 roll
  3 copy
  2 copy gt { exch } if pop
  2 copy gt { exch } if pop
  dup 3 1 roll sub
  0.0 2 copy lt { exch } if pop
  1.0 2 copy gt { exch } if pop
  4 1 roll
  dup 3 1 roll sub
  0.0 2 copy lt { exch } if pop
  1.0 2 copy gt { exch } if pop
  4 1 roll
  dup 3 1 roll sub
  0.0 2 copy lt { exch } if pop
  1.0 2 copy gt { exch } if pop
  4 1 roll
}

\def\pgffuncshadingrgbtogray{%
  0.11 mul exch 0.59 mul add exch 0.3 mul add
}

\def\pgffuncshadingcmyktorgb{%
  dup 3 1 roll add
  1.0 2 copy gt { exch } if pop
  4 1 roll
  dup 3 1 roll add
  1.0 2 copy gt { exch } if pop
  4 1 roll
  add
  1.0 2 copy gt { exch } if pop
  3 1 roll
  1.0 exch sub
  3 1 roll
  1.0 exch sub
  3 1 roll
  1.0 exch sub
  3 1 roll
}

\def\pgffuncshadingcmyktogray{%
  exch 0.11 mul add exch 0.59 mul add exch 0.3 mul add
  1.0 2 copy gt { exch } if pop
  1.0 exch sub
}

\def\pgffuncshadinggraytorgb{%
  dup dup
}

\def\pgffuncshadinggraytocmyk{%
  0.0 0.0 0.0
  4 3 roll
}


\def\pgfuseshading#1{%
  \edef\pgf@shadingname{@pgfshading#1}%
  \pgf@tryextensions{\pgf@shadingname}{\pgfalternateextension}%
  \expandafter\pgfutil@ifundefined\expandafter{\pgf@shadingname}%
  {\pgferror{Undefined shading "#1"}}%
  {%
    \edef\pgf@shade@adds{\csname pgf@num\pgf@shadingname\endcsname}%
    \pgfutil@ifundefined{pgf@deps\pgf@shadingname}%
    {}%
    {%
      \pgf@setup@shading@model
      \begingroup
        \pgfutil@globalcolorsfalse
        \edef\@list{\csname pgf@deps\pgf@shadingname\endcsname}%
        \pgfutil@for\@temp:=\@list\do{%
          \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{\@temp}}%
          \pgfutil@extractcolorspec{\@temp}{\pgf@tempcolor}%
          \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{\pgf@shading@model}{\pgf@color}%
          \edef\pgf@shade@adds{\pgf@shade@adds,\pgf@color}%
        }%
        \pgfmath@smuggleone\pgf@shade@adds
      \endgroup
    }%
    \expandafter\pgf@strip@shadename\pgf@shadingname!!%
    \edef\pgf@shadingxname{@pgfshading\pgf@basename\pgf@shade@adds!}%
    \pgfutil@ifundefined{\pgf@shadingxname}%
    {%
      \begingroup
        \edef\@temp{\expandafter\noexpand\csname pgf@func\pgf@shadingname\endcsname}%
        \edef\@args{{\pgf@basename\pgf@shade@adds}}%
        \expandafter\expandafter\expandafter\def
        \expandafter\expandafter\expandafter\@@args
        \expandafter\expandafter\expandafter{\csname pgf@args\pgf@shadingname\endcsname}%
        \expandafter\expandafter\expandafter\@temp\expandafter\@args\@@args
        \expandafter\pgfmath@smuggleone\csname\pgf@shadingxname\endcsname
      \endgroup
    }%
    {}%
    \pgf@invokeshading{\csname\pgf@shadingxname\endcsname}%
  }%
}

\def\pgf@strip@shadename @pgfshading#1!!!{\def\pgf@basename{#1}}

\def\pgf@invokeshading#1{%
  \ifpgfpicture%
    \pgfsys@shadinginsidepgfpicture{#1}%
  \else%
    \pgfsys@shadingoutsidepgfpicture{#1}%
  \fi%
}



\def\pgfaliasshading#1#2{%
  \expandafter\let\expandafter\pgf@temp\expandafter=\csname @pgfshading#2!\endcsname%
  \expandafter\let\csname @pgfshading#1!\endcsname=\pgf@temp%
  \expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@num@pgfshading#2!\endcsname%
  \expandafter\let\csname pgf@num@pgfshading#1!\endcsname=\pgf@temp%
  \expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@deps@pgfshading#2!\endcsname%
  \expandafter\let\csname pgf@deps@pgfshading#1!\endcsname=\pgf@temp%
  \expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@func@pgfshading#2!\endcsname%
  \expandafter\let\csname pgf@func@pgfshading#1!\endcsname=\pgf@temp%
  \expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@args@pgfshading#2!\endcsname%
  \expandafter\let\csname pgf@args@pgfshading#1!\endcsname=\pgf@temp%
}





\def\pgfshadepath#1#2{%
  \ifdim\pgf@pathminx=16000pt%
    \pgfwarning{No path specified that can be filled}%
  \else%
    \begingroup%
      \pgf@xb=.5\pgf@pathmaxx%
      \advance\pgf@xb by.5\pgf@pathminx%
      \pgf@yb=.5\pgf@pathmaxy%
      \advance\pgf@yb by.5\pgf@pathminy%
      \pgfmathparse{#2}%
      \let\pgfshade@angle=\pgfmathresult
      \pgfmathsin@\pgfshade@angle
      \let\pgfshade@sin=\pgfmathresult
      \pgfmathcos@\pgfshade@angle
      \let\pgfshade@cos=\pgfmathresult
      \pgf@xa=\pgf@pathmaxx
      \advance\pgf@xa by-\pgf@pathminx
      \pgf@ya=\pgf@pathmaxy
      \advance\pgf@ya by-\pgf@pathminy
      \pgfmathabs@\pgfshade@sin
      \let\pgfshade@abssin=\pgfmathresult
      \pgfmathabs@\pgfshade@cos
      \let\pgfshade@abscos=\pgfmathresult
      \pgf@xc=\pgfshade@abscos\pgf@xa
      \advance\pgf@xc by\pgfshade@abssin\pgf@ya
      \pgf@yc=\pgfshade@abssin\pgf@xa
      \advance\pgf@yc by\pgfshade@abscos\pgf@ya
      \pgfmathadd@\pgfshade@abscos\pgfshade@abssin
      \pgfmathdivide@{.01992528}{\pgfmathresult}%
      \pgf@xc=\pgfmathresult\pgf@xc
      \pgf@yc=\pgfmathresult\pgf@yc
      \ifdim\pgf@xc<0.0001pt
        \ifdim\pgf@xc>-0.0001pt
          \pgf@no@shadetrue
        \fi
      \fi
      \ifdim\pgf@yc<0.0001pt
        \ifdim\pgf@yc>-0.0001pt
          \pgf@no@shadetrue
        \fi
      \fi
      \ifpgf@no@shade\else
        \pgfsys@beginscope
          \pgfsyssoftpath@invokecurrentpath
          \pgfsys@clipnext
          \pgfsys@discardpath
          \pgfsys@transformcm{1}{0}{0}{1}{\the\pgf@xb}{\the\pgf@yb}%
          \pgf@x=\pgfshade@sin pt%
          \pgf@xa=-\pgf@x%
          \pgfsys@transformcm{\pgfshade@cos}{\pgfshade@sin}{\pgf@sys@tonumber{\pgf@xa}}{\pgfshade@cos}{0pt}{0pt}%
          \pgfsys@transformcm{\pgf@sys@tonumber{\pgf@xc}}{0}{0}{\pgf@sys@tonumber{\pgf@yc}}{0pt}{0pt}%
          \ifx\pgf@shade@extra@transform\pgfutil@empty%
          \else%
            \pgflowlevel{\pgf@shade@extra@transform}%
          \fi%
          \pgfuseshading{#1}%
        \pgfsys@endscope%
      \fi%
    \endgroup%
  \fi%
}

\newif\ifpgf@no@shade


\def\pgfsetadditionalshadetransform#1{\def\pgf@shade@extra@transform{#1}}
\let\pgf@shade@extra@transform=\pgfutil@empty





\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex ====

\ProvidesFileRCS{pgfcoretransformations.code.tex}



\newdimen\pgf@pt@x
\newdimen\pgf@pt@y

\newdimen\pgf@pt@temp

\newif\ifpgf@pt@identity
\pgf@pt@identitytrue

\def\pgf@pt@aa{1.0} \def\pgf@pt@ab{0.0}
\def\pgf@pt@ba{0.0} \def\pgf@pt@bb{1.0}




\def\pgfgettransform#1{%
  \edef#1{{\pgf@pt@aa}{\pgf@pt@ab}{\pgf@pt@ba}{\pgf@pt@bb}{\the\pgf@pt@x}{\the\pgf@pt@y}}%
}

\def\pgfgettransformentries#1#2#3#4#5#6{%
  \edef#1{\pgf@pt@aa}%
  \edef#2{\pgf@pt@ab}%
  \edef#3{\pgf@pt@ba}%
  \edef#4{\pgf@pt@bb}%
  \edef#5{\the\pgf@pt@x}%
  \edef#6{\the\pgf@pt@y}%
}%
\def\pgfsettransformentries#1#2#3#4#5#6{%
  \pgfsettransform{{#1}{#2}{#3}{#4}{#5}{#6}}%
}%


\def\pgfsettransform#1{%
  \edef\pgf@temp{#1}%
  \expandafter\pgf@settransform\pgf@temp%
}
\def\pgf@settransform#1#2#3#4#5#6{%
  \def\pgf@pt@aa{#1}%
  \def\pgf@pt@ab{#2}%
  \def\pgf@pt@ba{#3}%
  \def\pgf@pt@bb{#4}%
  \pgf@pt@x=#5%
  \pgf@pt@y=#6%
  \edef\pgf@idtest{#1,#2,#3,#4}%
  \ifx\pgf@idtest\pgf@idmatrixtext%
    \pgf@pt@identitytrue%
  \else%
    \pgf@pt@identityfalse%
  \fi%
}

\def\pgf@idmatrixtext{1.0,0.0,0.0,1.0}
\def\pgf@zerozerotext{0.0,0.0}
\def\pgf@one@text{1.0}
\def\pgf@zero@text{0.0}


\def\pgf@pos@transform#1#2{%
  \ifpgf@pt@identity%
  \else%
    \pgf@pt@temp=#1%
    #1=\pgf@pt@aa#1%
    \advance#1 by\pgf@pt@ba#2%
    #2=\pgf@pt@bb#2%
    \advance#2 by\pgf@pt@ab\pgf@pt@temp%
  \fi%
  \advance#1 by\pgf@pt@x%
  \advance#2 by\pgf@pt@y%
}
\def\pgf@pos@transform@glob{%
  \ifpgf@pt@identity%
  \else%
    \pgf@pt@temp=\pgf@x%
    \global\pgf@x=\pgf@pt@aa\pgf@x%
    \global\advance\pgf@x by\pgf@pt@ba\pgf@y%
    \global\pgf@y=\pgf@pt@bb\pgf@y%
    \global\advance\pgf@y by\pgf@pt@ab\pgf@pt@temp%
  \fi%
  \global\advance\pgf@x by\pgf@pt@x%
  \global\advance\pgf@y by\pgf@pt@y%
}



\def\pgftransforminvert{%
  \pgf@pt@x=-\pgf@pt@x
  \pgf@pt@y=-\pgf@pt@y
  \ifpgf@pt@identity%
  \else%
    \edef\pgf@zerotest{\pgf@pt@ab,\pgf@pt@ba}%
    \ifx\pgf@zerotest\pgf@zerozerotext%
      \pgfmathreciprocal@{\pgf@pt@aa}%
      \let\pgf@pt@aa\pgfmathresult%
      \pgfmathreciprocal@{\pgf@pt@bb}%
      \let\pgf@pt@bb\pgfmathresult%
    \else%
      {%
        \pgfutil@tempdima=\pgf@pt@aa pt%
        \pgfutil@tempdima=\pgf@pt@bb\pgfutil@tempdima%
        \pgfutil@tempdimb=\pgf@pt@ba pt%
        \pgfutil@tempdimb=\pgf@pt@ab\pgfutil@tempdimb%
        \advance\pgfutil@tempdima by -\pgfutil@tempdimb%
        \pgfmathreciprocal@{\pgf@sys@tonumber{\pgfutil@tempdima}}%
        \pgfutil@tempdima=\pgfmathresult pt%
        \pgf@x=\pgf@pt@bb\pgfutil@tempdima%
        \xdef\pgf@new@pt@aa{\pgf@sys@tonumber{\pgf@x}}%
        \pgf@x=\pgf@pt@aa\pgfutil@tempdima%
        \xdef\pgf@new@pt@bb{\pgf@sys@tonumber{\pgf@x}}%
        \pgfutil@tempdima=-\pgfutil@tempdima%
        \pgf@x=\pgf@pt@ba\pgfutil@tempdima%
        \xdef\pgf@new@pt@ba{\pgf@sys@tonumber{\pgf@x}}%
        \pgf@x=\pgf@pt@ab\pgfutil@tempdima%
        \xdef\pgf@new@pt@ab{\pgf@sys@tonumber{\pgf@x}}%
      }%
      \let\pgf@pt@aa\pgf@new@pt@aa%
      \let\pgf@pt@ab\pgf@new@pt@ab%
      \let\pgf@pt@ba\pgf@new@pt@ba%
      \let\pgf@pt@bb\pgf@new@pt@bb%
    \fi%
    \pgf@pt@temp=\pgf@pt@x%
    \pgf@pt@x=\pgf@pt@aa\pgf@pt@x%
    \advance\pgf@pt@x by\pgf@pt@ba\pgf@pt@y%
    \pgf@pt@y=\pgf@pt@bb\pgf@pt@y%
    \advance\pgf@pt@y by\pgf@pt@ab\pgf@pt@temp%
  \fi%
}





\def\pgftransformcm#1#2#3#4#5{%
  \edef\pgf@marshal{\noexpand\pgf@transformcm{#1}{#2}{#3}{#4}}%
  \pgf@marshal{#5}%
}
\def\pgf@transformcm#1#2#3#4#5{%
  {%
    \pgf@process{#5}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgfmathsetlength\pgf@x{#1}%
    \pgfmathsetlength\pgf@y{#2}%
    \pgf@xa=\pgf@pt@aa\pgf@x%
    \advance\pgf@xa by \pgf@pt@ba\pgf@y%
    \pgf@ya=\pgf@pt@ab\pgf@x%
    \advance\pgf@ya by \pgf@pt@bb\pgf@y%
    \pgfmathsetlength\pgf@x{#3}%
    \pgfmathsetlength\pgf@y{#4}%
    \pgf@xb=\pgf@pt@aa\pgf@x%
    \advance\pgf@xb by \pgf@pt@ba\pgf@y%
    \pgf@yb=\pgf@pt@ab\pgf@x%
    \advance\pgf@yb by \pgf@pt@bb\pgf@y%
    \pgf@x=\pgf@pt@aa\pgf@xc%
    \advance\pgf@x by\pgf@pt@ba\pgf@yc%
    \advance\pgf@x by\pgf@pt@x%
    \pgf@y=\pgf@pt@ab\pgf@xc%
    \advance\pgf@y by\pgf@pt@bb\pgf@yc%
    \advance\pgf@y by\pgf@pt@y%
    \global\pgf@x=\pgf@x%
    \global\pgf@y=\pgf@y%
    \xdef\pgf@tempaa{\pgf@sys@tonumber{\pgf@xa}}%
    \xdef\pgf@tempab{\pgf@sys@tonumber{\pgf@ya}}%
    \xdef\pgf@tempba{\pgf@sys@tonumber{\pgf@xb}}%
    \xdef\pgf@tempbb{\pgf@sys@tonumber{\pgf@yb}}%
  }%
  \pgf@pt@x=\pgf@x%
  \pgf@pt@y=\pgf@y%
  \let\pgf@pt@aa=\pgf@tempaa%
  \let\pgf@pt@ba=\pgf@tempba%
  \let\pgf@pt@ab=\pgf@tempab%
  \let\pgf@pt@bb=\pgf@tempbb%
  \edef\pgf@idtest{\pgf@pt@aa,\pgf@pt@ba,\pgf@pt@ab,\pgf@pt@bb}%
  \ifx\pgf@idtest\pgf@idmatrixtext%
    \pgf@pt@identitytrue%
  \else%
    \pgf@pt@identityfalse%
  \fi%
}




\def\pgftransformtriangle#1#2#3{%
  \pgf@process{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{#3}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{#1}%
  \advance\pgf@xa by-\pgf@x%
  \advance\pgf@ya by-\pgf@y%
  \advance\pgf@xb by-\pgf@x%
  \advance\pgf@yb by-\pgf@y%
  \pgftransformcm%
  {\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@ya}%
  {\pgf@sys@tonumber\pgf@xb}{\pgf@sys@tonumber\pgf@yb}%
  {\pgfpoint{\pgf@x}{\pgf@y}}%
}




\def\pgftransformreset{%
  \pgf@pt@x=0pt%
  \pgf@pt@y=0pt%
  \let\pgf@pt@aa\pgf@one@text%
  \let\pgf@pt@ba\pgf@zero@text%
  \let\pgf@pt@ab\pgf@zero@text%
  \let\pgf@pt@bb\pgf@one@text%
  \pgf@pt@identitytrue%
}



\def\pgftransformresetnontranslations{%
  \let\pgf@pt@aa\pgf@one@text%
  \let\pgf@pt@ba\pgf@zero@text%
  \let\pgf@pt@ab\pgf@zero@text%
  \let\pgf@pt@bb\pgf@one@text%
  \pgf@pt@identitytrue%
}





\def\pgftransformshift#1{\pgftransformcm{1}{0}{0}{1}{#1}}
\def\pgftransformxshift#1{\pgftransformcm{1}{0}{0}{1}{\pgfpoint{#1}{+0pt}}}
\def\pgftransformyshift#1{\pgftransformcm{1}{0}{0}{1}{\pgfpoint{+0pt}{#1}}}





\def\pgftransformscale#1{\pgftransformcm{#1}{0}{0}{#1}{\pgfpointorigin}}
\def\pgftransformxscale#1{\pgftransformcm{#1}{0}{0}{1.0}{\pgfpointorigin}}
\def\pgftransformyscale#1{\pgftransformcm{1.0}{0}{0}{#1}{\pgfpointorigin}}




\def\pgftransformxslant#1{\pgftransformcm{1.0}{0}{#1}{1.0}{\pgfpointorigin}}
\def\pgftransformyslant#1{\pgftransformcm{1.0}{#1}{0}{1.0}{\pgfpointorigin}}




\def\pgftransformrotate#1{%
  \pgfmathparse{#1}%
  \let\pgftransform@angle=\pgfmathresult%
  \pgfmathsin@{\pgftransform@angle}%
  \let\pgftransform@sin=\pgfmathresult%
  \pgfmathcos@{\pgftransform@angle}%
  \let\pgftransform@cos=\pgfmathresult%
  \pgf@x=\pgftransform@sin pt%
  \pgf@xa=-\pgf@x%
  \pgftransformcm{\pgftransform@cos}{\pgftransform@sin}{\pgf@sys@tonumber{\pgf@xa}}{\pgftransform@cos}{\pgfpointorigin}%
}




\newif\ifpgfslopedattime
\newif\ifpgfallowupsidedownattime
\newif\ifpgfresetnontranslationattime


\def\pgftransformlineattime#1#2#3{%
  \pgf@process{#2}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{#3}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgftransformshift{\pgfpointlineattime{#1}{\pgfqpoint{\pgf@xb}{\pgf@yb}}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}%
  \ifpgfresetnontranslationattime%
    \pgftransformresetnontranslations%
  \fi%
  \ifpgfslopedattime%
    \advance\pgf@xc by-\pgf@xb%
    \advance\pgf@yc by-\pgf@yb%
    \ifpgfallowupsidedownattime%
    \else%
      \ifdim\pgf@xc<0pt%
        \pgf@xc=-\pgf@xc%
        \pgf@yc=-\pgf@yc%
      \fi%
    \fi%
    \pgf@x=\pgf@xc%
    \pgf@y=\pgf@yc%
    \pgfpointnormalised{}%
    \pgf@ya=-\pgf@y%
    \pgftransformcm%
    {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
    {\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}%
  \fi%
}



\def\pgftransformarcaxesattime#1#2#3#4#5#6{%
  \pgfpointarcaxesattime{#1}{#2}{#3}{#4}{#5}{#6}%
  \pgftransformshift{\pgfqpoint{\pgf@x}{\pgf@y}}%
  \ifpgfresetnontranslationattime%
    \pgftransformresetnontranslations%
  \fi%
  \ifpgfslopedattime%
    \pgf@x=\pgf@xa%
    \pgf@y=\pgf@ya%
    \pgf@process{\pgfpointnormalised{}}%
    \ifpgfallowupsidedownattime%
    \else%
      \ifdim\pgf@x<0pt%
        \pgf@x=-\pgf@x%
        \pgf@y=-\pgf@y%
      \fi%
    \fi%
    \pgf@ya=-\pgf@y%
    \pgftransformcm%
    {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
    {\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}%
  \fi%
}




\def\pgftransformcurveattime#1#2#3#4#5{%
  \pgfpointcurveattime{#1}{#2}{#3}{#4}{#5}%
  \pgftransformshift{\pgfqpoint{\pgf@x}{\pgf@y}}%
  \ifpgfresetnontranslationattime%
    \pgftransformresetnontranslations%
  \fi%
  \ifpgfslopedattime%
    \pgf@x=\pgf@xa%
    \pgf@y=\pgf@ya%
    \advance\pgf@x by-\pgf@xb%
    \advance\pgf@y by-\pgf@yb%
    \ifpgfallowupsidedownattime%
    \else%
      \ifdim\pgf@x<0pt%
        \pgf@x=-\pgf@x%
        \pgf@y=-\pgf@y%
      \fi%
    \fi%
    \pgfpointnormalised{}%
    \pgf@ya=-\pgf@y%
    \pgftransformcm%
    {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
    {\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}%
  \fi%
}






\def\pgftransformarrow#1#2{%
  \pgf@process{#2}%
  \pgftransformshift{}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{#1}%
  \advance\pgf@xa by-\pgf@x%
  \advance\pgf@ya by-\pgf@y%
  \pgf@x=\pgf@xa%
  \pgf@y=\pgf@ya%
  \pgfpointnormalised{}%
  \pgf@ya=-\pgf@y%
  \pgftransformcm%
  {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
  {\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfqpoint{0pt}{0pt}}%
}





\def\pgftransformationadjustments{%
  \ifpgf@pt@identity%
    \let\pgfhorizontaltransformationadjustment\pgf@one@text%
    \let\pgfverticaltransformationadjustment\pgf@one@text%
  \else%
    {%
      \pgf@pt@x0pt%
      \pgf@pt@y0pt%
      \pgfpointtransformed{\pgfqpoint{1pt}{0pt}}%
      \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
      \pgfmathreciprocal@{\pgfmathresult}%
      \global\let\pgf@temp@hori\pgfmathresult
      \pgfpointtransformed{\pgfqpoint{0pt}{1pt}}%
      \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
      \pgfmathreciprocal@{\pgfmathresult}%
      \global\let\pgf@temp@vert\pgfmathresult
      \xdef\pgf@marshal@b{\def\noexpand\pgfverticaltransformationadjustment{\pgfmathresult}}
    }%
    \let\pgfhorizontaltransformationadjustment\pgf@temp@hori%
    \let\pgfverticaltransformationadjustment\pgf@temp@vert%
  \fi%
}

\let\pgfhorizontaltransformationadjustment\pgf@one@text
\let\pgfverticaltransformationadjustment\pgf@one@text




\def\pgflowlevelsynccm{%
  \pgfsys@transformcm%
  {\pgf@pt@aa}{\pgf@pt@ab}%
  {\pgf@pt@ba}{\pgf@pt@bb}%
  {\pgf@pt@x}{\pgf@pt@y}%
  \pgftransformreset%
  \pgf@relevantforpicturesizefalse%
}




\def\pgflowlevel#1{%
  {%
    \pgftransformreset%
    #1%
    \pgflowlevelsynccm%
  }%
  \pgf@relevantforpicturesizefalse%
}

\def\pgflowlevelscope#1{\pgfscope\pgflowlevel{#1}}
\def\endpgflowlevelscope{\endpgfscope}

\long\def\pgflowlevelobj#1#2{\pgfscope{\pgflowlevel{#1}#2}\endpgfscope}





\def\pgfviewboxscope#1#2#3#4#5{%
  {%
    \pgf@process{#1}%
    \pgf@pos@transform@glob
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{#2}%
    \pgf@pos@transform@glob
    \ifdim\pgf@x<\pgf@xa%
      \pgf@xb\pgf@x%
      \pgf@xc\pgf@xa%
    \else%
      \pgf@xb\pgf@xa%
      \pgf@xc\pgf@x%
    \fi%
    \ifdim\pgf@y<\pgf@ya%
      \pgf@yb\pgf@y%
      \pgf@yc\pgf@ya%
    \else%
      \pgf@yb\pgf@ya%
      \pgf@yc\pgf@y%
    \fi%
    \pgf@process{#3}%
    \pgf@pos@transform@glob
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{#4}%
    \pgf@pos@transform@glob
    \ifdim\pgf@x<\pgf@xa%
    \else%
      \pgfutil@tempdima\pgf@x
      \pgf@x\pgf@xa%
      \pgf@xa\pgfutil@tempdima%
    \fi%
    \ifdim\pgf@y<\pgf@ya%
    \else%
      \pgfutil@tempdima\pgf@y
      \pgf@y\pgf@ya%
      \pgf@ya\pgfutil@tempdima%
    \fi%
    \pgfusetype{.view}%
    \edef\pgf@marshal{\expandafter\noexpand\csname pgfsys@viewbox#5\endcsname{\the\pgf@x}{\the\pgf@y}{\the\pgf@xa}{\the\pgf@ya}{\the\pgf@xb}{\the\pgf@yb}{\the\pgf@xc}{\the\pgf@yc}}%
    \pgf@marshal%
  }%
  \pgf@relevantforpicturesizefalse%
}

\def\endpgfviewboxscope{\pgfsys@endviewbox}

\let\startpgfviewboxscope=\pgfviewboxscope
\let\stoppgfviewboxscope=\endpgfviewboxscope


\let\pgfapproximatenonlineartranslation\relax
\let\pgfapproximatenonlineartransformation\relax
\def\pgftransformnonlinear#1{\pgferror{You need to say
    \string\usepgfmodule{nonlineartransformations} to use nonlinear transformations}}


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex ====

\ProvidesFileRCS{pgfcoretransparency.code.tex}



\def\pgfsetstrokeopacity#1{%
  \pgfmathparse{#1}%
  \expandafter\pgfsys@stroke@opacity\expandafter{\pgfmathresult}}



\def\pgfsetfillopacity#1{%
  \pgfmathparse{#1}%
  \expandafter\pgfsys@fill@opacity\expandafter{\pgfmathresult}}




\def\pgfsetblendmode#1{\pgfsys@blend@mode{#1}}



\def\pgfdeclarefading#1#2{%
  \setbox\pgfutil@tempboxa=\hbox{{\pgfsys@beginscope\pgfutil@color{white}\ignorespaces#2\pgfsys@endscope}}%
  \pgfsys@fadingfrombox{#1}\pgfutil@tempboxa%
}

\pgfutil@colorlet{pgftransparent}{black}



\def\pgfsetfading#1#2{%
  {%
    \pgftransformreset%
    #2%
    \pgfgettransform{\pgftrans@temp}%
    \edef\pgf@marshal{\noexpand\pgfsys@usefading{#1}\pgftrans@temp}%
    \pgf@marshal%
  }%
}




\def\pgfsetfadingforcurrentpath#1#2{%
  \ifdim\pgf@pathminx=16000pt%
    \pgfsetfading{#1}{#2}%
  \else%
    \pgfsetfading{#1}{%
      \pgf@xb=.5\pgf@pathmaxx%
      \advance\pgf@xb by.5\pgf@pathminx%
      \pgf@yb=.5\pgf@pathmaxy%
      \advance\pgf@yb by.5\pgf@pathminy%
      \pgf@xc=\pgf@pathmaxx%
      \advance\pgf@xc by-\pgf@pathminx%
      \ifdim\pgf@xc<0.1pt\pgf@xc=0.1pt\fi%
      \pgf@yc=\pgf@pathmaxy%
      \advance\pgf@yc by-\pgf@pathminy%
      \ifdim\pgf@yc<0.1pt\pgf@yc=0.1pt\fi%
      \pgf@xc=.02\pgf@xc%
      \pgf@yc=.02\pgf@yc%
      \pgftransformcm{1}{0}{0}{1}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
      \pgftransformcm{\pgf@sys@tonumber{\pgf@xc}}{0}{0}{\pgf@sys@tonumber{\pgf@yc}}{\pgfpointorigin}%
      \pgfsys@clipfading%
      #2%
    }%
  \fi%
}





\def\pgfsetfadingforcurrentpathstroked#1#2{%
  \ifdim\pgf@pathminx=16000pt%
    \pgfsetfading{#1}{#2}%
  \else%
    \pgfsetfading{#1}{%
      \pgf@xb=.5\pgf@pathmaxx%
      \advance\pgf@xb by.5\pgf@pathminx%
      \pgf@yb=.5\pgf@pathmaxy%
      \advance\pgf@yb by.5\pgf@pathminy%
      \pgf@xc=\pgf@pathmaxx%
      \advance\pgf@xc by-\pgf@pathminx%
      \advance\pgf@xc by\pgflinewidth%
      \ifdim\pgf@xc<0.1pt\pgf@xc=0.1pt\fi%
      \pgf@yc=\pgf@pathmaxy%
      \advance\pgf@yc by-\pgf@pathminy%
      \advance\pgf@yc by\pgflinewidth%
      \ifdim\pgf@yc<0.1pt\pgf@yc=0.1pt\fi%
      \pgf@xc=.02\pgf@xc%
      \pgf@yc=.02\pgf@yc%
      \pgftransformcm{1}{0}{0}{1}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
      \pgftransformcm{\pgf@sys@tonumber{\pgf@xc}}{0}{0}{\pgf@sys@tonumber{\pgf@yc}}{\pgfpointorigin}%
      \pgfsys@clipfading%
      #2%
    }%
  \fi%
}



\def\pgftransparencygroup{%
  \pgfutil@ifnextchar[{\pgftransparencygroup@}{\pgftransparencygroup@[]}%
}
\def\pgftransparencygroup@[#1]{%
  \begingroup%
    \pgfkeys{/pgf/transparency group options/.cd,%
      isolated=false,
      knockout=false,
      #1}%
    \setbox\pgfutil@tempboxa=\hbox\bgroup%
}
\pgfkeys{
  /pgf/transparency group options/.cd,
  isolated/.is if=pgfsys@transparency@group@isolated,
  knockout/.is if=pgfsys@transparency@group@knockout
}

\def\endpgftransparencygroup{%
    \egroup%
    \ifdim\pgf@picminx=16000pt%
    \else%
      \advance\pgf@picminx by-1cm%
      \advance\pgf@picmaxx by1cm%
      \advance\pgf@picminy by-1cm%
      \advance\pgf@picmaxy by1cm%
      \setbox\pgfutil@tempboxa=\hbox{%
        \vrule width0pt height\pgf@picmaxy depth-\pgf@picminy%
        \hskip-\pgf@picminx%
        \box\pgfutil@tempboxa%
        \hskip\pgf@picmaxx%
      }%
      \pgfsys@transparencygroupfrombox\pgfutil@tempboxa%
      \wd\pgfutil@tempboxa=0pt%
      \ht\pgfutil@tempboxa=0pt%
      \dp\pgfutil@tempboxa=0pt%
      \hskip\pgf@picminx\box\pgfutil@tempboxa\hskip-\pgf@picminx%
    \fi%
  \endgroup%
}

\let\startpgftransparencygroup=\pgftransparencygroup
\let\stoppgftransparencygroup=\endpgftransparencygroup

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.code.tex ====

\usetikzlibrary{calc,decorations.markings}%


\tikzset{
  circuit/.style={
    every circuit/.try,
    /utils/exec=\tikz@lib@circ@on@tofalse,
    execute at begin to={
      \tikz@lib@circ@on@totrue
      \let\tikz@lib@circ@start@node\pgfutil@empty
      \def\tikz@lib@circ@end{-- (\tikztotarget) \tikztonodes}
    }
  }
}%

\newif\iftikz@lib@circ@on@to



\tikzset{
  circuit handle symbol/.code={%
    \global\advance\tikz@lib@circ@count by1\relax%
    \iftikz@lib@circ@on@to
      {%
        \pgfkeys{
          /pgf/key filters/active families or no family/.install key filter={/pgf/key filters/false}{/pgf/key filters/false},
          /tikz/circuits/pos grabber/.activate family}
        \pgfqkeysfiltered{/tikz}{pos=.5,#1}%
        \expandafter%
      }%
      \expandafter\def\expandafter\tikz@lib@circ@pos\expandafter{\tikz@time}%
      \pgfkeysalso{to path={
         \pgfextra{\tikz@lib@circ@on@tofalse}
         decorate [decoration={markings,mark connection node=mark node}]
          {
            \tikz@lib@circ@start@node
            \tikz@lib@circ@end
          }
        }}
      \ifdim\tikz@lib@circ@pos pt=0pt\relax%
        \def\tikz@lib@circ@start@node{%
          {\pgfextra{\tikz@lib@circ@compute@direction{\tikz@lib@circ@start}}%
          node[alias=tikz@lib@circ@node@start,at={(0,0)},#1,pos=]{}}(tikz@lib@circ@node@start)}%
      \else%
        \ifdim\tikz@lib@circ@pos pt=1pt\relax%
          \def\tikz@lib@circ@end{
            {\pgfextra{\tikz@lib@circ@compute@direction{\tikz@lib@circ@target}}%
              node[alias=tikz@lib@circ@node\the\tikz@lib@circ@count,at={(0,0)},#1,pos=]{}}
            --(tikz@lib@circ@node\the\tikz@lib@circ@count)\tikztonodes
          }%
        \else%
          \edef\tikz@marshal{mark=at position \tikz@lib@circ@pos\space with}%
          \def\tikz@marshala{decoration=}%
          \expandafter\expandafter\expandafter\tikzset%
          \expandafter\expandafter\expandafter{\expandafter\tikz@marshala\expandafter{\tikz@marshal{\node[alias=mark node,#1,pos=]{};}}}
        \fi%
      \fi%
    \else
      \pgfkeysalso{#1}
    \fi
  }
}%
\newcount\tikz@lib@circ@count

\def\tikz@lib@circ@compute@direction#1{%
  \tikz@scan@one@point\tikz@lib@circ@save@start(\tikztostart)%
  \tikz@scan@one@point\tikz@lib@circ@save@target(\tikztotarget)%
  \pgf@process{\pgfpointnormalised{\pgfpointdiff{\tikz@lib@circ@start}{\tikz@lib@circ@target}}}%
  \pgf@ya=-\pgf@y%
  \pgftransformcm{\the\pgf@x}{\the\pgf@y}{\the\pgf@ya}{\the\pgf@x}{#1}%
}%
\def\tikz@lib@circ@save@start#1{\def\tikz@lib@circ@start{#1}}%
\def\tikz@lib@circ@save@target#1{\def\tikz@lib@circ@target{#1}}%

\tikzset{
  circuits/pos grabber/.is family,
  pos/.belongs to family=/tikz/circuits/pos grabber,
  at start/.belongs to family=/tikz/circuits/pos grabber,
  very near start/.belongs to family=/tikz/circuits/pos grabber,
  near start/.belongs to family=/tikz/circuits/pos grabber,
  midway/.belongs to family=/tikz/circuits/pos grabber,
  near end/.belongs to family=/tikz/circuits/pos grabber,
  very near end/.belongs to family=/tikz/circuits/pos grabber,
  at end/.belongs to family=/tikz/circuits/pos grabber
}%


\tikzset{
  circuit declare symbol/.style args={#1}{
    #1/.style={circuit handle symbol={
        inner sep=0.5pt,
        every circuit symbol,
        #1/graphic,
        every #1/.try,
        ##1}
    },
    #1/graphic/.style={},
    set #1 graphic/.style={#1/graphic/.style={##1}}
  },
  circuit symbol unit/.code=\pgfmathsetlength\tikzcircuitssizeunit{#1},
  circuit symbol size/.style args={width #1 height #2}{
    minimum width={(#1)*\tikzcircuitssizeunit},
    minimum height={(#2)*\tikzcircuitssizeunit}
  },
  huge circuit symbols/.style={circuit symbol unit=10pt},
  large circuit symbols/.style={circuit symbol unit=8pt},
  medium circuit symbols/.style={circuit symbol unit=7pt},
  small circuit symbols/.style={circuit symbol unit=6pt},
  tiny circuit symbols/.style={circuit symbol unit=5pt},
}%

\newdimen\tikzcircuitssizeunit
\tikzcircuitssizeunit=7pt



\tikzset{
  circuit declare annotation/.style args={#1#2#3}{%
    #1/.style={
      append after command={%
        \bgroup
          [current point is local=true]
          [every circuit annotation/.try]
          [every #1/.try]
          [shift={(\tikzlastnode.north)}]
          [annotation arrow,->]
          [label distance=#2,##1]
          #3
          \tikz@after@path%
        \egroup%
      }
    },
    #1'/.style={
      append after command={%
        \bgroup
          [current point is local=true]
          [every circuit annotation/.try]
          [every #1/.try]
          [shift={(\tikzlastnode.south)},yscale=-1]
          [annotation arrow,->]
          [label distance=#2,##1]
          #3
          \tikz@after@path%
        \egroup%
      }
    }
  },
  annotation arrow/.style = {
    /utils/exec={\pgfsetarrowoptions{direction ee}{.4*\the\tikzcircuitssizeunit+.3*\the\pgflinewidth}},
    >=direction ee
  }
}%



\tikzset{
  point up/.style={rotate=90},
  point down/.style={rotate=-90},
  point left/.style={rotate=180},
  point right/.style={}
}%




\tikzset{
  every circuit symbol/.style={},
  circuit symbol open/.style={draw},
  circuit symbol filled/.style={draw,fill=black},
  circuit symbol lines/.style={draw},
  circuit symbol wires/.style={draw},
}%






\tikzset{
  info/.code={\pgfutil@ifnextchar[\tikz@lib@circ@lab@plain{\tikz@lib@circ@lab@plain[]}#1\pgf@stop},%
  info'/.code={\pgfutil@ifnextchar[\tikz@lib@circ@labp@plain{\tikz@lib@circ@labp@plain[]}#1\pgf@stop},%
  info sloped/.code={\pgfutil@ifnextchar[\tikz@lib@circ@lab@sloped@plain{\tikz@lib@circ@lab@sloped@plain[]}#1\pgf@stop},%
  info' sloped/.code={\pgfutil@ifnextchar[\tikz@lib@circ@lab@slopedp@plain{\tikz@lib@circ@lab@slopedp@plain[]}#1\pgf@stop},%
  circuit declare unit/.style 2 args={
    #1/.code={\pgfutil@ifnextchar[\tikz@lib@circ@lab{\tikz@lib@circ@lab[]}##1\pgf@stop{#2}{#1}},%
    #1 sloped/.code={\pgfutil@ifnextchar[\tikz@lib@circ@lab@sloped{\tikz@lib@circ@lab@sloped[]}##1\pgf@stop{#2}{#1}},%
    #1'/.code={\pgfutil@ifnextchar[\tikz@lib@circ@labp{\tikz@lib@circ@labp[]}##1\pgf@stop{#2}{#1}},%
    #1' sloped/.code={\pgfutil@ifnextchar[\tikz@lib@circ@lab@slopedp{\tikz@lib@circ@lab@slopedp[]}##1\pgf@stop{#2}{#1}}%
  }
}%

\def\tikz@lib@circ@lab[#1]#2\pgf@stop#3#4{\tikzset{label={[every info/.try,every #4/.try,#1]$\mathrm{#2#3}$}}}%
\def\tikz@lib@circ@lab@sloped[#1]#2\pgf@stop#3#4{\tikzset{label={[every info/.try,every #4/.try,transform shape,#1]$\mathrm{#2#3}$}}}%
\def\tikz@lib@circ@labp[#1]#2\pgf@stop#3#4{\tikzset{label={[label position=below,every info/.try,every #4/.try,#1]$\mathrm{#2#3}$}}}%
\def\tikz@lib@circ@lab@slopedp[#1]#2\pgf@stop#3#4{\tikzset{label={[label position=below,every info/.try,every #4/.try,transform shape,#1]$\mathrm{#2#3}$}}}%

\def\tikz@lib@circ@lab@plain[#1]#2\pgf@stop{\tikzset{label={[every info/.try,#1]#2}}}%
\def\tikz@lib@circ@lab@sloped@plain[#1]#2\pgf@stop{\tikzset{label={[every info/.try,transform shape,#1]#2}}}%
\def\tikz@lib@circ@labp@plain[#1]#2\pgf@stop{\tikzset{label={[label position=below,every info/.try,#1]#2}}}%
\def\tikz@lib@circ@lab@slopedp@plain[#1]#2\pgf@stop{\tikzset{label={[label position=below,every info/.try,transform shape,#1]#2}}}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.ee.IEC.code.tex ====

\usetikzlibrary{arrows}%
\usetikzlibrary{circuits.ee}%

\usepgflibrary{shapes.gates.ee.IEC}%



\tikzset{
  circuit ee IEC/.style=
  {
    circuit ee,
    set resistor graphic              = resistor IEC graphic,
    set inductor graphic              = inductor IEC graphic,
    set capacitor graphic             = capacitor IEC graphic,
    set contact graphic               = contact IEC graphic,
    set ground graphic                = ground IEC graphic,
    set battery graphic               = battery IEC graphic,
    set diode graphic                 = diode IEC graphic,
    set Zener diode graphic           = Zener diode IEC graphic,
    set tunnel diode graphic          = tunnel diode IEC graphic,
    set backward diode graphic        = backward diode IEC graphic,
    set Schottky diode graphic        = Schottky diode IEC graphic,
    set breakdown diode graphic       = breakdown diode IEC graphic,
    set bulb graphic                  = bulb IEC graphic,
    set voltage source graphic        = voltage source IEC graphic,
    set current source graphic        = current source IEC graphic,
    set make contact graphic          = make contact IEC graphic,
    set break contact graphic         = break contact IEC graphic,
    set amperemeter graphic           = amperemeter graphic,
    set voltmeter graphic             = voltmeter graphic,
    set ohmmeter graphic              = ohmmeter graphic,
    set ac source graphic             = ac source graphic,
    set dc source graphic             = dc source graphic,
  },
}%



\tikzset{
  resistor IEC graphic/.style={
    circuit symbol open,
    circuit symbol size=width 4 height 1,
    shape=rectangle ee,
    transform shape,
  },
  var resistor IEC graphic/.style={
    circuit symbol lines,
    circuit symbol size=width 4.8 height 0.8,
    shape=var resistor IEC,
    transform shape,
    outer sep=0pt,
    cap=round,
  },
}%




\tikzset{
  inductor IEC graphic/.style={
    circuit symbol lines,
    circuit symbol size=width 4 height .5,
    transform shape,
    shape=inductor IEC,
    outer sep=0pt,
    cap=round,
  },
  var inductor IEC graphic/.style={
    circuit symbol filled,
    circuit symbol size=width 4 height 1,
    transform shape,
    shape=rectangle ee,
  },
}%




\tikzset{
  capacitor IEC graphic/.style={
    circuit symbol lines,
    circuit symbol size=width .5 height 2,
    transform shape,
    shape=capacitor IEC,
  },
}%




\tikzset{
  ground IEC graphic/.style={
    circuit symbol lines,
    circuit symbol size=width .75 height 2,
    transform shape,
    shape=ground IEC,
  },
}%





\tikzset{
  battery IEC graphic/.style={
    circuit symbol lines,
    circuit symbol size=width .5 height 2.5,
    transform shape,
    shape=battery IEC,
    transform shape,
  },
}%




\tikzset{
  diode IEC graphic/.style={
    circuit symbol open,
    circuit symbol size=width 1.25 height 1.25,
    transform shape,
    shape=generic diode IEC,
    /pgf/generic diode IEC/before background={
      \pgfpathmoveto{\pgfqpoint{0pt}{-1pt}}
      \pgfpathlineto{\pgfqpoint{0pt}{1pt}}
      \pgfusepathqstroke
    },
  },
  var diode IEC graphic/.style={
    diode IEC graphic,
    circuit symbol filled,
  },
}%

\tikzset{
  Zener diode IEC graphic/.style={
    diode IEC graphic,
    /pgf/generic diode IEC/before background={
      \pgfpathmoveto{\pgfqpoint{-.5pt}{-1pt}}
      \pgfpathlineto{\pgfqpoint{0pt}{-1pt}}
      \pgfpathlineto{\pgfqpoint{0pt}{1pt}}
      \pgfusepathqstroke
    },
  },
  var Zener diode IEC graphic/.style={
    Zener diode IEC graphic,
    circuit symbol filled,
  },
}%

\tikzset{
  Schottky diode IEC graphic/.style={
    diode IEC graphic,
    /pgf/generic diode IEC/before background={
      \pgfpathmoveto{\pgfqpoint{-.4pt}{-.6pt}}
      \pgfpathlineto{\pgfqpoint{-.4pt}{-1pt}}
      \pgfpathlineto{\pgfqpoint{0pt}{-1pt}}
      \pgfpathlineto{\pgfqpoint{0pt}{1pt}}
      \pgfpathlineto{\pgfqpoint{.4pt}{1pt}}
      \pgfpathlineto{\pgfqpoint{.4pt}{.6pt}}
      \pgfusepathqstroke
    },
  },
  var Schottky diode IEC graphic/.style={
    Schottky diode IEC graphic,
    circuit symbol filled,
  },
}%

\tikzset{
  tunnel diode IEC graphic/.style={
    diode IEC graphic,
    /pgf/generic diode IEC/before background={
      \pgfpathmoveto{\pgfqpoint{-.5pt}{-1pt}}
      \pgfpathlineto{\pgfqpoint{0pt}{-1pt}}
      \pgfpathlineto{\pgfqpoint{0pt}{1pt}}
      \pgfpathlineto{\pgfqpoint{-.5pt}{1pt}}
      \pgfusepathqstroke
    },
  },
  var tunnel diode IEC graphic/.style={
    tunnel diode IEC graphic,
    circuit symbol filled,
  },
}%

\tikzset{
  backward diode IEC graphic/.style={
    diode IEC graphic,
    /pgf/generic diode IEC/before background={
      \pgfpathmoveto{\pgfqpoint{-.5pt}{-1pt}}
      \pgfpathlineto{\pgfqpoint{.5pt}{-1pt}}
      \pgfpathmoveto{\pgfqpoint{0pt}{-1pt}}
      \pgfpathlineto{\pgfqpoint{0pt}{1pt}}
      \pgfpathmoveto{\pgfqpoint{-.5pt}{1pt}}
      \pgfpathlineto{\pgfqpoint{.5pt}{1pt}}
      \pgfusepathqstroke
    },
  },
  var backward diode IEC graphic/.style={
    backward diode IEC graphic,
    circuit symbol filled,
  },
}%


\tikzset{
  breakdown diode IEC graphic/.style={
    circuit symbol open,
    circuit symbol size=width 2.5 height 1.25,
    transform shape,
    shape=breakdown diode IEC,
  },
  var breakdown diode IEC graphic/.style={
    breakdown diode IEC graphic,
    circuit symbol filled,
  },
}%




\tikzset{
  contact IEC graphic/.style={
    circuit symbol filled,
    circuit symbol size=width .5 height .5,
    shape=circle ee,
    outer sep=.25\pgflinewidth,
  },
}%



\tikzset{
  bulb IEC graphic/.style={
    circuit symbol lines,
    circuit symbol size=width 1.5 height 1.5,
    shape=generic circle IEC,
    /pgf/generic circle IEC/before background={
      \pgfpathmoveto{\pgfpointpolar{-135}{1pt}}
      \pgfpathlineto{\pgfpointpolar{45}{1pt}}
      \pgfpathmoveto{\pgfpointpolar{-45}{1pt}}
      \pgfpathlineto{\pgfpointpolar{135}{1pt}}
      \pgfusepathqstroke
    },
    transform shape,
  },
}%



\tikzset{
  current source IEC graphic/.style={
    circuit symbol lines,
    circuit symbol size=width 2 height 2,
    shape=generic circle IEC,
    /pgf/generic circle IEC/before background={
      \pgfpathmoveto{\pgfqpoint{0pt}{-1pt}}
      \pgfpathlineto{\pgfqpoint{0pt}{1pt}}
      \pgfusepathqstroke
    },
    transform shape,
  },
  voltage source IEC graphic/.style={
    circuit symbol lines,
    circuit symbol size=width 2 height 2,
    shape=generic circle IEC,
    /pgf/generic circle IEC/before background={
      \pgfpathmoveto{\pgfqpoint{-1pt}{0pt}}
      \pgfpathlineto{\pgfqpoint{1pt}{0pt}}
      \pgfusepathqstroke
    },
    transform shape,
  },
}%




\tikzset{
  make contact IEC graphic/.style={
    circuit symbol wires,
    circuit symbol size=width 2 height 1,
    transform shape,
    shape=make contact IEC,
    outer sep=0pt,
    cap=round,
  },
  var make contact IEC graphic/.style={
    circuit symbol wires,
    circuit symbol size=width 2.4 height 1,
    transform shape,
    shape=var make contact IEC,
    outer sep=0pt,
    cap=round,
  },
}%


\tikzset{
  break contact IEC graphic/.style={
    circuit symbol wires,
    circuit symbol size=width 2 height 1,
    transform shape,
    shape=break contact IEC,
    outer sep=0pt,
    cap=round,
  },
}%




\tikzset{
  amperemeter graphic/.style={
    circuit symbol open,
    circuit symbol size=width 2 height 2,
    transform shape,
    shape=generic circle IEC,
    info=center:A,
  },
  voltmeter graphic/.style={
    circuit symbol open,
    circuit symbol size=width 2 height 2,
    transform shape,
    shape=generic circle IEC,
    info=center:V,
  },
  ohmmeter graphic/.style={
    circuit symbol open,
    circuit symbol size=width 2 height 2,
    transform shape,
    shape=generic circle IEC,
    info=center:$\Omega$,
  },
}%




\tikzset{
  ac source graphic/.style={
    circuit symbol lines,
    circuit symbol size=width 2 height 2,
    shape=generic circle IEC,
    /pgf/generic circle IEC/before background={
      \pgfpathmoveto{\pgfqpoint{0.7pt}{0pt}}
      \pgfpathquadraticcurveto{\pgfqpoint{ 0.35pt}{-0.5pt}}{\pgfqpoint{0pt}{0pt}}
      \pgfpathquadraticcurveto{\pgfqpoint{-0.35pt}{ 0.5pt}}{\pgfqpoint{-0.7pt}{0pt}}
      \pgfusepathqstroke
    },
    transform shape,
  },
  dc source graphic/.style={
    circuit symbol lines,
    circuit symbol size=width 2 height 2,
    shape=generic circle IEC,
    /pgf/generic circle IEC/before background={
      \pgfpathmoveto{\pgfqpoint{ 0.7pt}{ 0.2pt}}
      \pgfpathlineto{\pgfqpoint{-0.7pt}{ 0.2pt}}
      \pgfusepathqstroke
      \pgfpathmoveto{\pgfqpoint{ 0.7pt}{-0.2pt}}
      \pgfpathlineto{\pgfqpoint{-0.7pt}{-0.2pt}}
      \pgfusepathqstroke
    },
    transform shape,
  },
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.ee.IEC.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.ee.code.tex ====


\usetikzlibrary{circuits}%
\usepgflibrary{shapes.gates.ee}%


\tikzset{
  circuit ee/.style={
    circuit,
    every circuit ee/.try
  }
}%



\tikzset{
  circuit declare symbol = resistor,
  circuit declare symbol = inductor,
  circuit declare symbol = capacitor,
  circuit declare symbol = contact,
  circuit declare symbol = ground,
  circuit declare symbol = battery,
  circuit declare symbol = diode,
  circuit declare symbol = Zener diode,
  circuit declare symbol = Schottky diode,
  circuit declare symbol = tunnel diode,
  circuit declare symbol = backward diode,
  circuit declare symbol = breakdown diode,
  circuit declare symbol = bulb,
  circuit declare symbol = current source,
  circuit declare symbol = voltage source,
  circuit declare symbol = current direction,
  circuit declare symbol = current direction',
  circuit declare symbol = make contact,
  circuit declare symbol = break contact,
  circuit declare symbol = amperemeter,
  circuit declare symbol = voltmeter,
  circuit declare symbol = ohmmeter,
  circuit declare symbol = ac source,
  circuit declare symbol = dc source,
  set current direction graphic  = current direction ee graphic,
  set current direction' graphic = current direction' ee graphic,
}%



\tikzset{
  circuit declare unit={ampere}{A},
  circuit declare unit={volt}{V},
  circuit declare unit={ohm}{\Omega},
  circuit declare unit={siemens}{S},
  circuit declare unit={henry}{H},
  circuit declare unit={farad}{F},
  circuit declare unit={coulomb}{C},
  circuit declare unit={voltampere}{VA},
  circuit declare unit={watt}{W},
  circuit declare unit={hertz}{Hz},
}%




\tikzset{
  current direction arrow/.style = {
    /utils/exec={\pgfsetarrowoptions{direction ee}{1.3065*.5*\the\tikzcircuitssizeunit+1.3065*.3*\the\pgflinewidth}},
    >=direction ee,
    direction ee arrow = direction ee,
  }
}%




\tikzset{
  current direction ee graphic/.style = {
    shape=direction ee,
    circuit symbol filled,
    current direction arrow,
    minimum width  = .5*\the\tikzcircuitssizeunit+.3*\the\pgflinewidth,
    minimum height = .5*\the\tikzcircuitssizeunit+.3*\the\pgflinewidth,
    transform shape
  },
  current direction' ee graphic/.style = {
    current direction ee graphic,
    rotate=180
  }
}%




\tikzset{
  circuit declare annotation={direction info}{.5\tikzcircuitssizeunit}
  {
    (-1.25\tikzcircuitssizeunit,.3333\tikzcircuitssizeunit) edge[line to] (1.25\tikzcircuitssizeunit,.3333\tikzcircuitssizeunit)
  },
  circuit declare annotation={light emitting}{1.75\tikzcircuitssizeunit}
  {
    (-.2\tikzcircuitssizeunit,.65\tikzcircuitssizeunit) edge[line to] ++(45:1.25\tikzcircuitssizeunit)
    (.2\tikzcircuitssizeunit,.25\tikzcircuitssizeunit) edge[line to] ++(45:1.25\tikzcircuitssizeunit)
  },
  circuit declare annotation={light dependent}{1.75\tikzcircuitssizeunit}
  {
    [shift=(135:1.25\tikzcircuitssizeunit)]
    (.2\tikzcircuitssizeunit,.65\tikzcircuitssizeunit) edge[line to] ++(-45:1.25\tikzcircuitssizeunit)
    (-.2\tikzcircuitssizeunit,.25\tikzcircuitssizeunit) edge[line to] ++(-45:1.25\tikzcircuitssizeunit)
  },
  circuit declare annotation={adjustable}{1.5\tikzcircuitssizeunit}
  {
    [shift=(\tikzlastnode.center)]
    (-1.5\tikzcircuitssizeunit,-1.5\tikzcircuitssizeunit) edge[line to] (1.5\tikzcircuitssizeunit,1.5\tikzcircuitssizeunit)
  },
  circuit declare annotation={adjustable'}{1.5\tikzcircuitssizeunit}
  {
    [shift=(\tikzlastnode.center)]
    (-1.5\tikzcircuitssizeunit,1.5\tikzcircuitssizeunit) edge[line to] (1.5\tikzcircuitssizeunit,-1.5\tikzcircuitssizeunit)
  }
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.ee.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.logic.CDH.code.tex ====

\usetikzlibrary{circuits.logic.US}%

\tikzset{
  circuit logic CDH/.style =
  {
    circuit logic US,
    set and gate graphic    = and gate CDH graphic,
    set nand gate graphic   = nand gate CDH graphic,
  }
}%

\tikzset{
  circuit logic US make graphic=and gate CDH,
  circuit logic US make graphic=nand gate CDH,
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.logic.CDH.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.logic.IEC.code.tex ====

\usetikzlibrary{circuits.logic}%
\usepgflibrary{shapes.gates.logic.IEC}%



\tikzset{
  circuit logic IEC/.style=
  {
    circuit logic,
    set and gate graphic    = and gate IEC graphic,
    set nand gate graphic   = nand gate IEC graphic,
    set or gate graphic     = or gate IEC graphic,
    set nor gate graphic    = nor gate IEC graphic,
    set xor gate graphic    = xor gate IEC graphic,
    set xnor gate graphic   = xnor gate IEC graphic,
    set not gate graphic    = not gate IEC graphic,
    set buffer gate graphic = buffer gate IEC graphic,
    and gate IEC symbol    = {$\scriptstyle\char`\&$},
    nand gate IEC symbol   = {$\scriptstyle\char`\&$},
    or gate IEC symbol     = {$\scriptstyle\geq1$},
    nor gate IEC symbol    = {$\scriptstyle\geq1$},
    xor gate IEC symbol    = {$\scriptstyle=1$},
    xnor gate IEC symbol   = {$\scriptstyle=1$},
    not gate IEC symbol    = {$\scriptstyle1$},
    buffer gate IEC symbol = {$\scriptstyle1$},
  },
}%


\tikzset{
  circuit logic IEC make graphic/.style=
  {
    #1 graphic/.style={
      circuit symbol open,
      circuit symbol size=width 2.5 height 4,
      shape=#1,
      inner sep=.5ex
    }
  }
}%


\tikzset{
  circuit logic IEC make graphic=and gate IEC,
  circuit logic IEC make graphic=nand gate IEC,
  circuit logic IEC make graphic=or gate IEC,
  circuit logic IEC make graphic=nor gate IEC,
  circuit logic IEC make graphic=xor gate IEC,
  circuit logic IEC make graphic=xnor gate IEC,
  circuit logic IEC make graphic=not gate IEC,
  circuit logic IEC make graphic=buffer gate IEC,
  circuit logic IEC make graphic=and gate CDH,
  circuit logic IEC make graphic=nand gate CDH,
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.logic.IEC.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.logic.US.code.tex ====

\usetikzlibrary{circuits.logic}%
\usepgflibrary{shapes.gates.logic.US}%



\tikzset{
  circuit logic US/.style=
  {
    circuit logic,
    set and gate graphic    = and gate US graphic,
    set nand gate graphic   = nand gate US graphic,
    set or gate graphic     = or gate US graphic,
    set nor gate graphic    = nor gate US graphic,
    set xor gate graphic    = xor gate US graphic,
    set xnor gate graphic   = xnor gate US graphic,
    set not gate graphic    = not gate US graphic,
    set buffer gate graphic = buffer gate US graphic
  }
}%


\tikzset{
  circuit logic US make graphic/.style=
  {
    #1 graphic/.style={
      circuit symbol open,
      circuit symbol size=width 0 height 2.5,
      shape=#1,
      transform shape
    }
  }
}%


\tikzset{
  circuit logic US make graphic=and gate US,
  circuit logic US make graphic=nand gate US,
  circuit logic US make graphic=or gate US,
  circuit logic US make graphic=nor gate US,
  circuit logic US make graphic=xor gate US,
  circuit logic US make graphic=xnor gate US,
  circuit logic US make graphic=not gate US,
  circuit logic US make graphic=buffer gate US,
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.logic.US.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.logic.code.tex ====

\usetikzlibrary{circuits}%




\tikzset{
  circuit logic/.style={
    circuit,
    inputs/.style={logic gate inputs={##1}},
    logic gate inverted radius=.25\tikzcircuitssizeunit,
    every circuit logic/.try,
  }
}%




\tikzset{
  circuit declare symbol = and gate,
  circuit declare symbol = nand gate,
  circuit declare symbol = or gate,
  circuit declare symbol = nor gate,
  circuit declare symbol = xor gate,
  circuit declare symbol = xnor gate,
  circuit declare symbol = not gate,
  circuit declare symbol = buffer gate
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/circuits/tikzlibrarycircuits.logic.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.3d.code.tex ====

\ProvidesFileRCS{tikzlibrarydatavisualization.3d.code.tex}

\usetikzlibrary{datavisualization}%







\tikzdatavisualizationset{
  school book 3d plot/.style={
    xyz Cartesian,
    x axis={
      visualize axis={y axis={goto=0},z axis={goto=0},styling/.style=->},
      visualize ticks={common={y axis={goto=0},z axis={goto=0},direction axis=y axis},only ticks={tick text at min extend}},
    },
    y axis={
      visualize axis={x axis={goto=0},z axis={goto=0},styling/.style=->},
      visualize ticks={common={x axis={goto=0},z axis={goto=0},direction axis=x axis},only ticks={tick text at min extend}},
    },
    z axis={
      visualize axis={x axis={goto=0},y axis={goto=0},styling/.style=->},
      visualize ticks={common={x axis={goto=0},y axis={goto=0},direction axis=x axis},only ticks={tick text at min extend}},
    },
    new line plot,
    every school book plot/.try,
  },
}%



\tikzdatavisualizationset{
  scientific 3d plot/length/.initial=100pt,
  scientific 3d plot/.style={
    xyz Cartesian,
    x axis={
      length=\pgfkeysvalueof{/tikz/data visualization/scientific 3d plot/length},
      visualize axis={y axis={goto=min},z axis={goto=min}},
      visualize axis={y axis={goto=max},z axis={goto=min}},
      visualize axis={y axis={goto=min},z axis={goto=max}},
      visualize axis={y axis={goto=max},z axis={goto=max}},
    },
    y axis={
      length=\pgfkeysvalueof{/tikz/data visualization/scientific 3d plot/length},
      visualize axis={x axis={goto=min},z axis={goto=min}},
      visualize axis={x axis={goto=max},z axis={goto=min}},
      visualize axis={x axis={goto=min},z axis={goto=max}},
      visualize axis={x axis={goto=max},z axis={goto=max}},
    },
    z axis={
      length=\pgfkeysvalueof{/tikz/data visualization/scientific 3d plot/length},
      visualize axis={x axis={goto=min},y axis={goto=min}},
      visualize axis={x axis={goto=max},y axis={goto=min}},
      visualize axis={x axis={goto=min},y axis={goto=max}},
      visualize axis={x axis={goto=max},y axis={goto=max}},
    },
    new line plot,
  },
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.3d.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.barcharts.code.tex ====

\ProvidesFileRCS{tikzlibrarydatavisualization.barcharts.code.tex}

\usetikzlibrary{datavisualization}%
\usepgflibrary{datavisualization.barcharts}%


\tikzdatavisualizationset{%
  candle stick plot/.style={
    new object={
      store=/tikz/data visualization/count,
      class=count,
      arg1=day
    },
    new axis=y axis,
    y axis/source=dax,
    y axis/source max=100,
    y axis/vec=\pgfqpoint{0cm}{1cm},
    new object={
      store=/tikz/data visualization/x line trans,
      class=line transformer,
      arg1=day,
      arg2=\pgfqpoint{3mm}{0mm}
    },
    new object={
      store=/tikz/data visualization/index,
      class=candle stick visualizer,
      arg1 from key=index/source
    },
  },
  index/source/.initial=index,
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.barcharts.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.code.tex ====

\ProvidesFileRCS{tikzlibrarydatavisualization.code.tex}

\usepgfmodule{datavisualization}%
\usetikzlibrary{backgrounds}%


\tikzset{/tikz/data visualization/.is family,
  /tikz/data visualization/.unknown/.code={
    \let\tikz@dv@key\pgfkeyscurrentname%
    \pgfkeys{/tikz/\tikz@dv@key/.try={#1}}%
    \ifpgfkeyssuccess%
    \else%
      \edef\pgf@temp{/errors/unknown key={/tikz/data visualization/\tikz@dv@key}}%
      \expandafter\pgfkeys\expandafter{\pgf@temp{#1}}%
    \fi%
  },
  /tikz/data visualization/data/.unknown/.code={%
    \let\tikz@dv@key\pgfkeyscurrentname%
    \pgfkeys{/pgf/data/\tikz@dv@key/.try={#1}}%
    \ifpgfkeyssuccess%
    \else%
      \edef\pgf@temp{/errors/unknown key={/pgf/data/\tikz@dv@key}}%
      \expandafter\pgfkeys\expandafter{\pgf@temp{#1}}%
    \fi%
  },
}%

\def\tikzdatavisualizationset{\pgfqkeys{/tikz/data visualization}}%





\def\tikz@lib@datavisualization{
  \begingroup%
    \let\tikz@path@do@at@end=\relax%
    \pgfoonew \tikz@main@dv=new data visualization()%
    \pgfset{local bounding box=data visualization bounding box}%
    \pgfkeyslet{/tikz/data visualization/axes list}\pgfutil@empty%
    \pgfkeyslet{/tikz/data visualization/axes actions}\pgfutil@empty%
    \pgfkeyslet{/tikz/data visualization/label actions}\pgfutil@empty%
    \pgfkeyslet{/tikz/data visualization/legend actions}\pgfutil@empty%
    \pgfkeyslet{/tikz/data visualization/grid actions}\pgfutil@empty%
    \pgfkeyslet{/tikz/data visualization/major grid actions}\pgfutil@empty%
    \pgfkeyslet{/tikz/data visualization/minor grid actions}\pgfutil@empty%
    \pgfkeyslet{/tikz/data visualization/subminor grid actions}\pgfutil@empty%
    \pgfkeyslet{/tikz/data visualization/ticks actions}\pgfutil@empty%
    \pgfkeyslet{/tikz/data visualization/major ticks actions}\pgfutil@empty%
    \pgfkeyslet{/tikz/data visualization/minor ticks actions}\pgfutil@empty%
    \pgfkeyslet{/tikz/data visualization/subminor ticks actions}\pgfutil@empty%
    \tikz@main@dv.before visualization(%
    )%
    \tikz@main@dv.after visualization(%
      \tikz@lib@dv@alias@dv@bb
      \pgfkeysvalueof{/tikz/data visualization/grid actions}
      \pgfkeysvalueof{/tikz/data visualization/subminor grid actions}
      \pgfkeysvalueof{/tikz/data visualization/minor grid actions}
      \pgfkeysvalueof{/tikz/data visualization/major grid actions}
      \pgfkeysvalueof{/tikz/data visualization/ticks actions}
      \pgfkeysvalueof{/tikz/data visualization/subminor ticks actions}
      \pgfkeysvalueof{/tikz/data visualization/minor ticks actions}
      \pgfkeysvalueof{/tikz/data visualization/major ticks actions}
      \pgfkeysvalueof{/tikz/data visualization/axes actions}
      \pgfkeysvalueof{/tikz/data visualization/label actions}
      \pgfkeysvalueof{/tikz/data visualization/legend actions}
    )%
    \pgfset{/pgf/data/continue code=\tikz@lib@dv@parse@loop}%
    \tikz@lib@dv@parse@loop
}%

\def\tikz@lib@dv@parse@loop{%
  \pgfutil@ifnextchar d\tikz@lib@dv@handle@data{%
    \pgfutil@ifnextchar ;\tikz@lib@dv@parse@end{%
      \pgfutil@ifnextchar \par\tikz@lib@dv@handle@par{%
        \pgfutil@ifnextchar s\tikz@lib@dv@handle@beginscope{%
          \pgfutil@ifnextchar i\tikz@lib@dv@handle@info{%
            \pgfutil@ifnextchar [\tikz@lib@dv@handle@options{%
              \pgfutil@ifnextchar \egroup\tikz@lib@dv@handle@endscope{%
                \tikzerror{Semicolon expected}%
                \endgroup%
              }%
            }%
          }%
        }%
      }%
    }%
  }%
}%
\def\tikz@lib@dv@parse@end;{%
    \tikz@main@dv.survey()%
    \tikz@main@dv.visualize()%
  \endgroup%
  \tikz@path@do@at@end%
}%
\def\tikz@lib@dv@handle@par\par{\tikz@lib@dv@parse@loop}%

\def\tikz@lib@dv@handle@options[#1]{%
  \tikzdatavisualizationset{#1}%
  \tikz@lib@dv@parse@loop%
}%

\def\tikz@lib@dv@handle@beginscope scope{%
  \begingroup%
    \pgfutil@ifnextchar[\tikz@lib@dv@beg@opt{\tikz@lib@dv@beg@opt[]}%
}%
\def\tikz@lib@dv@beg@opt[#1]{%
  \pgfkeys{/pgf/data/.cd,/pgf/every data/.try,#1}%
  \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data({{\begingroup\pgfkeys{/pgf/data/.cd,/pgf/every data/.try,#1}}})}%
  \pgfutil@ifnextchar\bgroup{
    \afterassignment\tikz@lib@dv@parse@loop%
    \let\tikz@dummy=%
  }{%
    \tikzerror{Opening brace expected}%
    \tikz@lib@dv@parse@loop%
  }%
}%
\def\tikz@lib@dv@handle@endscope{%
    \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data(\endgroup)}%
  \endgroup%
  \afterassignment\tikz@lib@dv@parse@loop%
  \let\tikz@dummy=%
}%

\def\tikz@lib@dv@handle@data data{%
  \pgfutil@ifnextchar g{\tikz@lib@dv@handle@data@group}{%
    \pgfutil@ifnextchar p{\tikz@lib@dv@handle@data@point}{%
      \pgfdata}}}%

\def\tikz@lib@dv@handle@data@group group{\pgfutil@ifnextchar[{\tikz@lib@dv@handle@data@group@opt}{\tikz@lib@dv@handle@data@group@opt[]}}%

\def\tikz@lib@dv@handle@data@group@opt[#1]#2{%
  \pgfutil@ifnextchar={\tikz@lib@dv@handle@data@group@def{#1}{#2}}{%
    \pgfutil@ifnextchar+{\tikz@lib@dv@handle@data@group@extend{#1}{#2}}{%
      \tikz@lib@dv@handle@data@group@use{#1}{#2}}}}%

\def\tikz@lib@dv@handle@data@group@def#1#2={%
  \pgfkeys{/pgf/data/new group={#2}}%
  \tikz@lib@dv@handle@data@group@extend{#1}{#2}+=%
}%

\def\tikz@lib@dv@handle@data@group@extend#1#2+={%
  \pgfutil@ifnextchar\bgroup{
    \begingroup%
      \pgfkeys{/pgf/data/store in group={#2}}%
      \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data({{\begingroup\pgfkeys{/pgf/data/.cd,/pgf/every data/.try,#1}}})}%
      \afterassignment\tikz@lib@dv@parse@loop%
      \let\tikz@dummy=%
  }{%
    \tikzerror{Opening brace expected}%
    \tikz@lib@dv@parse@loop%
  }%
}%

\def\tikz@lib@dv@handle@data@group@use#1#2{%
  \pgfdata[#1,use group=#2]%
}%

\def\tikz@lib@dv@handle@data@point point{\pgfutil@ifnextchar[{\tikz@lib@dv@handle@data@point@opt}{\tikz@lib@dv@handle@data@point@opt[]}}%
\def\tikz@lib@dv@handle@data@point@opt[#1]{%
  \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data({{\bgroup\pgfkeys{/data point/.cd,#1}\pgfdatapoint\egroup}})}%
  \tikz@lib@dv@parse@loop%
}%

\def\tikz@lib@dv@handle@info info{%
  \pgfutil@ifnextchar'{\tikz@lib@dv@handle@info@prime}{\tikz@lib@dv@handle@info@noprime}}%
\def\tikz@lib@dv@handle@info@noprime{%
  \pgfutil@ifnextchar[{\tikz@lib@dv@handle@info@block@opt}{\tikz@lib@dv@handle@info@block@opt[]}}%
\def\tikz@lib@dv@handle@info@block@opt[#1]#2{%
  \tikz@main@dv.after visualization({\scope[#1]#2\endscope})%
  \tikz@lib@dv@parse@loop
}%
\def\tikz@lib@dv@handle@info@prime'{%
  \pgfutil@ifnextchar[{\tikz@lib@dv@handle@info@block@opt@prime}{\tikz@lib@dv@handle@info@block@opt@prime[]}}%
\def\tikz@lib@dv@handle@info@block@opt@prime[#1]#2{%
  \tikz@main@dv.before visualization({\scope[#1]#2\endscope})%
  \tikz@lib@dv@parse@loop
}%


\pgfset{/pgf/every data/.style={/tikz/every data/.try,/tikz/data visualization/every data/.try}}%



\tikzdatavisualizationset{
  before survey/.code=\tikz@main@dv.before survey({#1}),
  after survey/.code=\tikz@main@dv.after survey({#1}),
  before visualization/.code=\tikz@main@dv.before visualization({#1}),
  after visualization/.code=\tikz@main@dv.after visualization({#1}),
  at start survey/.code=\tikz@main@dv.at start survey({#1}),
  at end survey/.code=\tikz@main@dv.at end survey({#1}),
  at start visualization/.code=\tikz@main@dv.at start visualization({#1}),
  at end visualization/.code=\tikz@main@dv.at end visualization({#1}),
}%


\def\tikz@lib@dv@alias@dv@bb{
  \pgfnodealias{data bounding box}{data visualization bounding box}%
  \pgfkeys{/pgf/freeze local bounding box=data bounding box}%
}%

\tikzdatavisualizationset{
  data point/.code={
    \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data({{\bgroup\pgfkeys{/data point/.cd,#1}\pgfdatapoint\egroup}})}%
  }
}%




\tikzdatavisualizationset{%
  new object/.code={%
    \def\tikz@dv@grabbed@when{before survey}%
    \let\tikz@dv@grabbed@store\pgfutil@empty
    \pgfkeys{/tikz/data visualization/new object/grab/.cd,#1}%
    \ifx\tikz@dv@grabbed@store\pgfutil@empty
    \else
      \pgfkeyslet{\tikz@dv@grabbed@store}\pgfutil@empty%
    \fi
    \edef\tikz@marshal{\noexpand\tikz@main@dv.\tikz@dv@grabbed@when(\noexpand\tikz@dv@newobject{\tikz@dv@grabbed@store}}%
    \tikz@marshal{#1})%
  },
  new object/grab/store/.store in=\tikz@dv@grabbed@store,
  new object/grab/when/.store in=\tikz@dv@grabbed@when,
  new object/grab/.unknown/.code={},%
}%

\def\tikz@dv@newobject#1#2{%
  \def\tikz@dv@new@obj@store{#1}%
  \ifx\tikz@dv@new@obj@store\pgfutil@empty%
    \let\tikz@dv@new@obj=\pgfutil@empty%
  \else%
    \pgfkeysgetvalue\tikz@dv@new@obj@store\tikz@dv@new@obj%
  \fi%
  \ifx\tikz@dv@new@obj\pgfutil@empty
    \let\tikz@dv@arg@a=\tikz@lib@notused%
    \let\tikz@dv@arg@b=\tikz@lib@notused%
    \let\tikz@dv@arg@c=\tikz@lib@notused%
    \let\tikz@dv@arg@d=\tikz@lib@notused%
    \let\tikz@dv@arg@e=\tikz@lib@notused%
    \let\tikz@dv@arg@f=\tikz@lib@notused%
    \let\tikz@dv@arg@g=\tikz@lib@notused%
    \let\tikz@dv@arg@h=\tikz@lib@notused%
    \let\tikz@dv@new@after=\relax%
    \pgfkeys{/tikz/data visualization/new object/parse/.cd,#2}
    \edef\pgf@marshal{\noexpand\pgfoonew\noexpand\tikzdvobj=new \tikz@dv@new@class(}%
    \tikz@dv@add@arg{}\tikz@dv@arg@a%
    \tikz@dv@add@arg{\expandafter,}\tikz@dv@arg@b%
    \tikz@dv@add@arg{\expandafter,}\tikz@dv@arg@c%
    \tikz@dv@add@arg{\expandafter,}\tikz@dv@arg@d%
    \tikz@dv@add@arg{\expandafter,}\tikz@dv@arg@e%
    \tikz@dv@add@arg{\expandafter,}\tikz@dv@arg@f%
    \tikz@dv@add@arg{\expandafter,}\tikz@dv@arg@g%
    \tikz@dv@add@arg{\expandafter,}\tikz@dv@arg@h%
    \expandafter\def\expandafter\pgf@marshal\expandafter{\pgf@marshal)}%
    \pgf@marshal%
    \tikzdvobj.default connects()%
    \ifx\tikz@dv@new@obj@store\pgfutil@empty%
    \else%
      \pgfkeyslet\tikz@dv@new@obj@store\tikzdvobj%
    \fi%
    \tikz@dv@new@after%
  \fi
}%
\def\tikz@lib@notused{\tikz@lib@notused}%

\def\tikz@dv@add@arg#1#2{%
  \ifx#2\tikz@lib@notused%
  \else%
    \expandafter\expandafter\expandafter\def%
    \expandafter\expandafter\expandafter\pgf@marshal%
    \expandafter\expandafter\expandafter{\expandafter\pgf@marshal#1#2}%
  \fi%
}%

\tikzdatavisualizationset{%
  new object/parse/.cd,
  store/.code=,%
  when/.code=,%
  class/.store in=\tikz@dv@new@class,
  before creation/.code={#1},
  after creation/.store in=\tikz@dv@new@after,
  arg1/.store in=\tikz@dv@arg@a,
  arg2/.store in=\tikz@dv@arg@b,
  arg3/.store in=\tikz@dv@arg@c,
  arg4/.store in=\tikz@dv@arg@d,
  arg5/.store in=\tikz@dv@arg@e,
  arg6/.store in=\tikz@dv@arg@f,
  arg7/.store in=\tikz@dv@arg@g,
  arg8/.store in=\tikz@dv@arg@h,
  arg1 from key/.code=\pgfkeysgetvalue{#1}{\tikz@dv@arg@a},
  arg2 from key/.code=\pgfkeysgetvalue{#1}{\tikz@dv@arg@b},
  arg3 from key/.code=\pgfkeysgetvalue{#1}{\tikz@dv@arg@c},
  arg4 from key/.code=\pgfkeysgetvalue{#1}{\tikz@dv@arg@d},
  arg5 from key/.code=\pgfkeysgetvalue{#1}{\tikz@dv@arg@e},
  arg6 from key/.code=\pgfkeysgetvalue{#1}{\tikz@dv@arg@f},
  arg7 from key/.code=\pgfkeysgetvalue{#1}{\tikz@dv@arg@g},
  arg8 from key/.code=\pgfkeysgetvalue{#1}{\tikz@dv@arg@h}
  arg1 handle from key/.code=\tikz@dv@handle@from@key{#1}{\tikz@dv@handle@a}{\tikz@dv@arg@a},
  arg2 handle from key/.code=\tikz@dv@handle@from@key{#1}{\tikz@dv@handle@b}{\tikz@dv@arg@b},
  arg3 handle from key/.code=\tikz@dv@handle@from@key{#1}{\tikz@dv@handle@c}{\tikz@dv@arg@c},
  arg4 handle from key/.code=\tikz@dv@handle@from@key{#1}{\tikz@dv@handle@d}{\tikz@dv@arg@d},
  arg5 handle from key/.code=\tikz@dv@handle@from@key{#1}{\tikz@dv@handle@e}{\tikz@dv@arg@e},
  arg6 handle from key/.code=\tikz@dv@handle@from@key{#1}{\tikz@dv@handle@f}{\tikz@dv@arg@f},
  arg7 handle from key/.code=\tikz@dv@handle@from@key{#1}{\tikz@dv@handle@g}{\tikz@dv@arg@g},
  arg8 handle from key/.code=\tikz@dv@handle@from@key{#1}{\tikz@dv@handle@h}{\tikz@dv@arg@h}
}%

\def\tikz@dv@handle@from@key#1#2#3{%
  \pgfkeysvalueof{#1}.get handle(#2)%
  \def#3{#2}%
}%





\tikzdeclarecoordinatesystem{visualization}
{%
  \tikzset{/data point/.cd,#1}%
  \pgfpointdvlocaldatapoint%
}%








\tikzdatavisualizationset{%
  new axis base/.style={
    new object={
      class=scaling mapper,
      store=/tikz/data visualization/#1/scaling mapper,
      before creation={
        \pgfkeysgetvalue{/tikz/data visualization/#1/scaling}\tikz@temp
        \ifx\tikz@temp\pgfutil@empty%
          \pgfkeysgetvalue{/tikz/data visualization/#1/scaling/default}\tikz@temp
        \fi
        \expandafter\tikz@dv@lib@parse@scaling\tikz@temp\pgf@stop%
        \pgfkeyslet{/tikz/data visualization/#1/scaling}\tikz@temp
      },
      arg1 from key=/tikz/data visualization/#1/attribute,
      arg2/.expanded=\pgfkeysvalueof{/tikz/data visualization/#1/attribute}/scaled,
      arg3 from key=/tikz/data visualization/#1/scaling,
      arg4 from key=/tikz/data visualization/#1/function
    },
    #1/attribute/.initial={#1},
    #1/function/.initial=,
    #1/scaling/.initial=,
    #1/scaling/default/.initial=0 at 0 and 1 at 1,
    #1/ticks at/.initial=,
    #1/default ticks at/.initial=,
    #1/major ticks/.initial=,
    #1/minor ticks/.initial=,
    #1/subminor ticks/.initial=,
    #1/grid at/.initial=,
    #1/default grid at/.initial=,
    #1/major grid/.initial=,
    #1/minor grid/.initial=,
    #1/subminor grid/.initial=,
    #1/label/.initial=,
    #1/padding min/.initial=,
    #1/padding max/.initial=,
    #1/.code={
      \let\tikz@temp\tikz@dv@axis%
      \def\tikz@dv@axis{/tikz/data visualization/#1}%
      \expandafter\tikz@do@axis@options\expandafter{\tikz@temp}{##1}%
    },
    #1/@compute at positions/.initial=\tikz@lib@dv@compute@at@linear,
    axes list/.append={\tikz@lib@dv@do@axis{#1}}
  },
  all axes/.code={
    \def\tikz@lib@dv@args{#1}%
    \pgfkeysvalueof{/tikz/data visualization/axes list}%
  },
  styling/.style=,
  style/.style={styling/.append style={#1}},
  @node styling/.initial=,
  node styling/.style={%
    /utils/exec={\pgfkeysgetvalue{/tikz/data visualization/@node styling}\tikz@temp\expandafter\tikzset\expandafter{\tikz@temp}}},
  node style/.style={/tikz/data visualization/@node styling/.append={,#1}},
  low/.initial=0,
  high/.initial=0,
  padded/.style={low=padded min,high=padded max},
  tick length/.style={low={-#1},high={#1}},
  common/.initial=,
  major/.initial=,
  minor/.initial=,
  subminor/.initial=,
  @setup at setters/.style={
    common/.code=\tikz@lib@dv@add@{common}{##1},
    major/.code=\tikz@lib@dv@add@{major}{##1},
    minor/.code=\tikz@lib@dv@add@{minor}{##1},
    subminor/.code=\tikz@lib@dv@add@{subminor}{##1}
  },
  @setup at setters,
  direction axis/.initial=,
  tick text low even padding/.initial=0pt,
  tick text high even padding/.initial=0pt,
  tick text low odd padding/.initial=0pt,
  tick text high odd padding/.initial=0pt,
  tick text odd padding/.style={tick text low odd padding={-#1},tick text high odd padding={#1}},
  tick text even padding/.style={tick text low even padding={-#1},tick text high even padding={#1}},
  tick text padding/.style={tick text odd padding={#1},tick text even padding={#1}},
  stack/.style={tick text even padding={#1}},
  stack'/.style={tick text odd padding={#1}},
  stack/.default=1em,
  stack'/.default=1em,
  tick text at low/.is if=tikz@dv@min@tick@node,
  tick text at high/.is if=tikz@dv@max@tick@node,
  no tick text/.style={tick text at low=false,tick text at high=false},
  every major ticks/.style={style={line cap=round},tick length=2pt},
  every minor ticks/.style={style={solid, help lines,thin,line cap=round},tick length=1.4pt},
  every subminor ticks/.style={style={solid, help lines,line cap=round},tick length=0.8pt},
  clean ticks/.style={node style={fill=white}},
  every grid/.style={high=max,low=min},
  every major grid/.style={style={solid, help lines,thin,black!25}},
  every minor grid/.style={style={solid, help lines,black!25}},
  every subminor grid/.style={style={solid, help lines,black!10}},
  at default ticks/.code={%
    \expandafter\pgfkeysalso\expandafter{\tikz@lib@dv@ticks@default@at}},
  at ticks/.code={%
    \expandafter\pgfkeysalso\expandafter{\tikz@lib@dv@ticks@default@at}%
    \expandafter\pgfkeysalso\expandafter{\tikz@lib@dv@ticks@at}},
}%

\def\tikz@lib@dv@add@#1#2{\pgfkeysaddvalue{/tikz/data visualization/#1}{}{,#2}}%

\def\tikz@dv@lib@parse@scaling#1 at#2and #3 at#4\pgf@stop{%
  \pgfmathsetmacro{\tikz@dv@lib@min@at}{#2}
  \pgfmathsetmacro{\tikz@dv@lib@max@at}{#4}
  \edef\tikz@temp{#1 at \tikz@dv@lib@min@at and #3 at \tikz@dv@lib@max@at}%
}%


\tikzdatavisualizationset{
  at/.code={\def\tikz@dv@at@list{#1}},
  also at/.code={\expandafter\def\expandafter\tikz@dv@at@list\expandafter{\tikz@dv@at@list,#1}},
  major at/.style={major={at={#1}}},
  minor at/.style={minor={at={#1}}},
  subminor at/.style={subminor={at={#1}}},
  major also at/.style={major={also at={#1}}},
  minor also at/.style={minor={also at={#1}}},
  subminor also at/.style={subminor={also at={#1}}},
  options at/.code={\expandafter\def\expandafter\tikz@dv@style@at@list\expandafter{\tikz@dv@style@at@list,{#1}}},
  no tick text at/.style={options at={#1 as [no tick text]}}
}%


\def\tikz@lib@dv@do@axis#1{%
  \def\tikz@marshal{#1=}
  \expandafter\expandafter\expandafter\tikzdatavisualizationset%
  \expandafter\expandafter\expandafter{\expandafter\tikz@marshal\expandafter{\tikz@lib@dv@args}}
}%

\def\tikz@do@axis@options#1#2{
  \pgfkeys{/tikz/data visualization/axis options/.cd,#2}
  \def\tikz@dv@axis{#1}
}%
\let\tikz@dv@axis\pgfutil@empty

\tikzdatavisualizationset{
  every ticks/.style={
    node style={%
      font=\pgfutil@font@footnotesize,
      inner sep=1pt,
      outer sep=.1666em,
      rounded corners=1.5pt
    }
  },
  every data set label/.style={
    every ticks,
    node style={
      font=\pgfutil@font@small,
    }
  },
  @color of visualizer labels/.style={text=black},
  every label in legend/.style={
    node style={
      fill=none,
    }
  },
  every axis label/.style={
    node style={%
      font=\pgfutil@font@small,
    }
  }
}%


\tikzset{
  /tikz/data visualization/axis options/.cd,
  attribute/.style={\tikz@dv@axis/attribute={#1}},
  function/.style={\tikz@dv@axis/function={#1}},
  scaling/.style={\tikz@dv@axis/scaling={#1}},
  padding min/.style={\tikz@dv@axis/padding min={#1}},
  padding max/.style={\tikz@dv@axis/padding max={#1}},
  padding/.style={padding min={-#1},padding max={#1}},
  label/.code={%
    \def\pgf@temp{#1}%
    \ifx\pgf@temp\tikz@lib@dv@auto@attribute%
      \tikzdatavisualizationset{\tikz@dv@axis/label/.expanded=$\noexpand\mathit{\pgfkeysvalueof{\tikz@dv@axis/attribute}}$}%
    \else
      \tikzdatavisualizationset{\tikz@dv@axis/label={#1}}%
    \fi
  },
  label/.default=\tikz@lib@dv@auto@attribute,
  tick placement strategy/.style={\tikz@dv@axis/@compute at positions={#1}},
  linear steps/.style={tick placement strategy=\tikz@lib@dv@compute@at@linear},
  goto/.code={\tikz@dv@goto{\tikz@dv@axis}{#1}},
  goto pos/.code={\tikz@dv@goto@pos{\tikz@dv@axis}{#1}},
  anchor at min/.code={\tikz@lib@dv@special@at{\tikz@dv@axis}{\tikz@dv@min@anchor}},
  anchor at max/.code={\tikz@lib@dv@special@at{\tikz@dv@axis}{\tikz@dv@max@anchor}},
  visualize axis/.code=\expandafter\tikz@lib@dv@av\expandafter{\tikz@dv@axis}{#1},
  ticks/.style={\tikz@dv@axis/ticks at/.append={,#1}},
  ticks/.default=some,
  visualize ticks/.code=\expandafter\tikz@lib@dv@tv\expandafter{\tikz@dv@axis}{#1},
  grid/.style={\tikz@dv@axis/grid at/.append={,#1}},
  grid/.default=at default ticks,
  visualize grid/.code=\expandafter\tikz@lib@dv@gv\expandafter{\tikz@dv@axis}{#1},
  ticks and grid/.style={\tikz@dv@axis/ticks at/.append={,#1},\tikz@dv@axis/grid at/.append={,#1}},
  visualize label/.code=\expandafter\tikz@lib@dv@lv\expandafter{\tikz@dv@axis}{#1},
}%

\def\tikz@lib@dv@auto@attribute{\tikz@lib@dv@auto@attribute}%


\tikzdatavisualizationset{
  axis options/.cd,
  include value/.style={%
    /tikz/data visualization/before survey/.expanded={%
      \noexpand\pgfkeysgetvalue{\tikz@dv@axis/scaling mapper}\noexpand\tikz@dv@axis@mapper%
      \noexpand\foreach \noexpand\tikz@lib@dv@temp in {#1} {%
        \noexpand\tikz@dv@axis@mapper.include in value(\noexpand\tikz@lib@dv@temp)%
      }%
    }%
  },
  min value/.style={
    /tikz/data visualization/at end survey/.expanded={%
      \noexpand\pgfkeysgetvalue{\tikz@dv@axis/scaling mapper}\noexpand\tikz@dv@axis@mapper%
      \noexpand\tikz@lib@dv@set\noexpand\tikz@dv@axis@mapper{#1}{min}%
    }
  },
  max value/.style={
    /tikz/data visualization/at end survey/.expanded={%
      \noexpand\pgfkeysgetvalue{\tikz@dv@axis/scaling mapper}\noexpand\tikz@dv@axis@mapper%
      \noexpand\tikz@lib@dv@set\noexpand\tikz@dv@axis@mapper{#1}{max}%
    }
  },
}%

\def\tikz@lib@dv@set#1#2#3{%
  \pgfdvmathenter{\pgf@dv@value}{#2}%
  #1.get in range interval()%
  \pgfdvinrangeinterval.let #3(\pgf@dv@value)%
}%

\tikzdatavisualizationset{
  axis layer/.style=on background layer,
  ticks layer/.style=on background layer,
  ticks node layer/.style=,
  grid layer/.style=on background layer,
}%



\def\tikz@lib@dv@av#1#2{
  \tikzdatavisualizationset{
    axes actions/.append={\tikz@lib@dv@show@axis{#1}{#2}}
  }
}%

\def\tikz@lib@dv@show@axis#1#2{%
  \scope[data visualization/axis layer,/tikz/data visualization/.cd,low=min,high=max,every axis/.try,#2]
    \pgfkeysgetvalue{#1/scaling mapper}\tikz@dv@axis@mapper%
    \tikzpointandanchordirection{\tikz@dv@axis@mapper.set in to(min)}{\tikz@dv@axis@mapper.set in to(max)}
    \xdef\tikz@dv@axis@dir{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
    \path[draw,/tikz/data visualization/styling]
    \pgfextra{
      {
        \tikz@dv@goto{#1}{\pgfkeysvalueof{/tikz/data visualization/low}}%
        \pgfpathdvmoveto%
      }
      {
        \tikz@dv@goto{#1}{\pgfkeysvalueof{/tikz/data visualization/high}}%
        \pgfpathdvlineto%
      }
    };
  \endscope
}%

\def\tikz@dv@goto#1#2{%
  \edef\pgf@@temp{#2}%
  \ifx\pgf@@temp\tikz@lib@dv@padded@min@text%
    \pgfkeysvalueof{#1/scaling mapper}.set in to(min)%
    \pgfkeysvalueof{#1/scaling mapper}.get out()%
    \pgfkeysgetvalue{#1/padding min}\pgf@temp%
    \pgfmathparse{\pgf@temp}%
    \pgfkeyslet{/data point/\pgfdvout/offset}\pgfmathresult%
  \else%
    \ifx\pgf@@temp\tikz@lib@dv@padded@max@text%
      \pgfkeysvalueof{#1/scaling mapper}.set in to(max)%
      \pgfkeysvalueof{#1/scaling mapper}.get out()%
      \pgfkeysgetvalue{#1/padding max}\pgf@temp%
      \pgfmathparse{\pgf@temp}%
      \pgfkeyslet{/data point/\pgfdvout/offset}\pgfmathresult%
    \else%
      \pgfkeysvalueof{#1/scaling mapper}.set in to(#2)%
    \fi%
  \fi%
}%

\def\tikz@dv@goto@pos#1#2{%
  \pgfkeyssetvalue{/data point/\pgfkeysvalueof{#1/attribute}/out pos}{#2}%
}%

\def\tikz@lib@dv@padded@min@text{padded min}%
\def\tikz@lib@dv@padded@max@text{padded max}%

\def\tikz@lib@dv@special@at#1#2{%
  \tikzpointandanchordirection{\pgfkeysvalueof{#1/scaling mapper}.set in to(min)}{\pgfkeysvalueof{#1/scaling mapper}.set in to(max)}
  \tikzset{anchor/.expanded={#2}}
}%



\def\tikz@lib@dv@tv#1#2{
  \tikzdatavisualizationset{
    ticks actions/.append={\tikz@lib@dv@default@action{ticks}{#1}{#2}},
    major ticks actions/.append={\tikz@lib@dv@show@ticks{major}{#1}{#2}},
    minor ticks actions/.append={\tikz@lib@dv@show@ticks{minor}{#1}{#2}},
    subminor ticks actions/.append={\tikz@lib@dv@show@ticks{subminor}{#1}{#2}}
  }
}%

\def\tikz@lib@dv@default@action#1#2#3{%
  \let\tikz@marshal\pgfutil@empty%
  {%
    \let\tikz@lib@dv@ticks@at\pgfutil@empty%
    \pgfkeysgetvalue{#2/ticks at}\tikz@lib@dv@ticks@default@at%
    \pgfkeysgetvalue{#2/#1 at}\tikz@lib@dv@settings%
    \pgfkeysgetvalue{#2/scaling mapper}\tikz@lib@dv@mapper
    \tikzdatavisualizationset{major/.code=,minor/.code=,subminor/.code=,common/.code=}
    \expandafter\tikzdatavisualizationset\expandafter{\tikz@lib@dv@settings}%
    \tikzdatavisualizationset{@setup at setters}%
    \pgfkeysgetvalue{/tikz/data visualization/compute step}\tikz@temp@step%
    \ifx\tikz@temp@step\pgfutil@empty%
    \else%
      \pgfkeysvalueof{#2/@compute at positions}%
      \xdef\tikz@marshal{
        major={\pgfkeysvalueof{/tikz/data visualization/major}},
        minor={\pgfkeysvalueof{/tikz/data visualization/minor}},
        subminor={\pgfkeysvalueof{/tikz/data visualization/subminor}}}
    \fi
  }%
  \pgfkeyslet{#2/default #1 at}\tikz@marshal
}%

\def\tikz@lib@dv@show@ticks#1#2#3{%
  \pgfkeysgetvalue{#2/default ticks at}\tikz@lib@dv@default@settings%
  \ifx\tikz@lib@dv@default@settings\pgfutil@empty%
    \pgfkeysgetvalue{#2/ticks at}\tikz@lib@dv@settings%
  \else%
    \pgfkeysgetvalue{#2/ticks at}\tikz@lib@dv@settings%
    \expandafter\expandafter\expandafter\def%
    \expandafter\expandafter\expandafter\tikz@lib@dv@settings%
    \expandafter\expandafter\expandafter{\expandafter\tikz@lib@dv@default@settings\expandafter,\tikz@lib@dv@settings}
  \fi%
  \ifx\tikz@lib@dv@settings\pgfutil@empty%
  \else
    {%
      \let\tikz@dv@at@list\pgfutil@empty%
      \let\tikz@dv@style@at@list\pgfutil@empty%
      \pgfkeysgetvalue{#2/scaling mapper}\tikz@lib@dv@mapper
      \scope[/tikz/data visualization/.cd,every ticks/.try,every #1 ticks/.try,#3]%
        \expandafter\tikzdatavisualizationset\expandafter{\tikz@lib@dv@settings}%
        \pgfkeysgetvalue{/tikz/data visualization/common}\tikz@temp
        \expandafter\tikzdatavisualizationset\expandafter{\tikz@temp}
        \pgfkeysgetvalue{/tikz/data visualization/#1}\tikz@temp
        \expandafter\tikzdatavisualizationset\expandafter{\tikz@temp}
        \pgfkeysgetvalue{/tikz/data visualization/\pgfkeysvalueof{/tikz/data visualization/direction axis}/scaling mapper}\pgf@dv@tick@dir@mapper
        \foreach \tikz@dv@tick@pos[count=\tikz@dv@tick@count] in \tikz@dv@at@list
        {
          \ifx\tikz@dv@tick@pos\pgfutil@empty
            \c@pgf@counta=\tikz@dv@tick@count\relax%
            \advance\c@pgf@counta by-1\relax%
            \edef\tikz@dv@tick@count{\the\c@pgf@counta}%
          \else
            \expandafter\tikz@lib@dv@parse\tikz@dv@tick@pos\pgf@stop%
            \expandafter\tikzdatavisualizationset\expandafter{\tikz@lib@dv@tick@opt}%
            \tikz@lib@dv@mapper.set in to(\tikz@dv@tick@pos)%
            \pgf@process{\pgfpointdvlocaldatapoint}
            \xdef\pgf@dv@tick@origin{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
            \tikzpointandanchordirection{\pgf@dv@tick@dir@mapper.set in to(min)}{\pgf@dv@tick@dir@mapper.set in to(max)}
            \xdef\pgf@dv@tick@dir{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
            \tikz@lib@handle@at@style%
            \pgfkeysgetvalue{/tikz/data visualization/high}\tikz@dv@max@val%
            \pgfkeysgetvalue{/tikz/data visualization/low}\tikz@dv@min@val%
            \iftikz@dv@max@tick@node\pgfmathsetmacro\tikz@dv@max@val{%
              \tikz@dv@max@val+(\pgfkeysvalueof{%
                /tikz/data  visualization/tick text high
                \ifodd\tikz@dv@tick@count odd \else even \fi padding}%
              )}%
            \fi%
            \iftikz@dv@min@tick@node\pgfmathsetmacro\tikz@dv@min@val{%
              \tikz@dv@min@val+(\pgfkeysvalueof{%
                /tikz/data  visualization/tick text low
                \ifodd\tikz@dv@tick@count odd \else even \fi padding}%
              )}%
            \fi%
            \pgf@process{\pgfpointadd{\pgf@dv@tick@origin}{\pgfpointscale{\tikz@dv@max@val}{\pgf@dv@tick@dir}}}
            \xdef\tikz@dv@max@tick{\the\pgf@x,\the\pgf@y}
            \pgf@process{\pgfpointadd{\pgf@dv@tick@origin}{\pgfpointscale{\tikz@dv@min@val}{\pgf@dv@tick@dir}}}
            \xdef\tikz@dv@min@tick{\the\pgf@x,\the\pgf@y}
            \scope[data visualization/ticks layer]
              \tikzdatavisualizationset{every \ifodd\tikz@dv@tick@count odd \else even \fi tick/.try}
              \draw [/tikz/data visualization/styling] (\tikz@dv@min@tick) -- (\tikz@dv@max@tick);
            \endscope
            \iftikz@dv@min@tick@node
              \scope[data visualization/ticks node layer]
                \tikzdatavisualizationset{every \ifodd\tikz@dv@tick@count odd \else even \fi tick/.try}
                \path [/tikz/data visualization/styling] (\tikz@dv@min@tick) \tikz@dv@handle@tick{\tikz@dv@min@anchor};
              \endscope
            \fi
            \iftikz@dv@max@tick@node
              \scope[data visualization/ticks node layer]
                \tikzdatavisualizationset{every \ifodd\tikz@dv@tick@count odd \else even \fi tick/.try}
                \path [/tikz/data visualization/styling] (\tikz@dv@max@tick)   \tikz@dv@handle@tick{\tikz@dv@max@anchor};
              \endscope
            \fi
          \fi
        }
      \endscope
    }
  \fi
}%

\def\tikz@lib@dv@parse#1\pgf@stop{%
  \pgfutil@in@{as}{#1}%
  \ifpgfutil@in@%
    \tikz@lib@dv@parse@as#1\pgf@stop%
  \else%
    \tikz@lib@dv@parse@as#1as\tikz@lib@dv@typeset\pgf@stop%
  \fi%
}%
\def\tikz@lib@dv@parse@as#1as{%
  \def\tikz@dv@tick@pos{#1}%
  \pgfutil@ifnextchar[{\tikz@lib@dv@parse@as@opt}{\tikz@lib@dv@parse@as@opt[]}%
}%
\def\tikz@lib@dv@parse@as@opt[#1]{%
  \def\tikz@lib@dv@tick@opt{#1}%
  \pgfutil@ifnextchar\pgf@stop{\tikz@lib@dv@parse@as@text\tikz@lib@dv@typeset}{\tikz@lib@dv@parse@as@text}
}%
\def\tikz@lib@dv@parse@as@text#1\pgf@stop{%
  \def\tikz@lib@dv@tick@text{#1}%
}%

\def\tikz@lib@dv@typeset{%
  \pgfdvmathenter{\tikz@lib@dv@typesetnum}{\tikz@dv@tick@pos}%
  \pgfdvmathexitbyscientificformat{\tikz@lib@dv@typesetnum}{\tikz@lib@dv@typesetnum}%
  \pgfkeysvalueof{/tikz/data visualization/tick prefix}%
  \pgfkeys{/tikz/data visualization/tick typesetter=\tikz@lib@dv@typesetnum}%
  \pgfkeysvalueof{/tikz/data visualization/tick suffix}%
}%

\newif\iftikz@dv@min@tick@node
\newif\iftikz@dv@max@tick@node

\def\tikz@dv@handle@tick#1{%
  \pgfextra{
    \ifx\tikz@lib@dv@tick@text\pgfutil@empty%
      \global\let\tikz@dv@tick@marshal=\pgfutil@empty%
    \else
      \def\tikz@dv@tick@marshal{node[anchor=#1,/tikz/data visualization/node styling]}%
      \expandafter\pgfutil@g@addto@macro\expandafter\tikz@dv@tick@marshal\expandafter{\expandafter{\tikz@lib@dv@tick@text}}
    \fi
  \expandafter}%
  \tikz@dv@tick@marshal
}%


\def\tikz@lib@handle@at@style{%
  \ifx\tikz@dv@style@at@list\pgfutil@empty%
  \else%
    \let\tikz@dv@lib@this@at@style=\pgfutil@empty%
    \pgfdvmathenter{\tikz@temp}{\tikz@dv@tick@pos}%
    \pgfdvmathexitbyscientificformat{\tikz@dv@compare@to}{\tikz@temp}%
    \foreach \tikz@dv@at@style in \tikz@dv@style@at@list {%
      \ifx\tikz@dv@at@style\pgfutil@empty%
      \else%
        \expandafter\tikz@dv@lib@handle@one@at@style\tikz@dv@at@style\tikz@stop%
      \fi%
    }
    \ifx\tikz@dv@lib@this@at@style\pgfutil@empty%
    \else%
      \expandafter\tikzdatavisualizationset\expandafter{\tikz@dv@lib@this@at@style}%
    \fi%
  \fi%
}%

\def\tikz@dv@lib@handle@one@at@style#1as#2[#3]#4\tikz@stop{%
  \pgfdvmathenter{\tikz@lib@dv@at@math@var}{#1}%
  \pgfdvmathexitbyscientificformat{\tikz@dv@temp}{\tikz@lib@dv@at@math@var}%
  \ifx\tikz@dv@temp\tikz@dv@compare@to%
    \expandafter\gdef\expandafter\tikz@dv@lib@this@at@style\expandafter{\tikz@dv@lib@this@at@style,#3}%
  \fi%
}%


\def\tikzpointandanchordirection#1#2{%
  \pgf@process{\pgfpointdvdirection{#1}{#2}}
  {
    \pgf@ya=\pgf@y
    \pgf@y=-\pgf@x
    \pgf@x=\pgf@ya
    \tikz@auto@anchor
    \xdef\tikz@dv@max@anchor{\tikz@anchor}
    \tikz@auto@anchor@prime
    \xdef\tikz@dv@min@anchor{\tikz@anchor}
  }
}%





\def\tikz@lib@dv@gv#1#2{
  \tikzdatavisualizationset{
    grid actions/.append={\tikz@lib@dv@default@action{grid}{#1}{#2}},
    major grid actions/.append={\tikz@lib@dv@show@grid{major}{#1}{#2}},
    minor grid actions/.append={\tikz@lib@dv@show@grid{minor}{#1}{#2}},
    subminor grid actions/.append={\tikz@lib@dv@show@grid{subminor}{#1}{#2}},
  }
}%

\def\tikz@lib@dv@show@grid#1#2#3{%
  \pgfkeysgetvalue{#2/default grid at}\tikz@lib@dv@default@settings%
  \ifx\tikz@lib@dv@default@settings\pgfutil@empty%
    \pgfkeysgetvalue{#2/grid at}\tikz@lib@dv@settings%
  \else%
    \pgfkeysgetvalue{#2/grid at}\tikz@lib@dv@settings%
    \expandafter\expandafter\expandafter\def%
    \expandafter\expandafter\expandafter\tikz@lib@dv@settings%
    \expandafter\expandafter\expandafter{\expandafter\tikz@lib@dv@default@settings\expandafter,\tikz@lib@dv@settings}
  \fi%
  \ifx\tikz@lib@dv@settings\pgfutil@empty%
  \else
    {%
      \let\tikz@dv@at@list\pgfutil@empty
      \let\tikz@dv@style@at@list\pgfutil@empty
      \pgfkeysgetvalue{#2/scaling mapper}\tikz@lib@dv@mapper
      \let\tikz@lib@dv@ticks@default@at\pgfutil@empty%
      \scope[data visualization/grid layer,/tikz/data visualization/.cd,every #1 grid/.try,every grid,#3]
        \pgfkeysgetvalue{#2/ticks at}\tikz@lib@dv@ticks@at%
        \expandafter\tikzdatavisualizationset\expandafter{\tikz@lib@dv@settings}%
        \pgfkeysgetvalue{/tikz/data visualization/common}\tikz@temp
        \expandafter\tikzdatavisualizationset\expandafter{\tikz@temp}
        \pgfkeysgetvalue{/tikz/data visualization/#1}\tikz@temp
        \expandafter\tikzdatavisualizationset\expandafter{\tikz@temp}
        \edef\tikz@lib@dv@dir@axis{/tikz/data visualization/\pgfkeysvalueof{/tikz/data visualization/direction axis}}%
        \foreach \tikz@dv@grid@pos in \tikz@dv@at@list
        {
          \ifx\tikz@dv@grid@pos\pgfutil@empty
          \else
            \expandafter\tikz@lib@dv@parse\tikz@dv@grid@pos\pgf@stop%
            \expandafter\tikzdatavisualizationset\expandafter{\tikz@lib@dv@tick@opt}%
            \tikz@lib@dv@mapper.set in to(\tikz@dv@tick@pos)%
            \draw[/tikz/data visualization/styling]
              \pgfextra{
                \tikz@dv@goto{\tikz@lib@dv@dir@axis}{\pgfkeysvalueof{/tikz/data visualization/low}}%
                \pgfpathdvmoveto%
                \tikz@dv@goto{\tikz@lib@dv@dir@axis}{\pgfkeysvalueof{/tikz/data visualization/high}}%
                \pgfpathdvlineto%
              };
          \fi
        }
      \endscope
    }
  \fi
}%










\def\tikz@lib@dv@lv#1#2{
  \tikzdatavisualizationset{
    label actions/.append={\tikz@lib@dv@show@label{#1}{#2}}
  }
}%

\def\tikz@lib@dv@show@label#1#2{%
  \pgfkeysgetvalue{#1/label}\tikz@dv@lib@label%
  \ifx\tikz@dv@lib@label\pgfutil@empty%
  \else
    \scope[anchor=center,/tikz/data visualization/.cd,every axis label/.try,#2]
      \expandafter\tikz@lib@dv@parse@node\tikz@dv@lib@label\pgf@stop
    \endscope
  \fi
}%

\def\tikz@lib@dv@parse@node{\pgfutil@ifnextchar[\tikz@lib@dv@parse@node@opt{\tikz@lib@dv@parse@node@opt[]}}%
\def\tikz@lib@dv@parse@node@opt[#1]#2\pgf@stop{
  \tikzdatavisualizationset{#1}
  \pgftransformshift{\pgfpointdvlocaldatapoint}%
  \node [/tikz/data visualization/node styling] {#2};
}%




\tikzdatavisualizationset{
  compute step/.initial=,
  step/.style={compute step=\def\tikz@lib@dv@step{#1}},
  minor steps between steps/.initial=,
  minor steps between steps/.default=9,
  phase/.initial=0,
  tick typesetter/.code=\pgfmathprintnumber{#1},
  tick prefix/.initial=,
  tick suffix/.initial=,
  tick unit/.style={tick suffix={$\,\pgfutil@font@normalfont#1$}},%
}%

\def\tikz@lib@dv@compute@at@linear{%
  \let\tikz@lib@dv@compute@about=\tikz@lib@dv@about@linear%
  \let\tikz@lib@dv@step\relax%
  \pgfkeysvalueof{/tikz/data visualization/compute step}
  \ifx\tikz@lib@dv@step\relax%
  \else%
    \tikz@lib@dv@mapper.get in range interval()%
    \pgfdvinrangeinterval.get min and max()%
    \pgfkeysgetvalue{/tikz/data visualization/phase}\tikz@temp
    \pgfdvmathenter{\tikz@dv@lib@phase}{\tikz@temp}
    \pgfdvmathenter{\tikz@dv@lib@step}{\tikz@lib@dv@step}
    \pgfdvmathifless{\pgfdvmathalwayszero}{\tikz@dv@lib@step}{%
      \pgfdvmathsub{\tikz@dv@lib@temp}{\pgfdvmin}{\tikz@dv@lib@phase}%
      \pgfdvmathdiv{\tikz@dv@lib@temp}{\tikz@dv@lib@temp}{\tikz@dv@lib@step}%
      \pgfdvmathfloor{\tikz@dv@lib@temp}{\tikz@dv@lib@temp}%
      \pgfdvmathmul{\tikz@lib@dv@current}{\tikz@dv@lib@temp}{\tikz@dv@lib@step}%
      \pgfdvmathadd{\tikz@lib@dv@current}{\tikz@lib@dv@current}{\tikz@dv@lib@phase}%
      \let\tikz@lib@dv@ats\pgfutil@empty%
      \let\tikz@lib@dv@minor@ats\pgfutil@empty%
      \tikz@lib@dv@mapper.get function(\tikz@temp)%
      \ifx\tikz@temp\pgfutil@empty%
        \pgfdvmathenter{\tikz@one@hundreth}{0.001}%
        \pgfdvmathsub{\tikz@lib@temp}{\pgfdvmax}{\pgfdvmin}%
        \pgfdvmathmul{\tikz@lib@dv@epsilon}{\tikz@lib@temp}{\tikz@one@hundreth}%
      \else
        \let\tikz@lib@dv@epsilon\pgfdvmathalwayszero
      \fi
      \pgfdvmathsub{\tikz@lib@dv@min@minus@epsilon}{\pgfdvmin}{\tikz@lib@dv@epsilon}%
      \pgfdvmathadd{\tikz@lib@dv@max@plus@epsilon}{\pgfdvmax}{\tikz@lib@dv@epsilon}%
      \pgfkeysgetvalue{/tikz/data visualization/minor steps between steps}\tikz@lib@dv@substeps%
      \ifx\tikz@lib@dv@substeps\pgfutil@empty
      \else
        \pgfmathsetmacro\tikz@temp{\tikz@lib@dv@substeps+1}%
        \pgfdvmathenter{\tikz@dv@lib@substeps}{\tikz@temp}%
        \pgfdvmathdiv{\tikz@lib@dv@substep}{\tikz@dv@lib@step}{\tikz@dv@lib@substeps}%
      \fi
      \loop%
        \ifx\tikz@lib@dv@substeps\pgfutil@empty%
        \else%
          \let\tikz@lib@dv@subcurrent=\tikz@lib@dv@current%
          \pgfmathsetcount{\c@pgf@counta}{\tikz@lib@dv@substeps}%
          \let\tikz@lib@dv@next=\tikz@lib@dv@subloop%
          \tikz@lib@dv@subloop
        \fi%
        \pgfdvmathifless{\tikz@lib@dv@current}{\tikz@lib@dv@min@minus@epsilon}{}{%
          \pgfdvmathexitbyserializing{\tikz@temp}{\tikz@lib@dv@current}%
          \edef\tikz@lib@dv@ats{\tikz@lib@dv@ats,\tikz@temp}%
        }
        \pgfdvmathadd{\tikz@lib@dv@current}{\tikz@lib@dv@current}{\tikz@dv@lib@step}%
        \pgfdvmathifless{\tikz@lib@dv@current}{\tikz@lib@dv@max@plus@epsilon}{\tikz@lib@dv@continuetrue}{\tikz@lib@dv@continuefalse}%
      \iftikz@lib@dv@continue%
      \repeat%
      \tikzdatavisualizationset{major/.expanded={at={\tikz@lib@dv@ats}},minor/.expanded={at={\tikz@lib@dv@minor@ats}}}%
    }{%
      \pgfdvmathexitbyserializing{\tikz@temp}{\pgfdvmin}%
      \tikzdatavisualizationset{major/.expanded={at={\tikz@temp}}}%
    }%
  \fi%
}%
\newif\iftikz@lib@dv@continue

\def\tikz@lib@dv@subloop{
  \pgfdvmathadd{\tikz@lib@dv@subcurrent}{\tikz@lib@dv@subcurrent}{\tikz@lib@dv@substep}%
  \pgfdvmathifless{\tikz@lib@dv@subcurrent}{\pgfdvmin}{}{%
    \pgfdvmathifless{\tikz@lib@dv@subcurrent}{\pgfdvmax}{%
      \pgfdvmathexitbyserializing{\tikz@temp}{\tikz@lib@dv@subcurrent}%
      \edef\tikz@lib@dv@minor@ats{\tikz@lib@dv@minor@ats,\tikz@temp}
      }{}}
  \advance\c@pgf@counta by-1\relax%
  \ifnum\c@pgf@counta=0\relax%
    \let\tikz@lib@dv@next=\relax
  \fi
  \tikz@lib@dv@next
}%




\tikzdatavisualizationset{
  about/.style={compute step=\tikz@lib@dv@compute@about{#1}},
  about strategy/.initial=,
  standard about strategy/.style={about strategy={1.5/1.0,2.3/2.0,4/2.5,7/5,11/10}},
  standard about strategy,
  euro about strategy/.style={about strategy={1.5/1.0,3/2.0,7/5,11/10}},
  decimal about strategy/.style={about strategy={3/1.0,11/10}},
  half about strategy/.style={about strategy={2/1.0,7/5,11/10}},
  quarter about strategy/.style={about strategy={1.8/1.0,4/2.5,7/5,11/10}},
  int about strategy/.style={about strategy={1.5/1.0,2.5/2.0,3.5/3.0,4.5/4.0,7/5,11/10}},
  none/.style={compute step=},
  few/.style={about=3},
  some/.style={about=5},
  many/.style={about=10},
}%

\def\tikz@lib@dv@about@linear#1{%
  \tikz@lib@dv@mapper.get in range interval()%
  \pgfdvinrangeinterval.get min and max()%
  \pgfdvmathsub{\tikz@lib@dv@diff}{\pgfdvmax}{\pgfdvmin}
  \pgfdvmathenter{\tikz@lib@dv@about@val}{#1}%
  \pgfdvmathdiv{\tikz@lib@dv@around}{\tikz@lib@dv@diff}{\tikz@lib@dv@about@val}%
  \pgfmathfloattomacro{\tikz@lib@dv@around}{\tikz@lib@dv@flags}{\tikz@lib@dv@mant}{\tikz@lib@dv@exp}%
  \pgf@xc=\tikz@lib@dv@mant pt %
  \pgfkeysgetvalue{/tikz/data visualization/about strategy}\tikz@lib@dv@strat
  \foreach \tikz@lib@dv@threshold/\tikz@lib@replace in \tikz@lib@dv@strat
  {
    \ifdim\pgf@xc<\tikz@lib@dv@threshold pt%
      \global\pgf@xc=\tikz@lib@replace pt%
      \breakforeach
    \fi
  }%
  \ifdim\pgf@xc<10pt%
    \pgfmathfloatcreate{\tikz@lib@dv@flags}{\pgf@sys@tonumber{\pgf@xc}}{\tikz@lib@dv@exp}%
  \else
    \begingroup
    \c@pgf@countd=\tikz@lib@dv@exp
    \advance\c@pgf@countd by1
    \edef\tikz@lib@dv@exp{\the\c@pgf@countd}%
    \pgfmath@smuggleone\tikz@lib@dv@exp
    \endgroup
    \divide\pgf@xc by 10\relax
    \pgfmathfloatcreate{\tikz@lib@dv@flags}{\pgf@sys@tonumber{\pgf@xc}}{\tikz@lib@dv@exp}%
  \fi
  \pgfmathfloattofixed{\pgfmathresult}%
  \let\tikz@lib@dv@step=\pgfmathresult
}%






\tikzset{
  /tikz/data visualization/axis options/.cd,
  exponential steps/.style={tick placement strategy=\tikz@lib@dv@compute@at@log},
  logarithmic/.style={
    \tikz@dv@axis/function=\pgfdvmathln{\pgfvalue}{\pgfvalue},
    \tikz@dv@axis/scaling/default=1 at 0 and 10 at 1,
    exponential steps
  }
}%

\def\tikz@lib@dv@compute@at@log{%
  \let\tikz@lib@dv@compute@about=\tikz@lib@dv@about@log%
  \let\tikz@lib@dv@step\relax%
  \pgfkeysvalueof{/tikz/data visualization/compute step}
  \ifx\tikz@lib@dv@step\relax%
  \else%
    \tikz@lib@dv@mapper.get in range interval()%
    \pgfdvinrangeinterval.get min and max()%
    \pgfdvmathlog{\pgfdvminlog}{\pgfdvmin}%
    \pgfdvmathlog{\pgfdvmaxlog}{\pgfdvmax}%
    \pgfkeysgetvalue{/tikz/data visualization/phase}\tikz@temp
    \pgfdvmathenter{\tikz@dv@lib@phase}{\tikz@temp}
    \pgfdvmathenter{\tikz@dv@lib@step}{\tikz@lib@dv@step}
    \pgfdvmathsub{\tikz@dv@lib@temp}{\pgfdvminlog}{\tikz@dv@lib@phase}%
    \pgfdvmathdiv{\tikz@dv@lib@temp}{\tikz@dv@lib@temp}{\tikz@dv@lib@step}%
    \pgfdvmathfloor{\tikz@dv@lib@temp}{\tikz@dv@lib@temp}%
    \pgfdvmathmul{\tikz@lib@dv@current}{\tikz@dv@lib@temp}{\tikz@dv@lib@step}%
    \pgfdvmathadd{\tikz@lib@dv@current}{\tikz@lib@dv@current}{\tikz@dv@lib@phase}%
    \let\tikz@lib@dv@ats\pgfutil@empty%
    \let\tikz@lib@dv@minor@ats\pgfutil@empty%
    \pgfdvmathenter{\tikz@one@hundreth}{0.001}%
    \pgfdvmathsub{\tikz@lib@temp}{\pgfdvmaxlog}{\pgfdvminlog}%
    \pgfdvmathmul{\tikz@lib@dv@epsilon}{\tikz@lib@temp}{\tikz@one@hundreth}%
    \pgfdvmathsub{\tikz@lib@dv@min@minus@epsilon}{\pgfdvminlog}{\tikz@lib@dv@epsilon}%
    \pgfdvmathadd{\tikz@lib@dv@max@plus@epsilon}{\pgfdvmaxlog}{\tikz@lib@dv@epsilon}%
    \pgfkeysgetvalue{/tikz/data visualization/minor steps between steps}\tikz@lib@dv@substeps%
    \ifx\tikz@lib@dv@substeps\pgfutil@empty
    \else
      \pgfmathsetmacro\tikz@temp{\tikz@lib@dv@substeps+1}%
      \pgfdvmathenter{\tikz@dv@lib@substeps}{\tikz@temp}%
    \fi
    \loop%
      \ifx\tikz@lib@dv@substeps\pgfutil@empty%
      \else%
        \let\tikz@lib@dv@subcurrent=\tikz@lib@dv@current%
        \pgfdvmathadd{\tikz@lib@dv@subcurrent@next}{\tikz@lib@dv@subcurrent}{\tikz@dv@lib@step}%
        \pgfdvmathpowten{\tikz@lib@dv@subcurrent}{\tikz@lib@dv@subcurrent}%
        \pgfdvmathpowten{\tikz@lib@dv@subcurrent@max}{\tikz@lib@dv@subcurrent@next}%
        \pgfdvmathsub{\tikz@lib@dv@subcurrent@diff}{\tikz@lib@dv@subcurrent@max}{\tikz@lib@dv@subcurrent}%
        \pgfdvmathdiv{\tikz@lib@dv@substep}{\tikz@lib@dv@subcurrent@diff}{\tikz@dv@lib@substeps}%
        \pgfmathsetcount{\c@pgf@counta}{\tikz@lib@dv@substeps}%
        \let\tikz@lib@dv@next=\tikz@lib@dv@subloop%
        \tikz@lib@dv@subloop
      \fi%
      \pgfdvmathifless{\tikz@lib@dv@current}{\tikz@lib@dv@min@minus@epsilon}{}{%
        \pgfdvmathpowten{\tikz@lib@dv@current@pow}{\tikz@lib@dv@current}%
        \pgfdvmathexitbyserializing{\tikz@temp}{\tikz@lib@dv@current@pow}%
        \edef\tikz@lib@dv@ats{\tikz@lib@dv@ats,\tikz@temp}%
      }
      \pgfdvmathadd{\tikz@lib@dv@current}{\tikz@lib@dv@current}{\tikz@dv@lib@step}%
      \pgfdvmathifless{\tikz@lib@dv@current}{\tikz@lib@dv@max@plus@epsilon}{\tikz@lib@dv@continuetrue}{\tikz@lib@dv@continuefalse}%
      \iftikz@lib@dv@continue%
    \repeat%
    \tikzdatavisualizationset{major/.expanded={at={\tikz@lib@dv@ats}},minor/.expanded={at={\tikz@lib@dv@minor@ats}}}%
  \fi%
}%


\def\tikz@lib@dv@about@log#1{%
  \tikz@lib@dv@mapper.get in range interval()%
  \pgfdvinrangeinterval.get min and max()%
  \pgfdvmathlog{\pgfdvmin}{\pgfdvmin}%
  \pgfdvmathlog{\pgfdvmax}{\pgfdvmax}%
  \pgfdvmathsub{\tikz@lib@dv@diff}{\pgfdvmax}{\pgfdvmin}
  \pgfdvmathenter{\tikz@lib@dv@about@val}{#1}%
  \pgfdvmathdiv{\tikz@lib@dv@around}{\tikz@lib@dv@diff}{\tikz@lib@dv@about@val}%
  \pgfmathfloattomacro{\tikz@lib@dv@around}{\tikz@lib@dv@flags}{\tikz@lib@dv@mant}{\tikz@lib@dv@exp}
  \ifdim\tikz@lib@dv@exp pt<0pt%
    \pgfmathfloatcreate{1}{1.0}{0}%
  \else
    \pgf@xc=\tikz@lib@dv@mant pt\relax%
    \ifdim\pgf@xc<2.5pt
      \pgfmathfloatcreate{1}{1.0}{\tikz@lib@dv@exp}
    \else\ifdim\pgf@xc<5.1pt
      \pgfmathfloatcreate{1}{3.0}{\tikz@lib@dv@exp}
    \else
      \pgfmathfloatcreate{1}{6.0}{\tikz@lib@dv@exp}
    \fi\fi
  \fi%
  \pgfmathfloattofixed{\pgfmathresult}
  \let\tikz@lib@dv@step=\pgfmathresult
}%








\tikzdatavisualizationset{%
  new Cartesian axis/.style={
    new axis base={#1},
    new object={
      class=linear transformer,
      store=/tikz/data visualization/#1/linear transformer,
      arg1/.expanded=\pgfkeysvalueof{/tikz/data visualization/#1/attribute}/scaled,
      arg2 from key=/tikz/data visualization/#1/unit vector,
    },
    #1/scaling/default/.initial=0 at 0 and 1 at 1cm,
    #1/unit vector/.initial=\pgfqpoint{1pt}{0pt},
  }
}%

\tikzset{
  /tikz/data visualization/axis options/.cd,
  unit vector/.code=\tikz@scan@one@point\tikz@lib@dv@uv#1,
  length/.style={\tikz@dv@axis/scaling=min at 0 and max at {#1}},
  unit length/.code={\tikz@dv@parse@unit@length{#1}},
  power unit length/.style={\tikz@dv@axis/scaling=1 at 0 and 10 at {#1}}
}%

\def\tikz@lib@dv@uv#1{%
  \pgfkeyssetvalue{\tikz@dv@axis/unit vector}{#1}
}%

\def\tikz@dv@parse@unit@length#1{
  \pgfutil@in@{per}{#1}
  \ifpgfutil@in@%
    \tikz@dv@parse@unit@length@#1\pgf@stop%
  \else%
    \tikz@dv@parse@unit@length@#1per1units\pgf@stop%
  \fi%
}%
\def\tikz@dv@parse@unit@length@#1per#2units\pgf@stop{
  \pgfkeysalso{\tikz@dv@axis/scaling=0 at 0 and {#2} at {#1}}
}%



\tikzdatavisualizationset{
  new visualizer/.style n args={3}{
    #1/.code={
      \def\tikz@visualizer{#1}%
      \pgfkeys{/tikz/data visualization/visualizer options/.cd,##1}
      \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data(\pgfkeys{/data point/set={#1}})}%
    },
    /utils/exec={
      \advance\tikzdvvisualizercounter by 1\relax
      \edef\tikz@temp{/data point/set/#1/.initial=\the\tikzdvvisualizercounter}
      \expandafter\tikzset\expandafter{\tikz@temp}
    },
    /data point/#1/execute at begin/.initial={
      \pgfkeyssetvalue{/data point/set}{#1}
      \scope[
        #2,
        /tikz/data visualization/every visualizer/.try,
        /tikz/data visualization/visualizers/#1/signal,
        /tikz/data visualization/visualizers/#1/styling/.try]
    },
    /data point/#1/execute at end/.initial={
        \path; %
      \endscope
    },
    /tikz/data visualization/visualizers/#1/signal/.code=\pgf@signalstyle.emit(),
    /tikz/data visualization/visualizers/#1/styling/.style=,
    /tikz/data visualization/visualizers/#1/label in legend options/.style={#3},
  },
  style sheet/.style={/data point/set/.style sheet={#1}},
  /pgf/data/set/.style={/data point/set={#1}},
}%

\tikzdatavisualizationset{
  new sub visualizer/.style n args={4}{
    #4/#1/.code={
      \def\tikz@visualizer{#4/#1}%
      \pgfkeys{/tikz/data visualization/visualizer options/.cd,##1}
    },
    /data point/#4/#1/execute at begin/.initial={
      \pgfkeyssetvalue{/data point/set}{#4}
      \scope[
        #2,
        /tikz/data visualization/every visualizer/.try,
        /tikz/data visualization/visualizers/#4/signal,
        /tikz/data visualization/visualizers/#4/styling/.try,
        /tikz/data visualization/visualizers/#4/#1/styling/.try]
    },
    /data point/#4/#1/execute at end/.initial={
        \path; %
      \endscope
    },
    /tikz/data visualization/visualizers/#4/#1/styling/.style=,
    /tikz/data visualization/visualizers/#4/#1/label in legend options/.style={#3},
  }
}%


\def\tikz@do@visualizer#1#2{%
  \tikzdatavisualizationset{
    #2={#1}
  }
}%

\newcount\tikzdvvisualizercounter

\newif\iftikz@dv@visualizer@label@inline

\tikzdatavisualizationset{visualizer options/.cd,
  @set/.style 2 args={
    /tikz/data visualization/visualizers/\tikz@visualizer/styling/.append style={/utils/exec={\let\tikz@dv@plot@handler=#1}},
    /tikz/data visualization/visualizers/\tikz@visualizer/label in legend options/.append style={#2}
  },
  no lines/.style={@set={\pgfplothandlerdiscard}{default label in legend mark}},
  smooth line/.style={@set={\pgfplothandlercurveto}{default label in legend path}},
  smooth cycle/.style={@set={\pgfplothandlerclosedcurve}{default label in legend closed path}},
  straight line/.style={@set={\pgfplothandlerlineto}{default label in legend path}},
  straight cycle/.style={@set={\pgfplothandlerpolygon}{default label in legend closed path}},
  polygon/.style={straight cycle},%
  gap line/.style={@set={\pgfplothandlergaplineto}{default label in legend path}},
  gap cycle/.style={@set={\pgfplothandlergapcycle}{gap circular label in legend line}}
}%




\tikzdatavisualizationset{
  new label visualizer/.style 2 args={
    new object={
      when=before visualization,
      class=label visualizer,
      before creation={
        \begingroup
        \def\tikz@visualizer{#1}%
        \pgfkeys{/tikz/data visualization/visualizer label options/.cd,
          #2}
        \pgfkeysgetvalue{/tikz/data visualization/visualizer label options/text}\tikz@dv@temp@lab
        \def\tikz@tempa{
          \scope[
          /utils/exec=\def\tikz@visualizer{#1},%
          /tikz/data visualization/visualizer label options/.cd,
          #2]
          \tikzdatavisualizationset{every data set label/.try}
          \path [
            /data point/set={#1},/utils/exec=\pgf@signalstyle.emit(),
            /tikz/data visualization/.cd,every label in data/.try]
          (label visualizer coordinate') --
          (label visualizer coordinate)
          node [
            auto,
            at end,
            /tikz/data visualization/node styling]
        }
        \expandafter\def\expandafter\tikz@tempb\expandafter{\expandafter{\tikz@dv@temp@lab};}%
        \expandafter\expandafter\expandafter\gdef%
        \expandafter\expandafter\expandafter\tikz@dv@label@code%
        \expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter\relax%
          \expandafter\expandafter\expandafter{\expandafter\tikz@tempa\tikz@tempb\endscope}}
        \global\let\tikz@dv@label@attribute=\tikz@dv@label@attribute
        \global\let\tikz@dv@label@threshold=\tikz@dv@label@threshold
        \endgroup
      },
      arg1/.expand once=\tikz@dv@label@attribute,
      arg2=\tikz@dv@label@threshold,
      arg3/.expand once=\tikz@dv@label@code,
      arg4=\pgfdvvisualizerfilter{#1}
    },
    /utils/exec=\tikz@create@label@count{#1}
  },
  text colored/.style={node style={text=visualizer color}}
}%

\def\tikz@create@label@count#1{
  \tikzdatavisualizationset{
    new object={
      when=before survey,
      store=/tikz/data visualization/visualizers/#1/count/obj,
      class=count,
      arg1=set/#1/count,
      after creation={\tikzdvobj.set filter(\pgfdvvisualizerfilter{#1})}
    }
  }
}%

\pgfkeys{
  /tikz/data visualization/visualizer label options/.cd,
  when/.code args={#1 is#2}{%
    \def\tikz@dv@label@attribute{#1}%
    \def\tikz@dv@label@threshold{#2}%
  },
  index/.code={%
    \edef\tikz@dv@label@attribute{set/\tikz@visualizer/count}%
    \def\tikz@dv@label@threshold{#1}%
  },
  pos/.code={%
    \edef\tikz@dv@label@attribute{set/\tikz@visualizer/count}%
    \pgfkeysvalueof{/tikz/data visualization/visualizers/\tikz@visualizer/count/obj}.get max(\tikz@lib@max)
    \edef\tikz@dv@label@threshold{(#1*\tikz@lib@max)}%
  },
  auto/.code={%
    \edef\tikz@dv@label@attribute{set/\tikz@visualizer/count}%
    \pgfkeysvalueof{/tikz/data visualization/visualizers/\tikz@visualizer/count/obj}.get max(\tikz@lib@max)
    \edef\tikz@dv@label@threshold{({(\pgfkeysvalueof{/data point/set/\tikz@visualizer}-0.5)/\the\tikzdvvisualizercounter*\tikz@lib@max})}
  },
  text/.initial=,
  text'/.style={text={#1},node style=swap,/utils/exec=\def\tikz@lib@dv@pin@sign{-}},
  node style/.style={/tikz/data visualization/node style={#1}},
  text colored/.style=/tikz/data visualization/text colored,
  pin angle/.store in=\tikz@lib@dv@pin@dir,
  pin length/.style={node style={pin distance={#1}}},
}%

\let\tikz@lib@dv@pin@sign\pgfutil@empty

\let\tikz@dv@label@attribute\pgfutil@empty
\let\tikz@dv@label@threshold\pgfutil@empty
\let\tikz@dv@label@code\pgfutil@empty





\tikzdatavisualizationset{
  new legend/.code={
    \pgfkeysifdefined{/tikz/data visualization/#1/at}{}
    {\tikzdatavisualizationset{
    new object={
      class=legend,
      store=/tikz/data visualization/#1/obj,
      arg1 from key=/tikz/data visualization/#1/@columns or rows,
      arg2 from key=/tikz/data visualization/#1/@ideal,
      arg3 from key=/tikz/data visualization/#1/max entries,
      arg4 from key=/tikz/data visualization/#1/@strategy,
      after creation={
        \tikzdatavisualizationset{
          legend actions/.append={
            \pgfkeysgetvalue{/tikz/data visualization/#1/obj}\pgf@dv@legend%
            {
              \pgf@dv@legend.get arrangement(\pgf@dv@temp)%
              \pgfkeysgetvalue{/tikz/data visualization/#1/at}\pgf@dv@at%
              \pgfkeysgetvalue{/tikz/data visualization/#1/anchor}\pgf@dv@anchor%
              \let\pgfdvnextcell=\pgfmatrixnextcell%
              \let\pgfdvendrow=\pgfmatrixendrow%
              \def\pgf@marshal{
                \matrix[at/.expand once=\pgf@dv@at,matrix anchor/.expand
                once=\pgf@dv@anchor,/tikz/data visualization/#1/matrix node styling]
              }
              \expandafter\pgf@marshal\expandafter{\pgf@dv@temp};
            }
          }
        }
      }
    },
    #1/@columns or rows/.initial=columns,
    #1/@ideal/.initial=1,
    #1/max entries/.initial=100,
    #1/@strategy/.initial=down then right,
    #1/anchor/.initial=west,
    #1/at/.initial=(data visualization bounding box.east),
    #1/matrix node styling/.style={row sep=0pt,column sep=.8em},
    #1/.code={
      \let\tikz@temp\tikz@dv@legend%
      \def\tikz@dv@legend{/tikz/data visualization/#1}%
      \expandafter\tikz@do@legend@options\expandafter{\tikz@temp}{##1}%
    },
    #1={every new legend}
  }}},
  new legend/.default=main legend,
  legend/.style={
    new legend,
    main legend={#1}
  }
}%

\def\tikz@do@legend@options#1#2{
  \pgfkeys{/tikz/data visualization/legend options/.cd,#2}
  \def\tikz@dv@legend{#1}
}%
\let\tikz@dv@legend\pgfutil@empty


\tikzset{
  /tikz/data visualization/legend options/.cd,
  ideal number of columns/.style={\tikz@dv@legend/@columns or rows=columns,\tikz@dv@legend/@ideal={#1}},
  ideal number of rows/.style={\tikz@dv@legend/@columns or rows=rows,\tikz@dv@legend/@ideal={#1}},
  columns/.style={ideal number of columns={#1}},%
  rows/.style={ideal number of rows={#1}},%
  max rows/.style={\tikz@dv@legend/@columns or rows=columns,\tikz@dv@legend/max entries={#1}},
  max columns/.style={\tikz@dv@legend/@columns or rows=rows,\tikz@dv@legend/max entries={#1}},
  down then right/.style={\tikz@dv@legend/@strategy=down then right},
  down then left/.style={\tikz@dv@legend/@strategy=down then left},
  up then right/.style={\tikz@dv@legend/@strategy=up then right},
  up then left/.style={\tikz@dv@legend/@strategy=up then left},
  right then down/.style={\tikz@dv@legend/@strategy=right then down},
  left then down/.style={\tikz@dv@legend/@strategy=left then down},
  right then up/.style={\tikz@dv@legend/@strategy=right then up},
  left then up/.style={\tikz@dv@legend/@strategy=left then up},
  anchor/.style={\tikz@dv@legend/anchor={#1}},
  at/.style={\tikz@dv@legend/at={#1}},
  right/.style={east outside},
  left/.style={west outside},
  above/.style={north outside},
  below/.style={south outside},
  east outside/.style={
    columns=1,
    at={([xshift=.8em]data visualization bounding box.east)},
    anchor=west,
  },
  north east outside/.style={
    columns=1,
    at={([xshift=.8em]data visualization bounding box.north east|-
      data bounding box.north)},
    anchor=north west,
  },
  south east outside/.style={
    columns=1,
    at={([xshift=.8em]data visualization bounding box.south east |-
      data bounding box.south)},
    anchor=south west,
  },
  west outside/.style={
    columns=1,
    label style=text left,
    at={([xshift=-.8em]data visualization bounding box.west)},
    anchor=east,
  },
  north west outside/.style={
    columns=1,
    label style=text left,
    at={([xshift=-.8em]data visualization bounding box.north west |-
      data bounding box.north)},
    anchor=north east,
  },
  south west outside/.style={
    columns=1,
    label style=text left,
    at={([xshift=-.8em]data visualization bounding box.south west |-
      data bounding box.south)},
    anchor=south east,
  },
  south outside/.style={
    rows=1,
    at={([yshift=-.5em]data visualization bounding box.south)},
    anchor=north,
  },
  north outside/.style={
    rows=1,
    at={([yshift=.5em]data visualization bounding box.north)},
    anchor=south,
  },
  every new legend/.style={east outside,label style=text right},
  every legend inside/.style={
    opaque=white,
    label style={node style={font=\pgfutil@font@footnotesize}}
  },
  opaque/.style={
    matrix node style={
      inner sep=.333ex,
      outer sep=.5ex,
      rounded corners=3pt,
      execute at begin cell={\tikzset{sharp corners}}, %
      fill=#1
    },
  },
  opaque/.default=white,
  transparent/.style={matrix node style={fill=none}},
  north east inside/.style={
    columns=1,
    at={([xshift=-.3em]data bounding box.north east)},
    anchor=north east,
    every legend inside
  },
  south west inside/.style={
    columns=1,
    at={([xshift=.3em]data bounding box.south west)},
    anchor=south west,
    every legend inside
  },
  north west inside/.style={
    columns=1,
    at={([xshift=.3em]data bounding box.north west)},
    anchor=north west,
    every legend inside
  },
  south east inside/.style={
    columns=1,
    at={([xshift=-.3em]data bounding box.south east)},
    anchor=south east,
    every legend inside
  },
  west inside/.style={
    columns=1,
    at={([xshift=.3em]data bounding box.west)},
    anchor=west,
    every legend inside
  },
  east inside/.style={
    columns=1,
    at={([xshift=.3em]data bounding box.east)},
    anchor=east,
    every legend inside
  },
  north inside/.style={
    rows=1,
    at={(data bounding box.north)},
    anchor=north,
    every legend inside
  },
  south inside/.style={
    rows=1,
    at={(data bounding box.south)},
    anchor=south,
    every legend inside
  },
  at values/.style={
    at={(visualization cs:#1)},
    anchor=center,
    every legend inside
  },
  right of/.style={
    at={(visualization cs:#1)},
    anchor=west,
    every legend inside
  },
  left of/.style={
    at={(visualization cs:#1)},
    anchor=east,
    every legend inside
  },
  above of/.style={
    at={(visualization cs:#1)},
    anchor=south,
    every legend inside
  },
  below of/.style={
    at={(visualization cs:#1)},
    anchor=north,
    every legend inside
  },
  above right of/.style={
    at={(visualization cs:#1)},
    anchor=south west,
    every legend inside
  },
  above left of/.style={
    at={(visualization cs:#1)},
    anchor=south east,
    every legend inside
  },
  below right of/.style={
    at={(visualization cs:#1)},
    anchor=north west,
    every legend inside
  },
  below left of/.style={
    at={(visualization cs:#1)},
    anchor=north east,
    every legend inside
  },
  label style/.style={
    matrix node style={/tikz/data visualization/every label in legend/.append style={#1}}
  },
  matrix node style/.style={\tikz@dv@legend/matrix node styling/.append style={#1}},
}%


\tikzdatavisualizationset{
  new legend entry/.code={
    \begingroup
      \pgfkeys{/tikz/data visualization/legend entry options/.cd,#1}
      \pgfkeysgetvalue{/tikz/data visualization/legend entry options/legend}\tikz@dv@temp@legend
      \global\let\tikz@dv@temp@legend\tikz@dv@temp@legend
    \endgroup
    \tikzdatavisualizationset{new legend/.expanded=\tikz@dv@temp@legend}%
    \expandafter\tikz@dv@add@legend@entry\expandafter{\tikz@dv@temp@legend}{#1}
  }
}%

\def\tikz@dv@add@legend@entry#1#2{
  \tikz@main@dv.at start survey({
      \pgfkeysgetvalue{/tikz/data visualization/#1/obj}\pgf@temp
      \pgf@temp.add entry(\tikz@dv@render@legend@entry{legend=#1,#2})
    })
}%

\def\tikz@dv@render@legend@entry#1{
  \pgfkeys{/tikz/data visualization/.cd,every data set label}
  \pgfkeys{/tikz/data visualization/legend entry options/.cd,
    /tikz/data visualization/every label in legend,#1}%
  \pgfkeysgetvalue{/tikz/data visualization/legend entry options/text}\tikz@dv@temp@lab
  \pgfkeysgetvalue{/tikz/data visualization/@node styling}\tikz@dv@temp@style
  \pgfkeysgetvalue{/tikz/data visualization/legend entry options/setup}\tikz@dv@temp@setup
  \pgfkeysgetvalue{/tikz/data visualization/legend entry options/visualizer in legend styling}\tikz@dv@temp@visual@styling
  \scope[/utils/exec=\expandafter\pgfkeysalso\expandafter{\tikz@dv@temp@setup},
         /utils/exec=\pgf@signalstyle.emit()]
    \node[/tikz/data visualization/node styling,
          /utils/exec=\expandafter\pgfkeysalso\expandafter{\tikz@dv@temp@style}]
    {\tikz@dv@pre@height\tikz@dv@temp@lab\tikz@dv@post@height};
    \scope[/utils/exec=\expandafter\pgfkeysalso\expandafter{\tikz@dv@temp@visual@styling}]
      \iftikz@lib@dv@text@only
      \else
        \pgfkeysvalueof{/tikz/data visualization/legend entry options/visualizer in legend}
      \fi
    \endscope
  \endscope
}%

\def\tikz@dv@pre@height{\hbox{\vrule height .75em width0pt}}%
\def\tikz@dv@post@height{\hbox{\vrule depth .25em width0pt}}%



\pgfkeys{
  /tikz/data visualization/legend entry options/.cd,
  text/.initial=,
  node style/.style={/tikz/data visualization/node style={#1}},
  legend/.initial=main legend,
  setup/.initial=,
  visualizer in legend/.initial=,
  visualizer in legend styling/.initial=,
  visualizer in legend style/.style={visualizer in legend styling/.append={,#1}},
  text right/.style={
    node style={anchor=mid west,inner ysep=1pt,inner xsep=0pt,reset cm,xshift=.333em},
    visualizer in legend style={reset cm},
  },
  text left/.style={
    node style={anchor=mid east,inner ysep=1pt,inner xsep=0pt,reset
      cm,xshift=-.333em,align=right},
    visualizer in legend style={reset cm,xscale=-1},
  },
  text only/.style={
    node style={anchor=mid west,inner ysep=1pt,inner xsep=0pt,reset cm,text=visualizer color},
    /utils/exec=\tikz@lib@dv@text@onlytrue
  },
  text colored/.style=/tikz/data visualization/text colored,
}%
\let\tikz@lib@dv@pin@dir\pgfutil@empty
\newif\iftikz@lib@dv@text@only

\pgfkeys{
  /tikz/data visualization/visualizer options/.cd,
  label in legend/.code={\expandafter\tikz@dv@new@label@in@legend@for@visualizer\expandafter{\tikz@visualizer}{#1}},
  label in data/.code=\tikzdatavisualizationset{new label visualizer/.expand once=\expandafter{\tikz@visualizer}{auto,#1}},
  pin in data/.style={label in data={%
      node style={%
        /utils/exec={
          \ifx\tikz@lib@dv@pin@dir\pgfutil@empty
            \pgf@process{\pgfpointnormalised{%
                \pgfpointdiff%
                {\pgfpointanchor{label visualizer coordinate}{center}}%
                {\pgfpointanchor{label visualizer coordinate'}{center}}}}%
            \pgf@x=-\pgf@x\relax%
            \edef\tikz@lib@dv@temp@rot{\noexpand\pgfqpoint{\the\pgf@y}{\the\pgf@x}}%
            \tikz@addtransform{\pgftransformshift{\pgfpointscale{\tikz@lib@dv@pin@sign\tikz@pin@distance}{\tikz@lib@dv@temp@rot}}}
          \else%
            \tikz@addtransform{\pgftransformshift{\pgfpointpolar{\tikz@lib@dv@pin@dir}{\tikz@lib@dv@pin@sign\tikz@pin@distance}}}
          \fi%
        },
        append after command={
          \bgroup
            [current point is local=true]
            (\tikzlastnode) edge [solid, every pin edge] (label visualizer coordinate)
          \egroup%
      }},
      ,#1}},
  style/.style={/tikz/data visualization/visualizers/\tikz@visualizer/styling/.append style={,#1}},
  label in legend options/.style={/tikz/data visualization/visualizers/\tikz@visualizer/label in legend options/.append style={,#1}},
  ignore style sheets/.style={/tikz/data visualization/visualizers/\tikz@visualizer/signal/.code=,/utils/exec=\advance\tikzdvvisualizercounter by -1\relax},
}%

\def\tikz@dv@new@label@in@legend@for@visualizer#1#2{
  \tikzdatavisualizationset{
    new legend entry={
      visualizer in legend style={/tikz/data visualization/visualizers/#1/styling/.try},
      /tikz/data visualization/every label in legend/.try,
      /tikz/.cd,
      every label/.try,
      /tikz/data visualization/legend entry options/.cd,
      setup={/data point/set={#1}},
      /tikz/data visualization/visualizers/#1/label in legend options/.try,
      #2,
    }
  }
}%

\def\tikz@dv@legend@entry@as@example{
  \pgfkeysgetvalue{/data point/set}{\tikz@visualizer}
  \pgfkeysvalueof{/data point/\tikz@visualizer/execute at begin}
  \tikz@dv@plot@handler
  \pgfplotstreamstart
  \pgfkeysgetvalue{/tikz/data visualization/legend entry options/label in legend line coordinates}{\tikz@dv@temp}
  \foreach \coordinate in \tikz@dv@temp
  { \pgfplotstreampoint{\expandafter\tikz@scan@one@point\expandafter\pgfutil@firstofone\coordinate} }
  \pgfplotstreamend
  \pgfkeysvalueof{/data point/\tikz@visualizer/execute at end}
  \pgfkeysvalueof{/data point/\tikz@visualizer/execute at begin}
  \tikz@dv@plot@mark@maker
  \pgfplotstreamstart
  \pgfkeysgetvalue{/tikz/data visualization/legend entry options/label in legend mark coordinates}{\tikz@dv@temp}
  \foreach \coordinate in \tikz@dv@temp
  { \pgfplotstreampoint{\expandafter\tikz@scan@one@point\expandafter\pgfutil@firstofone\coordinate} }
  \pgfplotstreamend
  \pgfkeysvalueof{/data point/\tikz@visualizer/execute at end}
}%


\tikzdatavisualizationset{
  legend entry options/.cd,
  label in legend line coordinates/.initial=,
  label in legend rectangle coordinates/.initial={(-1ex,-.5ex),(-1ex,0.968ex),(0ex,0.968ex),(0ex,-.5ex)},
  label in legend mark coordinates/.initial=,
  label in legend one mark/.style={
    label in legend line coordinates={},
    label in legend mark coordinates={(0,0)},
  },
  label in legend three marks/.style={
    label in legend line coordinates={},
    label in legend mark coordinates={(-3ex,-.3ex),(-1.5ex,.3ex),(0,0)},
  },
  straight label in legend line/.style={
    label in legend line coordinates={(-2em,0),(-1.5em,0),(-.5em,0),(0,0)},
    label in legend mark coordinates={(-1.5em,0),(-.5em,0)},
  },
  zig zag label in legend line/.style={
    label in legend line coordinates={(-2em,0),(-1.5em,.3ex),(-.5em,-.3ex),(0,0)},
    label in legend mark coordinates={(-1.5em,.3ex),(-.5em,-.3ex)},
  },
  circular label in legend line/.style={
    label in legend line coordinates={%
      ([xshift=-1em]0:.9em and .35ex),%
      ([xshift=-1em]45:.9em and .35ex),%
      ([xshift=-1em]90:.9em and .35ex),%
      ([xshift=-1em]135:.9em and .35ex),%
      ([xshift=-1em]180:.9em and .35ex),%
      ([xshift=-1em]225:.9em and .35ex),%
      ([xshift=-1em]270:.9em and .35ex),%
      ([xshift=-1em]315:.9em and .35ex)},%
    label in legend mark coordinates={([xshift=-1em]120:.9em and .35ex),([xshift=-1em]-60:.9em and .35ex)},
  },
  gap circular label in legend line/.style={
    label in legend line coordinates={%
      ([xshift=-1em,yshift=.2ex]90:1.4ex and 0.9ex),%
      ([xshift=-1em,yshift=.2ex]162:1.4ex and 0.9ex),%
      ([xshift=-1em,yshift=.2ex]234:1.4ex and 0.9ex),%
      ([xshift=-1em,yshift=.2ex]306:1.4ex and 0.9ex),%
      ([xshift=-1em,yshift=.2ex]18:1.4ex and 0.9ex)},
    label in legend mark coordinates={
      ([xshift=-1em,yshift=.2ex]90:1.4ex and 0.9ex),%
      ([xshift=-1em,yshift=.2ex]162:1.4ex and 0.9ex),%
      ([xshift=-1em,yshift=.2ex]234:1.4ex and 0.9ex),%
      ([xshift=-1em,yshift=.2ex]306:1.4ex and 0.9ex),%
      ([xshift=-1em,yshift=.2ex]18:1.4ex and 0.9ex)}
  },
  default label in legend path/.style={zig zag label in legend line},
  default label in legend closed path/.style={circular label in legend line},
  default label in legend mark/.style={label in legend one mark},
}%


\def\tikz@dv@legend@entry@visualizer@visualizer{
}%




\tikzdatavisualizationset{
  visualize as line/.style={
    new object={
      when=after survey,
      store=/tikz/data visualization/visualizers/#1,
      class=plot handler visualizer,
      arg1=#1,
      arg2={\tikz@dv@plot@handler,\tikz@dv@plot@mark@maker}
    },
    new visualizer={#1}{%
      every path/.style={draw},
      style={every mark/.append style={color=visualizer color}},
      mark size=2pt,
      semithick,
      color=visualizer color,
      mark=none,
      /tikz/data visualization/every visualize as line/.try,
    }{visualizer in legend=\tikz@dv@legend@entry@as@example},
    #1={straight line}
  },
  visualize as line/.default=line,
  visualize as smooth line/.style={
    visualize as line={#1},
    #1={smooth line}
  },
  visualize as smooth line/.default=line,
  visualize as smooth cycle/.style={
    visualize as smooth line={#1},
    #1={smooth cycle}
  },
  visualize as smooth cycle/.default=line,
  visualize as scatter/.style={
    new object={
      when=after survey,
      store=/tikz/data visualization/visualizers/#1,
      class=plot handler visualizer,
      arg1=#1,
      arg2={\tikz@dv@plot@mark@maker}
    },
    new visualizer={#1}{%
      mark=x,
      mark size=2pt,
      style={every mark/.append style={color=visualizer color}},
      /tikz/data visualization/every visualize as scatter/.try,
    }{visualizer in legend=\tikz@dv@legend@entry@as@example},
    #1={no lines}
  },
  visualize as scatter/.default=scatter
}%

\def\tikz@dv@plot@mark@maker{
  \let\tikz@options=\pgfutil@empty%
  \let\tikz@transform=\pgfutil@empty%
  \tikzset{solid,shift only,every mark}%
  \tikz@options%
  \ifx\tikz@plot@mark\pgfutil@empty%
    \pgfplothandlerdiscard
  \else
    \pgfplothandlermark{\tikz@transform\pgfuseplotmark{\tikz@plot@mark}}
  \fi
}%





\tikzdatavisualizationset{
  visualize as rectangles/.style={
    new object={
      when=before survey,
      store=/tikz/data visualization/visualizers/#1,
      class=rectangle visualizer,
      arg1=#1
    },
    /data point/#1/attribute 1/.initial=x,
    /data point/#1/attribute 2/.initial=y,
    new visualizer={#1}{%
      every path/.style={draw},
      semithick,
      color=visualizer color,
      /tikz/data visualization/every visualize as rectangles/.try,
    }{visualizer in legend=\tikz@dv@legend@entry@as@rectangle},
    #1={}
  },
  visualize as rectangles/.default=rectangles,
  visualizer options/.cd,
  attribute 1/.style={/data point/\tikz@visualizer/attribute 1={#1}},
  attribute 2/.style={/data point/\tikz@visualizer/attribute 2={#1}},
}%



\def\tikz@dv@legend@entry@as@rectangle{
  \pgfkeysgetvalue{/data point/set}{\tikz@visualizer}
  \pgfkeysvalueof{/data point/\tikz@visualizer/execute at begin}
  \pgfplothandlerpolygon
  \pgfplotstreamstart
  \pgfkeysgetvalue{/tikz/data visualization/legend entry options/label in legend rectangle coordinates}{\tikz@dv@temp}
  \foreach \coordinate in \tikz@dv@temp
  { \pgfplotstreampoint{\expandafter\tikz@scan@one@point\expandafter\pgfutil@firstofone\coordinate} }
  \pgfplotstreamend
  \pgfkeysvalueof{/data point/\tikz@visualizer/execute at end}
}%






\pgfkeysdef{/handlers/.style sheet}{%
  \edef\pgf@marshal{
    \noexpand \pgfoonew \noexpand\tikz@dv@temp=new style attribute(\pgfkeyscurrentpath,#1)
    \noexpand \tikz@dv@temp.default connects()
  }
  \pgf@marshal
}%

\tikzset{
  visualizer color/.code=\colorlet{visualizer color}{#1},
  visualizer color=black
}%


\pgfdvdeclarestylesheet{vary thickness}
{
  default style/.style={line width={0.3pt+(#1)*0.2pt}}
}%

\pgfdvdeclarestylesheet{vary dashing}
{
  default style/.style=solid,
  1/.style=solid,
  2/.style={dash pattern=on 5\pgflinewidth off 2\pgflinewidth},
  3/.style={dash pattern=on 1.5\pgflinewidth off 1.5\pgflinewidth},
  4/.style={dash pattern=on 5\pgflinewidth off 1.5\pgflinewidth on 1.5\pgflinewidth off 1.5\pgflinewidth},
  5/.style={dash pattern=on 10\pgflinewidth off 3\pgflinewidth},
  6/.style={dash pattern=on 10\pgflinewidth off 2\pgflinewidth on 2\pgflinewidth off 2\pgflinewidth},
  7/.style={dash pattern=on 8\pgflinewidth off 2\pgflinewidth on
    1.5\pgflinewidth off 1.5\pgflinewidth on 1.5\pgflinewidth off
    1.5\pgflinewidth on 1.5\pgflinewidth off 1.5\pgflinewidth}
}%

\pgfdvdeclarestylesheet{vary thickness and dashing}
{
  default style/.style=thin,
  1/.style=thin,
  2/.style=thick,
  3/.style={
    dash pattern=on 5\pgflinewidth off 2\pgflinewidth,
    thin
  },
  4/.style={
    dash pattern=on 5\pgflinewidth off 2\pgflinewidth,
    thick,
  },
  5/.style={
    dash pattern=on 1.5\pgflinewidth off 1.5\pgflinewidth,
    thin
  },
  6/.style={
    dash pattern=on 1.5\pgflinewidth off 1.5\pgflinewidth,
    thick
  },
  7/.style={
    dash pattern=on 5\pgflinewidth off 1.5\pgflinewidth on
    1.5\pgflinewidth off 1.5\pgflinewidth,
    thin
  },
  8/.style={
    dash pattern=on 5\pgflinewidth off 1.5\pgflinewidth on
    1.5\pgflinewidth off 1.5\pgflinewidth,
    thick
  },
  9/.style={
    dash pattern=on 10\pgflinewidth off 3\pgflinewidth,
    thin
  },
  10/.style={
    dash pattern=on 10\pgflinewidth off 3\pgflinewidth,
    thick
  },
  11/.style={
    dash pattern=on 10\pgflinewidth off 2\pgflinewidth on
    2\pgflinewidth off 2\pgflinewidth,
    thin
  },
  12/.style={
    dash pattern=on 10\pgflinewidth off 2\pgflinewidth on
    2\pgflinewidth off 2\pgflinewidth,
    thick
  },
  13/.style={
    dash pattern=on 8\pgflinewidth off 2\pgflinewidth on
    1.5\pgflinewidth off 1.5\pgflinewidth on 1.5\pgflinewidth off
    1.5\pgflinewidth on 1.5\pgflinewidth off 1.5\pgflinewidth,
    thin
  },
  14/.style={
    dash pattern=on 8\pgflinewidth off 2\pgflinewidth on
    1.5\pgflinewidth off 1.5\pgflinewidth on 1.5\pgflinewidth off
    1.5\pgflinewidth on 1.5\pgflinewidth off 1.5\pgflinewidth,
    thick
  }
}%


\pgfdvdeclarestylesheet{strong colors}
{
  default style/.style={visualizer color=black},
  1/.style={visualizer color=black},
  2/.style={visualizer color=red!80!black},
  3/.style={visualizer color=blue!80!black},
  4/.style={visualizer color=green!60!black},
  5/.style={visualizer color=orange!80!black},
  6/.style={visualizer color=black!60}
}%


\pgfdvdeclarestylesheet{cross marks}
{
  default style/.style={mark=x,every mark/.append style=thin,mark size=2pt},
  1/.style={mark=x,every mark/.append style=thin,mark size=2pt},
  2/.style={mark=+,every mark/.append style=thin,mark size=2pt},
  3/.style={mark=Mercedes star,every mark/.append style=thin,mark size=2pt},
  4/.style={mark=Mercedes star flipped,every mark/.append style=thin,mark size=2pt},
  5/.style={mark=star,every mark/.append style=thin,mark size=2pt},
  6/.style={mark=10-pointed star,every mark/.append style={line width=.3pt,mark size=1.8pt}}
}%


\pgfdvdeclarestylesheet{* mark}
{
  default style/.style={mark=*,every mark/.append style=thin,mark size=1.4pt},
}%

\pgfdvdeclarestylesheet{dot mark}
{
  default style/.style={mark=*,every mark/.append style=thin,mark size=0.6pt},
}%


\pgfdvdeclarestylesheet{o mark}
{
  default style/.style={mark=o,every mark/.append style=thin,mark size=1.4pt},
}%




\def\tikzdvdeclarestylesheetcolorseries#1#2#3#4{%
  \definecolorseries{tikzdvcolorseries#1}{#2}{step}[#2]{#3}{#4}%
  \resetcolorseries{tikzdvcolorseries#1}%
  \pgfdvdeclarestylesheet{#1}
  {
    default style/.style={
      /utils/exec=\colorlet{tikz@dv@temp}[rgb]{tikzdvcolorseries#1!![##1]},
      visualizer color=tikz@dv@temp
    }
  }%
}%

\tikzdvdeclarestylesheetcolorseries{vary hue}{hsb}{.4,0.9,0.8}{.213,0,0}%
\tikzdvdeclarestylesheetcolorseries{shades of blue}{hsb}{.65,1.4,1}{0,-.4,-.0}%
\tikzdvdeclarestylesheetcolorseries{shades of red}{hsb}{0,1.4,1}{0,-.4,-.0}%
\tikzdvdeclarestylesheetcolorseries{gray scale}{hsb}{0,0,-.34}{0,0,.34}%








\tikzdatavisualizationset{
  xy Cartesian/.style={
    new Cartesian axis=x axis,
    x axis={attribute=x,unit vector={(1pt,0cm)}},
    new Cartesian axis=y axis,
    y axis={attribute=y,unit vector={(0cm,1pt)}}
  },
  Xy axes/.style={x axis={#1},y axis={#1}},
  uv Cartesian/.style={
    new Cartesian axis=u axis,
    u axis={attribute=u,unit vector={(1pt,0cm)}},
    new Cartesian axis=v axis,
    v axis={attribute=v,unit vector={(0cm,1pt)}}
  },
  uv axes/.style={u axis={#1},v axis={#1}},
}%

\tikzdatavisualizationset{
  xyz Cartesian cabinet/.style={
    xy Cartesian,
    new Cartesian axis=z axis,
    z axis={attribute=z,unit vector={(-0.353553pt,-0.353553pt)}}
  },
  xyz axes/.style={x axis={#1},y axis={#1},z axis={#1}},
  uvw Cartesian cabinet/.style={
    uv Cartesian,
    new Cartesian axis=w axis,
    w axis={attribute=w,unit vector={(-0.353553pt,-0.353553pt)}}
  }
  uvw axes/.style={u axis={#1},v axis={#1},w axis={#1}},
}%




\tikzdatavisualizationset{
  new axis system/.style n args={4}{
    #1/.style={
      #2,
      #1/.cd,
      #3,
      /tikz/data visualization/every #1/.try,
      ##1,
      /tikz/data visualization/.cd,
      #4,
    }
  }
}%



\tikzdatavisualizationset{
  new axis system={school book axes}{%
    xy Cartesian,
    x axis={
      include value=0,
      scaling=0 at 0 and \pgfkeysvalueof{/tikz/data visualization/school book axes/unit} at 1cm,
      visualize axis={y axis={goto=0},style=->,padded},
      visualize ticks={common={y axis={goto=0},direction axis=y axis},
        major={tick text at low,
          options at=0 as [{style={draw=none},no tick text}]
        }},
      visualize grid={common={direction axis=y axis,padded}},
      ticks={step=\pgfkeysvalueof{/tikz/data visualization/school book axes/unit}},
      padding=0.75em
    },
    y axis={
      include value=0,
      scaling=0 at 0 and \pgfkeysvalueof{/tikz/data visualization/school book axes/unit} at 1cm,
      visualize axis={x axis={goto=0},style=->,padded},
      visualize ticks={
        common={x axis={goto=0},direction axis=x axis},
        major={tick text at low,options at=0 as [{high=0,low=0,style={draw=none},node style={anchor=north east}}]}
      },
      visualize grid={common={direction axis=x axis,padded}},
      ticks={step=\pgfkeysvalueof{/tikz/data visualization/school book axes/unit}},
      padding=0.75em
    }
  }{%
    standard labels
  }{%
    @make labels
  },
  school book axes/.cd,
  standard labels/.style={
    /tikz/data visualization/@make labels/.style={
      x axis={
        visualize label={
          x axis={goto=padded max, anchor at max},
          y axis={goto=0}
        }
      },
      y axis={
        visualize label={
          y axis={goto=padded max, anchor at max},
          x axis={goto=0}
        }
      }
    }
  },
  unit/.initial=1,
}%





\tikzdatavisualizationset{
  new axis system={scientific axes}{%
    xy Cartesian,
    every axis/.append style={style={draw=black!50}},
    every ticks/.append style={style={draw=black!50}},
    x axis={
      length=\pgfkeysvalueof{/tikz/data visualization/scientific axes/width},
      ticks
    },
    y axis={
      length=\pgfkeysvalueof{/tikz/data visualization/scientific axes/height},
      ticks
    }
  }{%
    standard labels,
    outer ticks,
  }{%
    @make axes,
    @make labels
  },
  scientific axes/.cd,
  width/.initial=5cm,
  height/.initial=0.618*\pgfkeysvalueof{/tikz/data visualization/scientific axes/width},%
  outer ticks/.style={
    /tikz/data visualization/@make axes/.style={
      x axis={
        visualize ticks={common={y axis={goto=padded min},direction axis=y axis,high=0pt},major={tick text at low}},
        visualize ticks={common={y axis={goto=padded max},direction axis=y axis,low=0pt}},
        visualize axis={y axis={goto=padded min},padded},
        visualize axis={y axis={goto=padded max},padded},
        visualize grid={common={direction axis=y axis,padded}},
      },
      y axis={
        visualize ticks={common={x axis={goto=padded min},direction axis=x axis,high=0pt},major={tick text at low}},
        visualize ticks={common={x axis={goto=padded max},direction axis=x axis,low=0pt}},
        visualize axis={x axis={goto=padded min},padded},
        visualize axis={x axis={goto=padded max},padded},
        visualize grid={common={direction axis=x axis,padded}},
      }
    }
  },
  inner ticks/.style={
    /tikz/data visualization/@make axes/.style={
      x axis={
        visualize ticks={common={y axis={goto=padded min},direction axis=y axis,low=0pt},major={tick text at low}},
        visualize ticks={common={y axis={goto=padded max},direction axis=y axis,high=0pt}},
        visualize axis={y axis={goto=padded min},padded},
        visualize axis={y axis={goto=padded max},padded},
        visualize grid={common={direction axis=y axis,padded}},
      },
      y axis={
        visualize ticks={common={x axis={goto=padded min},direction axis=x axis,low=0pt},major={tick text at low}},
        visualize ticks={common={x axis={goto=padded max},direction axis=x axis,high=0pt}},
        visualize axis={x axis={goto=padded min},padded},
        visualize axis={x axis={goto=padded max},padded},
        visualize grid={common={direction axis=x axis,padded}},
      }
    }
  },
  clean/.style={
    /tikz/data visualization/@make axes/.style={
      x axis={
        visualize ticks={common={y axis={goto=padded min},direction axis=y axis,high=0pt},major={tick text at low}},
        visualize axis={y axis={goto=padded min}},
        visualize axis={y axis={goto=min}, style={black!25, line cap=rect}},
        visualize axis={y axis={goto=max}, style={black!25, line cap=rect}},
        visualize grid={common={direction axis=y axis}},
        padding=.5em,
      },
      y axis={
        visualize ticks={common={x axis={goto=padded min},direction axis=x axis,high=0pt},major={tick text at low}},
        visualize axis={x axis={goto=padded min}},
        visualize axis={x axis={goto=min}, style={black!25, line cap=rect}},
        visualize axis={x axis={goto=max}, style={black!25, line cap=rect}},
        visualize grid={common={direction axis=x axis}},
        padding=.5em
      },
    }
  },
  standard labels/.style={
    /tikz/data visualization/@make labels/.style={
      x axis={
        visualize label={
          x axis={goto pos=.5},
          node style={
            at={(0,0 |- data visualization bounding box.south)},
            below
          }
        }
      },
      y axis={
        visualize label={
          y axis={goto pos=.5},
          node style={
            at={(0,0 -| data visualization bounding box.west)},
            rotate=90,
            above}
        }
      }
    }
  },
  upright labels/.style={
    /tikz/data visualization/@make labels/.style={
      x axis={
        visualize label={
          x axis={goto pos=.5},
          node style={
            at={(0,0 |- data visualization bounding box.south)},
            below
          }
        }
      },
      y axis={
        visualize label={
          y axis={goto pos=.5},
          node style={
            at={(0,0 -| data visualization bounding box.west)},
            left
          }
        }
      }
    }
  },
  end labels/.style={
    /tikz/data visualization/@make labels/.style={
      x axis={
        visualize label={
          y axis={goto=padded min},
          node style={
            at={(0,0 -| data visualization bounding box.east)},
            right
          }
        }
      },
      y axis={
        visualize label={
          x axis={goto=padded min},
          node style={
            at={(0,0 |- data visualization bounding box.north)},
            above
          }
        }
      }
    }
  }
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.formats.functions.code.tex ====

\ProvidesFileRCS{tikzlibrarydatavisualization.formats.functions.code.tex}

\usetikzlibrary{datavisualization}%
\usepgflibrary{datavisualization.formats.functions}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.formats.functions.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.polar.code.tex ====

\ProvidesFileRCS{tikzlibrarydatavisualization.polar.code.tex}

\usetikzlibrary{datavisualization}%
\usepgflibrary{datavisualization.polar}%


\tikzdatavisualizationset{%
  new polar axes/.style 2 args={
    new axis base=#1,
    #1={attribute=angle},
    new axis base=#2,
    #2={attribute=radius},
    #2/scaling/default=0 at 0 and 1 at 1cm,
    new object={
      store=/tikz/data visualization/#1/polar transformer,
      class=polar transformer,
      arg1/.expanded=\pgfkeysvalueof{/tikz/data visualization/angle axis/attribute}/scaled,
      arg2/.expanded=\pgfkeysvalueof{/tikz/data visualization/radius axis/attribute}/scaled,
      arg3 from key=/tikz/data visualization/#1/unit vector 0 degrees,
      arg4 from key=/tikz/data visualization/#1/unit vector 90 degrees
    },
    /tikz/data visualization/#1/unit vector 0 degrees/.initial=\pgfqpoint{1pt}{0pt},
    /tikz/data visualization/#1/unit vector 90 degrees/.initial=\pgfqpoint{0pt}{1pt},
  },
  new polar axes/.default={angle axis}{radius axis}
}%
\def\tikz@lib@dv@polar@a#1{
  \pgfkeyssetvalue{\tikz@dv@axis/unit vector 0 degrees}{#1}
}%
\def\tikz@lib@dv@polar@b#1{
  \pgfkeyssetvalue{\tikz@dv@axis/unit vector 90 degrees}{#1}
}%




\tikzset{
  /tikz/data visualization/axis options/.cd,
  unit vectors/.code 2 args={
    \tikz@scan@one@point\tikz@lib@dv@polar@a#1
    \tikz@scan@one@point\tikz@lib@dv@polar@b#2
  },
  degrees/.style={\tikz@dv@axis/scaling=0 at 0 and 1 at 1},
  radians/.style={\tikz@dv@axis/scaling=0 at 0 and 0.03141592653589793 at 1.8},
}%



\tikzdatavisualizationset{
  new axis system={scientific polar axes}{%
    new polar axes,
    angle axis={attribute=angle},
    radius axis={attribute=radius},
    every axis/.append style={style={draw=black!50}},
    every ticks/.append style={style={draw=black!50}},
  }{%
    0 to 360,%
    outer ticks,
  }{%
    @make axes,
    scientific polar axes/@setup axes,
    /utils/exec={
      \edef\pgf@marshal{\noexpand\tikzdatavisualizationset{\pgfkeysvalueof{/tikz/data visualization/@which visualize radius axis}/.list={\pgfkeysvalueof{/tikz/data visualization/\pgfkeysvalueof{/tikz/data visualization/@which radius axes at}}}}}
      \pgf@marshal
    },
    @make labels
  },
  @which radius axes at/.initial=@inner radius axes at,
  @which visualize radius axis/.initial=@visualize radius axis,
  @inner radius axes at/.initial=,
  @clean radius axes at/.initial=,
  @visualize radius axis/.style 2 args={
    radius axis={
      visualize axis={angle axis={goto=#1},high=padded max,low=0},
      visualize ticks={
        common={angle axis={goto=#1}, direction axis=angle axis},
        major={tick text at #2,
          options at=0 as [{style={draw=none},no tick text}]
        }
      }
    }
  },
  @visualize clean radius axis/.style n args={5}{
    radius axis={
      visualize axis={angle
        axis={goto=#1},high=max,low=0,style={black!25,line cap=rect}},
      visualize axis={angle
        axis={goto=#1},high=max,low=0,style={line cap=rect,#4}},
      visualize ticks={
        style={#4},
        common={angle axis={goto=#1}, direction axis=angle axis, #3=0},
        major={tick text at #2,#5}
      }
    }
  },
  @visualize zero/.style={@inner visualize zero={#1}},
  @clean visualize zero/.style={},
  @inner visualize zero/.style={
    radius axis={
      visualize ticks={
        common={angle axis={goto=0}, direction axis=angle axis},
        major={tick text at low,low=0,high=0,at=0 as
          [{style={draw=none},node style={anchor=#1}}]
        }
      }
    }
  },
  @degrees/.style={
    angle axis={degrees, ticks={step=15, tick suffix=$^\circ$, major={
          options at=360 as [{style={draw=none},no tick text}],
          options at=-180 as [{style={draw=none},no tick text}]}}}
  },
  @rad/.style={
    angle axis={radians, ticks={
        step=(pi/12),
        node style={
          /pgf/number format/frac,
          /pgf/number format/frac shift={1}
        },
        tick typesetter/.code={%
          \pgfmathsetmacro{\tikz@lib@dv@pol}{round(####1*3.819718634205488)/12}%
          \pgfmathapproxequalto{\tikz@lib@dv@pol}{0}%
          \ifdim\pgfmathresult pt=1.0pt%
            $0$%
          \else%
            \pgfmathapproxequalto{\tikz@lib@dv@pol}{1}%
            \ifdim\pgfmathresult pt=1.0pt%
              $\pi$%
            \else
              \pgfmathapproxequalto{\tikz@lib@dv@pol}{-1}%
              \ifdim\pgfmathresult pt=1.0pt%
                $-\pi$%
              \else%
                \pgfmathprintnumber{\tikz@lib@dv@pol}$\pi$%
              \fi%
            \fi%
          \fi%
        },
        major={
          options at=6.2831985e0 as [{style={draw=none},no tick text}],
          options at=6.2831192e0 as [{style={draw=none},no tick text}],
          options at=6.2830794e0 as [{style={draw=none},no tick text}],
          options at=6.2828787e0 as [{style={draw=none},no tick text}],
          options at=6.2831598e0 as [{style={draw=none},no tick text}],
          options at=-3.1415991e0 as [{style={draw=none},no tick text}],
          options at=-3.1415802e0 as [{style={draw=none},no tick text}],
          options at=-3.1415602e0 as [{style={draw=none},no tick text}],
          options at=-3.14153961e0 as [{style={draw=none},no tick text}],
          options at=-3.1414406e0 as [{style={draw=none},no tick text}],
        }
      }
    }
  },
  @make labels/.style={},
}%

\tikzdatavisualizationset{
  scientific polar axes/.cd,
  outer ticks/.style={
    /tikz/data visualization/@make axes/.style={
      radius axis={
        min value=0,
        length=\pgfkeysvalueof{/tikz/data visualization/scientific polar axes/radius},
        padding=0em,
        ticks={few},
        visualize grid={common={direction axis=angle axis,low=min,high=max}},
      },
      angle axis={
        visualize axis={radius axis={goto=padded max},low=min,high=max},
        visualize ticks={common={radius axis={goto=padded max},direction
            axis=radius axis},common={low=0},major={tick text at high}},
        visualize grid={common={direction axis=radius axis},low=0,high=padded max},
      }
    },
    /tikz/data visualization/@which radius axes at=@inner radius axes at,
    /tikz/data visualization/@which visualize radius axis=@visualize radius axis,
    /tikz/data visualization/@visualize zero/.style={@inner visualize zero={##1}},
  },
  inner ticks/.style={
    /tikz/data visualization/@make axes/.style={
      radius axis={
        min value=0,
        length=\pgfkeysvalueof{/tikz/data visualization/scientific polar axes/radius},
        padding=0em,
        ticks={few},
        visualize grid={common={direction axis=angle axis,low=min,high=max}},
      },
      angle axis={
        visualize axis={radius axis={goto=padded max},low=min,high=max},
        visualize ticks={common={radius axis={goto=padded max},direction
            axis=radius axis},common={high=0},major={tick text at high}},
        visualize grid={common={direction axis=radius axis},low=0,high=padded max},
      }
    },
    /tikz/data visualization/@which radius axes at=@inner radius axes at,
    /tikz/data visualization/@which visualize radius axis=@visualize radius axis,
    /tikz/data visualization/@visualize zero/.style={@inner visualize zero={##1}},
  },
  clean/.style={
    /tikz/data visualization/@make axes/.style={
      radius axis={
        min value=0,
        length=\pgfkeysvalueof{/tikz/data visualization/scientific polar axes/radius},
        padding=.5em,
        ticks={few},
        visualize grid={common={direction axis=angle axis,low=min,high=max}},
      },
      angle axis={
        padding=.5em,
        visualize axis={radius axis={goto=max}, style={black!25, line cap=rect},low=min,high=max},
        visualize axis={radius axis={goto=padded max}, style={line cap=rect}, low=min,high=max},
        visualize ticks={common={radius axis={goto=padded max}, direction axis=radius axis},common={low=0},major={tick text at high}},
        visualize grid={common={direction axis=radius axis},low=0,high=max},
      }
    },
    /tikz/data visualization/@which radius axes at=@clean radius axes at,
    /tikz/data visualization/@which visualize radius axis=@visualize clean radius axis,
    /tikz/data visualization/@visualize zero/.style={@clean visualize zero={##1}},
  },
  radius/.initial=3.25cm,
  0 to pi half/.style={
    @setup axes/.style={
      angle axis={min value=0, max value=1.570796326794897},
      @rad,
      @visualize zero=north east,
      @inner radius axes at={{0}{low},{1.570796326794897}{high}},
      @clean radius axes at={%
        {0}{low}{high}{yshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {1.570796326794897}{high}{low}{xshift=-\pgfkeysvalueof{/tikz/data visualization/angle axis/padding max}}{}
      }
    }
  },
  0 to 90/.style={
    @setup axes/.style={
      angle axis={min value=0, max value=90},
      @degrees,
      @visualize zero=north east,
      @inner radius axes at={{0}{low},{90}{high}},
      @clean radius axes at={%
        {0}{low}{high}{yshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {90}{high}{low}{xshift=-\pgfkeysvalueof{/tikz/data visualization/angle axis/padding max}}{}
      }
    }
  },
  quadrant/.style={
    @setup axes/.style={
      angle axis={scaling=min at 0 and max at 90, ticks},
      @visualize zero=north east,
      @inner radius axes at={{min}{low},{max}{high}},
      @clean radius axes at={%
        {min}{low}{high}{yshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {max}{high}{low}{xshift=-\pgfkeysvalueof{/tikz/data visualization/angle axis/padding max}}{}
      }
    }
  },
  quadrant clockwise/.style={
    @setup axes/.style={
      angle axis={scaling=min at 90 and max at 0, ticks},
      @visualize zero=north east,
      @inner radius axes at={{min}{low},{max}{high}},
      @clean radius axes at={%
        {max}{high}{low}{yshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {min}{low}{high}{xshift=-\pgfkeysvalueof{/tikz/data visualization/angle axis/padding max}}{}
      }
    }
  },
  -pi half to 0/.style={
    @setup axes/.style={
      angle axis={min value=-1.570796326794897, max value=0},
      @rad,
      @visualize zero=south east,
      @inner radius axes at={{-1.570796326794897}{low},{0}{high}},
      @clean radius axes at={%
        {-1.570796326794897}{low}{high}{xshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {0}{high}{low}{yshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding max}}{}
      }
    }
  },
  -90 to 0/.style={
    @setup axes/.style={
      angle axis={min value=-90, max value=0},
      @degrees,
      @visualize zero=south east,
      @inner radius axes at={{-90}{low},{0}{high}},
      @clean radius axes at={%
        {-90}{low}{high}{xshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {0}{high}{low}{yshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding max}}{}
      }
    }
  },
  fourth quadrant/.style={
    @setup axes/.style={
      angle axis={scaling=min at -90 and max at 0, ticks},
      @visualize zero=south east,
      @inner radius axes at={{min}{low},{max}{high}},
      @clean radius axes at={%
        {min}{low}{high}{xshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {max}{high}{low}{yshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding max}}{}
      }
    }
  },
  fourth quadrant clockwise/.style={
    @setup axes/.style={
      angle axis={scaling=min at 0 and max at -90, ticks},
      @visualize zero=south east,
      @inner radius axes at={{min}{low},{max}{high}},
      @clean radius axes at={%
        {max}{high}{low}{xshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {min}{low}{high}{yshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding max}}{}
      }
    }
  },
  0 to pi/.style={
    @setup axes/.style={
      angle axis={min value=0, max value=3.141592653589793},
      @rad,
      @visualize zero=north,
      @inner radius axes at={{0}{low},{1.570796326794897}{high},{3.141592653589793}{high}},
      @clean radius axes at={%
        {0}{low}{high}{yshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {3.141592653589793}{high}{low}{yshift=-\pgfkeysvalueof{/tikz/data
            visualization/angle axis/padding max}}{options at=0 as
          [{style={draw=none}, no tick text}]}
      }
    }
  },
  0 to 180/.style={
    @setup axes/.style={
      angle axis={min value=0, max value=180},
      @degrees,
      @visualize zero=north,
      @inner radius axes at={{0}{low},{90}{high},{180}{high}},
      @clean radius axes at={%
        {0}{low}{high}{yshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {180}{high}{low}{yshift=-\pgfkeysvalueof{/tikz/data
            visualization/angle axis/padding max}}{options at=0 as
          [{style={draw=none}, no tick text}]}
      }
    }
  },
  upper half/.style={
    @setup axes/.style={
      angle axis={scaling=min at 0 and max at 180, ticks},
      @visualize zero=north,
      @inner radius axes at={{min}{low},{max}{high}},
      @clean radius axes at={%
        {min}{low}{high}{yshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {max}{high}{low}{yshift=-\pgfkeysvalueof{/tikz/data
            visualization/angle axis/padding max}}{options at=0 as
          [{style={draw=none}, no tick text}]}
      }
    }
  },
  upper half clockwise/.style={
    @setup axes/.style={
      angle axis={scaling=min at 180 and max at 0, ticks},
      @visualize zero=north,
      @inner radius axes at={{min}{low},{max}{high}},
      @clean radius axes at={%
        {min}{low}{high}{yshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {max}{high}{low}{yshift=-\pgfkeysvalueof{/tikz/data
            visualization/angle axis/padding max}}{options at=0 as
          [{style={draw=none}, no tick text}]}
      }
    }
  },
  lower half/.style={
    @setup axes/.style={
      angle axis={scaling=min at -180 and max at 0, ticks},
      @visualize zero=south,
      @inner radius axes at={{min}{low},{max}{high}},
      @clean radius axes at={%
        {min}{low}{high}{yshift=-\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {max}{high}{low}{yshift=\pgfkeysvalueof{/tikz/data
            visualization/angle axis/padding max}}{options at=0 as
          [{style={draw=none}, no tick text}]}
      }
    }
  },
  lower half clockwise/.style={
    @setup axes/.style={
      angle axis={scaling=min at 0 and max at -180, ticks},
      @visualize zero=south,
      @inner radius axes at={{min}{low},{max}{high}},
      @clean radius axes at={%
        {min}{low}{high}{yshift=-\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {max}{high}{low}{yshift=\pgfkeysvalueof{/tikz/data
            visualization/angle axis/padding max}}{options at=0 as
          [{style={draw=none}, no tick text}]}
      }
    }
  },
  -pi half to pi half/.style={
    @setup axes/.style={
      @rad,
      angle axis={min value=-1.570796326794897, max value=1.570796326794897},
      @visualize zero=east,
      @inner radius axes at={{0}{low},{1.570796326794897}{low},{-1.570796326794897}{high}},
      @clean radius axes at={%
        {-1.570796326794897}{low}{high}{xshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {1.570796326794897}{high}{low}{xshift=-\pgfkeysvalueof{/tikz/data
            visualization/angle axis/padding max}}{options at=0 as
          [{style={draw=none}, no tick text}]}
      }
    }
  },
  -90 to 90/.style={
    @setup axes/.style={
      angle axis={min value=-90, max value=90},
      @degrees,
      @visualize zero=east,
      @inner radius axes at={{-90}{low},{0}{low},{90}{high}},
      @clean radius axes at={%
        {-90}{low}{high}{xshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {90}{high}{low}{xshift=-\pgfkeysvalueof{/tikz/data
            visualization/angle axis/padding max}}{options at=0 as
          [{style={draw=none}, no tick text}]}
      }
    }
  },
  right half/.style={
    @setup axes/.style={
      angle axis={scaling=min at -90 and max at 90, ticks},
      @visualize zero=east,
      @inner radius axes at={{min}{low},{max}{high}},
      @clean radius axes at={%
        {min}{low}{high}{xshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {max}{high}{low}{xshift=-\pgfkeysvalueof{/tikz/data
            visualization/angle axis/padding max}}{options at=0 as
          [{style={draw=none}, no tick text}]}
      }
    }
  },
  right half clockwise/.style={
    @setup axes/.style={
      angle axis={scaling=min at 90 and max at -90, ticks},
      @visualize zero=east,
      @inner radius axes at={{min}{low},{max}{high}},
      @clean radius axes at={%
        {min}{low}{high}{xshift=\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {max}{high}{low}{xshift=-\pgfkeysvalueof{/tikz/data
            visualization/angle axis/padding max}}{options at=0 as
          [{style={draw=none}, no tick text}]}
      }
    }
  },
  left half/.style={
    @setup axes/.style={
      angle axis={scaling=min at 90 and max at 270, ticks},
      @visualize zero=west,
      @inner radius axes at={{min}{low},{max}{high}},
      @clean radius axes at={%
        {min}{low}{high}{xshift=-\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {max}{high}{low}{xshift=\pgfkeysvalueof{/tikz/data
            visualization/angle axis/padding max}}{options at=0 as
          [{style={draw=none}, no tick text}]}
      }
    }
  },
  left half clockwise/.style={
    @setup axes/.style={
      angle axis={scaling=min at 270 and max at 90, ticks},
      @visualize zero=west,
      @inner radius axes at={{min}{low},{max}{high}},
      @clean radius axes at={%
        {min}{low}{high}{xshift=-\pgfkeysvalueof{/tikz/data visualization/angle axis/padding min}}{},%
        {max}{high}{low}{xshift=\pgfkeysvalueof{/tikz/data
            visualization/angle axis/padding max}}{options at=0 as
          [{style={draw=none}, no tick text}]}
      }
    }
  },
  0 to 2pi/.style={
    @setup axes/.style={
      angle axis={min value=0, max value=6.283185307179586},
      @rad,
      @visualize zero=north east,
      @inner radius axes at={{0}{low},{1.570796326794897}{high},{3.141592653589793}{high},{4.71238898038469}{low}},
      @clean radius axes at={{0}{low}{high}{}{}}
    }
  },
  -pi to pi/.style={
    @setup axes/.style={
      angle axis={min value=-3.141592653589793, max value=3.141592653589793},
      @rad,
      @visualize zero=north east,
      @inner radius axes at={{0}{low},{1.570796326794897}{high},{3.141592653589793}{high},{-1.57079632679489}{low}},
      @clean radius axes at={{0}{low}{high}{}{}}
    }
  },
  0 to 360/.style={
    @setup axes/.style={
      angle axis={min value=0, max value=360},
      @degrees,
      @visualize zero=north east,
      @inner radius axes at={{0}{low},{90}{high},{180}{high},{270}{low}},
      @clean radius axes at={{0}{low}{high}{}{}}
    }
  },
  -180 to 180/.style={
    @setup axes/.style={
      angle axis={min value=-180, max value=180},
      @degrees,
      @visualize zero=north east,
      @inner radius axes at={{0}{low},{90}{high},{180}{high},{-90}{low}},
      @clean radius axes at={{0}{low}{high}{}{}}
    }
  },
}%





\tikzset{
  /tikz/data visualization/axis options/.cd,
  percent/.style={\tikz@dv@axis/scaling=0 at 0 and 1 at 3.6},
  full circle/.style={\tikz@dv@axis/scaling=min at 0 and max at 360},
  half circle/.style={\tikz@dv@axis/scaling=min at 0 and max at 180},
  quarter circle/.style={\tikz@dv@axis/scaling=min at 0 and max at 90}
}%




\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.polar.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.sparklines.code.tex ====

\ProvidesFileRCS{tikzlibrarydatavisualization.sparklines.code.tex}

\usetikzlibrary{datavisualization}%





\tikzdatavisualizationset{
  spark line/.style={
    xy Cartesian,
    x axis={
      unit length={1pt}
    },
    y axis={
      scaling={min at -0.2em and max at 0.8em}
    },
    new line plot,
    every spark line plot/.try
  }
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.sparklines.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/graphs/tikzlibrarygraphs.code.tex ====

\ProvidesFileRCS{tikzlibrarygraphs.code.tex}



\def\tikzgraphsset{\pgfqkeys{/tikz/graphs}}%

\tikzgraphsset{
  new ->/.code n args={4}{%
    \path [->,every new ->/.try]
      (#1\tikzgraphleftanchor)
      edge[#3] #4
      (#2\tikzgraphrightanchor);},
  new --/.code n args={4}{
      \path [-,every new --/.try]
      (#1\tikzgraphleftanchor)
      edge[#3] #4
      (#2\tikzgraphrightanchor);},
  new <->/.code n args={4}{
    \path [<->,every new <->/.try]
      (#1\tikzgraphleftanchor)
      edge[#3] #4
      (#2\tikzgraphrightanchor);},
  new -!-/.code n args={4}{},
  new <-/.code n args={4}{%
    \path [<-,every new <-/.try]
      (#1\tikzgraphleftanchor)
      edge[#3] #4
      (#2\tikzgraphrightanchor);
  }
}%


\def\tikz@lib@graph@store@anchor#1#2{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
    \let#2\tikz@temp%
  \else%
    \def\tikz@temp{.#1}%
    \let#2\tikz@temp%
  \fi%
}%

\tikzgraphsset{
  default edge kind/.initial=--,
  --/.style={default edge kind=--},
  ->/.style={default edge kind=->},
  <-/.style={default edge kind=<-},
  <->/.style={default edge kind=<->},
  -!-/.style={default edge kind=-!-},
  default edge operator/.initial=matching and star,
  left anchor/.code=\tikz@lib@graph@store@anchor{#1}{\tikzgraphleftanchor},
  right anchor/.code=\tikz@lib@graph@store@anchor{#1}{\tikzgraphrightanchor},
  left anchor=,
  right anchor=
}%



\tikzgraphsset{
  use existing nodes/.is if=tikz@lib@graph@all
}%

\tikzset{
  new set/.code={
    \expandafter\global\expandafter\let\csname tikz@lg@node@set #1\endcsname\pgfutil@empty%
  },
  set/.code={
    \tikz@fig@mustbenamed%
    \ifcsname tikz@lg@node@set #1\endcsname\else
      \tikzerror{Undefined set `#1'}%
    \fi
    \expandafter\def\expandafter\tikz@alias\expandafter{\tikz@alias%
      \expandafter\def\expandafter\pgf@temp\expandafter{\csname tikz@lg@node@set #1\endcsname}%
      \expandafter\expandafter\expandafter\pgfutil@g@addto@macro\expandafter\pgf@temp\expandafter{\expandafter\tikz@lg@do\expandafter{\tikz@fig@name}}%
    }%
  },%
}%

\newif\iftikz@lib@graph@all


\tikzgraphsset{
  simple/.code={
    \iftikz@lib@graph@simple%
    \else
      \tikz@lib@graph@simpletrue%
      \pgfkeysalso{operator=\tikz@lib@graph@simple@done}%
    \fi%
  },
  multi/.code={
    \tikz@lib@graph@simplefalse%
  }
}%

\newif\iftikz@lib@graph@simple

\def\tikz@lib@graph@set@simple@edge#1#2#3#4#5{%
  \ifcsname tikz@lg@e@#3@#2\endcsname%
    \expandafter\global\expandafter\let\csname tikz@lg@e@#3@#2\endcsname\relax%
  \fi%
  \expandafter\gdef\csname tikz@lg@e@#2@#3\endcsname{\tikz@lib@graph@make@simple@edge{#1}{#2}{#3}{#4}{#5}}%
}%

\def\tikz@lib@graph@make@simple@edge#1#2#3#4#5{%
  \pgfqkeys{/tikz/graphs}{new #1={#2}{#3}{#4}{#5}}%
}%


\def\tikz@lib@graph@simple@done{%
  \tikz@lib@graph@pack@node@list%
  {%
    \let\tikz@lg@do\tikz@lib@graph@simple@node%
    \tikz@lib@graph@node@list
  }%
}%

\def\tikz@lib@graph@simple@node#1{%
  {%
    \def\tikz@lib@graph@simple@from@node{#1}%
    \let\tikz@lg@do\tikz@lib@graph@simple@other@node%
    \tikz@lib@graph@node@list%
  }%
}%

\def\tikz@lib@graph@simple@other@node#1{%
  \ifcsname tikz@lg@e@\tikz@lib@graph@simple@from@node @#1\endcsname%
    \csname tikz@lg@e@\tikz@lib@graph@simple@from@node @#1\endcsname%
    \expandafter\global\expandafter\let\csname tikz@lg@e@\tikz@lib@graph@simple@from@node @#1\endcsname\relax%
  \fi%
}%



\tikzgraphsset{
  @nodes styling/.style=,
  nodes/.style={/tikz/graphs/@nodes styling/.append style={,#1}},
  @edges styling/.initial=,
  edges/.style={/tikz/graphs/@edges styling/.append={,#1}},
  edge/.style={edges={#1}},
  @edges node/.initial=,
  edge node/.style={/tikz/graphs/@edges node/.append={#1}},
  edge label/.style={/tikz/graphs/@edges node/.append={node[auto]{#1}}},
  edge label'/.style={/tikz/graphs/@edges node/.append={node[auto,swap]{#1}}},
  @operators/.initial=,
  operator/.style={/tikz/graphs/@operators/.append={#1}},
  @extra group options/.style=,
}%


\def\tikzgraphinvokeoperator#1{%
  {%
    \pgfkeyslet{/tikz/graphs/@operators}\pgfutil@empty%
    \pgfkeys{/tikz/graphs/.cd,#1}%
    \pgfkeysgetvalue{/tikz/graphs/@operators}\tikz@lib@graph@temp%
    \global\let\tikz@lib@graph@temp\tikz@lib@graph@temp%
  }%
  \tikz@lib@graph@temp%
  \global\let\tikz@lib@graph@temp\relax%
}%



\def\tikz@lib@graph@parser{%
  \pgfutil@ifnextchar[{\tikz@lib@graph@parser@}{\tikz@lib@graph@parser@[]}%
}%

\def\tikz@lib@graph@parser@[#1]{%
  \setbox\tikz@whichbox=\hbox\bgroup%
    \unhbox\tikz@whichbox%
    \hbox\bgroup
      \bgroup%
        \pgfinterruptpath%
          \scope[graphs/.cd,@graph drawing setup/.try,@operators=,every graph/.try,#1]%
            \begingroup%
            \iftikz@graph@quick%
              \expandafter\tikz@lib@graphs@parse@quick@graph%
            \else%
              \expandafter\tikz@lib@graphs@normal@main%
            \fi%
}%

\long\def\tikz@lib@graphs@normal@main#1{%
              \pgfkeysgetvalue{/tikz/graphs/@operators}\tikz@lib@graph@outer@operators%
              \let\tikz@lib@graph@options\pgfutil@empty%
              \let\tikz@lib@graph@node@list\pgfutil@empty%
              \pgfkeyssetvalue{/tikz/graphs/placement/depth}{0}%
              \pgfkeyssetvalue{/tikz/graphs/placement/width}{0}%
              \pgfkeyssetvalue{/tikz/graphs/placement/level}{0}%
              \tikz@lib@graph@start@hint@group%
                \tikz@lib@graph@parse@group{#1}%
              \tikz@lib@graph@end@hint@group
              \tikz@lib@graph@outer@operators%
              \let\tikz@lg@do=\tikz@lib@graph@cleanup%
              \tikz@lib@graph@node@list%
              \tikz@lib@graph@main@done%
}%

\def\tikz@lib@graph@main@done{%
            \endgroup%
          \endscope%
        \endpgfinterruptpath%
      \egroup
    \egroup%
  \egroup%
  \tikz@lib@graph@parser@done%
}%





\def\tikz@lib@graph@start@hint@group{%
  \pgfkeyssetvalue{/tikz/graphs/placement/local depth}{0}%
  \pgfkeyssetvalue{/tikz/graphs/placement/local width}{0}%
  \pgfkeyssetvalue{/tikz/graphs/placement/chain count}{0}%
  \pgfkeyssetvalue{/tikz/graphs/placement/element count}{0}%
}%

\def\tikz@lib@graph@end@hint@group{%
  \xdef\tikz@lib@graph@group@depth{\pgfkeysvalueof{/tikz/graphs/placement/local depth}}
  \xdef\tikz@lib@graph@group@width{\pgfkeysvalueof{/tikz/graphs/placement/local width}}
}%

\def\tikz@lib@graph@hint@aftergroup{%
  \pgfkeysgetvalue{/tikz/graphs/placement/width}\tikz@temp@h%
  \pgfkeysgetvalue{/tikz/graphs/placement/local width}\tikz@temp@lh%
  \pgfkeysgetvalue{/tikz/graphs/placement/local depth}\tikz@temp@lw%
  \pgfmathsetmacro\tikz@temp@h{\tikz@lib@graph@group@width+\tikz@temp@h}
  \pgfmathsetmacro\tikz@temp@lh{\tikz@lib@graph@group@width+\tikz@temp@lh}
  \pgfmathsetmacro\tikz@temp@lw{max(\tikz@lib@graph@group@depth,\tikz@temp@lw)}
  \pgfkeyslet{/tikz/graphs/placement/width}\tikz@temp@h%
  \pgfkeyslet{/tikz/graphs/placement/local width}\tikz@temp@lh%
  \pgfkeyslet{/tikz/graphs/placement/local depth}\tikz@temp@lw%
  \pgfkeysgetvalue{/tikz/graphs/placement/element count}\tikz@temp%
  \c@pgf@counta=\tikz@temp\relax%
  \advance\c@pgf@counta by1\relax%
  \edef\tikz@temp{\the\c@pgf@counta}%
  \pgfkeyslet{/tikz/graphs/placement/element count}\tikz@temp%
}%

\def\tikz@lib@graph@placement@update{%
  \pgfkeys{/tikz/graphs/placement/logical node depth/.expand once=\tikz@lib@graph@name}
  \let\tikz@lib@graph@node@depth\pgfmathresult
  \pgfkeys{/tikz/graphs/placement/logical node width/.expand once=\tikz@lib@graph@name}
  \let\tikz@lib@graph@node@width\pgfmathresult
  \pgfkeysgetvalue{/tikz/graphs/placement/width}\tikz@temp@h%
  \pgfkeysgetvalue{/tikz/graphs/placement/local width}\tikz@temp@lh%
  \pgfkeysgetvalue{/tikz/graphs/placement/local depth}\tikz@temp@lw%
  \pgfmathsetmacro\tikz@temp@h{\tikz@lib@graph@node@width+\tikz@temp@h}
  \pgfmathsetmacro\tikz@temp@lh{\tikz@lib@graph@node@width+\tikz@temp@lh}
  \pgfmathsetmacro\tikz@temp@lw{max(\tikz@lib@graph@node@depth,\tikz@temp@lw)}
  \pgfkeyslet{/tikz/graphs/placement/width}\tikz@temp@h%
  \pgfkeyslet{/tikz/graphs/placement/local width}\tikz@temp@lh%
  \pgfkeyslet{/tikz/graphs/placement/local depth}\tikz@temp@lw%
  \pgfkeysgetvalue{/tikz/graphs/placement/element count}\tikz@temp%
  \c@pgf@counta=\tikz@temp\relax%
  \advance\c@pgf@counta by1\relax%
  \edef\tikz@temp{\the\c@pgf@counta}%
  \pgfkeyslet{/tikz/graphs/placement/element count}\tikz@temp%
}%

\def\tikz@lib@graph@placement@after@chain@update{%
  \pgfkeysgetvalue{/tikz/graphs/placement/depth}\tikz@temp@w%
  \pgfkeysgetvalue{/tikz/graphs/placement/local width}\tikz@temp@lh%
  \pgfkeysgetvalue{/tikz/graphs/placement/local depth}\tikz@temp@lw%
  \pgfmathsetmacro\tikz@temp@w{\tikz@lib@graph@chain@depth+\tikz@temp@w}%
  \pgfmathsetmacro\tikz@temp@lw{\tikz@lib@graph@chain@depth+\tikz@temp@lw}%
  \pgfmathsetmacro\tikz@temp@lh{max(\tikz@lib@graph@chain@width,\tikz@temp@lh)}%
  \pgfkeyslet{/tikz/graphs/placement/depth}\tikz@temp@w%
  \pgfkeyslet{/tikz/graphs/placement/local width}\tikz@temp@lh%
  \pgfkeyslet{/tikz/graphs/placement/local depth}\tikz@temp@lw%
  \pgfkeysgetvalue{/tikz/graphs/placement/chain count}\tikz@temp%
  \c@pgf@counta=\tikz@temp\relax%
  \advance\c@pgf@counta by1\relax%
  \edef\tikz@temp{\the\c@pgf@counta}%
  \pgfkeyslet{/tikz/graphs/placement/chain count}\tikz@temp%
}%



\long\def\tikz@lib@graph@parse@group#1{
  \let\tikz@lib@graph@group@qa\pgfutil@empty%
  \let\tikz@lib@graph@group@q\pgfutil@empty%
  \let\tikz@lib@graph@group@c\pgfutil@empty%
  \let\tikz@lib@graph@group@cont\pgfutil@empty%
  \let\tikz@lib@graph@group@conta\pgfutil@empty%
  \tikz@lib@graph@group@check#1\par\pgf@stop@eogroup%
}%



\def\tikz@lib@graph@group@check{%
  \pgfutil@ifnextchar[\tikz@lib@graph@group@opt{\tikz@lib@graph@group@opt[]}%
}%

\def\tikz@lib@graph@group@opt[#1]{%
  \let\tikz@lib@graph@parse@extras\pgfutil@empty%
  \tikzgraphsset{
    @operators=,
    every group/.try,
    @extra group options,
    @extra group options/.style=,%
    #1}%
  \expandafter\tikz@lib@graph@par\tikz@lib@graph@parse@extras%
}%

\tikzgraphsset{
  parse/.code={\expandafter\def\expandafter\tikz@lib@graph@parse@extras\expandafter{\tikz@lib@graph@parse@extras#1}},
}%




\def\tikz@lib@graph@par{%
  \pgfutil@ifnextchar\bgroup{\tikz@lib@graph@par@@}{\tikz@lib@graph@par@}%
}%
\long\def\tikz@lib@graph@par@#1\par{%
  \pgfutil@ifnextchar\pgf@stop@eogroup{%
    \expandafter\tikz@lib@graph@quotes\tikz@lib@graph@group@c#1"}{%
    \expandafter\def\expandafter\tikz@lib@graph@group@c\expandafter{\tikz@lib@graph@group@c#1}%
    \tikz@lib@graph@par%
  }%
}%
\long\def\tikz@lib@graph@par@@#1{%
  \expandafter\def\expandafter\tikz@lib@graph@group@c\expandafter{\tikz@lib@graph@group@c{#1}}%
  \tikz@lib@graph@par
}%



\def\tikz@lib@graph@quotes{%
  \pgfutil@ifnextchar\bgroup{\tikz@lib@graph@quotes@@}{\tikz@lib@graph@quotes@}%
}%
\def\tikz@lib@graph@quotes@#1"{%
  \pgfutil@ifnextchar\pgf@stop@eogroup{%
    \tikz@lib@graph@passon{#1}%
  }{%
    \expandafter\def\expandafter\tikz@lib@graph@group@q\expandafter{\tikz@lib@graph@group@q#1"}%
    \tikz@lib@graph@quotes@cont%
  }%
}%

\def\tikz@lib@graph@quotes@cont#1"#2"{%
  \pgfutil@ifnextchar\pgf@stop@eogroup{%
    \tikz@lib@graph@passon{{#1}"#2}}{%
    \expandafter\def\expandafter\tikz@lib@graph@group@q\expandafter{\tikz@lib@graph@group@q{#1}"#2"}%
    \tikz@lib@graph@quotes@cont}%
}%

\def\tikz@lib@graph@quotes@@#1{%
  \expandafter\def\expandafter\tikz@lib@graph@group@q\expandafter{\tikz@lib@graph@group@q{#1}}%
  \tikz@lib@graph@quotes%
}%



{%
  \catcode`\"=13\relax

  \gdef\tikz@lib@graph@passon#1{\expandafter\tikz@lib@graph@quotesactive\tikz@lib@graph@group@q#1"}%

  \gdef\tikz@lib@graph@quotesactive{%
    \pgfutil@ifnextchar\bgroup{\tikz@lib@graph@quotesactive@@}{\tikz@lib@graph@quotesactive@}%
  }%
  \gdef\tikz@lib@graph@quotesactive@#1"{%
    \pgfutil@ifnextchar\pgf@stop@eogroup{%
      \expandafter\tikz@lib@graph@encloser\tikz@lib@graph@group@qa#1[%
    }{%
      \expandafter\def\expandafter\tikz@lib@graph@group@qa\expandafter{\tikz@lib@graph@group@qa#1"}%
      \tikz@lib@graph@quotesactive@cont%
    }%
  }%

  \gdef\tikz@lib@graph@quotesactive@cont#1"#2"{%
    \pgfutil@ifnextchar\pgf@stop@eogroup{%
      \expandafter\tikz@lib@graph@encloser\tikz@lib@graph@group@qa{#1}"#2[}{%
      \expandafter\def\expandafter\tikz@lib@graph@group@qa\expandafter{\tikz@lib@graph@group@qa{#1}"#2"}%
      \tikz@lib@graph@quotesactive@cont}%
  }%

  \gdef\tikz@lib@graph@quotesactive@@#1{%
    \expandafter\def\expandafter\tikz@lib@graph@group@qa\expandafter{\tikz@lib@graph@group@qa{#1}}%
    \tikz@lib@graph@quotesactive%
  }%
}%




\def\tikz@lib@graph@encloser{%
  \pgfutil@ifnextchar\bgroup{\tikz@lib@graph@encloser@@}{\tikz@lib@graph@encloser@}%
}%
\def\tikz@lib@graph@encloser@#1[{%
  \pgfutil@ifnextchar\pgf@stop@eogroup{%
    \expandafter\tikz@lib@graph@semi\tikz@lib@graph@group@cont#1;%
  }{%
    \expandafter\def\expandafter\tikz@lib@graph@group@cont\expandafter{\tikz@lib@graph@group@cont#1[}%
    \tikz@lib@graph@encloser@cont%
  }%
}%

\def\tikz@lib@graph@encloser@cont#1]#2[{%
  \pgfutil@ifnextchar\pgf@stop@eogroup{%
    \expandafter\tikz@lib@graph@semi\tikz@lib@graph@group@cont{#1}]#2;}{%
    \expandafter\def\expandafter\tikz@lib@graph@group@cont\expandafter{\tikz@lib@graph@group@cont{#1}]#2[}%
    \tikz@lib@graph@encloser@cont}%
}%

\def\tikz@lib@graph@encloser@@#1{%
  \expandafter\def\expandafter\tikz@lib@graph@group@cont\expandafter{\tikz@lib@graph@group@cont{#1}}%
  \tikz@lib@graph@encloser%
}%





\def\tikz@lib@graph@semi{%
  \pgfutil@ifnextchar\bgroup{\tikz@lib@graph@semi@@}{\tikz@lib@graph@semi@}%
}%
\def\tikz@lib@graph@semi@#1;{%
  \pgfutil@ifnextchar\pgf@stop@eogroup{%
    \expandafter\tikz@lib@graph@main@parser\tikz@lib@graph@group@conta#1,}{%
    \expandafter\def\expandafter\tikz@lib@graph@group@conta\expandafter{\tikz@lib@graph@group@conta#1,}%
    \tikz@lib@graph@semi%
  }%
}%
\def\tikz@lib@graph@semi@@#1{%
  \expandafter\def\expandafter\tikz@lib@graph@group@conta\expandafter{\tikz@lib@graph@group@conta{#1}}%
  \tikz@lib@graph@semi%
}%



\def\tikz@lib@graph@main@parser{%
  \begingroup%
    \pgfkeyssetvalue{/tikz/graphs/placement/local depth}{0}%
    \pgfkeyssetvalue{/tikz/graphs/placement/local width}{0}%
    \let\tikz@lib@graph@stored@actions\pgfutil@empty%
    \let\tikz@lib@graph@node@list\pgfutil@empty%
    \tikz@lib@graph@main@parser@start%
}%
\def\tikz@lib@graph@main@parser@start{%
  \pgfutil@ifnextchar\bgroup{\tikz@lib@graph@protect@group}{\tikz@lib@graph@main@parser@cont}%
}%

\def\tikz@lib@graph@protect@group#1{%
  \pgfutil@ifnextchar\relax{\tikz@lib@graph@main@parser@cont{{#1}}}{\tikz@lib@graph@main@parser@cont{{#1}}}%
}%

\def\tikz@lib@graph@main@parser@cont{\tikz@lib@graph@check@quotes\tikz@lib@graph@main@parser@cont@normal}%
\def\tikz@lib@graph@main@parser@cont@normal#1,{%
  \tikz@lib@graph@parse@one#1-\pgf@stop@eodashes%
}%

\def\tikz@lib@graph@parse@one{%
  \pgfutil@ifnextchar\bgroup\tikz@lib@graph@scope\tikz@lib@graph@node%
}%




\def\tikz@lib@graph@check@quotes#1{%
  \let\tikz@lib@graph@cont@quote#1%
  \pgfutil@ifnextchar"{\begingroup\pgfkeys@temptoks{}\pgfutil@empty\tikz@lib@graph@quote@parser}{\tikz@lib@graph@check@quotes@active}%
}%
{%
  \catcode`\"=13\relax
  \gdef\tikz@lib@graph@check@quotes@active{%
    \pgfutil@ifnextchar"{\begingroup\pgfkeys@temptoks{}\pgfutil@empty\tikz@lib@graph@quote@parser@active}{\tikz@lib@graph@cont@quote}%
  }%
  \gdef\tikz@lib@graph@quote@parser@active"#1"{%
    \pgfkeys@temptoks\expandafter{\the\pgfkeys@temptoks #1}%
    \pgfutil@ifnextchar"{\pgfkeys@temptoks\expandafter{\the\pgfkeys@temptoks "}\tikz@lib@graph@quote@parser@active}{\tikz@lib@graph@quote@parser@done}%
  }%
}%

\def\tikz@lib@graph@quote@parser"#1"{%
  \pgfkeys@temptoks\expandafter{\the\pgfkeys@temptoks #1}%
  \pgfutil@ifnextchar"{\pgfkeys@temptoks\expandafter{\the\pgfkeys@temptoks "}\tikz@lib@graph@quote@parser}{\tikz@lib@graph@quote@parser@done}%
}%

\def\tikz@lib@graph@quote@parser@done{%
  {\expandafter\scantokens\expandafter{%
    \expandafter\expandafter\expandafter\tikzlibgraphactivations\expandafter\expandafter\expandafter\tikzlibgraphdoedef\expandafter{\the\pgfkeys@temptoks}%
  }}%
  {\expandafter\scantokens\expandafter{\expandafter\tikzlibgraphactivationsbrace\expandafter\xdef\expandafter\tikzlibgraphreplaced\expandafter<\tikzlibgraphreplaced>\catcode`\}=2\relax}}%
  \edef\tikzlibgraphreplaced{\expandafter\detokenize\expandafter{\tikzlibgraphreplaced}}
  \pgfutil@ifnextchar/\tikz@lib@graph@quotes@slash\tikz@lib@graph@quotes@no@slash%
}%
\def\tikz@lib@graph@quotes@no@slash{%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
  \tikz@smuggle\expandafter\expandafter\expandafter{\expandafter\tikzlibgraphreplaced\expandafter/\expandafter{\the\pgfkeys@temptoks}}%
  \expandafter\endgroup\expandafter\tikz@lib@graph@cont@quote\tikz@smuggle%
}%
\def\tikz@lib@graph@quotes@slash/{%
  \pgfutil@ifnextchar/%
  {\tikz@lib@graph@quotes@no@slash/}{\expandafter\endgroup\expandafter\tikz@lib@graph@cont@quote\tikzlibgraphreplaced/}%
}%
\def\tikzlibgraphdoedef{\xdef\tikzlibgraphreplaced}%

\def\tikz@lib@prepare@active#1#2#3{%
  {%
    \catcode`#1=13\relax%
    \scantokens{\gdef\tikzlibgraphactivator{\def#2{@#3@}}}%
  }%
  \pgfutil@g@addto@macro\tikzlibgraphactivations{\catcode`#1=13\relax}%
  \expandafter\pgfutil@g@addto@macro\expandafter\tikzlibgraphactivations\expandafter{\tikzlibgraphactivator}%
}%

\let\tikzlibgraphactivations\pgfutil@empty


\outer\def\tikz@lib@outer@test{\tabalign}%
\ifx\+\tikz@lib@outer@test
  \def\+{\tabalign}
\fi

\tikz@lib@prepare@active{\$}{$}{DOLLAR SIGN}%
\tikz@lib@prepare@active{\&}{&}{AMPERSAND}%
\tikz@lib@prepare@active{\^}{^}{CIRCUMFLEX ACCENT}%
\tikz@lib@prepare@active{\~}{~}{TILDE}%
\tikz@lib@prepare@active{\_}{_}{LOW LINE}%
\tikz@lib@prepare@active{\|}{|}{VERTICAL LINE}%
\tikz@lib@prepare@active{\[}{[}{LEFT SQUARE BRACKET}%
\tikz@lib@prepare@active{\]}{]}{RIGHT SQUARE BRACKET}%
\tikz@lib@prepare@active{\(}{(}{LEFT PARENTHESIS}%
\tikz@lib@prepare@active{\)}{)}{RIGHT PARENTHESIS}%
\tikz@lib@prepare@active{\/}{/}{SOLIDUS}%
\tikz@lib@prepare@active{\.}{.}{FULL STOP}%
\tikz@lib@prepare@active{\-}{-}{HYPHEN MINUS}%
\tikz@lib@prepare@active{\,}{,}{COMMA}%
\tikz@lib@prepare@active{\+}{+}{PLUS SIGN}%
\tikz@lib@prepare@active{\*}{*}{ASTERISK}%
\tikz@lib@prepare@active{\'}{'}{APOSTROPHE}%
\tikz@lib@prepare@active{\!}{!}{EXCLAMATION MARK}%
\tikz@lib@prepare@active{\"}{"}{QUOTATION MARK}%
\tikz@lib@prepare@active{\:}{:}{COLON}%
\tikz@lib@prepare@active{\;}{;}{SEMINCOLON}%
\tikz@lib@prepare@active{\<}{<}{LESS THAN SIGN}%
\tikz@lib@prepare@active{\=}{=}{EQUALS SIGN}%
\tikz@lib@prepare@active{\>}{>}{GREATER THAN SIGN}%
\tikz@lib@prepare@active{\?}{?}{QUESTION MARK}%
\tikz@lib@prepare@active{\`}{`}{GRAVE ACCENT}%
{\catcode`\%=11\catcode`\#=11
\tikz@lib@prepare@active{\%}{%}{PERCENT SIGN}
\tikz@lib@prepare@active{\#}{#}{NUMBER SIGN}
}

\pgfutil@g@addto@macro\tikzlibgraphactivations{\catcode`\\=13\relax}%
{%
  \catcode`\|=0\relax
  \catcode`\\=13\relax
  |pgfutil@g@addto@macro|tikzlibgraphactivations{|def\{@REVERSE SOLIDUS@}}%
}%
{%
  \gdef\tikzlibgraphscommercialat{@COMMERCIAL AT@}%
  \let\g=\pgfutil@g@addto@macro
  \catcode`\@=13\relax
  \g\tikzlibgraphactivations{\catcode`\@=13\relax\let@=\tikzlibgraphscommercialat}%
}%

\def\tikzlibgraphactivationsbrace{%
  \catcode`\{=13\relax%
  \catcode`\}=13\relax%
  \catcode`\<=1\relax%
  \catcode`\>=2\relax%
}%
{%
  \catcode`\{=13\relax%
  \catcode`\}=13\relax%
  \catcode`\<=1\relax%
  \catcode`\>=2\relax%
  \pgfutil@g@addto@macro\tikzlibgraphactivationsbrace<\def{<@LEFT CURLY BRACE@>> %
  \pgfutil@g@addto@macro\tikzlibgraphactivationsbrace<\def}<@RIGHT CURLY BRACE@>> %
>%



\def\tikz@lib@graph@node{\tikz@lib@graph@check@quotes\tikz@lib@graph@node@normal}%

\def\tikz@lib@graph@node@normal{%
  \pgfutil@ifnextchar({\tikz@lib@graph@node@dressed}{\tikz@lib@graph@node@naked}%
}%

\def\tikz@lib@graph@node@dressed(#1){%
  \tikz@lib@graph@node@naked{(#1)}%
}%

\def\tikz@lib@graph@node@naked#1-{%
  \tikz@lib@graph@@node#1<\pgf@stop%
}%

\def\tikz@lib@graph@@node#1<#2\pgf@stop%
{
  \tikz@lib@graph@grab@name#1\pgf@stop%
  \tikz@lib@graph@stored@actions%
  \pgfutil@ifnextchar\pgf@stop@eodashes{%
    \tikz@lib@graph@graph@done%
  }{%
    \def\pgf@test{#2}%
    \ifx\pgf@test\pgfutil@empty%
      \expandafter\tikz@lib@graph@no@back@arrow%
    \else%
      \expandafter\tikz@lib@graph@back@arrow%
    \fi%
  }%
}%

\def\tikz@lib@graph@no@back@arrow{%
  \pgfutil@ifnextchar>\tikz@lib@graph@forward@arrow{%
    \pgfutil@ifnextchar-\tikz@lib@graph@undirected@arrow{%
      \pgfutil@ifnextchar!\tikz@lib@graph@no@arrow{%
        \tikzerror{One of the arrow types <-, --, ->, -!- or <-> expected}%
        \tikz@lib@graph@undirected@arrow%
      }%
    }%
  }%
}%

\def\tikz@lib@graph@undirected@arrow-{%
  \def\tikz@lib@graph@arrow@type{--}%
  \tikz@lib@graph@after@arrow%
}%

\def\tikz@lib@graph@forward@arrow>{%
  \def\tikz@lib@graph@arrow@type{->}%
  \tikz@lib@graph@after@arrow%
}%

\def\tikz@lib@graph@bi@arrow>{%
  \def\tikz@lib@graph@arrow@type{<->}%
  \tikz@lib@graph@after@arrow%
}%

\def\tikz@lib@graph@no@arrow!-{%
  \def\tikz@lib@graph@arrow@type{-!-}%
  \tikz@lib@graph@after@arrow%
}%

\def\tikz@lib@graph@back@arrow{%
  \pgfutil@ifnextchar>{\tikz@lib@graph@bi@arrow}{%
    \def\tikz@lib@graph@arrow@type{<-}%
    \tikz@lib@graph@after@arrow%
  }%
}%

\def\tikz@lib@graph@after@arrow{%
  \pgfutil@ifnextchar[{\tikz@lib@graph@after@arrow@opt}{\tikz@lib@graph@after@arrow@opt[]}%
}%

\def\tikz@lib@graph@after@arrow@opt[#1]{%
  \tikzgraphinvokeoperator{recolor source by=source''}
  \tikzgraphinvokeoperator{recolor target by=target'}
  \expandafter\def\expandafter\tikz@lib@graph@stored@actions\expandafter{%
    \expandafter\tikz@lib@graph@joiner\expandafter{\tikz@lib@graph@arrow@type}{#1}}%
  \tikzgdeventgroupcallback{descendants}%
  \tikz@lib@graph@parse@one%
}%

\def\tikz@lib@graph@joiner#1#2{%
  \tikzgraphinvokeoperator{recolor source by=source'}
  \tikzgraphinvokeoperator{recolor source'' by=source}
  {%
    \tikz@enable@edge@quotes%
    \pgfkeyssetvalue{/tikz/graphs/default edge kind}{#1}%
    \pgfkeys{/tikz/graphs/.cd,@operators=,%
      /tikz/graphs/.unknown/.code=\tikz@lib@graph@unknown@edge@option{##1},#2}%
    \pgfkeysgetvalue{/tikz/graphs/@operators}\pgf@temp%
    \ifx\pgf@temp\pgfutil@empty%
      \edef\pgf@temp{\noexpand\pgfkeys{/tikz/graphs/.cd,\pgfkeysvalueof{/tikz/graphs/default edge operator}}}%
      \pgf@temp%
      \pgfkeysgetvalue{/tikz/graphs/@operators}\pgf@temp%
    \fi%
    \pgf@temp%
  }%
  \tikzgraphinvokeoperator{not source',not target'}
}%

\def\tikz@lib@graph@unknown@edge@option#1{%
  \def\tikz@temp{/tikz/graphs/@edges styling/.append=}
  \expandafter\expandafter\expandafter\pgfkeys%
  \expandafter\expandafter\expandafter{\expandafter\tikz@temp\expandafter{\expandafter,\pgfkeyscurrentname={#1}}}
}%

\def\tikz@lib@graph@graph@done\pgf@stop@eodashes{%
    \xdef\tikz@lib@graph@chain@depth{\pgfkeysvalueof{/tikz/graphs/placement/local depth}}
    \xdef\tikz@lib@graph@chain@width{\pgfkeysvalueof{/tikz/graphs/placement/local width}}
    \expandafter%
  \endgroup%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\tikz@lib@graph@node@list%
  \expandafter\expandafter\expandafter{\expandafter\tikz@lib@graph@node@list\tikz@lib@graph@node@list}%
  \tikz@lib@graph@placement@after@chain@update
  \pgfutil@ifnextchar\pgf@stop@eogroup%
  \tikz@lib@graph@graph@group@done%
  \tikz@lib@graph@main@parser%
}%

\def\tikz@lib@graph@graph@group@done\pgf@stop@eogroup{%
  \pgfkeysvalueof{/tikz/graphs/@operators}%
}%



\def\tikz@lib@graph@grab@name{%
  \pgfutil@ifnextchar\foreach\tikz@lib@graph@do@foreach\tikz@lib@graph@parse@node@text%
}%

\def\tikz@lib@graph@do@foreach\foreach#1in{%
  \pgfutil@ifnextchar\bgroup{\tikz@lib@graph@do@foreach@normal{#1}}{\def\tikz@temp{#1}\tikz@lib@graph@do@foreach@macro}%
}%
\def\tikz@lib@graph@do@foreach@macro#1{%
  \expandafter\expandafter\expandafter\tikz@lib@graph@do@foreach@normal\expandafter\tikz@temp\expandafter{#1}%
}%

\def\tikz@lib@graph@do@foreach@normal#1#2#3\pgf@stop{%
  \begingroup
    \let\tikz@lib@graph@node@list@saved\pgfutil@empty%
    \xdef\tikz@lib@graph@saved@placement{%
      {\pgfkeysvalueof{/tikz/graphs/placement/local depth}}%
      {\pgfkeysvalueof{/tikz/graphs/placement/local width}}%
      {\pgfkeysvalueof{/tikz/graphs/placement/chain count}}%
      {\pgfkeysvalueof{/tikz/graphs/placement/element count}}%
      {\pgfkeysvalueof{/tikz/graphs/placement/width}}%
      {\pgfkeysvalueof{/tikz/graphs/placement/depth}}%
    }%
    \foreach #1 in {#2}%
    {%
      \let\tikz@lib@graph@node@list\tikz@lib@graph@node@list@saved%
      \expandafter\tikz@lib@graph@setup@placement\tikz@lib@graph@saved@placement%
      \tikz@lib@graph@parse@group{#3}%
      \xdef\tikz@lib@graph@saved@placement{%
        {\pgfkeysvalueof{/tikz/graphs/placement/local depth}}%
        {\pgfkeysvalueof{/tikz/graphs/placement/local width}}%
        {\pgfkeysvalueof{/tikz/graphs/placement/chain count}}%
        {\pgfkeysvalueof{/tikz/graphs/placement/element count}}%
        {\pgfkeysvalueof{/tikz/graphs/placement/width}}%
        {\pgfkeysvalueof{/tikz/graphs/placement/depth}}%
      }%
      \global\let\tikz@lib@graph@node@list@saved\tikz@lib@graph@node@list%
    }%
    \expandafter%
  \endgroup%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\tikz@lib@graph@node@list%
  \expandafter\expandafter\expandafter{\expandafter\tikz@lib@graph@node@list\tikz@lib@graph@node@list@saved}%
  \expandafter\tikz@lib@graph@setup@placement\tikz@lib@graph@saved@placement%
}%

\def\tikz@lib@graph@setup@placement#1#2#3#4#5#6{%
  \pgfkeyssetvalue{/tikz/graphs/placement/local depth}{#1}%
  \pgfkeyssetvalue{/tikz/graphs/placement/local width}{#2}%
  \pgfkeyssetvalue{/tikz/graphs/placement/chain count}{#3}%
  \pgfkeyssetvalue{/tikz/graphs/placement/element count}{#4}%
  \pgfkeyssetvalue{/tikz/graphs/placement/width}{#5}%
  \pgfkeyssetvalue{/tikz/graphs/placement/depth}{#6}%
}%

\def\tikz@lib@graph@parse@node@text#1\pgf@stop{%
  \pgfutil@in@{//}{#1 }
  \ifpgfutil@in@%
    \tikz@lib@parse@layout@node#1\pgf@stop%
  \else%
    \tikz@lib@graph@fake@nodefalse
    \let\tikz@lib@graph@node@parsed\tikz@lib@graph@node@opt@normal%
    \def\tikz@lib@graph@empty@node@parsed{\tikzgdeventcallback{node}{}}%
    \tikz@lib@parse@normal@node#1[\pgf@stop%
  \fi%
}%

\newif\iftikzgraphsautonumbernodes
\newcount\tikz@lib@auto@number

\def\tikz@lib@do@autonumber{%
  \ifx\tikz@lib@graph@name@only\pgfutil@empty%
  \else%
    \edef\tikz@lib@graph@name@only{\tikz@lib@graph@name@only\tikz@lib@auto@sep\the\tikz@lib@auto@number}%
    \global\advance\tikz@lib@auto@number by1\relax%
  \fi%
}%


\def\tikz@lib@parse@normal@node#1[{
  \pgfutil@in@{/}{#1}%
  \ifpgfutil@in@%
    \tikz@lib@parse@node@with@slash#1\pgf@stop%
  \else
    \pgfutil@in@{__}{#1}%
    \ifpgfutil@in@%
      \tikz@lib@parse@node@with@doubleunder#1\pgf@stop%
    \else
      \edef\pgf@marshal{\noexpand\pgfkeys@spdef\noexpand\tikz@lib@graph@name@only{#1}}%
      \pgf@marshal%
      \let\tikz@lib@graph@node@text\tikz@lib@graph@name@only%
      \edef\tikz@lib@graph@name{\tikz@lib@graph@path\tikz@lib@graph@name@only}%
    \fi%
  \fi%
  \tikz@lib@graph@handle@node@cont%
}%

\def\tikz@lib@parse@node@with@slash#1/{
  \pgfkeys@spdef\tikz@lib@graph@name@only{#1}%
  \ifx\tikz@lib@graph@name@only\pgfutil@empty%
    \global\advance\tikz@fig@count by1\relax
    \edef\tikz@lib@graph@name@only{tikz@f@\the\tikz@fig@count}%
  \fi%
  \edef\tikz@lib@graph@name{\tikz@lib@graph@path\tikz@lib@graph@name@only}%
  \pgfutil@ifnextchar"\tikz@lg@slash@quote{\pgfutil@ifnextchar\tikz@active@quotes@token\tikz@lg@slash@quote@active\tikz@lg@slash@cont}
}%
\def\tikz@lg@slash@quote"#1"#2\pgf@stop{%
  \iftikz@handle@active@nodes%
    \def\tikz@lib@graph@node@text{\scantokens{#1}}%
  \else
    \def\tikz@lib@graph@node@text{#1}%
  \fi%
}%
{\catcode`\"=13\relax
  \gdef\tikz@lg@slash@quote@active"#1"#2\pgf@stop{%
  \iftikz@handle@active@nodes%
    \def\tikz@lib@graph@node@text{\scantokens{#1}}%
  \else
    \def\tikz@lib@graph@node@text{#1}%
  \fi%
  }%
}%
\def\tikz@lg@slash@cont#1\pgf@stop{%
  \iftikz@handle@active@nodes%
    \def\tikz@lib@graph@node@text{\scantokens{#1}}%
  \else
    \def\tikz@lib@graph@node@text{#1}%
  \fi%
}%

\def\tikz@lib@parse@node@with@doubleunder#1__{\tikz@lib@parse@node@with@slash{#1}/}%

\def\tikz@lg@find@fresh@name{%
  \edef\tikz@lib@graph@name@only{\tikz@lib@graph@name@only'}%
  \edef\tikz@lib@graph@name{\tikz@lib@graph@path\tikz@lib@graph@name@only}%
  \tikz@lg@if@local@node{\tikz@lib@graph@name}{\tikz@lg@find@fresh@name}{}%
}%



\def\tikz@lib@graph@handle@node@cont{%
  \iftikzgraphsautonumbernodes%
    \tikz@lib@do@autonumber%
  \fi%
  \iftikz@lib@graph@fresh@node%
    \tikz@lg@if@local@node{\tikz@lib@graph@name}{\tikz@lg@find@fresh@name}{}%
  \fi%
  \let\tikzgraphnodeas\tikzgraphnodeas@default%
  \pgfutil@ifnextchar\pgf@stop{%
    \ifx\tikz@lib@graph@name@only\pgfutil@empty%
      \expandafter\tikz@lib@graph@node@empty@done%
    \else
      \expandafter\tikz@lib@graph@node@opt\expandafter[\expandafter]\expandafter[%
    \fi%
  }{\tikz@lib@graph@node@opt[}%
}%

\def\tikzgraphnodeas@default{%
  \tikz@lib@graph@typesetter%
}%

\let\tikz@lib@graph@empty@node@parsed\relax%

\def\tikz@lib@graph@node@opt[#1]#2[\pgf@stop{%
  \tikz@lib@graph@node@parsed{#1}%
}%

\def\tikz@lib@graph@node@empty@done\pgf@stop{\tikz@lib@graph@empty@node@parsed}%


\def\tikz@lib@parse@layout@node#1//{%
  \pgf@lib@graph@empty@layout@nodefalse%
  \let\tikz@lib@graph@node@parsed\tikz@lib@layout@node@parsed%
  \let\tikz@lib@graph@empty@node@parsed\tikz@lib@graph@empty@layout@node@parsed
  \tikz@lib@parse@normal@node#1[\pgf@stop%
}%

\newif\ifpgf@lib@graph@empty@layout@node

\def\tikz@lib@layout@node@parsed{%
  \tikz@lib@layout@parse@rest%
}%

\def\tikz@lib@graph@empty@layout@node@parsed{%
  \pgf@lib@graph@empty@layout@nodetrue
  \tikz@lib@layout@parse@rest{}%
}%

\def\tikz@lib@layout@parse@rest#1{%
  \def\tikz@lib@layout@node@options{#1}%
  \pgfutil@ifnextchar[{\tikz@lib@layout@node@opt}{\tikz@lib@layout@node@opt[]}%
}%

\def\tikz@lib@layout@node@parsed#1{%
  \def\tikz@lib@layout@node@options{#1}%
  \pgfutil@ifnextchar[{\tikz@lib@layout@node@opt}{\tikz@lib@layout@node@opt[]}%
}%

\def\tikz@lib@layout@node@opt[#1]{%
  \def\tikz@lib@layout@options{#1}%
  \pgfutil@ifnextchar\bgroup{\tikz@lib@layout@start}{\tikzerror{Opening brace at beginning of sublayout expected}}%
}%



\def\tikz@lib@graph@node@opt@normal#1{%
  \expandafter\tikz@lib@graph@test@use@list\tikz@lib@graph@name@only\pgf@stop
  \iftikz@lib@graph@use@list%
    \let\tikz@lg@temp\pgfutil@empty%
    \foreach \tikz@lg@node@name in \tikz@lib@graph@use@list {\expandafter\tikz@lib@graph@handle@use\expandafter{\tikz@lg@node@name}}
    \expandafter\expandafter\expandafter\def%
    \expandafter\expandafter\expandafter\tikz@lib@graph@node@list%
    \expandafter\expandafter\expandafter{%
      \expandafter\tikz@lib@graph@node@list\tikz@lg@temp}%
    \let\tikz@lg@do\tikz@lib@graph@do@use%
    \tikz@lg@temp%
  \else%
    \edef\tikz@lib@graph@name{\tikz@lib@graph@path\tikz@lib@graph@name@only}%
    \expandafter\ifx\csname tikz@lib@graph@def@\tikz@lib@graph@name@only\endcsname\relax%
      \pgfkeysgetvalue{/tikz/graphs/placement/level}\tikz@temp%
      \c@pgf@counta=\tikz@temp\relax%
      \advance\c@pgf@counta by1\relax%
      \edef\tikz@temp{\the\c@pgf@counta}%
      \pgfkeyslet{/tikz/graphs/placement/level}\tikz@temp%
      \tikzgraphsset{
        level/.try=\pgfkeysvalueof{/tikz/graphs/placement/level},
        level \pgfkeysvalueof{/tikz/graphs/placement/level}/.try
      }
      {%
        \edef\tikz@lib@graph@node@list{\noexpand\tikz@lg@do{\tikz@lib@graph@name}}%
        \global\tikz@lib@graph@node@createdfalse%
        \pgfkeyslet{/tikz/graphs/@operators}\pgfutil@empty%
        \tikz@lib@activate@source@target@edge@syntax%
        \tikz@lg@if@local@node{\tikz@lib@graph@name}%
        {\tikz@lg@local@node@handle{#1}}%
        {%
          \tikz@lg@init@color{\tikz@lib@graph@name}{\tikz@lgc@all@true\tikz@lgc@source@true\tikz@lgc@target@true}%
          \iftikz@lib@graph@all%
            \tikzgraphsset{#1}\pgfkeysvalueof{/tikz/graphs/@operators}%
          \else%
            \pgfkeys{/tikz/graphs/placement/place}%
            \let\tikzgraphnodetext\tikz@lib@graph@node@text%
            \let\tikzgraphnodename\tikz@lib@graph@name@only%
            \let\tikzgraphnodepath\tikz@lib@graph@path%
            \let\tikzgraphnodefullname\tikz@lib@graph@name%
            \iftikz@lib@graph@fake@node%
              {%
                \pgfkeys{
                  /tikz/graphs/.cd,%
                  .unknown/.code=,
                  /tikz/graphs/@nodes styling,%
                  #1}%
                \pgfkeysgetvalue{/tikz/graphs/@operators}\tikz@lib@graph@op@save%
                \global\let\tikz@lib@graph@op@save\tikz@lib@graph@op@save%
              }%
            \else%
              \node [%
                name=\tikz@lib@graph@name,%
                execute at end node={%
                  \pgfkeysgetvalue{/tikz/graphs/@operators}\tikz@lib@graph@op@save%
                  \global\let\tikz@lib@graph@op@save\tikz@lib@graph@op@save%
                },%
                graphs/redirect unknown to tikz,
                /tikz/graphs/.cd,%
                /tikz/graphs/@nodes styling,%
                #1]%
                {%
                  \tikzgraphnodeas%
                };%
            \fi%
            \tikz@lib@graph@op@save\global\let\tikz@lib@graph@op@save\relax%
            \global\tikz@lib@graph@node@createdtrue%
          \fi
        }%
      }%
      \iftikz@lib@graph@node@created\tikz@lib@graph@placement@update\fi%
      \expandafter\expandafter\expandafter\def%
      \expandafter\expandafter\expandafter\tikz@lib@graph@node@list%
      \expandafter\expandafter\expandafter{%
        \expandafter\tikz@lib@graph@node@list\expandafter\tikz@lg@do\expandafter{\tikz@lib@graph@name}}%
      \iftikz@lib@graph@trie\tikzgraphsset{name=\tikz@lib@graph@name@only}\fi%
    \else
      \tikz@lib@graph@handle@graph{#1}%
    \fi
  \fi%
}%

\newif\iftikz@lib@graph@fake@node

\newif\iftikz@lib@graph@use@list
\def\tikz@lib@graph@test@use@list{%
  \pgfutil@ifnextchar({\tikz@lib@graph@use@list@grap}{\tikz@lib@graph@test@use@list@done}%
}%

\def\tikz@lib@graph@test@use@list@done#1\pgf@stop{\tikz@lib@graph@use@listfalse}%
\def\tikz@lib@graph@use@list@grap(#1)\pgf@stop{\def\tikz@lib@graph@use@list{#1}\tikz@lib@graph@use@listtrue}%



\def\tikz@lib@layout@start#1#2\pgf@stop{%
  \tikz@lib@ensure@gd@loaded%
  \tikz@lib@graph@fake@nodefalse%
  \ifpgf@lib@graph@empty@layout@node%
  \else%
    \ifx\tikz@lib@graph@name\pgfutil@empty%
      \tikzerror{Internal error: Node has no name, but it should!}%
    \else
      \tikz@lib@graph@fake@nodetrue%
      \expandafter\tikz@lib@graph@node@opt@normal\expandafter{\tikz@lib@layout@node@options}%
    \fi%
  \fi%
  \edef\tikz@lib@graph@name{\tikz@lib@graph@path\tikz@lib@graph@name@only}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\tikz@lib@layout@node@options\expandafter\expandafter\expandafter{\expandafter\tikz@lib@layout@startup@node@options\tikz@lib@layout@node@options,}%
  \begingroup
    \iftikz@lib@graph@fake@node%
      \expandafter\expandafter\expandafter%
      \expandafter\expandafter\expandafter\expandafter\tikz@lib@make@subgraph@node%
      \expandafter\expandafter\expandafter%
      \expandafter\expandafter\expandafter\expandafter{%
        \expandafter\expandafter\expandafter\tikz@lib@graph@name%
        \expandafter\expandafter\expandafter}%
      \expandafter\expandafter\expandafter{%
        \expandafter\tikz@lib@graph@node@text\expandafter}\expandafter{\tikz@lib@layout@node@options}
    \fi%
  \expandafter\expandafter\expandafter\scope\expandafter\expandafter\expandafter[\expandafter\tikz@lib@layout@node@options@prefix\tikz@lib@layout@options]
    \tikzgdeventgroupcallback{array}%
    \let\tikz@lib@graph@node@list\pgfutil@empty%
    \tikz@lib@graph@start@hint@group%
      \tikz@lib@graph@parse@group{#1}%
    \tikz@lib@graph@end@hint@group%
    \def\tikz@lg@old@col{\tikz@lgc@source@true}%
    \let\tikz@lg@new@col\pgfutil@empty%
    \let\tikz@lg@do\tikz@lg@change@color%
    \tikz@lib@graph@node@list%
    \def\tikz@lg@old@col{\tikz@lgc@target@true}%
    \tikz@lib@graph@node@list%
    \expandafter%
  \endscope\expandafter%
  \endgroup%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\tikz@lib@graph@node@list%
  \expandafter\expandafter\expandafter{\expandafter\tikz@lib@graph@node@list\tikz@lib@graph@node@list}%
  \tikz@lib@graph@hint@aftergroup%
}%
\def\tikz@lib@make@subgraph@node#1#2#3{%
  \pgfgdsubgraphnode{#1}{#3}{\pgfgdsubgraphnodecontents{#2}}%
}%
\def\tikz@lib@layout@startup@node@options{%
  /utils/exec=\tikzlibignorecomparisonsINTERNAL,
  /tikz/graphs/.cd,%
  redirect unknown to tikz,%
  anchor=base,%
  /tikz/every subgraph node/.try,%
}%
\def\tikzlibignorecomparisonsINTERNAL{%
  \pgfkeys{/handlers/first char syntax=true}
  \pgfkeyssetvalue{/handlers/first char syntax/\expandafter\meaning\string>}{\pgfutil@gobble}%
  \pgfkeyssetvalue{/handlers/first char syntax/\expandafter\meaning\string<}{\pgfutil@gobble}%
}%
\def\tikz@lib@layout@node@options@prefix{graphs/.cd,}%

\ifx\tikz@lib@ensure@gd@loaded\pgfutil@undefined%
\def\tikz@lib@ensure@gd@loaded{\tikzerror{You must say \string\usetikzlibrary{graphdrawing} to use the (sub)layout syntax}}%
\fi

\def\tikz@lg@local@node@handle#1{%
  \tikzgraphsset{source,target,.unknown/.code=,#1}%
  \tikzgdlatenodeoptionacallback{\tikz@pp@name\tikz@lib@graph@name}%
  \node also[graphs/redirect unknown to tikz,/tikz/graphs/.cd,#1](\tikz@lib@graph@name);%
  \pgfkeysvalueof{/tikz/graphs/@operators}%
}%

\tikzgraphsset{redirect unknown to tikz/.style={
    /tikz/graphs/.unknown/.code={%
      \let\tikz@key\pgfkeyscurrentname%
      \pgfkeys{tikz/.cd,\tikz@key={##1},/tikz/graphs/.cd}%
    }}
}%

\def\tikz@lib@activate@source@target@edge@syntax{%
  \pgfkeys{/handlers/first char syntax=true}
  \pgfkeyssetvalue{/handlers/first char syntax/\expandafter\meaning\string>}{\tikz@lg@parse@more}%
  \pgfkeyssetvalue{/handlers/first char syntax/\expandafter\meaning\string<}{\tikz@lg@parse@less}%
}%

\def\tikz@lg@parse@less#1{\tikz@lg@parse@less@#1\pgf@stop}%
\def\tikz@lg@parse@less@<{\pgfutil@ifnextchar"{\tikz@lg@parse@quote{source}}{\tikz@lg@parse@noquote{source}}}%
\def\tikz@lg@parse@more#1{\tikz@lg@parse@more@#1\pgf@stop}%
\def\tikz@lg@parse@more@>{\pgfutil@ifnextchar"{\tikz@lg@parse@quote{target}}{\tikz@lg@parse@noquote{target}}}%

\def\tikz@lg@parse@noquote#1#2\pgf@stop{{\tikzgraphsset{#1 edge style={#2}}}}%
\def\tikz@lg@parse@quote#1#2\pgf@stop{%
  {\tikzgraphsset{/tikz/node quotes mean={#1 edge node={node [every edge quotes,##2]{##1}}},/utils/exec=\tikz@enable@node@quotes,#2}}%
}%

\tikzgraphsset{
  clear >/.style=target edge clear,
  clear , -!-, or <-> expected}%
    }%
  }%
}%

\def\tikz@lib@graph@scope@minus-{
  \pgfutil@ifnextchar>\tikz@lib@graph@forward@arrow{%
    \pgfutil@ifnextchar-\tikz@lib@graph@undirected@arrow{%
      \pgfutil@ifnextchar!\tikz@lib@graph@no@arrow{%
        \pgfutil@ifnextchar\pgf@stop@eodashes\tikz@lib@graph@graph@done{%
          \tikzerror{One of the arrow types <-, --, ->, -!-, or <-> expected}%
          \tikz@lib@graph@undirected@arrow%
        }%
      }%
    }%
  }%
}%

\def\tikz@lib@graph@scope@less<-{\tikz@lib@graph@back@arrow}%





\tikzgraphsset{
  declare/.code 2 args={\expandafter\def\csname tikz@lib@graph@def@#1\endcsname{\tikz@lib@graph@do@graph{#2}}}%
}%

\def\tikz@lib@graph@handle@graph#1{%
  \begingroup%
    \let\tikz@lib@graph@node@list\pgfutil@empty%
    \tikzgraphsset{@extra group options/.style={#1}}%
    \tikz@lib@graph@start@hint@group%
      \csname tikz@lib@graph@def@\tikz@lib@graph@name@only\endcsname%
    \tikz@lib@graph@end@hint@group%
    \expandafter%
  \endgroup%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\tikz@lib@graph@node@list%
  \expandafter\expandafter\expandafter{\expandafter\tikz@lib@graph@node@list\tikz@lib@graph@node@list}%
  \tikz@lib@graph@hint@aftergroup%
}%

\def\tikz@lib@graph@do@graph#1{%
  \tikz@lib@graph@parse@group{#1}%
}%

\let\tikz@lib@graph@path\pgfutil@empty

\tikzgraphsset{
  name separator/.store in=\tikz@lib@graph@name@separator,
  name separator=\space,
  name/.code={%
    \edef\tikz@lib@graph@path{\tikz@lib@graph@path#1\tikz@lib@graph@name@separator}%
  }%
}%


\def\tikz@lg@newif{\csname newif\endcsname}%
\tikzgraphsset{
  as/.code=\def\tikzgraphnodeas{#1},%
  color class/.style={%
    /utils/exec=\expandafter\tikz@lg@newif\csname iftikz@lgc@#1@\endcsname,
    #1/.style={operator={%
      \edef\tikz@lg@col{\expandafter\noexpand\csname tikz@lgc@#1@true\endcsname}%
      \let\tikz@lg@do\tikz@lg@colorize%
      \tikz@lib@graph@node@list%
    }},
    not #1/.style={operator={%
      \edef\tikz@lg@old@col{\expandafter\noexpand\csname tikz@lgc@#1@true\endcsname}%
      \let\tikz@lg@new@col\pgfutil@empty%
      \let\tikz@lg@do\tikz@lg@change@color%
      \tikz@lib@graph@node@list%
    }},
    recolor #1 by/.style={operator={%
      \edef\tikz@lg@old@col{\expandafter\noexpand\csname tikz@lgc@#1@true\endcsname}%
      \edef\tikz@lg@new@col{\expandafter\noexpand\csname tikz@lgc@##1@true\endcsname}%
      \let\tikz@lg@do\tikz@lg@change@color%
      \tikz@lib@graph@node@list%
    }},
    !#1/.style=not #1,
  },
  color class=source,
  color class=source',
  color class=source'',
  color class=target,
  color class=target',
  color class=all
}%

\def\tikz@lg@init@color#1#2{%
  \expandafter\gdef\csname tikz@lgc@#1\endcsname{#2}%
}%

\def\tikz@lib@graph@cleanup#1{%
  \expandafter\global\expandafter\let\csname tikz@lgc@#1\endcsname\relax%
  \ifcsname tikz@lgca@@#1\endcsname\expandafter\global\expandafter\let\csname tikz@lgca@@#1\endcsname\relax\fi%
  \ifcsname tikz@lgcb@@#1\endcsname\expandafter\global\expandafter\let\csname tikz@lgcb@@#1\endcsname\relax\fi%
}%

\def\tikz@lg@colorize#1{%
  \expandafter\let\expandafter\pgf@temp\csname tikz@lgc@#1\endcsname%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgf@temp%
  \expandafter\expandafter\expandafter{%
    \expandafter\tikz@lg@col\pgf@temp}%
  \expandafter\global\expandafter\let\csname tikz@lgc@#1\endcsname\pgf@temp%
}%

\def\tikz@lg@change@color#1{%
  \def\tikz@lg@temp@save{#1}%
  \let\tikz@lg@collect\pgfutil@empty%
  \expandafter\let\expandafter\pgf@temp\csname tikz@lgc@#1\endcsname%
  \expandafter\tikz@lg@change@check\pgf@temp\pgf@stop%
}%
\def\tikz@lg@change@check#1{%
  \ifx#1\pgf@stop%
    \tikz@lg@change@write@back%
  \else%
    \def\pgf@temp{#1}%
    \ifx\pgf@temp\tikz@lg@old@col%
      \expandafter\tikz@lg@change@add\expandafter{\tikz@lg@new@col}%
    \else%
      \tikz@lg@change@add{#1}%
    \fi%
    \expandafter\tikz@lg@change@check
  \fi%
}%
\def\tikz@lg@change@add#1{%
  \expandafter\def\expandafter\tikz@lg@collect\expandafter{\tikz@lg@collect#1}%
}%

\def\tikz@lg@change@write@back{%
  \expandafter\global\expandafter\let\csname tikz@lgc@\tikz@lg@temp@save\endcsname\tikz@lg@collect%
}%



\def\tikz@lg@if@has@color#1#2#3#4{%
  {%
    \csname tikz@lgc@#1\endcsname%
    \expandafter\let\expandafter\pgf@temp\csname iftikz@lgc@#2@\endcsname%
    \ifx\pgf@temp\relax%
      \tikz@lib@reset@temp%
    \fi%
    \pgf@temp%
      \global\tikz@color@testtrue%
    \else%
      \global\tikz@color@testfalse%
    \fi%
  }%
  \iftikz@color@test#3\else#4\fi%
}%
\newif\iftikz@color@test

\def\tikz@lg@if@local@node#1#2#3{\expandafter\ifx\csname tikz@lgc@#1\endcsname\relax#3\else#2\fi}%

\def\tikz@lib@reset@temp{\let\pgf@temp\iffalse}%

\def\tikz@lib@annotate@#1#2#3#4{%
  \expandafter\ifx\csname tikz@lgc#1@@#2\endcsname\relax%
    \expandafter\gdef\csname tikz@lgc#1@@#2\endcsname{{#3}{#4}}%
  \else%
    \expandafter\expandafter\expandafter\tikz@lib@annotate@read\csname tikz@lgc#1@@#2\endcsname{#3}{#4}%
    \expandafter\global\expandafter\let\csname tikz@lgc#1@@#2\endcsname\pgf@temp%
  \fi%
}%
\def\tikz@lib@annotate@read#1#2#3#4{\def\pgf@temp{{#1,#3}{#2#4}}}%

\tikzgraphsset{
  source edge style/.code=\tikz@lib@annotate@{a}{\tikz@lib@graph@name}{#1}{},
  source edge node/.code=\tikz@lib@annotate@{a}{\tikz@lib@graph@name}{}{#1},
  source edge clear/.code={
    \expandafter\global\expandafter\let\csname tikz@lgca@@\tikz@lib@graph@name\endcsname\relax%
  },
  target edge style/.code=\tikz@lib@annotate@{b}{\tikz@lib@graph@name}{#1}{},
  target edge node/.code=\tikz@lib@annotate@{b}{\tikz@lib@graph@name}{}{#1},
  target edge clear/.code={%
    \expandafter\global\expandafter\let\csname tikz@lgcb@@\tikz@lib@graph@name\endcsname\relax%
  }
}%




\def\tikz@lib@graph@pack@node@list{%
  {%
    \let\tikz@lg@packed\pgfutil@empty%
    \let\tikz@lg@do\tikz@lg@packer%
    \tikz@lib@graph@node@list%
    \expandafter
  }\expandafter%
  \def\expandafter\tikz@lib@graph@node@list\expandafter{\tikz@lg@packed}%
}%

\def\tikz@lg@packer#1{%
  \expandafter\ifx\csname tikz@lg@p@#1\endcsname\pgf@stop%
  \else%
    \expandafter\let\csname tikz@lg@p@#1\endcsname\pgf@stop%
    \expandafter\def\expandafter\tikz@lg@packed\expandafter{\tikz@lg@packed\tikz@lg@do{#1}}
  \fi
}%



\def\tikzgraphforeachcolorednode#1#2{%
  \tikz@lib@graph@pack@node@list%
  \expandafter\def\expandafter\iftikz@lib@graph@color@picker\expandafter{\csname iftikz@lgc@#1@\endcsname}%
  \let\tikz@lib@graph@action#2%
  \let\tikz@lg@do\tikz@lg@pick%
  \tikz@lib@graph@node@list%
}%
\def\tikz@lg@pick#1{
  {%
    \csname tikz@lgc@#1\endcsname%
    \iftikz@lib@graph@color@picker
      \global\tikz@color@testtrue%
    \else%
      \global\tikz@color@testfalse%
    \fi%
  }%
  \iftikz@color@test\tikz@lib@graph@action{#1}\fi%
}%




\def\tikzgraphpreparecolor#1#2#3{%
  \let\tikz@lib@graph@count#2%
  \tikz@lib@graph@count0\relax
  \def\tikz@lib@graph@prefix{#3}%
  \tikzgraphforeachcolorednode{#1}\tikz@lib@graph@prepare%
}%

\def\tikz@lib@graph@prepare#1{%
  \advance\tikz@lib@graph@count by1\relax%
  \expandafter\def\csname\tikz@lib@graph@prefix\the\tikz@lib@graph@count\endcsname{#1}%
}%





\tikzgraphsset{
  complete bipartite/.style 2 args={operator={
    \def\tikz@lg@shoreb{#2}%
    \tikzgraphforeachcolorednode{#1}\tikz@lib@graph@bipartite@outer
  }},
  complete bipartite/.default={target'}{source'},
  induced complete bipartite/.style 2 args={
    induced independent set={#1},
    induced independent set={#2},
    complete bipartite={#1}{#2}
  },
  induced complete bipartite/.default={target'}{source'},
}%

\def\tikz@lib@graph@bipartite@outer#1{%
  \def\tikz@lib@graph@from{#1}%
  {%
    \tikzgraphforeachcolorednode{\tikz@lg@shoreb}\tikz@lib@graph@bipartite@inner%
  }%
}%

\def\tikz@lib@graph@bipartite@inner#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\tikz@lib@graph@from\else%
    \tikz@lib@graph@default@new@edge{\tikz@lib@graph@from}{#1}%
  \fi%
}%

\def\tikz@lib@graph@default@new@edge#1#2{%
  \pgfkeysgetvalue{/tikz/graphs/@edges styling}\pgf@temp
  \pgfkeysgetvalue{/tikz/graphs/@edges node}\pgf@temp@b
  \let\tikz@lib@add@temp\pgfutil@empty%
  \tikz@lib@graph@add@edge@annotations{a}{#1}
  \tikz@lib@graph@add@edge@annotations{b}{#2}
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgf@temp%
  \expandafter\expandafter\expandafter{\expandafter\pgf@temp\tikz@lib@add@temp}%
  \expandafter\expandafter\expandafter\tikz@lib@graph@default@new@edge@%
  \expandafter\expandafter\expandafter{\expandafter\pgf@temp\expandafter}\expandafter{\pgf@temp@b}{#1}{#2}%
}%
\def\tikz@lib@graph@default@new@edge@#1#2#3#4{%
  \iftikz@lib@graph@simple%
    \edef\tikz@temp{{\pgfkeysvalueof{/tikz/graphs/default edge kind}}{#3}{#4}}
    \expandafter\tikz@lib@graph@set@simple@edge\tikz@temp{#1}{#2}%
  \else%
    \pgfkeys{/tikz/graphs/.cd,new \pgfkeysvalueof{/tikz/graphs/default edge kind}={#3}{#4}{#1}{#2}}%
  \fi%
}%
\def\tikz@lib@graph@add@edge@annotations#1#2{%
  \ifcsname tikz@lgc#1@@#2\endcsname%
    \expandafter\let\expandafter\tikz@lg@temp@\csname tikz@lgc#1@@#2\endcsname%
    \ifx\tikz@lg@temp@\relax\else
      \expandafter\tikz@lib@graph@add@edge@annotations@\tikz@lg@temp@%
      \let\tikz@lib@add@temp\tikz@lib@final@edge@style
    \fi%
  \fi%
}%
\def\tikz@lib@graph@add@edge@annotations@#1#2{
  \expandafter\def\expandafter\pgf@temp\expandafter{\pgf@temp,#1}%
  \expandafter\def\expandafter\pgf@temp@b\expandafter{\pgf@temp@b#2}%
}%
\def\tikz@lib@final@edge@style{,after source and target edge/.try}%


\tikzgraphsset{
  clique/.style={operator={
      \tikzgraphpreparecolor{#1}\c@pgf@counta{tikz@lg}%
      \tikz@lg@clique@loop%
    }},
  clique/.default=all
}%

\def\tikz@lg@clique@loop{%
  \ifnum\c@pgf@counta=0\relax%
  \else
    \c@pgf@countb=\c@pgf@counta\relax%
    \tikz@lg@clique@loop@inner%
    \advance\c@pgf@counta by-1\relax%
    \expandafter\tikz@lg@clique@loop%
  \fi%
}%

\def\tikz@lg@clique@loop@inner{%
  \advance\c@pgf@countb by-1\relax%
  \ifnum\c@pgf@countb>0\relax%
    \tikz@lib@graph@default@new@edge{\csname tikz@lg\the\c@pgf@countb\endcsname}{\csname tikz@lg\the\c@pgf@counta\endcsname}%
    \expandafter\tikz@lg@clique@loop@inner%
  \fi%
}%



\tikzgraphsset{
  induced independent set/.style={operator={
      \pgfkeysgetvalue{/tikz/graphs/default edge kind}\tikz@lg@default%
      \pgfkeyssetvalue{/tikz/graphs/default edge kind}{-!-}%
      \tikzgraphpreparecolor{#1}\c@pgf@counta{tikz@lg}%
      \tikz@lg@indep@loop%
      \pgfkeyslet{/tikz/graphs/default edge kind}\tikz@lg@default%
    }},
  induced independent set/.default=all
}%

\def\tikz@lg@indep@loop{%
  \ifnum\c@pgf@counta=0\relax%
  \else
    \c@pgf@countb=\c@pgf@counta\relax%
    \tikz@lg@indep@loop@inner%
    \advance\c@pgf@counta by-1\relax%
    \expandafter\tikz@lg@indep@loop%
  \fi%
}%

\def\tikz@lg@indep@loop@inner{%
  \advance\c@pgf@countb by-1\relax%
  \ifnum\c@pgf@countb>0\relax%
    \tikz@lib@graph@default@new@edge{\csname tikz@lg\the\c@pgf@counta\endcsname}{\csname tikz@lg\the\c@pgf@countb\endcsname}%
    \expandafter\tikz@lg@indep@loop@inner%
  \fi%
}%



\tikzgraphsset{
  path/.style={operator={%
      \let\tikz@lg@prev\relax%
        \tikzgraphforeachcolorednode{#1}\tikz@lib@graph@path@do%
  }},
  path/.default=all,
  induced path/.style={induced independent set={#1},path={#1}},
  induced path/.default=all,
}%

\def\tikz@lib@graph@path@do#1{%
  \ifx\tikz@lg@prev\relax%
  \else%
    \tikz@lib@graph@default@new@edge{\tikz@lg@prev}{#1}%
  \fi
  \def\tikz@lg@prev{#1}%
}%



\tikzgraphsset{
  cycle/.style={operator={%
    \let\tikz@lg@prev\relax%
    \let\tikz@lg@first\relax%
    \tikzgraphforeachcolorednode{#1}\tikz@lib@graph@cycle@do%
    \ifx\tikz@lg@first\relax%
    \else%
      \tikz@lib@graph@default@new@edge{\tikz@lg@prev}{\tikz@lg@first}%
    \fi%
  }},
  cycle/.default=all,
  induced cycle/.style={induced independent set={#1},cycle={#1}},
  induced cycle/.default=all,
}%

\def\tikz@lib@graph@cycle@do#1{%
  \ifx\tikz@lg@prev\relax%
    \def\tikz@lg@prev{#1}%
    \let\tikz@lg@first\tikz@lg@prev%
  \else%
    \tikz@lib@graph@default@new@edge{\tikz@lg@prev}{#1}%
    \def\tikz@lg@prev{#1}%
  \fi%
}%





\tikzgraphsset{
  matching and star/.style 2 args={operator=%
    {%
      \tikzgraphpreparecolor{#1}\c@pgf@counta{tikz@lg}
      \c@pgf@countb=0\relax%
      \let\tikz@lg@prev\relax
      \tikzgraphforeachcolorednode{#2}\tikz@lib@graph@flow@do%
      \tikz@lib@graph@flow@rest%
    }%
  },
  matching and star/.default={target'}{source'}
}%

\def\tikz@lib@graph@flow@do#1{%
  \advance\c@pgf@countb by1\relax%
  \ifnum\c@pgf@countb>\c@pgf@counta\relax%
    \c@pgf@countb=\c@pgf@counta\relax%
  \fi%
  \ifnum\c@pgf@countb>0\relax%
    \tikz@lib@graph@default@new@edge{\csname tikz@lg\the\c@pgf@countb\endcsname}{#1}%
  \fi%
  \def\tikz@lg@prev{#1}%
}%

\def\tikz@lib@graph@flow@rest{%
  \ifnum\c@pgf@countb<\c@pgf@counta\relax%
    \ifnum\c@pgf@countb>0\relax%
      \advance\c@pgf@countb by1\relax%
      \tikz@lib@graph@default@new@edge{\csname tikz@lg\the\c@pgf@countb\endcsname}{\tikz@lg@prev}%
      \expandafter\tikz@lib@graph@flow@rest%
    \fi%
  \fi%
}%




\tikzgraphsset{
  matching/.style 2 args={operator=
    {%
      \tikzgraphpreparecolor{#1}\c@pgf@counta{tikz@lg}
      \c@pgf@countb=0\relax%
      \tikzgraphforeachcolorednode{#2}\tikz@lib@graph@matching@do%
    }%
  },
  matching/.default={target'}{source'}
}%

\def\tikz@lib@graph@matching@do#1{%
  \advance\c@pgf@countb by1\relax%
  \ifnum\c@pgf@countb>\c@pgf@counta\relax%
  \else%
    \tikz@lib@graph@default@new@edge{\csname tikz@lg\the\c@pgf@countb\endcsname}{#1}%
  \fi%
}%






\tikzgraphsset{
  butterfly/.style={operator=
    {}{%
      \pgfkeys{/tikz/graphs/butterfly/.cd,#1}%
      \ifnum\pgfkeysvalueof{/tikz/graphs/butterfly/level}=0\relax%
        \tikzgraphinvokeoperator{matching and star={\pgfkeysvalueof{/tikz/graphs/butterfly/from}}{\pgfkeysvalueof{/tikz/graphs/butterfly/to}}}%
      \else%
        {%
          \tikzgraphpreparecolor{\pgfkeysvalueof{/tikz/graphs/butterfly/from}}\c@pgf@counta{tikz@lg}
          \c@pgf@countb=0\relax%
          \tikzgraphforeachcolorednode{\pgfkeysvalueof{/tikz/graphs/butterfly/to}}\tikz@lib@graph@butterfly@do%
        }%
        \iftikz@butterfly@prime\else\tikzgraphinvokeoperator{matching and star={\pgfkeysvalueof{/tikz/graphs/butterfly/from}}{\pgfkeysvalueof{/tikz/graphs/butterfly/to}}}\fi%
      \fi%
    }%
  },
  butterfly/.default=,
  butterfly/level/.initial=1,
  butterfly/from/.initial=target',
  butterfly/to/.initial=source',
  butterfly'/.style={operator={}{\tikz@butterfly@primetrue\pgfkeysalso{butterfly={#1}}}},
  butterfly'/.default=,
}%

\newif\iftikz@butterfly@prime

\def\tikz@lib@graph@butterfly@do#1{%
  \advance\c@pgf@countb by1\relax%
  \c@pgf@countc=\pgfkeysvalueof{/tikz/graphs/butterfly/level}\relax%
  {%
    \count0=\c@pgf@countc\relax%
    \multiply\count0 by2\relax%
    \count1=\c@pgf@countb\relax%
    \advance\count1 by-1\relax%
    \count2=\count1\relax%
    \count3=\count1\relax%
    \divide\count1 by\count0\relax%
    \multiply\count1 by\count0\relax%
    \advance\count2 by-\count1\relax%
    \ifnum\count2<\c@pgf@countc\relax%
      \advance\count3 by \c@pgf@countc\relax%
    \else%
      \advance\count3 by -\c@pgf@countc\relax%
    \fi%
    \expandafter%
  }%
  \expandafter\c@pgf@countc\the\count3\relax%
  \advance\c@pgf@countc by1\relax%
  \ifnum\c@pgf@countc>\c@pgf@counta\relax%
    \c@pgf@countc=\c@pgf@counta\relax%
  \fi%
  \tikz@lib@graph@default@new@edge{\csname tikz@lg\the\c@pgf@countc\endcsname}{#1}%
}%




\tikzgraphsset{no edges/.style={operator=\relax}}%




\tikzgraphsset{
  grid/.style={operator={
      \tikzgraphpreparecolor{#1}\c@pgf@counta{tikz@lg}%
      \c@pgf@countb=0\relax%
      \tikzgraphpreparewrapafter%
      \tikz@lg@grid@loop%
    }%
  },
  grid/.default=all
}%

\def\tikzgraphpreparewrapafter{%
  \pgfkeysgetvalue{/tikz/graphs/wrap after}\tikz@temp%
  \ifnum\tikz@temp=0\relax%
    \pgfmathparse{sqrt(\tikzgraphVnum)}%
    \pgfmathint{\pgfmathresult}%
    \edef\tikzgraphwrapafter{\pgfmathresult}%
  \else%
    \edef\tikzgraphwrapafter{\tikz@temp}
  \fi%
}%

\def\tikz@lg@grid@loop{%
  \ifnum\c@pgf@counta=0\relax%
  \else%
    \advance\c@pgf@countb by 1\relax%
    \pgfmathmod{\c@pgf@countb-1}{\tikzgraphwrapafter}%
    \pgfmathint{\pgfmathresult}%
    \ifnum\pgfmathresult>0%
      \pgfmathsubtract{\c@pgf@countb}{1}%
      \pgfmathint{\pgfmathresult}%
      \tikz@lib@graph@default@new@edge{\csname tikz@lg\the\c@pgf@countb\endcsname}{\csname tikz@lg\pgfmathresult\endcsname}%
    \fi%
    \pgfmathparse{\c@pgf@countb <= \tikzgraphwrapafter}%
    \ifnum\pgfmathresult=0%
      \pgfmathsubtract{\c@pgf@countb}{\tikzgraphwrapafter}%
      \pgfmathint{\pgfmathresult}%
      \tikz@lib@graph@default@new@edge{\csname tikz@lg\pgfmathresult\endcsname}{\csname tikz@lg\the\c@pgf@countb\endcsname}%
    \fi%
    \advance\c@pgf@counta by-1\relax%
    \expandafter\tikz@lg@grid@loop%
  \fi%
}%





\tikzgraphsset{
  placement/.cd,
  compute position/.code=\tikz@lib@graph@linear@pos,
  place/.code={%
    \pgfkeys{/tikz/graphs/placement/compute position}%
    \aftergroup\tikz@lib@graph@reset@locals%
    \pgfkeyssetvalue{/tikz/graphs/placement/element count}{0}%
    \pgfkeyssetvalue{/tikz/graphs/placement/chain count}{0}%
    \pgfkeyssetvalue{/tikz/graphs/placement/depth}{0}%
    \pgfkeyssetvalue{/tikz/graphs/placement/width}{0}%
    \pgfkeyssetvalue{/tikz/graphs/placement/local depth}{0}%
    \pgfkeyssetvalue{/tikz/graphs/placement/local width}{0}%
  },
  element count/.initial=0,
  chain count/.initial=0,
  depth/.initial=0,
  width/.initial=0,
  level/.initial=0,
  logical node depth/.code=\def\pgfmathresult{1},
  logical node width/.code=\def\pgfmathresult{1},
}%

\def\tikz@lib@graph@reset@locals{%
  \gdef\tikz@lib@graph@group@depth{0}%
  \gdef\tikz@lib@graph@group@width{0}%
}%



\tikzgraphsset{
  Cartesian placement/.style={
    placement/place,
    placement/compute position/.code=\tikz@lib@graph@linear@pos%
  },
  chain shift/.initial={(1,0)},
  group shift/.initial={(0,-1)},
  grow right/.style={
    placement/place,
    chain shift={(#1,0)},
    @auto anchor horizontal=center,
    placement/logical node width/.code=\def\pgfmathresult{1}
  },
  grow right/.default=1,
  grow left/.style={
    placement/place,
    chain shift={(-#1,0)},
    @auto anchor horizontal=center,
    placement/logical node width/.code=\def\pgfmathresult{1}
  },
  grow left/.default=1,
  grow up/.style={
    placement/place,
    chain shift={(0,#1)},
    @auto anchor horizontal=center,
    placement/logical node width/.code=\def\pgfmathresult{1}
  },
  grow up/.default=1,
  grow down/.style={
    placement/place,
    chain shift={(0,-#1)},
    @auto anchor vertical=center,
    placement/logical node width/.code=\def\pgfmathresult{1}
  },
  grow down/.default=1,
  branch right/.style={
    placement/place,
    group shift={(#1,0)},
    @auto anchor horizontal=center,
    placement/logical node depth/.code=\def\pgfmathresult{1}
  },
  branch right/.default=1,
  branch left/.style={
    placement/place,
    group shift={(-#1,0)},
    @auto anchor horizontal=center,
    placement/logical node depth/.code=\def\pgfmathresult{1}
  },
  branch left/.default=1,
  branch up/.style={
    placement/place,
    group shift={(0,#1)},
    @auto anchor vertical=center,
    placement/logical node depth/.code=\def\pgfmathresult{1}
  },
  branch up/.default=1,
  branch down/.style={
    placement/place,
    group shift={(0,-#1)},
    @auto anchor vertical=center,
    placement/logical node depth/.code=\def\pgfmathresult{1}
  },
  branch down/.default=1,
  grow right sep/.style={
    Cartesian placement,
    chain shift={(1pt,0)},
    @auto anchor horizontal=west,
    placement/logical node width/.code=\tikz@lib@graph@width@sep{##1}{#1}
  },
  grow right sep/.default=1em,
  grow left sep/.style={
    Cartesian placement,
    chain shift={(-1pt,0)},
    @auto anchor horizontal=east,
    placement/logical node width/.code=\tikz@lib@graph@width@sep{##1}{#1}
  },
  grow left sep/.default=1em,
  grow up sep/.style={
    Cartesian placement,
    chain shift={(0,1pt)},
    @auto anchor vertical=south,
    placement/logical node width/.code=\tikz@lib@graph@depth@sep{##1}{#1}
  },
  grow up sep/.default=1em,
  grow down sep/.style={
    Cartesian placement,
    chain shift={(0,-1pt)},
    @auto anchor vertical=north,
    placement/logical node width/.code=\tikz@lib@graph@depth@sep{##1}{#1}
  },
  grow down sep/.default=1em,
  grow right sep/.style={
    Cartesian placement,
    chain shift={(1pt,0)},
    @auto anchor horizontal=west,
    placement/logical node width/.code=\tikz@lib@graph@width@sep{##1}{#1}
  },
  branch right sep/.style={
    Cartesian placement,
    group shift={(1pt,0)},
    @auto anchor horizontal=west,
    placement/logical node depth/.code=\tikz@lib@graph@width@sep{##1}{#1}
  },
  branch right sep/.default=1em,
  branch left sep/.style={
    Cartesian placement,
    group shift={(-1pt,0)},
    @auto anchor horizontal=east,
    placement/logical node depth/.code=\tikz@lib@graph@width@sep{##1}{#1}
  },
  branch left sep/.default=1em,
  branch up sep/.style={
    Cartesian placement,
    group shift={(0,1pt)},
    @auto anchor vertical=south,
    placement/logical node depth/.code=\tikz@lib@graph@depth@sep{##1}{#1}
  },
  branch up sep/.default=1em,
  branch down sep/.style={
    Cartesian placement,
    group shift={(0,-1pt)},
    @auto anchor vertical=north,
    placement/logical node depth/.code=\tikz@lib@graph@depth@sep{##1}{#1}
  },
  branch down sep/.default=1em,
  @auto anchor horizontal/.style={
    nodes={anchor=\csname tikz@lib@graph@auto@\tikz@lib@graph@auto@h @\tikz@lib@graph@auto@v\endcsname},
    /utils/exec=\def\tikz@lib@graph@auto@h{#1}
  },
  @auto anchor vertical/.style={
    nodes={anchor=\csname tikz@lib@graph@auto@\tikz@lib@graph@auto@h @\tikz@lib@graph@auto@v\endcsname},
    /utils/exec=\def\tikz@lib@graph@auto@v{#1}
  },
  no placement/.style={
    placement/place,
    placement/compute position/.code=%
  }
}%

\def\tikz@lib@graph@auto@h{center}%
\def\tikz@lib@graph@auto@v{center}%

\def\tikz@lib@graph@auto@center@center{center}%
\def\tikz@lib@graph@auto@west@center{west}%
\def\tikz@lib@graph@auto@east@center{east}%
\def\tikz@lib@graph@auto@center@north{north}%
\def\tikz@lib@graph@auto@west@north{north west}%
\def\tikz@lib@graph@auto@east@north{north east}%
\def\tikz@lib@graph@auto@center@south{south}%
\def\tikz@lib@graph@auto@west@south{south west}%
\def\tikz@lib@graph@auto@east@south{south east}%

\def\tikz@lib@graph@linear@pos{%
  \pgfkeysgetvalue{/tikz/graphs/chain shift}\tikz@temp
  \expandafter\tikz@scan@one@point\expandafter\pgf@process\tikz@temp
  \pgf@process{\pgfpointscale{\pgfkeysvalueof{/tikz/graphs/placement/width}}{}}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgfkeysgetvalue{/tikz/graphs/group shift}\tikz@temp
  \expandafter\tikz@scan@one@point\expandafter\pgf@process\tikz@temp
  \pgf@process{\pgfpointscale{\pgfkeysvalueof{/tikz/graphs/placement/depth}}{}}%
  \advance\pgf@xa by\pgf@x%
  \advance\pgf@ya by\pgf@y%
  \edef\tikz@lib@graph@shift{(\the\pgf@xa,\the\pgf@ya)}
  \pgfkeys{/tikz/graphs/nodes/.expanded={shift={\tikz@lib@graph@shift}}}
}%


\def\tikz@lib@graph@width@sep#1#2{%
  \pgf@process{\pgfpointdiff{\pgfpointanchor{#1}{west}}{\pgfpointanchor{#1}{east}}}%
  \pgfmathparse{#2+\the\pgf@x}%
}%

\def\tikz@lib@graph@depth@sep#1#2{%
  \pgf@process{\pgfpointdiff{\pgfpointanchor{#1}{south}}{\pgfpointanchor{#1}{north}}}%
  \pgfmathparse{#2+\the\pgf@y}%
}%



\tikzgraphsset{,
  circular placement/.style={
    placement/place,
    placement/compute position/.code=\tikz@lib@graph@circular@pos,%
    placement/logical node depth/.code=\def\pgfmathresult{1},
    placement/logical node width/.code=\def\pgfmathresult{1},
  },
  clockwise/.style={
    circular placement,
    group polar shift={(-360/#1:0)}
  },
  clockwise/.default=\tikzgraphVnum,
  counterclockwise/.style={
    circular placement,
    group polar shift={(360/#1:0)}
  },
  counterclockwise/.default=\tikzgraphVnum,
  chain polar shift/.initial={(0:1cm)},
  group polar shift/.initial={(60:0)},
  radius/.initial=1cm,
  phase/.initial=90,
}%

\def\tikz@lib@graph@circular@pos{%
  \pgfkeysgetvalue{/tikz/graphs/chain polar shift}\tikz@temp
  \expandafter\tikz@lib@graph@decompose@polar\tikz@temp%
  \pgf@process{\pgfpointscale{\pgfkeysvalueof{/tikz/graphs/placement/width}}{}}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgfkeysgetvalue{/tikz/graphs/group polar shift}\tikz@temp
  \expandafter\tikz@lib@graph@decompose@polar\tikz@temp%
  \pgf@process{\pgfpointscale{\pgfkeysvalueof{/tikz/graphs/placement/depth}}{}}%
  \advance\pgf@xa by\pgf@x%
  \advance\pgf@ya by\pgf@y%
  \pgfmathparse{\pgfkeysvalueof{/tikz/graphs/radius}}%
  \advance\pgf@ya by\pgfmathresult pt%
  \pgfmathsetmacro\tikz@temp{\the\pgf@xa+\pgfkeysvalueof{/tikz/graphs/phase}}%
  \edef\tikz@lib@graph@shift{(\tikz@temp:\the\pgf@ya)}
  \pgfkeys{/tikz/graphs/nodes/.expanded={shift={\tikz@lib@graph@shift}}}
}%


\def\tikz@lib@graph@decompose@polar(#1:#2){%
  \pgfmathsetlength\pgf@x{#1}%
  \pgfmathsetlength\pgf@y{#2}%
}%


\tikzgraphsset{
  grid placement/.style={
    placement/place,
    placement/compute position/.code=\tikz@lib@graph@grid@pos,%
  },
}%


\def\tikz@lib@graph@grid@pos{%
  \tikzgraphpreparewrapafter%
  \pgfkeysgetvalue{/tikz/graphs/placement/depth}\tikz@temp@depth%
  \pgfkeysgetvalue{/tikz/graphs/placement/width}\tikz@temp@width%
  \pgfmathsetmacro{\tikz@temp}{max(\tikz@temp@depth, \tikz@temp@width)}%
  \pgfmathsetmacro{\tikz@temp@col}{mod(\tikz@temp,\tikzgraphwrapafter)}%
  \pgfmathsetmacro{\tikz@temp@row}{div(\tikz@temp,\tikzgraphwrapafter)}%
  \pgfkeysgetvalue{/tikz/graphs/group shift}\tikz@temp%
  \expandafter\tikz@scan@one@point\expandafter\tikz@lib@graph@grid@pos@a\tikz@temp%
  \pgfkeysgetvalue{/tikz/graphs/chain shift}\tikz@temp%
  \expandafter\tikz@scan@one@point\expandafter\tikz@lib@graph@grid@pos@b\tikz@temp%
  \edef\tikz@lib@graph@shift{(\the\pgf@xa,\the\pgf@ya)}
  \pgfkeys{/tikz/graphs/nodes/.expanded={shift={\tikz@lib@graph@shift}}}
}%

\def\tikz@lib@graph@grid@pos@a#1{\pgf@process{\pgfpointscale{\tikz@temp@row}{#1}}\pgf@xa=\pgf@x\relax\pgf@ya=\pgf@y\relax}%
\def\tikz@lib@graph@grid@pos@b#1{\pgf@process{\pgfpointscale{\tikz@temp@col}{#1}}%
  \advance\pgf@xa by\pgf@x\relax
  \advance\pgf@ya by\pgf@y\relax}%

\tikzgraphsset{
  wrap after/.initial=0,
  V/.code={%
    \def\tikzgraphV{#1}%
    \c@pgf@counta=0\foreach \tikz@dummy in {#1} {\global\advance\c@pgf@counta by1\relax}%
    \edef\tikzgraphVnum{\the\c@pgf@counta}
  },
  V={1},
  n/.style={V={1,...,#1},name shore V/.style={name=V}},
  W/.code={%
    \def\tikzgraphW{#1}%
    \c@pgf@counta=0\foreach \tikz@dummy in {#1} {\global\advance\c@pgf@counta by1\relax}%
    \edef\tikzgraphWnum{\the\c@pgf@counta}
  },
  W={1},
  m/.style={W={1,...,#1},name shore W/.style={name=W}},
  name shore V/.style=,
  name shore W/.style=,
}%




\tikzgraphsset{quick/.is if=tikz@graph@quick}%
\newif\iftikz@graph@quick

\def\tikz@lib@graphs@parse@quick@graph{
  \begingroup%
  \global\tikz@qnode@count0\relax%
  \let\tikzgraphnodepath\pgfutil@empty%
  \tikz@q@outertrue%
  \afterassignment\tikz@lib@graphs@quick@main\let\pgf@temp=%
}%

\newcount\tikz@qnode@count
\newif\iftikz@q@outer

\def\tikz@lib@graphs@quick@main{%
  \afterassignment\tikz@lib@graphs@quick@handle\let\pgf@let@token=%
}%
\def\tikz@lib@graphs@quick@handle{%
  \ifx\pgf@let@token"%
    \expandafter\tikz@lib@graphs@quick@first@node%
  \else%
    \expandafter\tikz@lib@graphs@quick@other%
  \fi%
}%
\def\tikz@lib@graphs@quick@other{%
  \let\tikz@next\tikz@lib@graphs@quick@error%
  \ifx\pgf@let@token\egroup%
    \let\tikz@next\tikz@lib@graphs@quick@end@group%
  \else%
    \ifx\pgf@let@token\bgroup%
      \let\tikz@next\tikz@lib@graphs@quick@start@group%
    \else%
      \ifx\pgf@let@token\par%
        \let\tikz@next\tikz@lib@graphs@quick@main%
      \fi%
    \fi
  \fi%
  \tikz@next%
}%

\def\tikz@lib@graphs@quick@error#1{\tikzerror{Unexpected token '\string#1' in quick graph syntax}\tikz@lib@graphs@quick@main}%
\def\tikz@lib@graphs@quick@start@group{%
  \pgfutil@ifnextchar[\tikz@lib@graphs@quick@start@group@{\tikzerror{Group
      in quick graph syntax must start with options.}}
}%

\def\tikz@lib@graphs@quick@start@group@[#1]{%
  \begingroup%
    \tikz@q@outerfalse%
    \tikzgraphsset{#1}%
    \tikz@lib@graphs@quick@main%
}%
\def\tikz@lib@graphs@quick@end@group{%
  \iftikz@q@outer%
    \endgroup%
    \pgfutil@loop%
    \ifnum\tikz@qnode@count>0\relax%
      \expandafter\global\expandafter\let\csname tikz@gr@q@@\csname tikz@gr@qn@@\the\tikz@qnode@count\endcsname\endcsname\relax%
      \expandafter\global\expandafter\let\csname tikz@gr@qn@@\the\tikz@qnode@count\endcsname\relax%
      \global\advance\tikz@qnode@count by-1\relax%
    \pgfutil@repeat%
    \expandafter\tikz@lib@graph@main@done%
  \else%
    \endgroup%
    \expandafter\tikz@lib@graphs@end@group@%
  \fi%
}%
\def\tikz@lib@graphs@end@group@{%
  \pgfutil@ifnextchar;{\expandafter\tikz@lib@graphs@quick@main\pgfutil@gobble}{%
    \pgfutil@ifnextchar,{\expandafter\tikz@lib@graphs@quick@main\pgfutil@gobble}{%
      \tikzerror{Graph groups in quick syntax must be followed by a semicolon or a comma.}%
    }%
  }%
}%


\def\tikz@lib@graphs@quick@first@node{%
  \let\tikz@quick@prev@node\relax%
  \tikz@lib@graphs@quick@node%
}%

\def\tikz@lib@graphs@quick@node#1"{%
  \def\tikzgraphnodename{#1}%
  \let\tikzgraphnodetext\tikzgraphnodename%
  \iftikzgraphsautonumbernodes
    \edef\tikzgraphnodename{\tikzgraphnodename\tikz@lib@auto@sep\the\tikz@lib@auto@number}%
    \global\advance\tikz@lib@auto@number by1\relax%
  \fi
  \pgfutil@ifnextchar/\tikz@lib@graphs@quick@text\tikz@lib@graphs@quick@opt%
}%
\def\tikz@lib@graphs@quick@text/"#1"{%
  \def\tikzgraphnodetext{#1}%
  \tikz@lib@graphs@quick@opt%
}%
\def\tikz@lib@graphs@quick@opt{%
  \pgfutil@ifnextchar[\tikz@lib@graphs@quick@withopt{\tikz@lib@graphs@quick@withopt[]}%
}%
\def\tikz@lib@graphs@quick@withopt[#1]{%
  \expandafter\ifx\csname tikz@gr@q@@\tikzgraphnodename\endcsname\relax%
    \global\advance\tikz@qnode@count by1\relax%
    \expandafter\global\expandafter\let\csname tikz@gr@q@@\tikzgraphnodename\endcsname\pgfutil@empty%
    \expandafter\global\expandafter\let\csname tikz@gr@qn@@\the\tikz@qnode@count\endcsname\tikzgraphnodename%
    \let\tikzgraphnodefullname\tikzgraphnodename%
    \let\tikzgraphnodeas\tikzgraphnodeas@default%
    \node [%
      name=\tikzgraphnodename,%
      graphs/redirect unknown to tikz,
      /tikz/graphs/.cd,%
      /tikz/graphs/@nodes styling,%
      #1]%
      {%
        \tikzgraphnodeas%
      };%
  \else%
    \tikzgdlatenodeoptionacallback{\tikzgraphnodename}%
    \node also[graphs/redirect unknown to tikz,/tikz/graphs/.cd,#1](\tikzgraphnodename);%
  \fi%
  \tikz@lig@graph@quikc@make@edge@if@necessary%
  \tikz@lib@graphs@quick@scan@after@node%
}%

\def\tikz@lig@graph@quikc@make@edge@if@necessary{%
  \ifx\tikz@quick@prev@node\relax%
  \else%
    \tikz@lib@graphs@quick@make@edge%
  \fi%
}%

\def\tikz@lib@graphs@quick@scan@after@node{%
  \pgfutil@ifnextchar,\tikz@lib@graphs@quick@comma{%
    \pgfutil@ifnextchar;\tikz@lib@graphs@quick@semi{%
      \pgfutil@ifnextchar\egroup{\tikz@lib@graphs@quick@semi;}{%
        \pgfutil@ifnextchar\par{\expandafter\tikz@lib@graphs@quick@scan@after@node\tikz@lib@graphs@quick@gobble@par}%
        \tikz@lib@graphs@quick@connector}}}%
}%
\long\def\tikz@lib@graphs@quick@gobble@par#1{}%

\def\tikz@lib@graphs@quick@comma,{\tikz@lib@graphs@quick@main}%
\def\tikz@lib@graphs@quick@semi;{\tikz@lib@graphs@quick@main}%
\def\tikz@lib@graphs@quick@connector#1#2{%
  \def\tikz@lib@graphs@quick@edge@kind{#1#2}%
  \pgfutil@ifnextchar>\tikz@lib@graphs@back@edge{%
    \pgfutil@ifnextchar[\tikz@lib@graphs@quick@connector@handle@opt{\tikz@lib@graphs@quick@connector@handle@opt[]}%
  }%
}%
\def\tikz@lib@graphs@back@edge#1{%
  \expandafter\def\expandafter\tikz@lib@graphs@quick@edge@kind\expandafter{\tikz@lib@graphs@quick@edge@kind#1}%
  \pgfutil@ifnextchar[\tikz@lib@graphs@quick@connector@handle@opt{\tikz@lib@graphs@quick@connector@handle@opt[]}%
}%
\def\tikz@lib@graphs@quick@connector@handle@opt[#1]{%
  \def\tikz@lib@graphs@quick@edge@options{#1}%
  \let\tikz@quick@prev@node\tikzgraphnodename%
  \tikz@lib@graphs@quick@scan@after@connector%
}%
\def\tikz@lib@graphs@quick@scan@after@connector{%
  \pgfutil@ifnextchar\par{\expandafter\tikz@lib@graphs@quick@scan@after@connector\tikz@lib@graphs@quick@gobble@par}{%
    \pgfutil@ifnextchar"{\expandafter\tikz@lib@graphs@quick@node\pgfutil@gobble}{%
      \tikzerror{Quotation marks expected after edge connector}%
      }%
  }%
}%

\def\tikz@lib@graphs@quick@make@edge{%
  {
    \expandafter\tikz@lib@graphs@quick@make@edge@styling\expandafter{\tikz@lib@graphs@quick@edge@options}%
    \expandafter\expandafter\expandafter\tikz@lib@graphs@quick@make@edge@for%
    \expandafter\expandafter\expandafter{\expandafter\tikz@quick@prev@node\expandafter}\expandafter{\tikzgraphnodename}%
  }
}%

\def\tikz@lib@graphs@quick@make@edge@styling#1{%
  \tikz@enable@edge@quotes%
  \tikzgraphsset{.unknown/.code=\tikz@lib@graph@unknown@edge@option{##1},#1}%
}%

\def\tikz@lib@graphs@quick@make@edge@for#1#2{%
  \pgfkeysgetvalue{/tikz/graphs/@edges styling}\pgf@tempa
  \pgfkeysgetvalue{/tikz/graphs/@edges node}\pgf@temp@b
  \expandafter\expandafter\expandafter\tikz@lib@graphs@quick@make@edge@for@with%
  \expandafter\expandafter\expandafter{\expandafter\pgf@tempa\expandafter}\expandafter{\pgf@temp@b}{#1}{#2}%
}%

\def\tikz@lib@graphs@quick@make@edge@for@with#1#2#3#4{%
  \tikzgraphsset{new \tikz@lib@graphs@quick@edge@kind={#3}{#4}{#1}{#2}}%
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/graphs/tikzlibrarygraphs.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/graphs/tikzlibrarygraphs.standard.code.tex ====

\ProvidesFileRCS{tikzlibrarygraphs.standard.code.tex}

\usetikzlibrary{graphs}%



\tikzgraphsset{
  declare={subgraph I_n}%
  {
    \foreach \tikz@lib@graph@node@num in \tikzgraphV
    { \tikz@lib@graph@node@num }
  },
  declare={subgraph I_nm}%
  {
    subgraph I_n [name shore V] -- [no edges]
    subgraph I_n [name shore W, V/.expand once=\tikzgraphW]
  },
  declare={subgraph K_n}%
  {
    [clique]
    subgraph I_n
  },
  declare={subgraph K_nm}%
  {
    [color class=shore V,
     color class=shore W,
     complete bipartite={shore V}{shore W}]
    subgraph I_n [name shore V, shore V] -- [no edges]
    subgraph I_n [name shore W, V/.expand once=\tikzgraphW, shore W]
  },
  declare={subgraph C_n}%
  {
    [cycle]
    subgraph I_n
  },
  declare={subgraph P_n}%
  {
    [path]
    subgraph I_n
  },
  declare={subgraph Grid_n}%
  {
    [grid]
    subgraph I_n
  },
  p/.initial=0.5,
  declare={subgraph G_np}%
  {
    [/utils/exec={
      \pgfmathsetmacro\tikz@lib@lg@p{\pgfkeysvalueof{/tikz/graphs/p}}
      \let\tikz@lib@gnp@edges\pgfutil@empty%
      \foreach \tikz@lib@graph@node@a [count=\tikz@lib@g@count@a] in \tikzgraphV
        \foreach \tikz@lib@graph@node@b [count=\tikz@lib@g@count@b] in \tikzgraphV
        {
          \ifnum\tikz@lib@g@count@a<\tikz@lib@g@count@b\relax
            \pgfmathparse{rnd}
            \ifdim\pgfmathresult pt<\tikz@lib@lg@p pt%
              \ifx\tikz@lib@gnp@edges\pgfutil@empty
                \xdef\tikz@lib@gnp@edges{\tikz@lib@graph@node@a--\tikz@lib@graph@node@b}%
              \else
                \xdef\tikz@lib@gnp@edges{\tikz@lib@gnp@edges,\tikz@lib@graph@node@a--\tikz@lib@graph@node@b}%
              \fi
            \fi
          \fi
        }
      }]
      \foreach \tikz@lg@temp in \tikz@lib@gnp@edges {
        [parse/.expand once=\tikz@lg@temp]
      }
  },
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/graphs/tikzlibrarygraphs.standard.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzexternalshared.code.tex ====

\toksdef\t@tikzexternal@tmpa=0
\toksdef\t@tikzexternal@tmpb=1

\newif\iftikzexternal@nestedflag
\newif\iftikzexternal@verboseuptodate
\newif\iftikzexternal@verboseio
\newif\iftikzexternal@genfigurelist
\newif\iftikzexternal@onlynamed
\newif\iftikzexternal@file@isuptodate
\newif\iftikzexternal@force@remake
\newif\iftikzexternal@optimize
\newif\iftikzexternal@export@enabled
\tikzexternal@export@enabledtrue

\gdef\c@tikzexternal@version{2}

\newif\iftikzexternalremakenext
\newif\iftikzexternal@verbose@optimize
\tikzexternal@verbose@optimizetrue

\newif\iftikzexternalexportnext
\tikzexternalexportnexttrue

\def\tikzifexternalizing#1#2{%
    \ifpgf@external@grabshipout #1\else #2\fi
}%
\def\tikzifexternalizingnext#1#2{%
    \ifpgf@external@grabshipout
        \tikzexternalgetnextfilename\tikzexternal@temp
        \tikzifexternaljobnamematches\tikzexternal@temp{#1}{#2}%
    \else
        #2%
    \fi
}%
\def\tikzifexternalizingcurrent#1#2{%
    \ifpgf@external@grabshipout
        \tikzexternalgetcurrentfilename\tikzexternal@temp
        \ifx\tikzexternal@temp\pgfutil@empty
            #2%
        \else
            \tikzifexternaljobnamematches\tikzexternal@temp{#1}{#2}%
        \fi
    \else
        #2%
    \fi
}%

\def\tikzifexternaljobnamematches#1#2#3{%
    \edef\pgf@tempa{\expandafter\string\csname#1\endcsname}%
    \edef\pgf@tempb{\expandafter\string\csname\pgfactualjobname\endcsname}%
    \ifx\pgf@tempa\pgf@tempb #2\else#3 \fi%
}%


\pgfutil@IfUndefined{pdfshellescape}{%
    \pgfutil@IfUndefined{pdf@shellescape}{%
        \def\tikzexternalcheckshellescape{0}%
    }{%
        \let\tikzexternalcheckshellescape=\pdf@shellescape
    }%
}{%
    \let\tikzexternalcheckshellescape=\pdfshellescape
}%
\ifnum\tikzexternalcheckshellescape=1
    \def\tikzexternalcheckshellescape{\pgfkeysvalueof{/tikz/external/shell escape}\space}%
\else
    \def\tikzexternalcheckshellescape{}%
\fi

\newif\iftikzexternal@auto@detect@jobname

\pgfqkeys{/tikz/external}{
    figure list/.is if=tikzexternal@genfigurelist,
    aux in dpth/.style={/pgf/images/aux in dpth={#1}},%
    disable dependency files/.code={%
        \let\tikzexternalfiledependsonfile@ACTIVE=\tikzexternalfiledependsonfile
    },
    mode/.is choice,
    mode/only graphics/.code   = {%
        \def\tikzexternal@opmode{0}%
        \pgfkeysalso{/pgf/images/aux in dpth=true}%
    },
    mode/no graphics/.code     = {\def\tikzexternal@opmode{1}},
    mode/only pictures/.code   = {\def\tikzexternal@opmode{1}},
    mode/graphics if exists/.code= {%
        \def\tikzexternal@opmode{2}%
        \pgfkeysalso{/pgf/images/aux in dpth=true}%
    },
    mode/list only/.code       = {\def\tikzexternal@opmode{3}\tikzexternal@genfigurelisttrue},
    mode/convert with system call/.code={%
        \def\tikzexternal@opmode{4}%
        \pgfkeysalso{/tikz/external/figure list=false,/pgf/images/aux in dpth=true}%
    },
    mode/list and make/.code   = {%
        \def\tikzexternal@opmode{5}%
        \pgfkeysalso{/tikz/external/figure list=true,/pgf/images/aux in dpth=true}%
    },
    mode=convert with system call,
    force remake/.is if=tikzexternal@force@remake,
    force remake/.default=true,
    failed ref warnings for/.initial={\ref,\cite,\pageref},
    export next/.is if=tikzexternalexportnext,
    export/.is if=tikzexternal@export@enabled,
    remake next/.is if=tikzexternalremakenext,
    remake next/.default=true,
    verbose IO/.is if=tikzexternal@verboseio,
    verbose IO/.default=true,
    verbose IO=true,
    verbose optimize/.is if=tikzexternal@verbose@optimize,
    verbose up to date/.is if=tikzexternal@verboseuptodate,
    verbose/.style={
        verbose IO=#1,
        verbose optimize=#1,
        verbose up to date=#1,
    },
    shell escape/.initial=-shell-escape,
    read main aux/.is if=pgfexternalreadmainaux,
    image discarded text/.initial={%
        [[ \textsc{Image Discarded Due To} \texttt{`/tikz/external/%
                \ifcase\tikzexternal@opmode\relax
                    mode=only graphics%
                \or
                    mode=no graphics%
                \or
                    mode=graphics if exists%
                \or
                    mode=list only%
                \or
                    mode=convert with system call%
                \or
                    mode=list and make%
                \fi
        '}~]]%
        \pgfutil@ifundefined{tikzexternal@warning@at@end}{%
            \pgfutil@ifundefined{AtEndDocument}{}{%
                \AtEndDocument{%
                    \message{! Package tikz Warning: Some images are not up-to-date and need to be generated. }%
                }%
            }%
            \gdef\tikzexternal@warning@at@end{1}%
        }{}%
    },
    optimize/.is choice,
    optimize/true/.code={%
        \tikzexternal@optimizetrue
        \iftikzexternal@optimize
            \ifpgf@external@grabshipout
                \tikzexternal@optimize@REPLACE
            \fi
        \fi
    },
    optimize/false/.code={%
        \tikzexternal@optimizefalse%
        \tikzexternal@optimize@RESTORE
    },%
    optimize=true,
    optimize away text/.code={[ \textsc{\string#1\ optimized away because it does not contribute to exported PDF}]},
    optimize/install/.code={},%
    optimize/restore/.code={},%
    optimize command away/.code 2 args={%
        \expandafter\global\expandafter\let\csname\string#1@ORIG\endcsname=#1%
        \pgfkeysalso{%
            /tikz/external/optimize/install/.append code={%
                \def#1{\tikzexternal@optimize@away@cmd{#1}{#2}}%
            },
            /tikz/external/optimize/restore/.append code={%
                \expandafter\let\expandafter#1\csname\string#1@ORIG\endcsname
            }
        }%
        \iftikzexternal@optimize
            \ifpgf@external@grabshipout
                \tikzexternal@optimize@REPLACE
            \fi
        \fi
    },
    optimize command away=\includegraphics,
    optimize command away=\pgfincludeexternalgraphics,
    optimize latex env away/.code={%
        \expandafter\let\expandafter\pgf@tempa\csname #1\endcsname
        \expandafter\global\expandafter\let\csname #1@ORIG\endcsname=\pgf@tempa%
        \pgfkeysalso{%
            /tikz/external/optimize/install/.append code={%
                \pgfutil@namedef{#1}{\tikzexternal@optimize@away@latex@env{#1}}%
            },
            /tikz/external/optimize/restore/.append code={%
                \pgfutil@namelet{#1}{#1@ORIG}%
            }%
        }%
    },
    only named/.is if=tikzexternal@onlynamed,
    only named/.default=true,
    figure name/.initial=\tikzexternal@realjob-figure,
    reset counter/.code={%
        \expandafter\gdef\csname c@tikzext@no@#1\endcsname{0}%
    },%
    prefix/.code={\tikzsetexternalprefix{#1}},
    up to date check/.is choice,
    up to date check/simple/.code={\def\tikzexternal@uptodate@mode{0}},
    up to date check/md5/.code={\def\tikzexternal@uptodate@mode{1}},
    up to date check/diff/.code={\def\tikzexternal@uptodate@mode{2}},
    up to date check=md5,
}

\expandafter\def\csname tikzexternal@driver@pgfsys-luatex.def\endcsname{%
    \pgfkeyssetvalue{/tikz/external/system call}{%
        lualatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"%
    }%
}%
\expandafter\def\csname tikzexternal@driver@pgfsys-pdftex.def\endcsname{%
    \pgfutil@IfUndefined{directlua}{%
        \pgfkeyssetvalue{/tikz/external/system call}{%
            pdflatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"%
        }%
    }{%
        \pgfkeyssetvalue{/tikz/external/system call}{%
            lualatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"%
        }%
    }%
}%
\expandafter\def\csname tikzexternal@driver@pgfsys-xetex.def\endcsname{%
    \pgfkeyssetvalue{/tikz/external/system call}{%
        xelatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"%
    }%
}%
\expandafter\def\csname tikzexternal@driver@pgfsys-dvips.def\endcsname{%
    \pgfkeyssetvalue{/tikz/external/system call}{%
        latex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource" %
        && dvips -o "\image".ps "\image".dvi %
    }%
}%

\pgfutil@ifundefined{tikzexternal@driver@\pgfsysdriver}{%
    \csname tikzexternal@driver@pgfsys-pdftex.def\endcsname
}{%
    \csname tikzexternal@driver@\pgfsysdriver\endcsname
}%


\def\tikzsetfigurename#1{\pgfkeyssetvalue{/tikz/external/figure name}{#1}}%
\def\tikzappendtofigurename#1{\pgfkeys{/tikz/external/figure name/.add={}{#1}}}

\def\tikzsetexternalprefix#1{\def\tikzexternal@filenameprefix{#1}}
\tikzsetexternalprefix{}

\def\tikzexternalize{%
    \pgfutil@ifnextchar[{%
        \tikzexternalize@opt
    }{%
        \tikzexternalize@opt[]%
    }%
}%
\def\tikzexternalize@opt[#1]{%
    \pgfutil@ifnextchar\bgroup{%
        \tikzexternal@auto@detect@jobnamefalse
        \tikzexternalize@opt@withname[#1]%
    }{%
        \tikzexternal@auto@detect@jobnametrue
        \pgfutil@ifundefined{tikzexternalrealjob}{%
            \let\tikzexternalrealjob=\jobname
        }{}%
        \def\pgf@tempa{\tikzexternalize@opt@withname[#1]}%
        \expandafter\pgf@tempa\expandafter{\tikzexternalrealjob}%
    }%
}%
\def\tikzexternalize@opt@withname[#1]#2{%
    \gdef\tikzexternalrealjob{#2}%
    \if1\tikzexternalize@hasbeencalled
    \else
        \pgfqkeys{/tikz/external}{#1}%
        \def\tikzexternal@realjob{#2}%
        \tikzexternalauxlock@init
        \pgfrealjobname{#2}%
        \def\tikzexternalize@hasbeencalled{1}%
        \tikzexternalenable
        \def\tikzexternal@determineimgextension##1:##2\relax{\gdef\tikzexternalimgextension{##1}}%
        \xdef\pgf@tempa{\pgfsys@imagesuffixlist}%
        \expandafter\tikzexternal@determineimgextension\pgf@tempa:\relax
        \pgfutil@ifundefined{includegraphics}{%
            \let\tikzexternal@orig@includegraphics=\relax
        }{%
            \let\tikzexternal@orig@includegraphics=\includegraphics
        }%
        \let\tikzexternalfiledependsonfile=\tikzexternalfiledependsonfile@ACTIVE
        \let\tikzpicturedependsonfile=\tikzpicturedependsonfile@ACTIVE
    \fi
}
\def\tikzexternalize@hasbeencalled{0}%

\def\tikzifexternalizehasbeencalled#1#2{%
    \if1\tikzexternalize@hasbeencalled
        #1%
    \else
        #2%
    \fi
}%

\def\tikzexternalauxlock@init{%
    \if4\tikzexternal@opmode
        \ifpgfexternalreadmainaux
            \edef\pgf@tempa{\expandafter\string\csname\tikzexternal@realjob\endcsname}%
            \edef\pgf@tempb{\expandafter\string\csname\jobname\endcsname}%
            \ifx\pgf@tempa\pgf@tempb
                \tikzexternalauxlock@setlock{0}%
            \else
                \tikzexternalauxlock@getlockvalue
                \if1\tikzexternallocked
                    \pgfexternalreadmainauxfalse
                \else
                    \pgfexternalreadmainauxtrue
                \fi
            \fi
        \else
            \def\tikzexternalauxlock@setlock##1{}%
        \fi
    \fi
}
\def\tikzexternalauxlock@getlockvalue{%
    \openin\r@pgf@reada=\tikzexternal@realjob.auxlock
    \ifeof\r@pgf@reada
        \def\tikzexternallocked{0}%
    \else
        \read\r@pgf@reada to\pgf@tempa
        \pgf@tempa
        \pgfutil@ifundefined
            {tikzexternallocked}
            {\def\tikzexternallocked{1}}%
            {}%
    \fi
    \closein\r@pgf@reada
}%
\def\tikzexternalauxlock@setlock#1{%
    \immediate\openout\w@pgf@writea=\tikzexternal@realjob.auxlock
    \immediate\write\w@pgf@writea{\noexpand\def\noexpand\tikzexternallocked{#1}}%
    \immediate\closeout\w@pgf@writea
}


\def\pgf@external@grab@refundefinedtrue@code{%
    \gdef\noexpand\tikzexternal@systemcall@reschedule@to@end@document{1}%
}%

\def\tikzexternalimgextension{}%

\def\tikzexternaldisable{%
    \tikzexternaldisable@nofading
    \pgfutil@ifundefined{tikzexternal@orig@tikzfadingfrompicture}
    {}%
    {%
        \let\tikzfadingfrompicture=\tikzexternal@orig@tikzfadingfrompicture
        \let\endtikzfadingfrompicture=\tikzexternal@orig@endtikzfadingfrompicture
        \let\tikzfading=\tikzexternal@orig@tikzfading
    }%
}%
\def\tikzexternaldisable@nofading{%
    \let\tikz=\tikzexternal@origtikz
    \tikzexternal@TEXDIALECT@restore@picture
    \iftikzexternal@optimize
        \ifpgf@external@grabshipout
            \tikzexternal@optimize@RESTORE
        \fi
    \fi
}
\def\tikzexternalenable{%
    \if\tikzexternalize@hasbeencalled1%
        \let\tikz=\tikzexternal@tikz@replacement
        \tikzexternal@TEXDIALECT@installreplacement@picture
        \pgfutil@ifundefined{tikzfadingfrompicture}%
        {}%
        {%
            \pgfutil@ifundefined{tikzexternal@orig@tikzfadingfrompicture}{%
                \let\tikzexternal@orig@tikzfadingfrompicture=\tikzfadingfrompicture
                \let\tikzexternal@orig@endtikzfadingfrompicture=\endtikzfadingfrompicture
                \let\tikzexternal@orig@tikzfading=\tikzfading
            }{}%
            \def\tikzfadingfrompicture{%
                \begingroup
                \tikzexternaldisable@nofading
                \tikzexternal@orig@tikzfadingfrompicture}%
            \def\endtikzfadingfrompicture{%
                \tikzexternal@orig@endtikzfadingfrompicture
                \endgroup}%
            \def\tikzfading[##1]{%
                \begingroup
                \tikzexternaldisable@nofading
                \tikzexternal@orig@tikzfading[##1]%
                \endgroup}%
        }%
        \iftikzexternal@optimize
            \ifpgf@external@grabshipout
                \tikzexternal@optimize@REPLACE
            \fi
        \fi
    \fi
}%

\def\tikzsetnextfilename#1{\gdef\tikzexternal@nextfile{#1}}
\tikzsetnextfilename{}


\long\gdef\tikzexternal@TEXDIALECT@collectpicture#1#2\endtikzpicture{#1{#2}}
\def\tikzexternal@TEXDIALECT@begpicture{\tikzpicture}
\def\tikzexternal@TEXDIALECT@endpicture{\endtikzpicture}%
\def\tikzexternal@TEXDIALECT@installreplacement@picture{%
    \let\tikzpicture=\tikzexternal@tikzpicture@replacement
}%
\def\tikzexternal@TEXDIALECT@restore@picture{%
    \let\tikzpicture=\tikzexternal@origpicture
}%




\let\tikzexternal@origtikz=\tikz
\let\tikzexternal@origpicture=\tikzpicture
\let\tikzexternal@origendpicture=\endtikzpicture
\let\tikzexternal@curfilename=\relax

\def\tikzexternal@tikzpicture@replacement{%
    \leavevmode
    \global\tikzexternal@file@isuptodatetrue%
    \tikzexternal@getnextfilename\tikzexternal@curfilename
    \ifx\tikzexternal@curfilename\pgfutil@empty
        \ifpgf@external@grabshipout
            \iftikzexternal@optimize
                \let\tikzexternal@next=\tikzexternal@skipfigure
            \else
                \let\tikzexternal@next=\tikzexternal@normalpicture@nographics
            \fi
        \else
            \let\tikzexternal@next=\tikzexternal@normalpicture@nographics
        \fi
    \else
        \ifpgf@external@grabshipout
            \tikzifexternaljobnamematches\tikzexternal@curfilename{%
                \let\tikzexternal@next=\tikzexternal@externalizefig
            }{%
                \iftikzexternal@optimize
                    \let\tikzexternal@next=\tikzexternal@skipfigure
                \else
                    \let\tikzexternal@next=\tikzexternal@normalpicture@nographics
                \fi
            }%
        \else
            \ifcase\tikzexternal@opmode\relax
                \let\tikzexternal@next=\tikzexternal@forcegraphics
            \or
                \let\tikzexternal@next=\tikzexternal@normalpicture@nographics
            \or
                \let\tikzexternal@next=\tikzexternal@externalizefig
            \or
                \let\tikzexternal@next=\tikzexternal@listmodepicture
            \or
                \let\tikzexternal@next=\tikzexternal@externalizefig@systemcall
            \or
                \let\tikzexternal@next=\tikzexternal@list@and@makefile@mode@picture
            \fi
        \fi
    \fi
    \tikzexternal@next
}%

\def\tikzexternal@tikz@replacement{%
    \pgfutil@ifnextchar[{\tikzexternal@tikz@replacement@opt}{\tikzexternal@tikz@replacement@opt[]}%
}%
\def\tikzexternal@tikz@replacement@opt[#1]{%
    \pgfutil@ifnextchar\bgroup{\tikzexternal@tikz@replacement@opt@{#1}}{\tikzexternal@tikz@replacement@opt@@{#1}}%
}
\long\def\tikzexternal@tikz@replacement@opt@#1#2{%
    \tikzexternal@tikz@replacement@opt@process{#1}{#2}%
}%
\def\tikzexternal@tikz@replacement@opt@@#1{%
  \def\tikz@next{\tikzexternal@tikz@replacement@collectnormalsemicolon{#1}}%
  \ifnum\the\catcode`\;=\active\relax%
    \def\tikz@next{\tikzexternal@tikz@replacement@collectactivesemicolon{#1}}%
  \fi%
  \tikz@next}
\long\def\tikzexternal@tikz@replacement@collectnormalsemicolon#1#2;{%
    \tikzexternal@tikz@replacement@opt@process{#1}{#2;}%
}%
{
  \catcode`\;=\active
  \long\gdef\tikzexternal@tikz@replacement@collectactivesemicolon#1#2;{%
    \tikzexternal@tikz@replacement@opt@process{#1}{#2;}%
  }
}
\long\def\tikzexternal@tikz@replacement@opt@process#1#2{%
    \begingroup
    \t@tikzexternal@tmpa=\expandafter{\tikzexternal@TEXDIALECT@begpicture[#1]#2}%
    \t@tikzexternal@tmpb=\expandafter{\tikzexternal@TEXDIALECT@endpicture}%
    \xdef\pgf@tempa{\the\t@tikzexternal@tmpa\the\t@tikzexternal@tmpb}%
    \endgroup
    \pgf@tempa
}

\def\tikzexternal@getnextfilename@advancecount{%
    \begingroup
    \c@pgf@counta=\csname c@tikzext@no@\tikzexternal@figurename\endcsname\relax
    \advance\c@pgf@counta by1
    \expandafter\xdef\csname c@tikzext@no@\tikzexternal@figurename\endcsname{\the\c@pgf@counta}%
    \endgroup
}%

\def\tikzexternalgetnextfilename#1{%
    \begingroup
    \let\tikzexternal@getnextfilename@advancecount\relax%
    \let\tikzexternal@getnextfilename@resetglobals=\relax%
    \def\tikzexternal@protocol@to@file##1{}%
    \tikzexternal@getnextfilename#1%
    \pgfmath@smuggleone#1%
    \endgroup
}%

\def\tikzexternalgetcurrentfilename#1{%
    \ifx\tikzexternal@curfilename\relax
        \let#1=\pgfutil@empty
    \else
        \let#1=\tikzexternal@curfilename
    \fi
}

\def\tikzexternal@getnextfilename#1{%
    \let#1=\pgfutil@empty
    \iftikzexternal@export@enabled
        \iftikzexternalexportnext
            \begingroup
            \t@tikzexternal@tmpa=\expandafter{\tikzexternal@filenameprefix}%
            \ifx\tikzexternal@nextfile\pgfutil@empty
                \iftikzexternal@onlynamed
                    \xdef\pgf@tempa{}%
                \else
                    \pgfkeysgetvalue{/tikz/external/figure name}\tikzexternal@figurename
                    \pgfutil@ifundefined{c@tikzext@no@\tikzexternal@figurename}{%
                        \expandafter\gdef\csname c@tikzext@no@\tikzexternal@figurename\endcsname{0}%
                    }{}%
                    \t@tikzexternal@tmpb=\expandafter{\tikzexternal@figurename}%
                    \xdef\pgf@tempa{\the\t@tikzexternal@tmpa\the\t@tikzexternal@tmpb\csname c@tikzext@no@\tikzexternal@figurename\endcsname}%
                    \tikzexternal@getnextfilename@advancecount
                \fi
            \else
                \t@tikzexternal@tmpb=\expandafter{\tikzexternal@nextfile}%
                \xdef\pgf@tempa{\the\t@tikzexternal@tmpa\the\t@tikzexternal@tmpb}%
            \fi
            \endgroup
            \let#1=\pgf@tempa
        \fi
    \fi
    \tikzexternal@getnextfilename@resetglobals%
    \tikzexternal@protocol@to@file#1%
}%

\def\tikzexternal@getnextfilename@resetglobals{%
    \global\let\tikzexternal@nextfile=\pgfutil@empty
    \global\tikzexternalexportnexttrue
}%

\def\tikzexternal@protocol@to@file#1{%
    \ifpgf@external@grabshipout%
    \else
        \iftikzexternal@genfigurelist
            \edef\tikzexternal@temp{#1}%
            \ifx\tikzexternal@temp\pgfutil@empty
            \else
                \pgfutil@ifundefined{tikzexternal@listmode@openedfile}{%
                    \message{Opening '\tikzexternal@realjob.figlist' for writing.}%
                    \begingroup
                        \globaldefs=1
                        \csname newwrite\endcsname\tikzexternal@outfile
                    \endgroup
                    \immediate\openout\tikzexternal@outfile=\tikzexternal@realjob.figlist\relax
                    \gdef\tikzexternal@listmode@openedfile{1}%
                    \if\tikzexternal@opmode5%
                        \tikzexternal@list@and@make@prepare
                    \fi
                }{}%
                \iftikzexternal@verboseio
                    \pgf@typeout{Writing '#1' to '\tikzexternal@realjob.figlist'.}%
                \fi
                \immediate\write\tikzexternal@outfile{#1}%
                \if\tikzexternal@opmode5%
                    \tikzexternal@list@and@make@gentarget{#1}%
                \fi
            \fi
        \fi
    \fi
}%

\def\tikzexternal@list@and@make@gentarget#1{%
    \tikzexternal@assemble@systemcall{#1}{\pgf@tempa}%
    \def\tikzexternal@tempb{\pgfutilstrreplace{^^J}{^^J\tikzexternal@TABchar}}%
    \expandafter\tikzexternal@tempb\expandafter{\pgf@tempa}%
    \let\pgf@tempa=\pgfretval
    \iftikzexternal@verboseio
        \pgf@typeout{Writing '#1' to '\tikzexternal@realjob.makefile'.}%
    \fi
    \global\tikzexternal@file@isuptodatetrue%
    \tikzexternal@checkforceremake%
    \immediate\write\tikzexternal@outmakefile{#1\tikzexternalimgextension: \iftikzexternal@file@isuptodate\else FORCEREMAKE\fi}%
    \immediate\write\tikzexternal@outmakefile{\tikzexternal@TABchar\pgf@tempa}%
    \immediate\write\tikzexternal@outmakefile{}%
}

\def\tikzexternal@list@and@make@prepare{%
    \iftikzexternal@verboseio
        \pgf@typeout{Opening '\tikzexternal@realjob.makefile' for writing.}%
    \fi
    \begingroup
        \globaldefs=1
        \csname newwrite\endcsname\tikzexternal@outmakefile
    \endgroup
    \immediate\openout\tikzexternal@outmakefile=\tikzexternal@realjob.makefile\relax
    \immediate\write\tikzexternal@outmakefile{ALL_FIGURE_NAMES=\tikzexternal@DOLLARchar(shell cat \tikzexternal@realjob.figlist)}%
    \immediate\write\tikzexternal@outmakefile{ALL_FIGURES=\tikzexternal@DOLLARchar(ALL_FIGURE_NAMES:\tikzexternal@PERCENTchar=\tikzexternal@PERCENTchar\tikzexternalimgextension)}%
    \immediate\write\tikzexternal@outmakefile{}%
    \immediate\write\tikzexternal@outmakefile{allimages: \tikzexternal@DOLLARchar(ALL_FIGURES)}%
    \immediate\write\tikzexternal@outmakefile{\tikzexternal@TABchar @echo All images exist now. Use make -B to re-generate them.}%
    \immediate\write\tikzexternal@outmakefile{}%
    \immediate\write\tikzexternal@outmakefile{FORCEREMAKE:}%
    \immediate\write\tikzexternal@outmakefile{}%
    \immediate\write\tikzexternal@outmakefile{-include $(ALL_FIGURE_NAMES:\tikzexternal@PERCENTchar=\tikzexternal@PERCENTchar.\tikzexternaldepext)}%
    \immediate\write\tikzexternal@outmakefile{}%
    \tikzexternalmakefiledefaultdeprule
    \immediate\write\tikzexternal@outmakefile{}%
    \tikzexternal@outmakefile@pendingcommands
    \pgfutil@ifundefined{AtEndDocument}{}{%
        \AtEndDocument{\pgf@typeout{===== mode=`list and make': Use 'make -f \tikzexternal@realjob.makefile' to generate all images. Then, re-run (pdf)latex \tikzexternal@realjob. =====}}%
    }%
}%
\def\tikzexternaldepext{dep}

\def\tikzexternalmakefiledefaultdeprule{%
    \immediate\write\tikzexternal@outmakefile{\tikzexternal@PERCENTchar.\tikzexternaldepext:}%
    \immediate\write\tikzexternal@outmakefile{\tikzexternal@TABchar mkdir -p \tikzexternal@normal@dq $(dir $@)\tikzexternal@normal@dq}%
    \immediate\write\tikzexternal@outmakefile{\tikzexternal@TABchar touch \tikzexternal@normal@dq $@\tikzexternal@normal@dq\space \tikzexternal@HASHchar\space will be filled later.}%
}%

\def\tikzexternalifwritesmakefile#1#2{%
    \if5\tikzexternal@opmode #1\else #2\fi
}%
\def\tikzexternal@outmakefile@pendingcommands{}%

\def\tikzexternalwritetomakefile#1{%
    \if\tikzexternal@opmode5%
        \pgfutil@ifundefined{tikzexternal@outmakefile}{%
            \expandafter\gdef\expandafter\tikzexternal@outmakefile@pendingcommands\expandafter{%
                \tikzexternal@outmakefile@pendingcommands
                \immediate\write\tikzexternal@outmakefile{#1}%
            }%
        }{%
            \immediate\write\tikzexternal@outmakefile{#1}%
        }%
    \fi
}%

\def\tikzexternal@dep@file@name{}

\def\tikzexternalfiledependsonfile@ACTIVE#1#2{%
    \begingroup
    \def\tikzpicturedependsonfile@name{#1}%
    \ifx\tikzpicturedependsonfile@name\pgfutil@empty
    \else
        \tikzifexternalizingcurrent
            {\tikzexternalfiledependsonfile@append@to@dep@file{#1}{#2}}%
            {\tikzexternalfiledependsonfile@append@to@makefile{#1}{#2}}%
    \fi
    \endgroup
}%
\def\tikzexternalfiledependsonfile#1#2{}%

\def\tikzexternalfiledependsonfile@append@to@dep@file#1#2{%
    \tikzexternalgetcurrentfilename\tikzpicturedependsonfile@name
    \edef\tikzpicturedependsonfile@name{\tikzpicturedependsonfile@name.\tikzexternaldepext}%
    \ifx\tikzexternal@dep@file@name\tikzpicturedependsonfile@name
    \else
        \pgfutil@ifundefined{tikzexternal@dep@file}{%
            \begingroup
                \globaldefs=1
                \csname newwrite\endcsname\tikzexternal@dep@file
            \endgroup
        }{}%
        \ifx\tikzexternal@dep@file@name\pgfutil@empty
        \else
            \immediate\closeout\tikzexternal@dep@file
        \fi
        \global\let\tikzexternal@dep@file@name=\tikzpicturedependsonfile@name
        \immediate\openout\tikzexternal@dep@file=\tikzexternal@dep@file@name\relax
    \fi
    \immediate\write\tikzexternal@dep@file{#1\tikzexternalimgextension: #2}%
}

\def\tikzexternalfiledependsonfile@append@to@makefile#1#2{%
    \edef\tikzexternal@temp{#1\tikzexternalimgextension: #2}%
    \expandafter\tikzexternalwritetomakefile\expandafter{\tikzexternal@temp}%
}

\def\tikzpicturedependsonfile@ACTIVE#1{%
    \begingroup
    \tikzexternalgetcurrentfilename\tikzpicturedependsonfile@name
    \ifx\tikzpicturedependsonfile@name\pgfutil@empty
        \tikzexternalgetnextfilename\tikzpicturedependsonfile@name
    \fi
    \expandafter\tikzexternalfiledependsonfile\expandafter{\tikzpicturedependsonfile@name}{#1}%
    \endgroup
}%
\def\tikzpicturedependsonfile#1{}%


\def\tikzexternal@externalizefig{%
    \ifpgf@external@grabshipout%
        \expandafter\tikzexternal@externalizefig@GRAB%
    \else
        \expandafter\tikzexternal@externalizefig@mode@graphics@if@exists
    \fi%
}
\def\tikzexternal@externalizefig@mode@graphics@if@exists{%
    \gdef\pgf@filename{}%
    \xdef\pgf@tempa{\noexpand\pgf@findfile\pgfsys@imagesuffixlist:+{\tikzexternal@curfilename}}%
    \pgf@tempa
    \ifx\pgf@filename\pgfutil@empty%
        \expandafter\tikzexternal@normalpicture@nographics
    \else
        \expandafter\tikzexternal@forcegraphics
    \fi
}%


\def\tikzexternal@optimize@away@cmd#1#2{%
    \pgfutil@ifnextchar[{%
        \tikzexternal@optimize@away@cmd@{#1}{#2}%
    }{%
        \tikzexternal@optimize@away@cmd@{#1}{#2}[]%
    }%
}%
\def\tikzexternal@optimize@away@cmd@#1#2[#3]{%
    \def\tikz@temp{#2}%
    \ifx\tikz@temp\pgfutil@empty
        \def\tikz@temp{\tikzexternal@optimize@away@cmd@auto{#1}{#3}}%
    \else
        \ifcase#2\relax
            \def\tikzexternal@optimize@away@cmd@manual{%
                \tikzexternal@optimize@away@cmd@@@{#1}{#3}{}%
            }%
        \or
            \def\tikzexternal@optimize@away@cmd@manual##1{%
                \tikzexternal@optimize@away@cmd@@@{#1}{#3}{{##1}}%
            }%
        \or
            \def\tikzexternal@optimize@away@cmd@manual##1##2{%
                \tikzexternal@optimize@away@cmd@@@{#1}{#3}{{##1}{##2}}%
            }%
        \or
            \def\tikzexternal@optimize@away@cmd@manual##1##2##3{%
                \tikzexternal@optimize@away@cmd@@@{#1}{#3}{{##1}{##2}{##3}}%
            }%
        \or
            \def\tikzexternal@optimize@away@cmd@manual##1##2##3##4{%
                \tikzexternal@optimize@away@cmd@@@{#1}{#3}{{##1}{##2}{##3}{##4}}%
            }%
        \or
            \def\tikzexternal@optimize@away@cmd@manual##1##2##3##4##5{%
                \tikzexternal@optimize@away@cmd@@@{#1}{#3}{{##1}{##2}{##3}{##4}{##5}}%
            }%
        \or
            \def\tikzexternal@optimize@away@cmd@manual##1##2##3##4##5##6{%
                \tikzexternal@optimize@away@cmd@@@{#1}{#3}{{##1}{##2}{##3}{##4}{##5}{##6}}%
            }%
        \or
            \def\tikzexternal@optimize@away@cmd@manual##1##2##3##4##5##6##7{%
                \tikzexternal@optimize@away@cmd@@@{#1}{#3}{{##1}{##2}{##3}{##4}{##5}{##6}{##7}}%
            }%
        \or
            \def\tikzexternal@optimize@away@cmd@manual##1##2##3##4##5##6##7##8{%
                \tikzexternal@optimize@away@cmd@@@{#1}{#3}{{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}}%
            }%
        \or
            \def\tikzexternal@optimize@away@cmd@manual##1##2##3##4##5##6##7##8##9{%
                \tikzexternal@optimize@away@cmd@@@{#1}{#3}{{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}{##9}}%
            }%
        \fi
        \def\tikz@temp{\tikzexternal@optimize@away@cmd@manual}%
    \fi
    \tikz@temp
}%
\def\tikzexternal@optimize@away@cmd@auto#1#2{%
    \pgfutil@ifnextchar\bgroup{%
        \tikzexternal@optimize@away@cmd@auto@{#1}{#2}%
    }{%
        \tikzexternal@optimize@away@cmd@auto@{#1}{#2}{}%
    }
}%

\def\tikzexternal@optimize@away@cmd@auto@#1#2#3{%
    \tikzexternal@optimize@away@cmd@@@{#1}{#2}{{#3}}%
}%
\def\tikzexternal@optimize@away@cmd@@@#1#2#3{%
    \begingroup
    \toks0={#1[#2]#3}%
    \iftikzexternal@verbose@optimize
        \pgf@typeout{The command '\the\toks0' has been optimized away. Use '/tikz/external/optimize=false' to disable this.}%
    \fi
    \endgroup
    \begingroup
    \pgfkeysvalueof{/tikz/external/optimize away text/.@cmd}#1\pgfeov%
    \endgroup
}%

\def\tikzexternal@optimize@away@latex@env#1{%
    \def\tikzexternal@optimize@away@latex@env@{#1}%
    \begingroup
        \def\tikzexternal@laTeX@collect@until@end@tikzpicturetikzpicturestring{#1}%
        \tikzexternal@TEXDIALECT@collectpicture\tikzexternal@optimize@away@latex@env@close
}%
\long\def\tikzexternal@optimize@away@latex@env@close#1{%
    \iftikzexternal@verbose@optimize
        \pgf@typeout{The complete contents of \string\begin{tikzexternal@optimize@away@latex@env@} up to the next \end{tikzexternal@optimize@away@latex@env@} has been optimized away because it does not contribute to the exported PDF. Use '/tikz/external/optimize=false' to disable this.}%
    \fi
    \endgroup
    \expandafter\let\csname end\tikzexternal@optimize@away@latex@env@\endcsname=\relax
    \expandafter\end\expandafter{\tikzexternal@optimize@away@latex@env@}%
}%

\def\tikzexternal@optimize@REPLACE{%
    \pgfkeysvalueof{/tikz/external/optimize/install/.@cmd}\pgfeov
}%

\def\tikzexternal@optimize@RESTORE{%
    \pgfkeysvalueof{/tikz/external/optimize/restore/.@cmd}\pgfeov
}%

\def\tikzexternal@closeenvironments{%
    \let\endtikzpicture=\relax
    \tikzexternal@TEXDIALECT@endpicture
    \let\endtikzpicture=\tikzexternal@origendpicture
    \let\tikzexternal@curfilename=\relax
}

\def\tikzexternal@skipfigure{%
    \tikzexternal@TEXDIALECT@collectpicture\tikzexternal@skipfigure@@
}
\long\def\tikzexternal@skipfigure@@#1{%
    \iftikzexternal@verbose@optimize
        \pgf@typeout{A tikzpicture has been optimized away. Use '/tikz/external/optimize=false' to disable this.}%
    \fi
    \tikzexternal@closeenvironments
    \pgfkeysvalueof{/tikz/external/optimize away text/.@cmd}tikzpicture\pgfeov%
}

\def\tikzexternal@normalpicture@nographics{%
    \tikzexternal@nestedflagfalse
    \let\tikzpicture=\tikzexternal@normalpicture@begreplace
    \let\endtikzpicture=\tikzexternal@normalpicture@endreplace
    \tikzpicture
}
\def\tikzexternal@normalpicture@begreplace{%
    \begingroup
    \tikzexternal@nestedflagtrue
    \tikzexternal@origpicture
}
\def\tikzexternal@normalpicture@endreplace{%
    \tikzexternal@origendpicture
    \endgroup
    \iftikzexternal@nestedflag
    \else
        \let\tikzpicture=\tikzexternal@tikzpicture@replacement
        \let\endtikzpicture=\tikzexternal@origendpicture
    \fi
}%

\def\tikzexternal@forcegraphics{%
    \tikzexternal@TEXDIALECT@collectpicture\tikzexternal@forcegraphics@@
}
\long\def\tikzexternal@forcegraphics@@#1{\tikzexternal@forcegraphics@@@}%
\def\tikzexternal@forcegraphics@@@{%
    \if5\tikzexternal@opmode
        \let\tikz@refundefinedtrue@@=\G@refundefinedtrue
        \gdef\G@refundefinedtrue{%
            \tikz@refundefinedtrue@@
            \tikzexternal@forceremake@undefined@reference@handler
        }%
    \fi
    \expandafter\pgfincludeexternalgraphics\expandafter{\tikzexternal@curfilename}%
    \if5\tikzexternal@opmode
        \global\let\G@refundefinedtrue=\tikz@refundefinedtrue@@
    \fi
    \tikzexternal@closeenvironments
}

\def\tikzexternal@forceremake@undefined@reference@handler{%
    \pgf@typeout{===== 'mode=list and make': encountered undefined reference in current picture. Adding dependency to FORCEREMAKE. Rerun make to update the picture.' ========^^J}%
    \tikzpicturedependsonfile{FORCEREMAKE}%
}%

\def\tikzexternal@listmodepicture{%
    \tikzexternal@TEXDIALECT@collectpicture\tikzexternal@listmodepicture@@
}
\long\def\tikzexternal@listmodepicture@@#1{\tikzexternal@listmodepicture@@@}
\def\tikzexternal@listmodepicture@@@{%
    \pgfkeysvalueof{/tikz/external/image discarded text}%
    \tikzexternal@closeenvironments
}

\def\tikzexternal@list@and@makefile@mode@picture{%
    \tikzexternal@TEXDIALECT@collectpicture\tikzexternal@list@and@makefile@mode@picture@
}%
\long\def\tikzexternal@list@and@makefile@mode@picture@#1{%
    \tikzexternal@check@uptodate@mode{#1}%
    \gdef\pgf@filename{}%
    \xdef\pgf@tempa{\noexpand\pgf@findfile\pgfsys@imagesuffixlist:+{\tikzexternal@curfilename}}%
    \pgf@tempa
    \ifx\pgf@filename\pgfutil@empty%
        \expandafter\tikzexternal@listmodepicture@@@
    \else
        \expandafter\tikzexternal@forcegraphics@@@
    \fi
}%

\def\tikzexternal@externalizefig@before@grab{%
    \pgfutil@IfUndefined{TP@holdbox}{%
    }{%
        \global\setbox\TP@holdbox\vbox{}%
    }%
}%

\def\tikzexternal@externalizefig@GRAB{%
    \ifpgf@external@grabshipout
        \iftikzexternal@optimize
            \tikzexternal@optimize@RESTORE
        \fi
        \tikzexternal@externalizefig@before@grab
    \fi
    \def\tikzpicture{%
        \def\tikzpicture{%
            \begingroup
            \def\endtikzpicture{%
                \tikzexternal@origendpicture
                \endgroup
            }%
            \tikzexternal@origpicture
        }%
        \pgf@external@grab{\tikzexternal@curfilename}%
        \tikzexternal@origpicture
    }%
    \def\endtikzpicture{%
        \tikzexternal@origendpicture
        \pgf@externalend
        \tikzexternal@ensure@nonempty@floats
        \let\tikzpicture=\tikzexternal@tikzpicture@replacement
        \let\endtikzpicture=\tikzexternal@origendpicture
        \iftikzexternal@optimize
            \ifpgf@external@grabshipout
                \tikzexternal@optimize@REPLACE
            \fi
        \fi
    }%
    \tikzpicture
}%

\def\tikzexternal@ensure@nonempty@floats{%
    tikzexternal: picture has been externalized. This text is required to avoid empty floats.
}%

\def\tikzexternal@externalizefig@systemcall{%
    \tikzexternal@TEXDIALECT@collectpicture\tikzexternal@externalizefig@systemcall@@
}

{
\catcode`\"=12
\catcode`\'=12
\catcode`\;=12
\catcode`\&=12
\catcode`\-=12
\xdef\tikzexternal@normal@dq{"}
\xdef\tikzexternal@normal@sq{'}
\xdef\tikzexternal@normal@semic{;}
\xdef\tikzexternal@normal@and{&}
\xdef\tikzexternal@normal@dash{-}
\catcode`\"=13
\catcode`\'=13
\catcode`\;=13
\catcode`\&=13
\catcode`\-=13
\gdef\tikzexternal@activate@normal@dq{\let"=\tikzexternal@normal@dq}
\gdef\tikzexternal@activate@normal@sq{\let'=\tikzexternal@normal@sq}
\gdef\tikzexternal@activate@normal@semic{\let;=\tikzexternal@normal@semic}
\gdef\tikzexternal@activate@normal@and{\let&=\tikzexternal@normal@and}
\gdef\tikzexternal@activate@normal@dash{\let-=\tikzexternal@normal@dash}
\catcode`\|=0
\catcode`\\=12
|xdef|tikzexternal@normal@backslash{\}%
}
{
\catcode`\^^I=12
\catcode`\$=12
\catcode`\%=12
\catcode`\#=12
\gdef\tikzexternal@HASHchar{#}
\gdef\tikzexternal@TABchar{^^I}\gdef\tikzexternal@PERCENTchar{%}\xdef\tikzexternal@DOLLARchar{$}}

\def\tikzexternal@assemble@systemcall#1#2{%
    \begingroup
        \def\image{#1}%
        \iftikzexternal@auto@detect@jobname
            \edef\texsource{\string\def\string\tikzexternalrealjob{\tikzexternal@realjob}\string\input{\tikzexternal@realjob}}%
        \else
            \let\texsource=\tikzexternal@realjob
        \fi
        \ifnum\the\catcode`\"=13 \tikzexternal@activate@normal@dq\fi
        \ifnum\the\catcode`\'=13 \tikzexternal@activate@normal@sq\fi
        \ifnum\the\catcode`\;=13 \tikzexternal@activate@normal@semic\fi
        \ifnum\the\catcode`\-=13 \tikzexternal@activate@normal@dash\fi
        \let\\=\tikzexternal@normal@backslash
        \xdef#2{\pgfkeysvalueof{/tikz/external/system call}}%
    \endgroup
}%
\long\def\tikzexternal@externalizefig@systemcall@@#1{%
    \tikzexternal@externalizefig@systemcall@uptodatecheck{#1}%
    \tikzexternal@assemble@systemcall{\tikzexternal@curfilename}{\pgf@tempa}%
    \global\let\tikzexternal@cursyscall=\pgf@tempa
    \gdef\tikzexternal@typeset@picture@on@failure{1}%
    \iftikzexternal@file@isuptodate
        \iftikzexternal@verboseio
            \pgf@typeout{===== Image '\tikzexternal@curfilename' is up-to-date. ======}%
        \fi
        \let\pgf@filename=\tikzexternal@curfilename
    \else
        \begingroup
        \tikzexternalauxlock@setlock1%
        \tikzexternal@externalizefig@systemcall@call{\tikzexternal@cursyscall}%
        \tikzexternalauxlock@setlock0%
        \expandafter\tikzexternal@externalizefig@systemcall@assertsuccess\expandafter{\tikzexternal@cursyscall}%
        \pgfmath@smuggleone\pgf@filename
        \endgroup
    \fi
    \ifx\pgf@filename\pgfutil@empty
        \if1\tikzexternal@typeset@picture@on@failure
            \begingroup
            \toks0={%
                \tikzexternaldisable
            }%
            \toks1={%
                \tikzpicture
                #1%
            }%
            \toks2={%
                \tikzexternal@TEXDIALECT@endpicture
                \tikzexternalenable
            }%
            \xdef\tikzexternal@externalizefig@systemcall@next{%
                \the\toks0
                \noexpand\scantokens{\the\toks1 }%
                \the\toks2
            }%
            \endgroup
        \else
            \gdef\tikzexternal@externalizefig@systemcall@next{\tikzexternal@closeenvironments}%
        \fi
    \else
        \gdef\tikzexternal@systemcall@reschedule@to@end@document{0}%
        \expandafter\pgfincludeexternalgraphics\expandafter{\tikzexternal@curfilename}%
        \if1\tikzexternal@systemcall@reschedule@to@end@document
            \pgfutil@IfUndefined{AtVeryEndDocument}{%
            }{%
                \pgf@typeout{===== The previous system call resulted in undefined references inside of the output file. Rescheduling it for \string\end{document}. ========}%
                \expandafter\tikzexternal@externalizefig@systemcall@reschedule\expandafter{\tikzexternal@cursyscall}%
            }%
        \fi
        \gdef\tikzexternal@externalizefig@systemcall@next{\tikzexternal@closeenvironments}%
    \fi
    \tikzexternal@externalizefig@systemcall@next
}%

\def\tikzexternal@externalizefig@systemcall@call#1{%
    \iftikzexternal@verboseio
        \pgf@typeout{===== 'mode=convert with system call': Invoking '#1' ========}%
    \fi
    \pgfutil@shellescape{#1}%
}%

\def\tikzexternal@checkforceremake{%
    \iftikzexternal@force@remake
        \global\tikzexternal@file@isuptodatefalse
    \else
        \iftikzexternalremakenext
            \global\tikzexternal@file@isuptodatefalse
            \global\tikzexternalremakenextfalse
        \fi
    \fi
}

\pgfutil@IfUndefined{pdfmdfivesum}{%
}{%
    \let\tikzexternal@mdfivesum=\pdfmdfivesum
}%

\long\def\tikzexternal@computemdfivesum#1{%
    \t@tikzexternal@tmpb={#1}%
    \edef\tikzexternal@temp{\the\t@tikzexternal@tmpb}%
    \edef\pgfretval{\tikzexternal@mdfivesum{\meaning\tikzexternal@temp}}%
}
\long\def\tikzexternal@computemdfivesum@diff@fallback#1{%
    \t@tikzexternal@tmpb={#1}%
    \edef\tikzexternal@temp{\the\t@tikzexternal@tmpb}%
    \edef\pgfretval{\meaning\tikzexternal@temp}%
}

\long\def\tikzexternal@hashfct@serialize@std#1{%
    \noexpand\def\noexpand\tikzexternallastkey{#1}%
}%

\long\def\tikzexternal@hashfct@serialize@tok#1{%
    \noexpand\begingroup
        \noexpand\toks0={#1}%
        \noexpand\xdef\noexpand\tikzexternallastkey{\noexpand\the\noexpand\toks0 }%
    \noexpand\endgroup
}%

\def\tikzexternal@check@uptodate@ext{.md5}

\def\tikzexternal@check@uptodate@mode@warn@fallback{%
    \message{Package tikz Warning: The key 'up to date check=md5' is impossible, there is no macro to compute MD5. Falling back to 'up to date check=diff'.}%
    \global\let\tikzexternal@check@uptodate@mode@warn@fallback=\relax
}%

\long\def\tikzexternal@check@uptodate@mode#1{%
    \if1\tikzexternal@uptodate@mode
        \pgfutil@IfUndefined{tikzexternal@mdfivesum}{%
            \tikzexternal@check@uptodate@mode@warn@fallback
            \def\tikzexternal@uptodate@mode{2}%
        }{}%
    \fi
    \ifcase\tikzexternal@uptodate@mode
        \let\tikzexternal@hashfct=\pgfutil@empty
        \let\tikzexternal@hashfct@serialize=\pgfutil@empty
    \or
        \let\tikzexternal@hashfct=\tikzexternal@computemdfivesum
        \let\tikzexternal@hashfct@serialize=\tikzexternal@hashfct@serialize@std
    \or
        \let\tikzexternal@hashfct=\tikzexternal@computemdfivesum@diff@fallback
        \let\tikzexternal@hashfct@serialize=\tikzexternal@hashfct@serialize@tok
    \fi
    \ifx\tikzexternal@hashfct\pgfutil@empty
    \else
        \tikzpicturedependsonfile{\tikzexternal@curfilename\tikzexternal@check@uptodate@ext}%
        \tikzexternal@hashfct{#1}%
        \let\tikzexternal@lastkey@new=\pgfretval
        \begingroup
        \global\let\tikzexternallastkey=\pgfutil@empty
        \openin\r@pgf@reada=\tikzexternal@curfilename\tikzexternal@check@uptodate@ext\relax %
        \ifeof\r@pgf@reada
        \else
            \endlinechar=-1 %
            \read\r@pgf@reada to\pgf@tempa
            \pgf@tempa
        \fi
        \closein\r@pgf@reada
        \let\tikzexternal@lastkey=\tikzexternallastkey
        \pgfmath@smuggleone\tikzexternal@lastkey
        \endgroup
        \edef\tikzexternal@lastkey@normalized{\meaning\tikzexternal@lastkey}%
        \edef\tikzexternal@lastkey@new@normalized{\meaning\tikzexternal@lastkey@new}%
        \iftikzexternal@verboseuptodate
            \pgf@typeout{Up-to-date check of \tikzexternal@curfilename: new \tikzexternal@lastkey@new@normalized; old \tikzexternal@lastkey@normalized.^^J}%
        \fi
        \ifx\tikzexternal@lastkey@normalized\tikzexternal@lastkey@new@normalized
            \tikzexternal@file@isuptodatetrue
        \else
            \tikzexternal@file@isuptodatefalse
            \immediate\openout\w@pgf@writea=\tikzexternal@curfilename\tikzexternal@check@uptodate@ext\relax%
            \immediate\write\w@pgf@writea{\tikzexternal@hashfct@serialize{\tikzexternal@lastkey@new}\tikzexternal@PERCENTchar}%
            \immediate\closeout\w@pgf@writea
        \fi
    \fi
}

\long\def\tikzexternal@externalizefig@systemcall@uptodatecheck#1{%
    \tikzexternal@check@uptodate@mode{#1}%
    \tikzexternal@checkforceremake
    \iftikzexternal@file@isuptodate
        \gdef\pgf@filename{}%
        \xdef\pgf@tempa{\noexpand\pgf@findfile\pgfsys@imagesuffixlist:+{\tikzexternal@curfilename}}%
        \pgf@tempa
        \ifx\pgf@filename\pgfutil@empty%
            \global\tikzexternal@file@isuptodatefalse
        \fi
    \fi
}%

\def\tikzexternal@externalizefig@systemcall@assertsuccess#1{%
    \gdef\pgf@filename{}%
    \xdef\pgf@tempa{\noexpand\pgf@findfile\pgfsys@imagesuffixlist:+{\tikzexternal@curfilename}}%
    \pgf@tempa
    \ifx\pgf@filename\pgfutil@empty%
        \tikzexternal@externalizefig@systemcall@handleexception{#1}%
    \fi
}%
\def\tikzexternal@externalizefig@systemcall@handleexception@msg#1{%
    \tikzerror{Sorry, the system call '#1' did NOT result in a usable output file '\tikzexternal@curfilename' (expected one of \pgfsys@imagesuffixlist). Please verify that you have enabled system calls. For pdflatex, this is 'pdflatex -shell-escape'. Sometimes it is also named 'write 18' or something like that. Or maybe the command simply failed? Error messages can be found in '\tikzexternal@curfilename.log'. If you continue now, I'll try to typeset the picture}{}%
}
\def\tikzexternal@externalizefig@systemcall@handleexception@retry@later#1{%
    \gdef\tikzexternal@systemcall@reschedule@to@end@document{0}%
    \expandafter\pgfexternalreaddpth\expandafter{\tikzexternal@curfilename}%
    \if1\tikzexternal@systemcall@reschedule@to@end@document
        \pgfutil@IfUndefined{AtVeryEndDocument}{%
            \tikzexternal@externalizefig@systemcall@handleexception@msg{#1}%
        }{%
            \pgf@typeout{===== The last system call resulted in an EMPTY output file. Maybe it is part of \string\ref. Rescheduling it for \string\end{document}. ========}%
            \gdef\tikzexternal@typeset@picture@on@failure{0}%
            \tikzexternal@externalizefig@systemcall@reschedule{#1}%
        }%
    \else
        \tikzexternal@externalizefig@systemcall@handleexception@msg{#1}%
    \fi
}

\def\tikzexternal@externalizefig@systemcall@reschedule#1{%
    \t@tikzexternal@tmpb={%
        \global\let\tikzexternal@externalizefig@systemcall@handleexception=\tikzexternal@externalizefig@systemcall@handleexception@msg%
        \tikzexternal@externalizefig@systemcall@call{#1}%
        \tikzexternal@externalizefig@systemcall@assertsuccess{#1}%
    }%
    \xdef\pgfutil@tempa{%
        \noexpand\def\noexpand\tikzexternal@curfilename{\tikzexternal@curfilename}%
        \the\t@tikzexternal@tmpb
    }%
    \expandafter\AtVeryEndDocument\expandafter{\pgfutil@tempa}%
    \gdef\tikzexternal@has@rescheduled@something{1}%
}%
\let\tikzexternal@externalizefig@systemcall@handleexception=\tikzexternal@externalizefig@systemcall@handleexception@retry@later%

\def\tikzexternal@has@rescheduled@something{0}%
\pgfutil@IfUndefined{AtVeryEndDocument}{}{%
    \AtVeryEndDocument{%
        \if1\tikzexternal@has@rescheduled@something
            \pgf@typeout{===== tikzexternal: \string\end{document} reached. Working on rescheduled images to resolve references... ========}%
        \fi
    }%
}

\def\pgfexternal@error@no@shipout{%
    \begingroup
        \begingroup
        \immediate\openout\pgf@plotwrite=\pgfactualjobname.dpth
        \let\w@pgfexternal@auxout=\pgf@plotwrite
        \pgfexternalstorecommand@isexporting{\gdef\noexpand\tikzexternal@systemcall@reschedule@to@end@document{1}}%
        \immediate\closeout\pgf@plotwrite
        \endgroup
    \tikzexternal@assemble@systemcall{\pgfactualjobname}{\pgf@tempa}%
    \toks0=\expandafter{\pgf@tempa}%
    \tikzerror{Sorry, image externalization failed: the resulting image was EMPTY. I tried to externalize '\pgfactualjobname', but it seems there is no such image in the document!?
 \if\tikzexternal@opmode4 ^^J
\space\space You are currently using 'mode=convert with system call'. This problem can happen if the image (or one of the images preceding it) was declared inside of a \string\label{} (i.e. in the .aux file): 'convert with system call' has no access to the main aux file.^^J
\space\space Possible solutions in this case:^^J
\space\space (a) Try using 'mode=list and make',^^J
\space\space (b) Issue the externalization command '\the\toks0' *manually* (also check the preceding externalized images, perhaps the file name sequence is not correct).^^J
\space\space Repeat: the resulting image was EMPTY, your attention is required
\else
    \if\tikzexternal@opmode5 ^^J
\space\space You are currently using 'mode=list and make'. Possible solutions:^^J
\space\space (a) Try to delete `\tikzexternal@realjob.makefile'. Perhaps it is not up-to-date.^^J
\space\space (b) Perhaps pictures are declared inside of \string\label{} and the .aux file is not up-to-date. Re-run latex, perhaps re-generate the graphics as well.^^J
\space\space Repeat: the resulting image was EMPTY, your attention is required
    \fi
\fi}%
    \endgroup
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzexternalshared.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary3d.code.tex ====

\ProvidesFileRCS{tikzlibrary3d.code.tex}




\tikzdeclarecoordinatesystem{xyz cylindrical}
{%
  \pgfset{/tikz/cs/.cd,angle=0,radius=0,z=0,#1}%
  \pgfpointcylindrical{\tikz@cs@angle}{\tikz@cs@xradius}{\tikz@cs@z}%
}%

\tikzdeclarecoordinatesystem{xyz spherical}
{%
  \pgfset{/tikz/cs/.cd,angle=0,radius=0,latitude=0,longitude=0,#1}%
  \pgfpointspherical{\tikz@cs@angle}{\tikz@cs@latitude}{\tikz@cs@xradius}%
}%

\pgfset{/tikz/cs/longitude/.store in=\tikz@cs@angle}%
\pgfset{/tikz/cs/latitude/.store in=\tikz@cs@latitude}%



\tikzoption{plane origin}{\def\tikz@plane@origin{\tikz@scan@one@point\pgfutil@firstofone#1}}%
\tikzoption{plane x}{\def\tikz@plane@x{\tikz@scan@one@point\pgfutil@firstofone#1}}%
\tikzoption{plane y}{\def\tikz@plane@y{\tikz@scan@one@point\pgfutil@firstofone#1}}%

\let\tikz@plane@origin=\pgfpointorigin
\def\tikz@plane@x{\pgfpointxy{1}{0}}%
\def\tikz@plane@y{\pgfpointxy{0}{1}}%

\tikzoption{canvas is plane}[]{
  \tikz@canvas@is@plane
}%
\tikzoption{canvas is xy plane at z}[]{%
  \def\tikz@plane@origin{\pgfpointxyz{0}{0}{#1}}%
  \def\tikz@plane@x{\pgfpointxyz{1}{0}{#1}}%
  \def\tikz@plane@y{\pgfpointxyz{0}{1}{#1}}%
  \tikz@canvas@is@plane
}%
\tikzoption{canvas is yx plane at z}[]{%
  \def\tikz@plane@origin{\pgfpointxyz{0}{0}{#1}}%
  \def\tikz@plane@x{\pgfpointxyz{0}{1}{#1}}%
  \def\tikz@plane@y{\pgfpointxyz{1}{0}{#1}}%
  \tikz@canvas@is@plane
}%
\tikzoption{canvas is xz plane at y}[]{%
  \def\tikz@plane@origin{\pgfpointxyz{0}{#1}{0}}%
  \def\tikz@plane@x{\pgfpointxyz{1}{#1}{0}}%
  \def\tikz@plane@y{\pgfpointxyz{0}{#1}{1}}%
  \tikz@canvas@is@plane
}%
\tikzoption{canvas is zx plane at y}[]{%
  \def\tikz@plane@origin{\pgfpointxyz{0}{#1}{0}}%
  \def\tikz@plane@x{\pgfpointxyz{0}{#1}{1}}%
  \def\tikz@plane@y{\pgfpointxyz{1}{#1}{0}}%
  \tikz@canvas@is@plane
}%
\tikzoption{canvas is yz plane at x}[]{%
  \def\tikz@plane@origin{\pgfpointxyz{#1}{0}{0}}%
  \def\tikz@plane@x{\pgfpointxyz{#1}{1}{0}}%
  \def\tikz@plane@y{\pgfpointxyz{#1}{0}{1}}%
  \tikz@canvas@is@plane
}%
\tikzoption{canvas is zy plane at x}[]{%
  \def\tikz@plane@origin{\pgfpointxyz{#1}{0}{0}}%
  \def\tikz@plane@x{\pgfpointxyz{#1}{0}{1}}%
  \def\tikz@plane@y{\pgfpointxyz{#1}{1}{0}}%
  \tikz@canvas@is@plane
}%




\def\tikz@canvas@is@plane{
  \pgf@process{\tikz@plane@x}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{\tikz@plane@y}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{\tikz@plane@origin}%
  \edef\pgf@marshal{\noexpand\tikz@addtransform{%
      \noexpand\pgftransformtriangle
      {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
      {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}
      {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}
      \noexpand\pgftransformscale{0.035146}%
      \noexpand\pgfsetxvec{\noexpand\pgfpoint{1cm}{0cm}}%
      \noexpand\pgfsetyvec{\noexpand\pgfpoint{0cm}{1cm}}%
      \noexpand\pgfsetzvec{\noexpand\pgfpoint{0cm}{0cm}}%
    }}%
  \pgf@marshal%
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary3d.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryangles.code.tex ====

\ProvidesFileRCS{tikzlibraryangles.code.tex}


\tikzset{
  pics/angle/.style = {
    setup code  = \tikz@lib@angle@parse#1\pgf@stop,
    code = {},
    background code = \tikz@lib@angle@background#1\pgf@stop,
    foreground code = \tikz@lib@angle@foreground#1\pgf@stop,
  },
  pics/right angle/.style = {
    setup code  = \tikz@lib@angle@parse#1\pgf@stop,
    code = {},
    background code = \tikz@lib@rightangle@background#1\pgf@stop,
    foreground code = \tikz@lib@rightangle@foreground#1\pgf@stop,
  },
  pics/angle/.default=A--B--C,
  angle eccentricity/.initial=.6,
  angle radius/.initial=5mm,
}%

\def\tikz@lib@angle@background#1--#2--#3\pgf@stop{%
  \path [name prefix ..] [pic actions, draw=none] (#2.center)
    -- ++(\tikz@start@angle@temp:\tikz@lib@angle@rad pt)
    arc [start angle=\tikz@start@angle@temp, end
    angle=\tikz@end@angle@temp, radius=\tikz@lib@angle@rad pt] -- cycle;
}%

\def\tikz@lib@angle@foreground#1--#2--#3\pgf@stop{%
  \path [name prefix ..] [pic actions, fill=none, shade=none]
  ([shift={(\tikz@start@angle@temp:\tikz@lib@angle@rad pt)}]#2.center)
    arc [start angle=\tikz@start@angle@temp, end
    angle=\tikz@end@angle@temp, radius=\tikz@lib@angle@rad pt];
  \ifx\tikzpictext\relax\else%
    \def\pgf@temp{\node()[name prefix
      ..,at={([shift={({.5*\tikz@start@angle@temp+.5*\tikz@end@angle@temp}:\pgfkeysvalueof{/tikz/angle
            eccentricity}*\tikz@lib@angle@rad pt)}]#2.center)}]}
    \expandafter\pgf@temp\expandafter[\tikzpictextoptions]{\tikzpictext};%
  \fi
}%

\def\tikz@lib@rightangle@background#1--#2--#3\pgf@stop{%
  \path [name prefix ..] [pic actions, draw=none] (#2.center)
    -- ++(\tikz@start@angle@temp:\tikz@lib@angle@rad pt)
    -- ++(\tikz@end@angle@temp:\tikz@lib@angle@rad pt)
    -- ++(\tikz@start@angle@temp:-\tikz@lib@angle@rad pt)
    -- cycle;
}%

\def\tikz@lib@rightangle@foreground#1--#2--#3\pgf@stop{%
  \path [name prefix ..] [pic actions, fill=none, shade=none]
  ([shift={(\tikz@start@angle@temp:\tikz@lib@angle@rad pt)}]#2.center)
  -- ++(\tikz@end@angle@temp:\tikz@lib@angle@rad pt)
  -- ++(\tikz@start@angle@temp:-\tikz@lib@angle@rad pt);
  \ifx\tikzpictext\relax\else%
    \def\pgf@temp{\node()[name prefix
      ..,at={([shift={({.5*\tikz@start@angle@temp+.5*\tikz@end@angle@temp}:\pgfkeysvalueof{/tikz/angle
            eccentricity}*1.4142136*\tikz@lib@angle@rad pt)}]#2.center)}]}
    \expandafter\pgf@temp\expandafter[\tikzpictextoptions]{\tikzpictext};%
  \fi
}%

\def\tikz@lib@angle@parse#1--#2--#3\pgf@stop{%
  \pgfmathsetmacro\tikz@lib@angle@rad{\pgfkeysvalueof{/tikz/angle radius}}
  \ifdim\tikz@lib@angle@rad pt>0pt\else\def\tikz@lib@angle@rad{12}\fi%
  \pgf@process{\pgfpointanchor{#2}{center}}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{\pgfpointanchor{#1}{center}}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{\pgfpointanchor{#3}{center}}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \advance\pgf@xb by-\pgf@xa%
  \advance\pgf@yb by-\pgf@ya%
  \advance\pgf@xc by-\pgf@xa%
  \advance\pgf@yc by-\pgf@ya%
  \pgfmathsetmacro{\tikz@start@angle@temp}{atan2(\the\pgf@yb,\the\pgf@xb)}
  \pgfmathsetmacro{\tikz@end@angle@temp}{atan2(\the\pgf@yc,\the\pgf@xc)}
  \ifdim\tikz@end@angle@temp pt<\tikz@start@angle@temp pt%
    \pgfmathsetmacro{\tikz@start@angle@temp}{\tikz@start@angle@temp-360}%
  \fi%
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryangles.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryanimations.code.tex ====

\ProvidesFileRCS{tikzlibraryanimations.code.tex}

\usepgfmodule{animations}%




\def\tikz@collect@scope@anims#1{%
  \let\tikz@scope@anims\pgfutil@empty%
  \let\tikz@collect@command#1%
  \tikz@collect@scope@anims@parse%
}%
\def\tikz@collect@scope@anims@parse{%
  \pgfutil@ifnextchar[{\tikz@collect@scope@anims@opt}{%
    \pgfutil@ifnextchar:{\tikz@collect@scope@anims@go}{%
      \tikz@collect@scope@anims@done}}%
}%
\def\tikz@collect@scope@anims@done{%
  \expandafter\tikz@collect@command\expandafter[\tikz@scope@anims]%
}%
\def\tikz@collect@scope@anims@opt[{%
  \expandafter\tikz@collect@command\expandafter[\tikz@scope@anims%
}%
\def\tikz@collect@scope@anims@go:#1=#2{%
  \expandafter\def\expandafter\tikz@scope@anims\expandafter{\tikz@scope@anims animate={myself:={:{#1}={#2}}},}%
  \tikz@collect@scope@anims@parse%
}%





\def\tikzanimateset{\pgfqkeys{/tikz/animate}}%
\tikzanimateset{
  .code={
    \pgfkeys{/handlers/first char syntax=true}
    \pgfkeyssetvalue{/handlers/first char syntax/\expandafter\meaning\string"}{\tikz@animation@value}%
    \def\tikz@anim@t{0}%
    \def\tikz@anim@t@base{0}%
    \def\tikz@anim@t@current{0}%
    \tikzanimateset{#1}
  },
  scope/.code=\tikz@anim@scope{#1}{}{},
  sync/.code=\tikz@anim@sync@scope{#1}{}{},
  entry/.code=\tikz@anim@make@entry,
  object/.code=\tikz@anim@set@object{#1},
  attribute/.code=\tikz@anim@set@attr{#1},
  id/.code=\tikz@anim@set@id{#1},
  time/.code=\tikz@anim@set@time{#1},
  value/.code=\tikz@anim@add{\tikz@anim@value{#1}},%
  remember/.code=\pgfmathadd@{\tikz@anim@t}{\tikz@anim@t@base}\global\let#1\pgfmathresult,
  resume/.code=\tikz@anim@resume{#1},
  fork/.code={\tikz@anim@parse@time{#1}\pgfmathadd@\tikz@anim@t\tikz@anim@t@base\let\tikz@anim@t@base\pgfmathresult\def\tikz@anim@t{0}},
  fork/.default = 0later,
  base/.style={scope={/utils/exec=\let\tikz@animation@time\tikz@anim@base@text,#1,entry}},
}%

\tikzset{
  make snapshot of/.code=\edef\tikz@temp{#1}\ifx\tikz@temp\pgfutil@empty\else\pgfsnapshot{#1}\fi,
  make snapshot after/.code=\edef\tikz@temp{#1}\ifx\tikz@temp\pgfutil@empty\else\pgfsnapshotafter{#1}\fi,
  make snapshot if necessary/.code=\ifpgfsysanimationsupported\else\pgfsnapshot{#1}\fi,
  make snapshot if necessary/.default=0s,
}%

\def\tikz@anim@scope#1#2#3{%
  {#2\tikzanimateset{#1}#3}%
}%
\def\tikz@anim@sync@scope#1#2#3{%
  {%
    #2%
    \tikzanimateset{#1}%
    #3%
    \pgfmathadd@{\tikz@anim@t}{\tikz@anim@t@base}%
    \expandafter%
  }\expandafter\pgfmathsubtract@\expandafter{\pgfmathresult}{\tikz@anim@t@base}%
  \tikz@anim@set@time{\pgfmathresult}%
}%

\def\tikz@anim@set@time#1{%
  \tikz@anim@parse@time{#1}%
  \let\tikz@anim@t@current\tikz@anim@t%
  \pgfmathadd@\tikz@anim@t\tikz@anim@t@base%
  \let\tikz@animation@time\pgfmathresult%
}%

\def\tikz@anim@value#1{%
  \def\tikz@anim@result{#1}
  \ifx\tikz@anim@result\pgf@special@current@text%
  \else%
    \ifx\tikz@animation@parser\relax%
    \else%
      \tikz@animation@parser{#1}%
    \fi%
  \fi%
}%


\def\tikz@anim@resume#1{%
  \pgfparsetime{#1}%
  \pgfmathsubtract@{\pgftimeresult}{\tikz@anim@t@base}%
  \tikz@anim@set@time{\pgfmathresult}%
}%



\def\tikz@animation@syntax@check#1#2{%
  \def\tikz@animation@rest{#1}%
  \expandafter\pgfutil@in@\expandafter:\expandafter{\tikz@key}%
  \ifpgfutil@in@%
    \expandafter\tikz@anim@parse@colon\tikz@key\pgf@stop%
  \else%
    #2%
  \fi%
}%

\def\tikz@anim@parse@colon#1:#2\pgf@stop{%
  \expandafter\tikz@anim@sync@scope\expandafter{\tikz@animation@rest}{%
    \tikz@anim@set@object{#1}%
    \pgfutil@in@_{#2}%
    \ifpgfutil@in@%
      \tikz@anim@parse@under#2\pgf@stop%
    \else%
      \tikz@anim@parse@under#2_\pgf@stop%
    \fi%
    }{\tikz@anim@make@entry}%
}%

\def\tikz@anim@parse@under#1_#2\pgf@stop{%
  \tikz@anim@set@attr{#1}%
  \tikz@anim@set@id{#2}%
}%

\def\tikz@anim@set@attr#1{%
  \pgfkeys@spdef\tikz@anim@a{#1}%
  \ifx\tikz@anim@a\pgfutil@empty%
  \else%
    \let\tikz@anim@tl@attributes\tikz@anim@a%
  \fi%
}%

\def\tikz@anim@set@id#1{%
  \pgfkeys@spdef\tikz@anim@a{#1}%
  \ifx\tikz@anim@a\pgfutil@empty%
  \else%
    \let\tikz@anim@tl@id\tikz@anim@a%
  \fi%
}%

\def\tikz@anim@set@object#1{%
  \pgfkeys@spdef\tikz@anim@a{#1}%
  \ifx\tikz@anim@a\pgfutil@empty%
  \else%
    \let\tikz@anim@tl@objects\tikz@anim@a%
  \fi%
}%



\def\tikz@animation@value#1{%
  \tikz@animation@value@parser#1\pgf@stop%
}%

\def\tikz@animation@value@parser"#1"{%
  \def\tikz@animation@value@head{#1}%
  \pgfutil@ifnextchar\pgf@stop{\tikz@animation@value@rest=}{%
    \pgfutil@ifnextchar b\tikz@animation@value@rest@base\tikz@animation@value@rest%
  }%
}%
\def\tikz@animation@value@rest=#1\pgf@stop{%
  \tikz@anim@sync@scope{#1}{\expandafter\tikz@anim@add\expandafter{\expandafter\tikz@anim@value\expandafter{\tikz@animation@value@head}}}{\tikz@anim@make@entry}%
}%

\def\tikz@animation@value@rest@base base{%
  \tikz@anim@sync@scope{}{\let\tikz@animation@time\tikz@anim@base@text\expandafter\tikz@anim@add\expandafter{\expandafter\tikz@anim@value\expandafter{\tikz@animation@value@head}}}{\tikz@anim@make@entry}%
  \pgfutil@ifnextchar\pgf@stop{\tikz@animation@value@rest=}{\tikz@animation@value@rest}%
}%





\def\tikz@anim@simple@parse#1{} %

\def\tikz@anim@slant@parse#1{\pgfmathsetmacro\tikz@anim@result{atan(#1)}}%

\def\tikz@anim@dashpattern@parse#1{%
  \pgfmathsetmacro\tikz@anim@dash@phase{\tikz@dashphase}%
  \def\tikz@dashpattern{}%
  \expandafter\tikz@scandashon\pgfutil@gobble#1o\@nil%
  \edef\tikz@anim@result{{\tikz@dashpattern}{\tikz@anim@dash@phase pt}}%
}%
\def\tikz@anim@dashoffset@parse#1{%
  \pgfmathparse{#1}%
  \edef\tikz@anim@result{{\tikz@dashpattern}{\pgfmathresult pt}}%
}%
\def\tikz@anim@dash@parse#1{%
  \tikz@anim@dash@parse@#1\pgf@stop%
}%
\def\tikz@anim@dash@parse@#1phase#2\pgf@stop{%
  \pgfmathsetmacro\tikz@anim@dash@phase{#2}%
  \def\tikz@dashpattern{}%
  \expandafter\tikz@scandashon\pgfutil@gobble#1o\@nil%
  \edef\tikz@anim@result{{\tikz@dashpattern}{\tikz@anim@dash@phase pt}}%
}%

\def\tikz@anim@xshift@parse#1{\pgfmathparse{#1}\edef\tikz@anim@result{\noexpand\pgfqpoint{\pgfmathresult pt}{0pt}}}%
\def\tikz@anim@yshift@parse#1{\pgfmathparse{#1}\edef\tikz@anim@result{\noexpand\pgfqpoint{0pt}{\pgfmathresult pt}}}%

\def\tikz@anim@xscale@parse#1{\pgfmathparse{#1}\edef\tikz@anim@result{\pgfmathresult,1}}%
\def\tikz@anim@yscale@parse#1{\pgfmathparse{#1}\edef\tikz@anim@result{1,\pgfmathresult}}%

\def\tikz@anim@shift@parse#1{\tikz@scan@one@point\tikz@anim@do@shift#1}%
\def\tikz@anim@do@shift#1{\def\tikz@anim@result{#1}}%

\def\tikz@anim@position@parse#1{%
  \begingroup%
    \let\tikz@transform=\relax%
    \pgf@xc-\pgf@pt@x%
    \pgf@yc-\pgf@pt@y%
    \pgfsettransform\tikz@anim@saved@transform%
    \tikz@scan@one@point\tikz@anim@do@position#1}%
\def\tikz@anim@do@position#1{%
    \pgf@process{\pgfpointtransformed{#1}}%
    \advance\pgf@x by\pgf@xc%
    \advance\pgf@y by\pgf@yc%
    \xdef\tikz@anim@temp{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \endgroup%
  \let\tikz@anim@result\tikz@anim@temp%
}%

\def\tikz@anim@view@parse#1{\tikz@anim@view@parse@#1\pgf@stop}%
\def\tikz@anim@view@parse@{%
  \pgfutil@ifnextchar({\tikz@scan@one@point\tikz@anim@view@parse@a}{\tikz@anim@view@node}%
}%
\def\tikz@anim@view@parse@a#1{%
  \def\tikz@anim@result{{#1}}%
  \pgfutil@ifnextchar r{\tikz@anim@view@parsed@rec}{\tikz@scan@one@point\tikz@anim@view@parse@b}%
}%
\def\tikz@anim@view@parsed@rec rectangle{\tikz@scan@one@point\tikz@anim@view@parse@b}%
\def\tikz@anim@view@parse@b#1{%
  \expandafter\def\expandafter\tikz@anim@result\expandafter{\tikz@anim@result{#1}}%
  \pgfutil@ifnextchar\pgf@stop\pgfutil@gobble{\tikzerror{Wrong view syntax}}%
}%
\def\tikz@anim@view@node#1\pgf@stop{%
  \expandafter\ifx\csname pgf@sh@ns@#1\endcsname\relax%
    \tikzerror{Undefined node '#1'}%
  \else%
    {%
      \pgf@process{\pgfpointanchor{#1}{west}}%
      \pgf@xa\pgf@x \pgf@ya\pgf@y
      \pgf@xb\pgf@x \pgf@yb\pgf@y
      \pgf@process{\pgfpointanchor{#1}{north}}%
      \ifdim\pgf@x<\pgf@xa \pgf@xa=\pgf@x\fi%
      \ifdim\pgf@x>\pgf@xb \pgf@xb=\pgf@x\fi%
      \ifdim\pgf@y<\pgf@ya \pgf@ya=\pgf@y\fi%
      \ifdim\pgf@y>\pgf@yb \pgf@yb=\pgf@y\fi%
      \pgf@process{\pgfpointanchor{#1}{south}}%
      \ifdim\pgf@x<\pgf@xa \pgf@xa=\pgf@x\fi%
      \ifdim\pgf@x>\pgf@xb \pgf@xb=\pgf@x\fi%
      \ifdim\pgf@y<\pgf@ya \pgf@ya=\pgf@y\fi%
      \ifdim\pgf@y>\pgf@yb \pgf@yb=\pgf@y\fi%
      \pgf@process{\pgfpointanchor{#1}{east}}%
      \ifdim\pgf@x<\pgf@xa \pgf@xa=\pgf@x\fi%
      \ifdim\pgf@x>\pgf@xb \pgf@xb=\pgf@x\fi%
      \ifdim\pgf@y<\pgf@ya \pgf@ya=\pgf@y\fi%
      \ifdim\pgf@y>\pgf@yb \pgf@yb=\pgf@y\fi%
      \xdef\tikz@anim@result{{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}}
    }%
  \fi%
}%

\def\tikz@anim@path@parse#1{%
  {%
    \setbox0=\hbox{{%
        \pgfinterruptpath%
        \expandafter\tikz@scan@next@command#1\pgf@stop%
        \pgfsyssoftpath@getcurrentpath\tikz@anim@result%
        \pgfprocessround{\tikz@anim@result}{\tikz@anim@result}%
        \global\let\tikz@anim@result\tikz@anim@result%
        \endpgfinterruptpath%
      }}%
  }%
}%



\def\tikz@anim@along#1#2{%
  {%
    \setbox0=\hbox{{%
        \pgfinterruptpath%
        \pgf@relevantforpicturesizefalse%
        \iftikz@anim@is@position%
          \let\tikz@transform=\relax%
          \pgf@x-\pgf@pt@x%
          \pgf@y-\pgf@pt@y%
          \edef\tikz@anim@along@shift{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
          \pgfsettransformentries#1%
        \else%
          \pgftransformreset%
        \fi
        \tikz@scan@next@command#2\pgf@stop%
        \pgfsyssoftpath@getcurrentpath\tikz@anim@parsed@path%
        \pgfprocessround{\tikz@anim@parsed@path}{\tikz@anim@parsed@path}%
        \iftikz@anim@is@position%
          \tikz@anim@shift@path%
          \global\let\tikz@anim@parsed@path\tikz@anim@patched@path%
        \else%
          \global\let\tikz@anim@parsed@path\tikz@anim@parsed@path%
        \fi%
        \endpgfinterruptpath%
      }}%
  }%
  \pgfanimationset{along softpath/.expand once=\tikz@anim@parsed@path}%
}%

\def\tikz@anim@shift@path{%
  \let\tikz@anim@patched@path\pgfutil@empty%
  \tikz@anim@along@shift%
  \expandafter\tikz@anim@shift@path@\tikz@anim@parsed@path\pgf@stop%
}%
\def\tikz@anim@shift@path@{%
  \pgfutil@ifnextchar\pgf@stop\pgfutil@gobble{%
    \pgfutil@ifnextchar\bgroup\tikz@anim@shift@path@sub\tikz@anim@shift@path@copy}%
}%
\def\tikz@anim@shift@path@copy#1{%
  \expandafter\def\expandafter\tikz@anim@patched@path\expandafter{\tikz@anim@patched@path#1}%
  \tikz@anim@shift@path@%
}%
\def\tikz@anim@shift@path@sub#1#2{%
  \pgf@x#1%
  \pgf@y#2%
  \advance\pgf@x by\pgf@xc%
  \advance\pgf@y by\pgf@yc%
  \edef\tikz@temp{{\the\pgf@x}{\the\pgf@y}}%
  \expandafter\tikz@anim@shift@path@copy\expandafter{\tikz@temp}%
}%



\def\tikz@anim@parse@origin#1{%
  \tikz@scan@one@point\tikz@anim@parse@origin@#1\relax%
}%
\def\tikz@anim@parse@origin@#1{\tikz@anim@add{\pgfanimationset{origin={#1}}}}%



\def\tikz@anim@tl@objects{}%
\def\tikz@anim@tl@attributes{}%
\def\tikz@anim@tl@id{default}%

\let\tikz@anim@tl@exec@options\pgfutil@empty
\let\tikz@anim@tl@early@options\pgfutil@empty

\def\tikz@anim@add@early#1{\expandafter\def\expandafter\tikz@anim@tl@early@options\expandafter{\tikz@anim@tl@early@options#1}}%
\def\tikz@anim@add@once@early#1{%
  \global\advance\tikz@anim@once@count by1\relax%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\tikz@anim@tl@early@options%
  \expandafter\expandafter\expandafter{\expandafter\tikz@anim@tl@early@options\expandafter\tikz@anim@exec@once\expandafter{\the\tikz@anim@once@count}{#1}}%
}%
\def\tikz@anim@add#1{\expandafter\def\expandafter\tikz@anim@tl@exec@options\expandafter{\tikz@anim@tl@exec@options#1}}%
\def\tikz@anim@add@once#1{%
  \global\advance\tikz@anim@once@count by1\relax%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\tikz@anim@tl@exec@options%
  \expandafter\expandafter\expandafter{\expandafter\tikz@anim@tl@exec@options\expandafter\tikz@anim@exec@once\expandafter{\the\tikz@anim@once@count}{#1}}%
}%
\newcount\tikz@anim@once@count%
\def\tikz@anim@exec@once#1#2{%
  \expandafter\ifx\csname tikz@anim@once@#1\endcsname\pgf@stop%
  \else%
    \expandafter\let\csname tikz@anim@once@#1\endcsname\pgf@stop%
    #2%
  \fi%
}%

\newif\iftikz@anim@do@entry

\def\tikz@anim@make@entry{%
  \tikz@anim@do@entrytrue%
  \ifx\tikz@anim@tl@objects\pgfutil@empty\tikz@anim@do@entryfalse\fi%
  \ifx\tikz@anim@tl@attributes\pgfutil@empty\tikz@anim@do@entryfalse\fi%
  \ifx\tikz@anim@tl@exec@options\pgfutil@empty\ifx\tikz@anim@tl@early@options\pgfutil@empty\tikz@anim@do@entryfalse\fi\fi%
  \iftikz@anim@do@entry%
    \foreach\tikz@anim@tl@object in\tikz@anim@tl@objects{%
      \expandafter\tikzanimationattributesset\expandafter{\tikz@anim@tl@attributes}%
    }%
  \fi%
}%

\def\tikzanimationattributesset#1{\pgfqkeys{/tikz/animate/attributes}{#1}}%

\tikzanimationattributesset{
  .unknown/.code={
    \let\tikz@anim@attribute@name\pgfkeyscurrentname
    \expandafter\let\expandafter\pgf@temp\csname tikz@anim@def@pgf@attr@\tikz@anim@attribute@name\endcsname%
    \ifx\pgf@temp\relax%
      \tikzerror{Unknown animation attribute '\tikz@anim@attribute@name'}%
    \else%
      \expandafter\tikz@timeline@config\expandafter\tikz@anim@tl@object\expandafter\tikz@anim@attribute@name\expandafter\tikz@anim@tl@id\expandafter{\tikz@anim@configs}%
      \edef\pgf@marshal{\noexpand\tikz@timeline@entry{\tikz@anim@tl@object}{\tikz@anim@attribute@name}{\tikz@anim@tl@id}}%
      \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\pgf@marshal\expandafter{\tikz@anim@tl@early@options}}%
      \expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter\tikz@anim@entry\expandafter\expandafter\expandafter{\expandafter\tikz@anim@tl@exec@options\expandafter\def\expandafter\tikz@animation@time\expandafter{\tikz@animation@time}}}%
    \fi%
  }
}%
\let\tikz@anim@configs\pgfutil@empty

\def\tikz@anim@entry#1{%
  \let\tikz@anim@result\pgfutil@empty%
  \pgf@anim@reset@linear%
  #1%
  \ifx\tikz@anim@result\pgfutil@empty%
  \else%
    \ifx\tikz@animation@time\pgfutil@empty%
    \else%
      \ifx\tikz@animation@time\tikz@anim@base@text%
        \expandafter\pgf@anim@base\expandafter{\tikz@anim@result}%
      \else%
        \expandafter\expandafter\expandafter\pgf@anim@entry%
        \expandafter\expandafter\expandafter{\expandafter\tikz@animation@time\expandafter}\expandafter{\tikz@anim@result}%
      \fi%
    \fi%
  \fi%
}%
\let\tikz@animation@time\pgfutil@empty%
\def\tikz@anim@base@text{base}%

\tikzanimateset{
  .unknown/.code={%
    \let\tikz@key\pgfkeyscurrentname%
    \tikz@animation@syntax@check{#1}{\tikz@anim@options{#1}}%
  }
}%


\def\tikz@anim@options#1{
  \let\tikz@anim@key\pgfkeyscurrentname%
  \pgfqkeys{/tikz/animate/options}{\tikz@anim@key/.try={#1}}%
  \ifpgfkeyssuccess%
  \else%
    \def\tikz@anim@unparsed@value{#1}%
    \expandafter\tikz@anim@time@test\tikz@anim@key\pgf@stop%
  \fi%
}%

\tikzanimateset{
  options/.cd,
  name/.code=\tikz@anim@add{\pgfanimationset{name={#1}}},
  forever/.code=\tikz@anim@add{\pgfanimationset{freeze at end}},
  freeze/.code=\tikz@anim@add{\pgfanimationset{freeze at end}},
  restart/.code=\tikz@anim@add{\pgfanimationset{restart={#1}}},
  repeats/.code=\tikz@anim@add{\pgfanimationset{repeats={#1}}},
  repeats/.default=,
  repeat/.code=\tikz@anim@add{\pgfanimationset{repeats={#1}}},
  repeat/.default=,
  begin/.code=\tikz@anim@add@once{\pgfanimationset{begin={#1}}},
  end/.code=\tikz@anim@add@once{\pgfanimationset{end={#1}}},
  begin on/.code=\tikz@anim@event{begin}{#1},
  end on/.code=\tikz@anim@event{begin}{#1},
  begin snapshot/.code=\tikz@anim@add{\pgfanimationset{begin snapshot={#1}}},
  origin/.code=\tikz@anim@parse@origin{#1},
  transform/.code=\tikz@anim@add{\pgfanimationset{transform={\let\tikz@transform\relax\tikzset{#1}}}},
  along/.code=\tikz@anim@handle@along#1\pgf@stop,
  entry control/.code=\tikz@anim@add{\pgfanimationset{entry control={#1}}},
  exit control/.code=\tikz@anim@add{\pgfanimationset{exit control={#1}}},
  stay/.code=\tikz@anim@add{\pgfanimationset{stay}},
  jump/.code=\tikz@anim@add{\pgfanimationset{jump}},
  ease/.style={
    entry control={1-(#1)}{1},
    exit control={#1}{0}
  },
  ease/.default=0.5,
  ease in/.style={
    entry control={1-(#1)}{1},
  },
  ease in/.default=0.5,
  ease out/.style={
    exit control={#1}{0},
  },
  ease out/.default=0.5,
  arrows/.code=\tikz@anim@add@early{\pgfanimationset{arrows={#1}}},
  shorten >/.code=\tikz@anim@add@early{\pgfanimationset{shorten >={#1}}},
  shorten ,double=none,every accepting by arrow]
      --
      ([shift=(\tikz@accepting@angle:\tikz@accepting@distance)]\tikztostart.\tikz@accepting@angle)
          node [shape=rectangle,anchor=\tikz@accepting@anchor] {\tikz@accepting@text}
      }]
    edge ()
  }
}}}%
\tikzset{every accepting by arrow/.style={}}%
\tikzset{accepting by double/.style= {double,outer sep=.5\pgflinewidth+.3pt}} %

\tikzset{initial by arrow/.style=    {after node path=
{
  {
    [to path=
    {
      [->,double=none,every initial by arrow]
      ([shift=(\tikz@initial@angle:\tikz@initial@distance)]\tikztostart.\tikz@initial@angle)
          node [shape=rectangle,anchor=\tikz@initial@anchor] {\tikz@initial@text}
        -- (\tikztostart)}]
    edge ()
  }
}}}%
\tikzset{every initial by arrow/.style={}}%

\tikzset{initial by diamond/.style={shape=diamond}}%


\tikzoption{initial text}{\tikzaddafternodepathoption{\def\tikz@initial@text{#1}}}%
\tikzoption{accepting text}{\tikzaddafternodepathoption{\def\tikz@accepting@text{#1}}}%

\tikzoption{initial where}{\tikzaddafternodepathoption{\csname tikz@initial@compute@#1\endcsname}}%
\tikzoption{accepting where}{\tikzaddafternodepathoption{\csname tikz@accepting@compute@#1\endcsname}}%

\tikzoption{initial distance}{\tikzaddafternodepathoption{\def\tikz@initial@distance{#1}}}%
\tikzoption{accepting distance}{\tikzaddafternodepathoption{\def\tikz@accepting@distance{#1}}}%

\def\tikz@initial@text{start}%
\def\tikz@accepting@text{}%

\def\tikz@initial@distance{3ex}%
\def\tikz@accepting@distance{3ex}%

\def\tikz@initial@compute@above{\def\tikz@initial@angle{90}\def\tikz@initial@anchor{south}}%
\def\tikz@initial@compute@below{\def\tikz@initial@angle{270}\def\tikz@initial@anchor{north}}%
\def\tikz@initial@compute@left{\def\tikz@initial@angle{180}\def\tikz@initial@anchor{east}}%
\def\tikz@initial@compute@right{\def\tikz@initial@angle{0}\def\tikz@initial@anchor{west}}%

\def\tikz@initial@angle{180}%
\def\tikz@initial@anchor{east}%

\def\tikz@accepting@compute@above{\def\tikz@accepting@angle{90}\def\tikz@accepting@anchor{south}}%
\def\tikz@accepting@compute@below{\def\tikz@accepting@angle{270}\def\tikz@accepting@anchor{north}}%
\def\tikz@accepting@compute@left{\def\tikz@accepting@angle{180}\def\tikz@accepting@anchor{east}}%
\def\tikz@accepting@compute@right{\def\tikz@accepting@angle{0}\def\tikz@accepting@anchor{west}}%

\def\tikz@accepting@angle{0}%
\def\tikz@accepting@anchor{west}%


\tikzset{initial above/.style=        {initial by arrow,initial where=above}}%
\tikzset{initial below/.style=        {initial by arrow,initial where=below}}%
\tikzset{initial left/.style=         {initial by arrow,initial where=left}}%
\tikzset{initial right/.style=        {initial by arrow,initial where=right}}%

\tikzset{accepting above/.style=      {accepting by arrow,accepting where=above}}%
\tikzset{accepting below/.style=      {accepting by arrow,accepting where=below}}%
\tikzset{accepting left/.style=       {accepting by arrow,accepting where=left}}%
\tikzset{accepting right/.style=      {accepting by arrow,accepting where=right}}%



\tikzset{state/.style=                {state without output}}%
\tikzset{accepting/.style=            {accepting by double}}%
\tikzset{initial/.style=              {initial by arrow}}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryautomata.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybabel.code.tex ====

\ProvidesFileRCS{tikzlibrarybabel.code.tex}

\tikzset{
  handle active characters in code,
  handle active characters in nodes,
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybabel.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex ====

\ProvidesFileRCS{tikzlibrarybackgrounds.code.tex}



\pgfdeclarelayer{background}%
\pgfsetlayers{background,main}%


\tikzset{on background layer/.style={
    execute at begin scope={%
      \pgfonlayer{background}%
      \let\tikz@options=\pgfutil@empty%
      \tikzset{every on background layer/.try,#1}%
      \tikz@options},
    execute at end scope={\endpgfonlayer}
  }
}%



\tikzset{background rectangle/.style= {draw}}%
\tikzset{background top/.style=       {draw}}%
\tikzset{background bottom/.style=    {draw}}%
\tikzset{background left/.style=      {draw}}%
\tikzset{background right/.style=     {draw}}%
\tikzset{background grid/.style=      {help lines,draw}}%

\tikzoption{inner frame sep}{\def\tikz@framexsep{#1}\def\tikz@frameysep{#1}}%
\tikzoption{inner frame xsep}{\def\tikz@framexsep{#1}}%
\tikzoption{inner frame ysep}{\def\tikz@frameysep{#1}}%
\def\tikz@framexsep{1ex}%
\def\tikz@frameysep{1ex}%

\tikzoption{outer frame sep}{\def\tikz@outerframexsep{#1}\def\tikz@outerframeysep{#1}}%
\tikzoption{outer frame xsep}{\def\tikz@outerframexsep{#1}}%
\tikzoption{outer frame ysep}{\def\tikz@outerframeysep{#1}}%
\def\tikz@outerframexsep{0ex}%
\def\tikz@outerframeysep{0ex}%



\tikzset{loose background/.style=     {inner frame sep=2ex}}%
\tikzset{tight background/.style=     {inner frame sep=0ex}}%




\tikzset{framed/.style=                   {style=show background rectangle}}%
\tikzset{gridded/.style=                  {style=show background grid}}%

\tikzset{show background rectangle/.style={execute at end picture=\tikz@background@framed}}%
\tikzset{show background top/.style=      {execute at end picture=\tikz@background@top}}%
\tikzset{show background bottom/.style=   {execute at end picture=\tikz@background@bottom}}%
\tikzset{show background left/.style=     {execute at end picture=\tikz@background@left}}%
\tikzset{show background right/.style=    {execute at end picture=\tikz@background@right}}%
\tikzset{show background grid/.style=     {execute at end picture=\tikz@background@grid}}%



\def\tikz@background@save{%
  \pgftransformreset%
  \ifx\tikz@bg@minx\@undefined%
    \pgf@xb=\pgf@picminx%
    \pgf@yb=\pgf@picminy%
    \pgf@xc=\pgf@picmaxx%
    \pgf@yc=\pgf@picmaxy%
    \pgfmathsetlength{\pgf@x}{\tikz@framexsep}%
    \pgfmathsetlength{\pgf@y}{\tikz@frameysep}%
    \advance\pgf@xb by-\pgf@x%
    \advance\pgf@yb by-\pgf@y%
    \advance\pgf@xc by\pgf@x%
    \advance\pgf@yc by\pgf@y%
    \edef\tikz@bg@minx{\the\pgf@xb}%
    \edef\tikz@bg@miny{\the\pgf@yb}%
    \edef\tikz@bg@maxx{\the\pgf@xc}%
    \edef\tikz@bg@maxy{\the\pgf@yc}%
    \pgfmathsetlength{\pgf@x}{\tikz@outerframexsep}%
    \pgfmathsetlength{\pgf@y}{\tikz@outerframeysep}%
    \advance\pgf@xb by-\pgf@x%
    \advance\pgf@yb by-\pgf@y%
    \advance\pgf@xc by\pgf@x%
    \advance\pgf@yc by\pgf@y%
    \edef\tikz@bg@outerminx{\the\pgf@xb}%
    \edef\tikz@bg@outerminy{\the\pgf@yb}%
    \edef\tikz@bg@outermaxx{\the\pgf@xc}%
    \edef\tikz@bg@outermaxy{\the\pgf@yc}%
  \fi%
}%

\def\tikz@background@framed{%
  \tikz@background@save%
  \pgfonlayer{background}
    \path[style=background rectangle] (\tikz@bg@minx,\tikz@bg@miny) rectangle (\tikz@bg@maxx,\tikz@bg@maxy);
  \endpgfonlayer
}%

\def\tikz@background@top{%
  \tikz@background@save%
  \pgfonlayer{background}
    \path[style=background top] (\tikz@bg@outerminx,\tikz@bg@maxy) -- (\tikz@bg@outermaxx,\tikz@bg@maxy);
  \endpgfonlayer
}%

\def\tikz@background@bottom{%
  \tikz@background@save%
  \pgfonlayer{background}
    \path[style=background bottom] (\tikz@bg@outerminx,\tikz@bg@miny) -- (\tikz@bg@outermaxx,\tikz@bg@miny);
  \endpgfonlayer
}%

\def\tikz@background@left{%
  \tikz@background@save%
  \pgfonlayer{background}
    \path[style=background left] (\tikz@bg@minx,\tikz@bg@outerminy) -- (\tikz@bg@minx,\tikz@bg@outermaxy);
  \endpgfonlayer
}%

\def\tikz@background@right{%
  \tikz@background@save%
  \pgfonlayer{background}
    \path[style=background right] (\tikz@bg@maxx,\tikz@bg@outerminy) -- (\tikz@bg@maxx,\tikz@bg@outermaxy);
  \endpgfonlayer
}%

\def\tikz@background@grid{%
  \tikz@background@save%
  \pgfonlayer{background}
    \path[style=background grid] (\tikz@bg@minx,\tikz@bg@miny) grid (\tikz@bg@maxx,\tikz@bg@maxy);
  \endpgfonlayer
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybending.code.tex ====

\ProvidesFileRCS{tikzlibrarybending.code.tex}

\usepgfmodule{bending}%
\tikzset{arrows=[flex]}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybending.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex ====

\ProvidesFileRCS{tikzlibrarycalc.code.tex}




\def\tikz@let@command et{%
  \let\p=\tikz@cc@dop%
  \let\x=\tikz@cc@dox%
  \let\y=\tikz@cc@doy%
  \let\n=\tikz@cc@don%
  \pgfutil@ifnextchar i{\tikz@cc@stop@let}{\tikz@cc@handle@line}%
}%
\def\tikz@cc@handle@line{%
  \pgfutil@ifnextchar\p{%
    \tikz@cc@handle@coor%
  }{%
    \pgfutil@ifnextchar\n{%
      \tikz@cc@handle@num%
    }{%
      \pgfutil@ifnextchar i{%
        \tikz@cc@stop@let
      }{%
        \tikzerror{``\string\p'' or ``\string\n'' expected}%
      }%
    }%
  }%
}%
\def\tikz@cc@handle@num\n#1#2=#3{%
  \pgfmathparse{#3}%
  \expandafter\edef\csname tikz@cc@n@#1\endcsname{\pgfmathresult\ifpgfmathunitsdeclared pt\fi}
  \pgfutil@ifnextchar,{\tikz@cc@handle@nextline}{\tikz@cc@stop@let}%
}%
\def\tikz@cc@handle@coor\p#1#2={%
  \def\tikz@cc@coord@name{#1}%
  \tikz@scan@one@point\tikz@cc@dolet%
}%
\def\tikz@cc@dolet#1{%
  \pgf@process{#1}%
  \expandafter\edef\csname tikz@cc@p@\tikz@cc@coord@name\endcsname{\the\pgf@x,\the\pgf@y}%
  \expandafter\edef\csname tikz@cc@x@\tikz@cc@coord@name\endcsname{\the\pgf@x}%
  \expandafter\edef\csname tikz@cc@y@\tikz@cc@coord@name\endcsname{\the\pgf@y}%
  \pgfutil@ifnextchar,{\tikz@cc@handle@nextline}{\tikz@cc@stop@let}%
}%
\def\tikz@cc@handle@nextline,{%
  \tikz@cc@handle@line%
}%
\def\tikz@cc@stop@let in{%
  \tikz@scan@next@command%
}%

\def\tikz@cc@dop#1{\csname tikz@cc@p@#1\endcsname}%
\def\tikz@cc@dox#1{\csname tikz@cc@x@#1\endcsname}%
\def\tikz@cc@doy#1{\csname tikz@cc@y@#1\endcsname}%
\def\tikz@cc@don#1{\csname tikz@cc@n@#1\endcsname}%




\def\tikz@parse@calculator#1(${%
  \def\tikz@cc@command{#1}%
  \begingroup%
    \pgf@xa=0pt%
    \pgf@ya=0pt%
    \tikz@cc@parse+%
}%

\def\tikz@cc@parse{%
  \pgfutil@ifnextchar${%
    \tikz@cc@end%
  }
  {\pgfutil@ifnextchar+{%
      \tikz@cc@add%
    }{%
      \pgfutil@ifnextchar-{%
        \tikz@cc@sub%
      }{%
        \tikzerror{+ or - expected}%
        \tikz@cc@end$%
      }%
    }%
  }%
}%

\def\tikz@cc@end$#1){%
    \xdef\tikz@marshal{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \endgroup%
  \expandafter\tikz@cc@command\expandafter{\tikz@marshal}%
}%


\def\tikz@cc@add+{%
  \def\tikz@cc@factor{1}%
  \tikz@cc@factororcoordinate%
}%
\def\tikz@cc@sub-{%
  \def\tikz@cc@factor{-1}%
  \tikz@cc@factororcoordinate%
}%

\def\tikz@cc@factororcoordinate{%
  \pgfutil@ifnextchar({%
    \tikz@cc@coordinate%
  }{%
    \tikz@cc@parse@factor%
  }%
}%

\def\tikz@cc@parse@factor#1*({%
  \pgfmathparse{#1*\tikz@cc@factor}%
  \let\tikz@cc@factor=\pgfmathresult%
  \tikz@cc@coordinate(%
}%

\def\tikz@cc@coordinate{%
  \tikz@scan@absolute\tikz@cc@after@coordinate%
}%
\def\tikz@cc@after@coordinate#1{%
  \pgf@process{#1}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \tikz@cc@mid@checks%
}%



\def\tikz@cc@mid@checks{%
  \ifnum\the\catcode`\!=\active\relax
    \expandafter\tikz@cc@mid@checks@active
  \else
    \expandafter\tikz@cc@mid@checks@nonactive
  \fi
}%

\def\tikz@cc@mid@checks@nonactive{%
  \pgfutil@ifnextchar!{%
    \tikz@cc@mid@nonactive%
  }{%
    \advance\pgf@xa by\tikz@cc@factor\pgf@xb
    \advance\pgf@ya by\tikz@cc@factor\pgf@yb
    \tikz@cc@parse%
  }%
}%

\def\tikz@cc@mid@nonactive!{%
  \pgfutil@ifnextchar({%
    \tikz@scan@one@point\tikz@cc@project%
  }{%
    \tikz@cc@mid@num@nonactive%
  }%
}%

\begingroup
  \catcode`\!=\active
  \gdef\tikz@cc@mid@checks@active{%
    \pgfutil@ifnextchar!{%
      \tikz@cc@mid@active%
    }{%
      \advance\pgf@xa by\tikz@cc@factor\pgf@xb
      \advance\pgf@ya by\tikz@cc@factor\pgf@yb
      \tikz@cc@parse%
    }%
  }%

  \gdef\tikz@cc@mid@active!{%
    \pgfutil@ifnextchar({%
      \tikz@scan@one@point\tikz@cc@project%
    }{%
      \tikz@cc@mid@num@active%
    }%
  }%
\endgroup


\def\tikz@cc@mid@num@nonactive#1!{\tikz@cc@mid@num{#1}}%

\begingroup
  \catcode`\!=\active
  \gdef\tikz@cc@mid@num@active#1!{\tikz@cc@mid@num{#1}}%
\endgroup

\def\tikz@cc@mid@num#1{%
  \pgfmathparse{#1}%
  \ifpgfmathunitsdeclared%
    \let\tikz@cc@mid@unit=\pgfmathresult%
    \expandafter\tikz@cc@scan@rot\expandafter\tikz@cc@after@unit%
  \else%
    \let\tikz@cc@mid@factor=\pgfmathresult%
    \pgfmathparse{1-\tikz@cc@mid@factor}%
    \let\tikz@cc@mid@factor@one=\pgfmathresult%
    \expandafter\tikz@cc@scan@rot\expandafter\tikz@cc@after@num%
  \fi%
}%

\def\tikz@cc@after@num#1{%
  \pgf@process{#1}%
  \pgf@xb=\tikz@cc@mid@factor@one\pgf@xb%
  \pgf@yb=\tikz@cc@mid@factor@one\pgf@yb%
  \advance\pgf@xb by\tikz@cc@mid@factor\pgf@x%
  \advance\pgf@yb by\tikz@cc@mid@factor\pgf@y%
  \tikz@cc@mid@checks%
}%




\def\tikz@cc@after@unit#1{%
  \pgf@process{#1}%
  \advance\pgf@x by-\pgf@xb%
  \advance\pgf@y by-\pgf@yb%
  \pgf@process{\pgfpointnormalised{}}%
  \advance\pgf@xb by\tikz@cc@mid@unit\pgf@x%
  \advance\pgf@yb by\tikz@cc@mid@unit\pgf@y%
  \tikz@cc@mid@checks%
}%

\def\tikz@cc@project#1{%
  \pgf@process{#1}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \begingroup
    \ifnum\the\catcode`\!=\active
      \def\tikz@next{%
        \endgroup
        \expandafter\tikz@cc@scan@rot\expandafter\tikz@cc@after@project
        \tikz@cc@scan@ex@active}%
    \else
      \def\tikz@next{%
        \endgroup
        \expandafter\tikz@cc@scan@rot\expandafter\tikz@cc@after@project
        \tikz@cc@scan@ex@nonactive}%
    \fi
    \tikz@next%
}%

\def\tikz@cc@scan@ex@nonactive!{}%

\begingroup
  \catcode`\!=\active
  \gdef\tikz@cc@scan@ex@active!{}%
\endgroup

\def\tikz@cc@after@project#1{%
  \pgf@process{#1}%
  \advance\pgf@x by-\pgf@xb%
  \advance\pgf@y by-\pgf@yb%
  \advance\pgf@xc by-\pgf@xb%
  \advance\pgf@yc by-\pgf@yb%
  \pgf@process{\pgfpointnormalised{}}%
  \pgf@xc=\pgf@sys@tonumber{\pgf@xc}\pgf@x%
  \advance\pgf@xc by\pgf@sys@tonumber{\pgf@yc}\pgf@y%
  \advance\pgf@xb by\pgf@sys@tonumber{\pgf@xc}\pgf@x%
  \advance\pgf@yb by\pgf@sys@tonumber{\pgf@xc}\pgf@y%
  \tikz@cc@mid@checks%
}%


\def\tikz@cc@scan@rot#1{%
  \pgfutil@ifnextchar({%
    \tikz@scan@one@point#1%
  }%
  {%
    \def\tikz@cc@scan@rot@cmd{#1}%
    \ifnum\the\catcode`\:=\active\relax
      \expandafter\tikz@cc@scan@one@rot@active%
    \else
      \expandafter\tikz@cc@scan@one@rot@nonactive%
    \fi
  }%
}%

\def\tikz@cc@scan@one@rot@nonactive#1:{%
  \def\tikz@cc@scan@rot@angle{#1}%
  \tikz@scan@one@point\tikz@cc@handle@rot%
}%

\begingroup
  \catcode`\:=\active
  \gdef\tikz@cc@scan@one@rot@active#1:{%
    \def\tikz@cc@scan@rot@angle{#1}%
    \tikz@scan@one@point\tikz@cc@handle@rot%
  }%
\endgroup

\def\tikz@cc@handle@rot#1{%
  \pgf@process{#1}%
  {%
    \pgftransformreset%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgftransformshift{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
    \pgftransformrotate{\tikz@cc@scan@rot@angle}%
    \pgftransformshift{\pgfqpoint{-\pgf@xb}{-\pgf@yb}}%
    \pgfpointtransformed{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
    \expandafter
  }%
  \edef\tikz@marshal{\noexpand\tikz@cc@scan@rot@cmd{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
  \tikz@marshal%
}%






\tikzdeclarecoordinatesystem{tangent}
{%
  \tikzset{cs/.cd,#1}%
  \expandafter\ifx\csname tikz@tangent@\tikz@cs@type\endcsname\relax%
    \tikzerror{I do not know how to compute the tangent to
    a \tikz@cs@type}%
    \pgfpointorigin%
  \else%
    \expandafter\tikz@scan@one@point\expandafter\tikz@lib@do@tangent\tikz@cs@point%
  \fi%
}%

\tikzset{cs/node/.code=\tikz@cs@unpack{\tikz@cs@node}{\tikz@cs@type}{#1}}%
\tikzset{cs/point/.store in=\tikz@cs@point}%

\def\tikz@lib@do@tangent{\csname tikz@tangent@\tikz@cs@type\endcsname}%

\def\tikz@tangent@coordinate#1{%
  \pgfpointanchor{\tikz@cs@node}{center}%
}%

\def\tikz@tangent@circle#1{%
  {%
    \pgf@process{\pgfpointtransformed{#1}}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgfpointtransformed{\pgfpointanchor{\tikz@cs@node}{center}}}%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \pgftransformreset%
    \pgftransformshift{\pgfpointanchor{\tikz@cs@node}{center}}%
    \pgf@process{\pgfpointanchor{\tikz@cs@node}{east}}%
    \pgf@xc=\pgf@x%
    \pgfmathparse{veclen(\the\pgf@xa,\the\pgf@ya)}
    \pgfmathparse{acos(\the\pgf@xc/\pgfmathresult)}
    \ifnum\pgfkeysvalueof{/tikz/cs/solution}>1\relax%
      \pgfmathparse{0-\pgfmathresult}%
    \fi%
    \let\tikz@lib@temp=\pgfmathresult%
    \pgf@process{\pgfpointnormalised{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
    \pgf@ya=-\pgf@y%
    \pgftransformcm{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}%
    \pgf@process{\pgfpointtransformed{\pgfpointpolar{\tikz@lib@temp}{\the\pgf@xc}}}%
  }%
  {%
    \pgftransforminvert%
    \pgf@process{\pgfpointtransformed{}}%
  }%
}%




\def\tikz@intersect@circle@and@circle{%
  {%
    \pgftransformreset%
    \pgf@process{\pgfpointanchor{\tikz@cs@node@a}{center}}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgfpointanchor{\tikz@cs@node@a}{east}}%
    \advance\pgf@x by-\pgf@xa%
    \pgf@xc=\pgf@x%
    \pgf@process{\pgfpointanchor{\tikz@cs@node@b}{center}}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@process{\pgfpointanchor{\tikz@cs@node@b}{east}}%
    \advance\pgf@x by-\pgf@xb%
    \pgf@yc=\pgf@x%
    \pgf@process{%
      \pgfpointintersectionofcircles{\pgfqpoint{\pgf@xa}{\pgf@ya}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}{\pgf@xc}{\pgf@yc}{\pgfkeysvalueof{/tikz/cs/solution}}%
    }%
  }%
  {%
    \pgftransforminvert%
    \pgf@process{\pgfpointtransformed{}}%
  }%
}%


\def\tikz@intersect@line@and@circle{%
  {%
    \expandafter\tikz@scan@one@point\expandafter\tikz@parse@line\tikz@cs@line@a%
    \pgf@process{\pgfpointtransformed{}}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@xc}{\pgf@yc}}}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgfpointtransformed{\pgfpointanchor{\tikz@cs@node@b}{center}}}%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \advance\pgf@xb by-\pgf@x%
    \advance\pgf@yb by-\pgf@y%
    \pgftransformreset%
    \pgftransformshift{\pgfpointanchor{\tikz@cs@node@b}{center}}%
    \pgf@process{\pgfpointanchor{\tikz@cs@node@b}{east}}%
    \edef\tikz@lib@saved@radius{\pgf@sys@tonumber{\pgf@x}}%
    \pgf@x=\pgf@xb%
    \pgf@y=\pgf@yb%
    \advance\pgf@x by-\pgf@xa%
    \advance\pgf@y by-\pgf@ya%
    \pgf@process{\pgfpointnormalised{}}%
    \pgf@xc=\pgf@sys@tonumber{\pgf@xa}\pgf@x%
    \advance\pgf@xc by\pgf@sys@tonumber{\pgf@ya}\pgf@y%
    \pgf@xc=-\pgf@xc%
    \advance\pgf@xa by\pgf@sys@tonumber{\pgf@xc}\pgf@x%
    \advance\pgf@ya by\pgf@sys@tonumber{\pgf@xc}\pgf@y%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgf@xb=\tikz@lib@saved@radius pt%
    \c@pgf@counta=1\relax%
    \loop%
    \ifdim\pgf@xb>50pt%
      \multiply\c@pgf@counta by2\relax%
      \divide\pgf@xa by2\relax%
      \divide\pgf@ya by2\relax%
      \divide\pgf@xb by2\relax%
    \repeat%
    \pgf@xb=\pgf@sys@tonumber{\pgf@xb}\pgf@xb%
    \pgf@yb=\pgf@sys@tonumber{\pgf@xa}\pgf@xa%
    \advance\pgf@xb by-\pgf@yb%
    \pgf@yb=\pgf@sys@tonumber{\pgf@ya}\pgf@ya%
    \advance\pgf@xb by-\pgf@yb%
    \ifdim\pgf@xb<0pt%
      \pgf@xb=0pt%
    \fi%
    \pgfmathsqrt@{\pgf@sys@tonumber{\pgf@xb}}%
    \pgfmathmultiply@{\pgfmathresult}{\the\c@pgf@counta}%
    \multiply\pgf@xa by\c@pgf@counta\relax%
    \multiply\pgf@ya by\c@pgf@counta\relax%
    \ifnum\pgfkeysvalueof{/tikz/cs/solution}>1\relax%
      \pgfmathsubtract{0}{\pgfmathresult}%
    \fi%
    \advance\pgf@xa by \pgfmathresult\pgf@xc%
    \advance\pgf@ya by \pgfmathresult\pgf@yc%
    \pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
  }%
  {%
    \pgftransforminvert%
    \pgf@process{\pgfpointtransformed{}}%
  }%
}%

\def\tikz@intersect@circle@and@line{%
  {%
    \let\tikz@cs@node@b=\tikz@cs@node@a%
    \let\tikz@cs@line@a=\tikz@cs@line@b%
    \tikz@intersect@line@and@circle%
  }%
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalendar.code.tex ====

\ProvidesFileRCS{tikzlibrarycalendar.code.tex}


\pgfutil@usemodule{pgfcalendar}



\tikzoption{dates}{\tikz@lib@cal@parse#1\relax}
\def\tikz@lib@cal@parse#1to#2\relax{%
  \def\tikz@lib@cal@start{#1}
  \def\tikz@lib@cal@end{#2}%
}
\tikzoption{execute at begin day scope}{\expandafter\def\expandafter\tikz@atbegin@day\expandafter{\tikz@atbegin@day#1}}
\tikzoption{execute at end day scope}{%
  \def\pgf@temp{#1}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\tikz@atend@day%
  \expandafter\expandafter\expandafter{\expandafter\pgf@temp\tikz@atend@day}}
\tikzoption{execute before day scope}{\expandafter\def\expandafter\tikz@before@day\expandafter{\tikz@before@day#1}}
\tikzoption{execute after day scope}{\expandafter\def\expandafter\tikz@after@day\expandafter{\tikz@after@day#1}}

\let\tikz@atbegin@day=\pgfutil@empty
\let\tikz@atend@day=\pgfutil@empty
\let\tikz@before@day=\pgfutil@empty
\let\tikz@after@day=\pgfutil@empty






\tikzoption{day xshift}{\def\tikz@lib@cal@xshift{#1}}
\tikzoption{day yshift}{\def\tikz@lib@cal@yshift{#1}}

\def\tikz@lib@cal@yshift{3ex}
\def\tikz@lib@cal@xshift{3.5ex}



\tikzoption{month xshift}{\def\tikz@lib@cal@month@xshift{#1}}
\tikzoption{month yshift}{\def\tikz@lib@cal@month@yshift{#1}}

\def\tikz@lib@cal@month@yshift{9ex}
\def\tikz@lib@cal@month@xshift{9ex}





\tikzoption{day code}{\def\tikzdaycode{#1}}
\tikzoption{day text}{\def\tikzdaytext{#1}}
\tikzoption{days}{\tikzset{every day/.append style={#1}}}
\tikzset{every day/.style={anchor=base east}}

\tikzoption{month code}{\def\tikzmonthcode{#1}}
\tikzoption{month text}{\def\tikzmonthtext{#1}}
\tikzset{every month/.style={}}

\tikzoption{year code}{\def\tikzyearcode{#1}}
\tikzoption{year text}{\def\tikzyeartext{#1}}
\tikzset{every year/.style={}}

\def\tikzdaycode{\node[name=\pgfcalendarsuggestedname,every day]{\tikzdaytext};}
\def\tikzmonthcode{\node[every month]{\tikzmonthtext};}
\def\tikzyearcode{\node[every year]{\tikzyeartext};}

\def\tikzdaytext{\%d-}
\def\tikzmonthtext{\%mt}
\def\tikzyeartext{\%y0}



\tikzoption{tikz@lib@cal@width}{\def\tikz@lib@cal@width{#1}}

\def\tikz@lib@cal@width{1}


\tikzset{day list downward/.style={%
  execute before day scope={
    \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}
      {%
        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@month@yshift}%
        \pgftransformyshift{-\pgf@y}
      }%
    }{}%
  },
  execute after day scope={\pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}\pgftransformyshift{-\pgf@y}},
  tikz@lib@cal@width=1
}}
\tikzset{day list upward/.style={%
  execute before day scope={
    \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}
      {%
        \pgftransformyshift{\tikz@lib@cal@month@yshift}%
      }%
    }{}%
  },
  execute after day scope={\pgftransformyshift\tikz@lib@cal@yshift},
  tikz@lib@cal@width=1
}}
\tikzset{day list right/.style={%
  execute before day scope={
    \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}
      {%
        \pgftransformxshift{\tikz@lib@cal@month@xshift}%
      }%
    }{}%
  },
  execute after day scope={\pgftransformxshift\tikz@lib@cal@xshift},
  tikz@lib@cal@width=30%
}}

\tikzset{day list left/.style={%
  execute before day scope={
    \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}
      {%
        \pgfmathsetlength{\pgf@x}{\tikz@lib@cal@month@xshift}
        \pgftransformxshift{-\pgf@x}%
      }%
    }{}%
  },
  execute after day scope={
    \pgfmathsetlength{\pgf@x}{\tikz@lib@cal@xshift}
    \pgftransformxshift{-\pgf@x}%
  },
  tikz@lib@cal@width=30%
}}




\tikzset{week list/.style={%
  execute before day scope={%
    \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}
      {%
        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@month@yshift}%
        \pgftransformyshift{-\pgf@y}
      }%
    }{}%
  },
  execute at begin day scope={%
    \pgfmathsetlength\pgf@x{\tikz@lib@cal@xshift}%
    \pgf@x=\pgfcalendarcurrentweekday\pgf@x%
    \pgftransformxshift{\pgf@x}%
  },
  execute after day scope={%
    \ifdate{Sunday}{%
      \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}%
      \pgftransformyshift{-\pgf@y}
    }{}%
  },
  tikz@lib@cal@width=7
}}




\tikzset{month list/.style={%
  execute before day scope={%
    \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}
      {%
        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@month@yshift}%
        \pgftransformyshift{-\pgf@y}
      }%
    }{}%
    \ifdate{day of month=1}
    {%
      \edef\tikz@lib@cal@month@list@start{\pgfcalendarcurrentweekday}%
    }{}%
    \ifdate{equals=\pgfcalendarbeginiso}%
    {%
      {%
        \c@pgf@counta=\pgfcalendarcurrentjulian%
        \advance\c@pgf@counta by-\pgfcalendarcurrentday%
        \advance\c@pgf@counta by1\relax%
        \pgfcalendarjuliantoweekday{\c@pgf@counta}{\c@pgf@countb}%
        \xdef\pgf@temp{\the\c@pgf@countb}%
      }%
      \let\tikz@lib@cal@month@list@start=\pgf@temp%
    }{}%
  },
  execute at begin day scope={%
    \pgfmathsetlength\pgf@xa{\tikz@lib@cal@xshift}%
    \pgf@xb=\pgfcalendarcurrentday\pgf@xa%
    \advance\pgf@xb by\tikz@lib@cal@month@list@start\pgf@xa%
    \advance\pgf@xb by-\pgf@xa\relax%
    \pgftransformxshift{\pgf@xb}%
  },
  tikz@lib@cal@width=37
}}





\tikzset{month label left/.style={%
  execute before day scope={\ifdate{day of month=1}{\tikzmonthcode}{}},
  every month/.append style={anchor=base east,xshift=-3.5ex}
}}

\tikzset{month label left vertical/.style={%
  execute before day scope={\ifdate{day of month=1}{\tikzmonthcode}{}},
  every month/.append style={anchor=base east,xshift=-4.5ex,yshift=2.25ex,rotate=90}
}}

\tikzset{month label right/.style={%
execute before day scope={\ifdate{day of month=1}{%
    {%
      \pgfmathsetlength{\pgf@xa}{\tikz@lib@cal@xshift}%
      \pgftransformxshift{\tikz@lib@cal@width\pgf@xa}%
      \pgftransformxshift{-\pgf@xa}%
      \tikzmonthcode%
    }}{}},
  every month/.append style={anchor=base west,xshift=1ex}
}}

\tikzset{month label right vertical/.style={%
  execute before day scope={\ifdate{day of month=1}{%
    {%
      \pgfmathsetlength{\pgf@xa}{\tikz@lib@cal@xshift}%
      \pgftransformxshift{\tikz@lib@cal@width\pgf@xa}%
      \pgftransformxshift{-\pgf@xa}%
      \tikzmonthcode%
    }}{}},
  every month/.append style={anchor=base west,xshift=2ex,yshift=2.25ex,rotate=-90}
}}

\tikzset{month label above centered/.style={%
  execute before day scope={%
    \ifdate{day of month=1}{%
      {
        \pgfmathsetlength{\pgf@xa}{\tikz@lib@cal@xshift}%
        \pgf@xb=\tikz@lib@cal@width\pgf@xa%
        \advance\pgf@xb by-\pgf@xa%
        \pgf@xb=.5\pgf@xb%
        \pgftransformxshift{\pgf@xb}%
        \pgftransformxshift{-1.5ex}%
        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}%
        \pgftransformyshift{1.25\pgf@y}
        \tikzmonthcode%
      }
    }{}},
  every month/.append style={anchor=base}
}}

\tikzset{month label above left/.style={%
  execute before day scope={%
    \ifdate{day of month=1}{%
      {
        \pgftransformxshift{-3.25ex}%
        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}%
        \pgftransformyshift{1.25\pgf@y}
        \tikzmonthcode%
      }
    }{}},
  every month/.append style={anchor=base west}
}}



\tikzset{month label above right/.style={%
  execute before day scope={%
    \ifdate{day of month=1}{%
      {
        \pgfmathsetlength{\pgf@xa}{\tikz@lib@cal@xshift}%
        \pgf@xb=\tikz@lib@cal@width\pgf@xa%
        \advance\pgf@xb by-\pgf@xa%
        \pgftransformxshift{\pgf@xb}%
        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}%
        \pgftransformyshift{1.25\pgf@y}
        \tikzmonthcode%
      }
    }{}},
  every month/.append style={anchor=base east}
}}

\tikzset{month label below centered/.style={%
  execute before day scope={%
    \ifdate{day of month=1}{%
      {
        \pgfmathsetlength{\pgf@xa}{\tikz@lib@cal@xshift}%
        \pgf@xb=\tikz@lib@cal@width\pgf@xa%
        \advance\pgf@xb by-\pgf@xa%
        \pgf@xb=.5\pgf@xb%
        \pgftransformxshift{\pgf@xb}%
        \pgftransformxshift{-1.5ex}%
        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}%
        \pgftransformyshift{-1.25\pgf@y}
        \tikzmonthcode%
      }
    }{}},
  every month/.append style={anchor=base}
}}

\tikzset{month label below left/.style={%
  execute before day scope={%
    \ifdate{day of month=1}{%
      {
        \pgftransformxshift{-3.25ex}%
        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}%
        \pgftransformyshift{-1.25\pgf@y}
        \tikzmonthcode%
      }
    }{}},
  every month/.append style={anchor=base west}
}}




\def\tikz@lib@cal@calendar{%
  \begingroup%
    \let\tikz@lib@cal@ifs=\pgfutil@empty%
    \tikz@resetexpandcount
    \tikzset{name=,at={(0,0)}}%
    \let\%=\pgfcalendarshorthand%
    \tikzset{every calendar/.try}%
    \tikz@lib@cal@scanner%
}

\def\tikz@lib@cal@scanner{%
  \afterassignment\tikz@lib@cal@handle\let\pgf@let@token=%
}

\def\tikz@lib@cal@handle{%
  \pgfutil@switch\pgfutil@ifx\pgf@let@token{%
    {;}{\let\pgfutil@next\tikz@lib@cal@stop}%
    {(}{\let\pgfutil@next\tikz@lib@cal@name}%
    {a}{\let\pgfutil@next\tikz@lib@cal@at}%
    {[}{\let\pgfutil@next\tikz@lib@cal@option}%
    {i}{\let\pgfutil@next\tikz@lib@cal@if}%
  }{\tikz@resetexpandcount\pgfutil@next}{\tikz@lib@cal@expand}%
}
\def\tikz@lib@cal@expand{%
  \advance\tikz@expandcount by -1
  \ifnum\tikz@expandcount<0\relax%
    \tikzerror{Giving up on this calendar}%
    \let\pgfutil@next=\tikz@lib@cal@end%
  \else%
    \let\pgfutil@next=\tikz@lib@cal@@expand
  \fi%
  \pgfutil@next}

\def\tikz@lib@cal@@expand{\expandafter\tikz@lib@cal@scanner\pgf@let@token}


\def\tikz@lib@cal@name#1){%
  \tikzset{name=#1}%
  \tikz@lib@cal@scanner%
}
\def\tikz@lib@cal@at t#1(#2){%
  \tikzset{at={(#2)}}%
  \tikz@lib@cal@scanner%
}
\def\tikz@lib@cal@option#1]{%
  \tikzset{#1}%
  \tikz@lib@cal@scanner%
}
\def\tikz@lib@cal@if f#1(#2){%
  \pgfutil@ifnextchar[{\tikz@lib@cal@if@opt{#2}}{\tikz@lib@cal@if@code{#2}}}%

\def\tikz@lib@cal@if@opt#1[#2]{\tikz@lib@cal@if@code{#1}{\tikzset{#2}}}
\def\tikz@lib@cal@if@code#1#2{%
  \pgfutil@ifnextchar e{\tikz@lib@cal@if@else{#1}{#2}}{\tikz@lib@cal@if@else{#1}{#2}else{}}}

\def\tikz@lib@cal@if@else#1#2else{%
  \pgfutil@ifnextchar[{\tikz@lib@cal@if@else@opt{#1}{#2}}{\tikz@lib@cal@if@else@code{#1}{#2}}}%
\def\tikz@lib@cal@if@else@opt#1#2[#3]{\tikz@lib@cal@if@else@code{#1}{#2}{\tikzset{#3}}}
\def\tikz@lib@cal@if@else@code#1#2#3{%
  \expandafter\def\expandafter\tikz@lib@cal@ifs\expandafter{\tikz@lib@cal@ifs\ifdate{#1}{#2}{#3}}%
  \tikz@lib@cal@scanner%
}
\def\tikz@lib@cal@stop{%
    \pgftransformshift{\tikz@node@at}%
    \expandafter\pgfcalendar\expandafter{\tikz@fig@name}{\tikz@lib@cal@start}{\tikz@lib@cal@end}%
    {%
      \tikz@before@day%
      \scope%
        \tikz@atbegin@day%
        \tikz@lib@cal@ifs%
        \tikzdaycode%
        \tikz@atend@day%
      \endscope%
      \tikz@after@day%
    }%
  \endgroup%
}

\tikzoption{if}{%
  \let\tikz@lib@cal@scanner@orig=\tikz@lib@cal@scanner%
  \let\tikz@lib@cal@scanner=\relax%
  \tikz@lib@cal@if f#1\relax%
  \let\tikz@lib@cal@scanner=\tikz@lib@cal@scanner@orig}



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalendar.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarychains.code.tex ====

\ProvidesFileRCS{tikzlibrarychains.code.tex}

\usetikzlibrary{positioning}%

\tikzset{start chain/.default=,
         start chain/.code={%
    \tikz@lib@chain@parse{#1}%
    \ifx\tikz@lib@chain@name\pgfutil@empty%
      \def\tikz@lib@chain@name{chain}%
    \fi%
    \ifx\tikz@lib@chain@direction\relax%
      \let\tikz@lib@chain@direction=\tikz@lib@chain@default@direction%
    \fi%
    \expandafter\ifx\csname tikz@lib@chain@active@\tikz@lib@chain@name\endcsname\relax%
      \expandafter\let\csname tikz@lib@chain@active@\tikz@lib@chain@name\endcsname=\pgfutil@empty%
      \expandafter\global\expandafter\let\csname tikz@lib@chain@exists@\tikz@lib@chain@name\endcsname=\pgfutil@empty%
      \expandafter\gdef\csname tikz@lib@chain@count@\tikz@lib@chain@name\endcsname{0}%
      \expandafter\global\expandafter\let\csname tikz@lib@chain@dir@\tikz@lib@chain@name\endcsname\tikz@lib@chain@direction%
      \let\tikz@lib@current@chain=\tikz@lib@chain@name%
      \let\chainin=\tikz@lib@chainin%
    \else%
      \tikzerror{Chain ``\tikz@lib@chain@name'' is already active}%
    \fi%
  },
  continue chain/.default=,
  continue chain/.code={%
    \tikz@lib@chain@parse{#1}%
    \ifx\tikz@lib@chain@name\pgfutil@empty%
      \let\tikz@lib@chain@name\tikz@lib@current@chain%
    \fi%
    \expandafter\ifx\csname tikz@lib@chain@exists@\tikz@lib@chain@name\endcsname\relax%
      \tikzerror{Unknown chain ``#1''}%
    \else%
      \let\tikz@lib@current@chain=\tikz@lib@chain@name%
      \expandafter\let\csname tikz@lib@chain@active@\tikz@lib@chain@name\endcsname=\pgfutil@empty%
      \ifx\tikz@lib@chain@direction\relax%
      \else%
        \expandafter\global\expandafter\let\csname tikz@lib@chain@dir@\tikz@lib@chain@name\endcsname\tikz@lib@chain@direction%
      \fi%
    \fi%
  },
  join/.code=\tikz@lib@parse@join{#1},
  join/.default={}%
}%

\def\tikz@lib@chain@parse#1{%
  \pgfutil@in@{going }{#1}%
  \ifpgfutil@in@%
    \tikz@lib@chain@going#1\pgf@stop%
  \else%
    \pgfutil@in@{placed }{#1}%
    \ifpgfutil@in@%
      \tikz@lib@chain@positioning#1\pgf@stop%
    \else%
      \def\tikz@lib@chain@name{#1}%
      \let\tikz@lib@chain@direction\relax%
    \fi%
  \fi%
}%

\def\tikz@lib@chain@going#1going #2\pgf@stop{%
  \def\tikz@lib@chain@name{#1}%
  \ifx\tikz@lib@chain@name\pgfutil@empty%
  \else%
    \tikz@lib@chain@strip#1\pgf@stop%
  \fi%
  \tikz@lib@chain@is@goingtrue%
  \def\tikz@lib@chain@direction{%
    \ifx\tikzchainprevious\pgfutil@empty%
    \else%
      \tikz@lib@chain@place{#2}%
    \fi%
  }%
}%

\def\tikz@lib@chain@positioning#1placed #2\pgf@stop{%
  \def\tikz@lib@chain@name{#1}%
  \ifx\tikz@lib@chain@name\pgfutil@empty%
  \else%
    \tikz@lib@chain@strip#1\pgf@stop%
  \fi%
  \tikz@lib@chain@is@goingfalse%
  \def\tikz@lib@chain@direction{\tikz@lib@chain@place{#2}}%
}%
\newif\iftikz@lib@chain@is@going


\tikzset{/tikz/chain default direction/.code=%
  {%
    \tikz@lib@chain@parse{#1}%
    \let\tikz@lib@chain@default@direction=\tikz@lib@chain@direction%
  },%
  /tikz/chain default direction=going right
}%

\def\tikz@lib@current@chain{chain}%

\pgfutil@g@addto@macro\tikz@node@reset@hook{\let\tikz@lib@chain@caller=\relax}%
\pgfutil@g@addto@macro\tikz@node@begin@hook{\tikz@lib@chain@caller}%

\tikzset{
  on chain/.default=,
  on chain/.code=\tikz@lib@on@chain{#1}%
}%
\def\tikz@lib@on@chain#1{%
  \tikz@lib@chain@parse{#1}%
  \ifx\tikz@lib@chain@name\pgfutil@empty%
    \let\tikz@lib@chain@name\tikz@lib@current@chain%
  \fi%
  \expandafter\ifx\csname tikz@lib@chain@exists@\tikz@lib@chain@name\endcsname\relax%
    \tikzerror{Unknown chain ``\tikz@lib@chain@name''}%
  \else%
    \c@pgf@counta\csname tikz@lib@chain@count@\tikz@lib@chain@name\endcsname\relax%
    \ifnum\c@pgf@counta=0\relax%
      \global\let\tikzchainprevious=\pgfutil@empty%
    \else
      \xdef\tikzchainprevious{\tikz@lib@chain@name-\the\c@pgf@counta}%
    \fi%
    \advance\c@pgf@counta by1\relax%
    \xdef\tikzchaincount{\the\c@pgf@counta}%
    \ifx\tikz@lib@chain@direction\relax%
      \csname tikz@lib@chain@dir@\tikz@lib@chain@name\endcsname%
    \else%
      \tikz@lib@chain@direction%
    \fi%
    \edef\tikz@lib@chain@caller{\noexpand\tikz@lib@chain@last@found{\tikz@lib@chain@name}}%
  \fi%
}%
\def\tikz@lib@chain@last@found#1{%
  \c@pgf@counta\csname tikz@lib@chain@count@#1\endcsname\relax%
  \advance\c@pgf@counta by1\relax%
  \xdef\tikzchaincurrent{#1-\the\c@pgf@counta}%
  \expandafter\xdef\csname tikz@lib@chain@count@#1\endcsname{\the\c@pgf@counta}%
  \ifnum\c@pgf@counta=1\relax%
    \tikzset{alias/.expanded={#1-begin}} %
  \fi%
  \tikzset{alias/.expanded={#1-end}} %
  \tikzset{alias/.expanded={#1-\the\c@pgf@counta}} %
  \tikz@lib@chain@direction%
  \tikzset{every on chain/.try}%
}%


\def\tikz@lib@chain@place#1{%
  \pgfutil@in@{=}{#1}%
  \ifpgfutil@in@%
    \tikzset{#1}%
  \else%
    \tikzset{#1=of \tikzchainprevious}%
  \fi%
}%

\def\tikz@lib@chain@strip#1 \pgf@stop{%
  \def\tikz@lib@chain@name{#1}%
}%

\def\tikz@lib@parse@join#1{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
    \tikz@lib@parse@join@by by \pgf@stop%
  \else%
    \pgfutil@in@{with }{#1}%
    \ifpgfutil@in@%
      \pgfutil@in@{by }{#1}%
      \ifpgfutil@in@%
        \tikz@lib@parse@join@with@by#1\pgf@stop%
      \else%
        \tikz@lib@parse@join@with@by#1 by \pgf@stop%
      \fi%
    \else%
      \tikz@lib@parse@join@by#1\pgf@stop%
    \fi%
  \fi%
}%
\def\tikz@lib@parse@join@with@by with #1 by #2\pgf@stop{%
  \tikzset{after node path={(#1)edge[every join,#2](\tikzchaincurrent)}}%
}%
\def\tikz@lib@parse@join@by by #1\pgf@stop{%
  \tikzset{after node path={\ifx\tikzchainprevious\pgfutil@empty\else (\tikzchainprevious)edge[every join,#1](\tikzchaincurrent)\fi}}%
}%
\tikzset{every join/.style=}%


\def\tikz@lib@chainin#1(#2){\pgfutil@ifnextchar[{\tikz@lib@chainin@{#2}}{\tikz@lib@chainin@{#2}[]}}%
\def\tikz@lib@chainin@#1[#2]{\path[late options={name=#1,on chain,every chain in/.try,#2}]}%



\tikzset{start branch/.code={%
    \let\tikz@lib@save@current\tikz@lib@current@chain%
    \pgfkeysalso{/tikz/start chain/.expand once=\tikz@lib@current@chain/#1}%
    \path[late options={name=\tikz@lib@save@current-end,on chain}];%
  }%
}%
\tikzset{continue branch/.style={continue chain/.expand once=\tikz@lib@current@chain/#1}}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarychains.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex ====

\usepgfmodule{decorations}%


\tikzset{decorate/.is if=tikz@decoratepath,
  /pgf/decoration/name/.store in=\tikz@decoration@name,
  /pgf/decoration/.unknown/.code=%
    \pgfifdecoration{\pgfkeyscurrentname}{\edef\tikz@decoration@name{\pgfkeyscurrentname}}
    {\pgfifmetadecoration{\pgfkeyscurrentname}{\edef\tikz@decoration@name{\pgfkeyscurrentname}}
    {\pgfkeys{/errors/unknown
        key/.expanded={/pgf/decoration/\pgfkeyscurrentname}{\pgfutil@unexpanded{#1}}}}},%
  /pgf/decoration/raise/.code={\def\tikz@dec@shift{\pgftransformyshift{#1}}\tikz@dec@trans},
  /pgf/decoration/mirror/.code={%
    \csname if#1\endcsname
      \def\tikz@dec@mirror{\pgftransformyscale{-1}}%
    \else%
      \let\tikz@dec@mirror=\relax%
    \fi%
    \tikz@dec@trans%
  },
  /pgf/decoration/mirror/.default=true,
  /pgf/decoration/transform/.code={%
    {%
      \pgftransformreset%
      \def\tikz@transform{}%
      \pgfkeysalso{/tikz/.cd, #1}%
      \expandafter\gdef\expandafter\tikz@g@temptransform\expandafter{\tikz@transform}%
    }%
    \let\tikz@dec@user@transform=\tikz@g@temptransform%
    \tikz@dec@trans%
  },%
  /pgf/decoration/pre/.initial=lineto,
  /pgf/decoration/post/.initial=lineto,
  /pgf/decoration/pre length/.initial=0pt,
  /pgf/decoration/post length/.initial=0pt,
}%

\let\tikz@decoration@name=\tikz@nonetext

\def\tikz@dec@trans{\pgfsetdecorationsegmenttransformation{\tikz@dec@user@transform\tikz@dec@mirror\tikz@dec@shift}}%
\let\tikz@dec@user@transform=\relax
\let\tikz@dec@shift=\relax
\let\tikz@dec@mirror=\relax

\pgfdeclaremetadecoration{tikz@internal}{pre}{%
  \state{pre}[width=\pgfkeysvalueof{/pgf/decoration/pre length}, next state=main]
  {
    \tikz@dec@trans
    \decoration{\pgfkeysvalueof{/pgf/decoration/pre}}
  }%
  \state{main}[width=\pgfmetadecoratedremainingdistance-\pgfkeysvalueof{/pgf/decoration/post length}, next state=final]
  {
    \tikz@dec@trans
    \decoration{\tikz@decoration@name}
  }%
  \state{final}
  {
    \tikz@dec@trans
    \decoration{\pgfkeysvalueof{/pgf/decoration/post}}
  }%
}%


\newif\iftikz@metadecoration

\def\tikz@lib@dec@addtomacro#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}%

\def\tikz@lib@decoration[#1]{%
  \begingroup%
    \tikzset{#1}%
    \ifx\tikz@decoration@name\tikz@nonetext%
    \else
      \expandafter\tikz@lib@do@dec%
    \fi%
      \pgfutil@ifnextchar\bgroup{%
        \begingroup%
          \tikz@auto@end@pathfalse%
          \aftergroup\tikz@enddecoration%
          \afterassignment\tikz@scan@next@command%
          \let\tikz@lib@next%
      }%
      {%
        \tikzerror{A decoration must begin with a brace}%
        \tikz@enddecoration%
      }%
}%
\def\tikz@lib@do@dec{%
  \pgfifmetadecoration{\tikz@decoration@name}%
  {\expandafter\pgfmetadecoration\expandafter{\tikz@decoration@name}}%
  {%
    \pgfifdecoration{\tikz@decoration@name}%
    {\tikz@lib@dec@startdecoration}%
    {\tikzerror{Unknown (meta-)decoration '\tikz@decoration@name'. Perhaps you
        misspelled it?}}%
  }%
  \ifx\pgfdecorateexistingpath\pgfutil@empty%
    \pgfpathmoveto{\pgfqpoint{\the\tikz@lastxsaved}{\the\tikz@lastysaved}}%
  \fi%
}%
\newbox\tikz@lib@dec@box
\def\tikz@enddecoration{%
    \global\setbox\tikz@lib@dec@box=\box\tikz@tempbox%
    \ifx\tikz@decoration@name\tikz@nonetext%
    \else
      \iftikz@metadecoration%
        \endpgfmetadecoration%
      \else%
        \tikz@lib@dec@stopdecoration%
      \fi%
    \fi
  \endgroup%
  \setbox\tikz@tempbox=\box\tikz@lib@dec@box%
}%


\def\tikz@lib@dec@decorate@path{%
  \ifx\tikz@decoration@name\tikz@nonetext%
  \else%
    \pgfgetpath\tikz@lib@dec@currentpath%
    \pgfsetpath\pgfutil@empty%
    \pgfifmetadecoration{\tikz@decoration@name}
    {
      \expandafter\pgfmetadecoration\expandafter{\tikz@decoration@name}%
        \pgfsetpath\tikz@lib@dec@currentpath%
      \endpgfmetadecoration%
    }
    {
      \pgfifdecoration{\tikz@decoration@name}
      {
        \tikz@lib@dec@startdecoration%
          \pgfsetpath\tikz@lib@dec@currentpath%
        \tikz@lib@dec@stopdecoration%
      }
      {
        \tikzerror{Unknown (meta-)decoration '\tikz@decoration@name'. Perhaps
          you misspelled it?}
      }
    }
  \fi%
}%

\def\tikz@lib@dec@zpttext{0pt}%

\newif\iftikz@lib@dec@temp
\def\tikz@lib@dec@startdecoration{%
  \pgfkeysgetvalue{/pgf/decoration/pre length}{\tikz@lib@pre}%
  \pgfkeysgetvalue{/pgf/decoration/post length}{\tikz@lib@post}%
  \tikz@lib@dec@tempfalse%
  \ifx\tikz@lib@pre\tikz@lib@dec@zpttext%
    \ifx\tikz@lib@post\tikz@lib@dec@zpttext%
    \else%
      \tikz@lib@dec@temptrue%
    \fi%
  \else%
    \tikz@lib@dec@temptrue%
  \fi%
  \iftikz@lib@dec@temp%
    \pgfmetadecoration{tikz@internal}%
  \else%
    \expandafter\pgfdecoration\expandafter{\expandafter{\tikz@decoration@name}{\pgfdecoratedpathlength}{}{}}%
  \fi%
}%

\def\tikz@lib@dec@stopdecoration{%
  \iftikz@lib@dec@temp%
    \endpgfmetadecoration%
  \else%
    \endpgfdecoration%
  \fi%
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.footprints.code.tex ====

\usetikzlibrary{decorations}%
\usepgflibrary{decorations.footprints}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.footprints.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.fractals.code.tex ====

\usetikzlibrary{decorations}%
\usepgflibrary{decorations.fractals}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.fractals.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex ====

\usetikzlibrary{decorations}%
\usepgflibrary{decorations.markings}%

\def\pgf@lib@dec@doarrowhead{%
  \pgfutil@ifnextchar[{\tikz@lib@dec@doarrowhead}{\tikz@lib@dec@doarrowhead[]}%
}%
\def\tikz@lib@dec@doarrowhead[#1]#2{%
  \scope[#1]
    \pgf@lib@dec@arrowhead{1}{#2}%
  \endscope
}%
\def\pgf@lib@dec@doarrowheadrev{%
  \pgfutil@ifnextchar[{\tikz@lib@dec@doarrowheadrev}{\tikz@lib@dec@doarrowheadrev[]}%
}%
\def\tikz@lib@dec@doarrowheadrev[#1]#2{%
  \scope[#1]
    \pgf@lib@dec@arrowhead{-1}{#2}%
  \endscope
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathmorphing.code.tex ====

\usetikzlibrary{decorations}%
\usepgflibrary{decorations.pathmorphing}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathmorphing.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathreplacing.code.tex ====

\usetikzlibrary{decorations}%
\usepgflibrary{decorations.pathreplacing}%


\def\tikz@lib@dec@installinputsegmentpoints{%
    \pgf@process{\pgf@decorate@inputsegment@first}%
    \edef\tikzinputsegmentfirst{\the\pgf@x,\the\pgf@y}%
    \pgf@process{\pgf@decorate@inputsegment@last}%
    \edef\tikzinputsegmentlast{\the\pgf@x,\the\pgf@y}%
    \pgf@process{\pgf@decorate@inputsegment@supporta}%
    \edef\tikzinputsegmentsupporta{\the\pgf@x,\the\pgf@y}%
    \pgf@process{\pgf@decorate@inputsegment@supportb}%
    \edef\tikzinputsegmentsupportb{\the\pgf@x,\the\pgf@y}%
}%

\pgfkeys{
    /pgf/decoration/.cd,
        moveto code/.code=\def\pgfdecoratedinputsegmentmovetocode{\tikz@lib@dec@installinputsegmentpoints#1},
        lineto code/.code=\def\pgfdecoratedinputsegmentlinetocode{\tikz@lib@dec@installinputsegmentpoints#1},
        curveto code/.code=\def\pgfdecoratedinputsegmentcurvetocode{\tikz@lib@dec@installinputsegmentpoints#1},
        closepath code/.code=\def\pgfdecoratedinputsegmentclosepathcode{\tikz@lib@dec@installinputsegmentpoints#1}
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathreplacing.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.shapes.code.tex ====

\usetikzlibrary{decorations}%
\usepgflibrary{decorations.shapes}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.shapes.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.text.code.tex ====

\usetikzlibrary{decorations}%
\usepgflibrary{decorations.text}%



\def\tikz@lib@dec@te@space@text{space}%
\def\tikz@lib@dec@align@left@text{left}%
\def\tikz@lib@dec@align@right@text{right}%
\def\tikz@lib@dec@align@center@text{center}%
\def\tikz@lib@dec@te@none@text{none}%

\newif\iftikz@lib@dec@te@pathfromtext%
\newif\iftikz@lib@dec@te@segmentfromwidth%
\newif\iftikz@lib@dec@te@scaletexttopath%
\newif\iftikz@lib@dec@te@fittexttopath%
\newif\iftikz@lib@dec@te@wordsep%
\newif\iftikz@lib@dec@te@finalletter%


\def\tikz@lib@dec@te@addto@macro#1#2{%
  \expandafter\def\expandafter#1\expandafter{#1#2}%
}%

\def\tikz@lib@dec@te@namelet#1#2{%
  \expandafter\expandafter\expandafter\let\expandafter\expandafter\csname\expandafter#1\expandafter\endcsname\expandafter=\csname#2\endcsname%
}%

\def\tikz@lib@dec@te@advancecountmacro#1#2{%
  \pgfutil@tempcnta=#1\relax%
  \advance\pgfutil@tempcnta by#2\relax%
  \edef#1{\the\pgfutil@tempcnta}%
}%

\def\tikz@lib@dec@te@advancedimenmacro#1#2{%
  \pgf@x=#1\relax%
  \advance\pgf@x by#2\relax%
  \edef#1{\the\pgf@x}%
}%

\def\tikz@lib@dec@te@start@parameters#1{%
 \expandafter\let\csname tikz@lib@dec@te@character@#1\endcsname=\pgfutil@empty%
}%

\def\tikz@lib@dec@te@addto@parameters#1#2{%
 \expandafter\tikz@lib@dec@te@addto@macro\expandafter%
   {\csname tikz@lib@dec@te@character@#1\endcsname}{#2}%
}%
\def\tikz@lib@dec@te@addmacroto@parameters#1#2{%
 \def\tikz@lib@dec@te@marshal{\expandafter\tikz@lib@dec@te@addto@macro\expandafter%
   {\csname tikz@lib@dec@te@character@#1\endcsname}}%
  \expandafter\tikz@lib@dec@te@marshal\expandafter{\expandafter\def\expandafter#2\expandafter{#2}}%
}%

\def\tikz@lib@dec@te@getparameters#1{\csname tikz@lib@dec@te@character@#1\endcsname}%



\let\tikz@lib@dec@te@textoptions=\pgfutil@empty
\let\tikz@lib@dec@te@widthoptions=\pgfutil@empty
\let\tikz@lib@dec@te@charactercountvar=\pgfutil@empty
\let\tikz@lib@dec@te@charactertotalvar=\pgfutil@empty
\let\tikz@lib@dec@te@lettercountvar=\pgfutil@empty
\let\tikz@lib@dec@te@lettertotalvar=\pgfutil@empty
\let\tikz@lib@dec@te@wordcountvar=\pgfutil@empty
\let\tikz@lib@dec@te@wordctotalvar=\pgfutil@empty
\let\tikz@lib@dec@te@transformtext=\pgfutil@empty%


\pgfkeys{/pgf/decoration/text effects/.cd,
   .unknown/.code={\let\tikz@lib@dec@te@key@tmp=\pgfkeyscurrentname%
    \pgfkeysalso{/tikz/\tikz@lib@dec@te@key@tmp={#1}}},
   path from text/.is if=tikz@lib@dec@te@pathfromtext,
   path from text angle/.store in=\tikz@lib@dec@te@pathfromtextangle,
   path from text angle=0,
   fit text to path/.is if=tikz@lib@dec@te@fittexttopath,
   characters/.style={/pgf/decoration/text effects/every character/.style={#1}},
   characters/.append/.code={\pgfkeysalso{/pgf/decoration/text effects/every character/.append style={#1}}},
   character widths/.code={\pgfkeysalso{/pgf/decoration/text effects/every character width/.style={#1}}},
   character widths/.append/.code={\pgfkeysalso{/pgf/decoration/text effects/every character width/.append style={#1}}},
   character count/.store in=\tikz@lib@dec@te@charactercountvar,
   character count=,
   character total/.store in=\tikz@lib@dec@te@charactertotalvar,
   character total=,
   letter count/.store in=\tikz@lib@dec@te@lettercountvar,
   letter count=,
   letter total/.store in=\tikz@lib@dec@te@lettertotalvar,
   letter total=,
   word count/.store in=\tikz@lib@dec@te@wordcountvar,
   word count=,
   word total/.store in=\tikz@lib@dec@te@wordtotalvar,
   word total=,
   style characters/.code args={#1 with #2}{\tikz@lib@dec@te@parse@stylecharacters{#1}{#2}},
   text along path/.style={
     inner xsep=0pt,
     anchor=base,
     transform shape
   },
   segment from width/.is if=tikz@lib@dec@te@segmentfromwidth,
   segment from width=true,
   word separator/.code={%
     \def\tikz@lib@dec@te@tmp{#1}%
     \ifx\tikz@lib@dec@te@tmp\tikz@lib@dec@te@space@text%
       \let\tikz@lib@dec@te@wordsep=\tikz@lib@dec@te@spacetoken%
     \else%
       \def\tikz@lib@dec@te@wordsep{#1}
     \fi},
   word separator=space,
   character command/.code={%
    \def\tikz@lib@dec@te@tmp{#1}%
    \ifx\tikz@lib@dec@te@tmp\pgfutil@empty%
        \def\tikz@lib@dec@te@charactercommand{\tikz@lib@dec@te@charactertypesetonly}%
    \else%
        \def\tikz@lib@dec@te@charactercommand{#1}%
    \fi%
   },
   character command=,
   every character width/.style={/pgf/decoration/text effects/every character/.try},
   every character/.style={},
   reverse text/.code={\tikz@lib@dec@te@addto@macro\tikz@lib@dec@te@transformtext%
     {\tikz@lib@dec@te@reversetext}},
   group letters into words/.code={\tikz@lib@dec@te@addto@macro\tikz@lib@dec@te@transformtext%
     {\tikz@lib@dec@te@groupletters}},
   group letters/.code={\tikz@lib@dec@te@addto@macro\tikz@lib@dec@te@transformtext%
     {\tikz@lib@dec@te@groupletters}},
   replace characters/.code args={#1 with #2}{\tikz@lib@dec@te@parse@replacecharacters{#1}{#2}},
   scale text to path/.is if=tikz@lib@dec@te@scaletexttopath,
   fit text to path/.is if=tikz@lib@dec@te@fittexttopath,
   repeat text/.store in=\tikz@lib@dec@te@repeattext,
   repeat text/.default=-1,
   repeat text=0,
}%


\def\tikz@lib@dec@te@charactertypesetonly#1{#1}%

\tikzset{%
  text effects/.code={\pgfkeysalso{/pgf/decoration/text effects/.cd,#1}},
}%






\def\tikz@lib@dec@te@preparetext{%
  \let\tikz@lib@dec@te@text=\pgfdecorationtext%
  \tikz@lib@dec@te@scancharacters{%
    \expandafter\let\csname tikz@lib@dec@te@character@\tikz@lib@dec@te@scancount @token\endcsname=%
      \tikz@lib@dec@te@character%
  }%
  \let\tikz@lib@dec@te@charactertotalcount=\tikz@lib@dec@te@scancount%
  \ifx\tikz@lib@dec@te@transformtext\pgfutil@empty%
  \else%
    \tikz@lib@dec@te@transformtext%
  \fi%
  \def\tikz@lib@dec@te@charactercount{0}%
  \def\tikz@lib@dec@te@wordcount{0}%
  \def\tikz@lib@dec@te@wordsepcount{0}%
  \def\tikz@lib@dec@te@lettercount{0}%
  \def\tikz@lib@dec@te@lastcharacter{0}%
  \pgfmathloop%
  \ifnum\pgfmathcounter>\tikz@lib@dec@te@charactertotalcount%
    \ifnum\tikz@lib@dec@te@lettercount>0\relax%
      \tikz@lib@dec@te@addto@parameters{\tikz@lib@dec@te@lastcharactercount}{\tikz@lib@dec@te@finallettertrue}%
    \fi
  \else%
    \expandafter\let\expandafter\tikz@lib@dec@te@character\expandafter=\csname tikz@lib@dec@te@character@\pgfmathcounter @token\endcsname%
    \tikz@lib@dec@te@advancecountmacro{\tikz@lib@dec@te@charactercount}{1}%
    \tikz@lib@dec@te@start@parameters{\tikz@lib@dec@te@charactercount}%
    \tikz@lib@dec@te@addmacroto@parameters{\tikz@lib@dec@te@charactercount}{\tikz@lib@dec@te@charactercount}%
    \ifx\tikz@lib@dec@te@character\tikz@lib@dec@te@wordsep%
      \tikz@lib@dec@te@advancecountmacro{\tikz@lib@dec@te@wordsepcount}{1}%
      \ifnum\tikz@lib@dec@te@lettercount>0\relax%
        \tikz@lib@dec@te@addto@parameters{\tikz@lib@dec@te@lastcharactercount}{\tikz@lib@dec@te@finallettertrue}%
      \fi
      \def\tikz@lib@dec@te@lettercount{0}%
      \tikz@lib@dec@te@addto@parameters{\tikz@lib@dec@te@charactercount}{\tikz@lib@dec@te@wordseptrue}%
    \else
      \ifnum\tikz@lib@dec@te@lettercount=0\relax%
        \tikz@lib@dec@te@advancecountmacro\tikz@lib@dec@te@wordcount{1}%
      \fi%
      \tikz@lib@dec@te@addto@parameters{\tikz@lib@dec@te@charactercount}{\tikz@lib@dec@te@finalletterfalse}%
      \tikz@lib@dec@te@advancecountmacro{\tikz@lib@dec@te@lettercount}{1}%
      \tikz@lib@dec@te@addto@parameters{\tikz@lib@dec@te@charactercount}{\tikz@lib@dec@te@wordsepfalse}%
       \expandafter\let\csname tikz@lib@dec@te@word \tikz@lib@dec@te@wordcount @lettercount\endcsname=\tikz@lib@dec@te@lettercount%
    \fi%
    \tikz@lib@dec@te@addmacroto@parameters{\tikz@lib@dec@te@charactercount}{\tikz@lib@dec@te@lettercount}%
    \tikz@lib@dec@te@addmacroto@parameters{\tikz@lib@dec@te@charactercount}{\tikz@lib@dec@te@wordcount}%
    \tikz@lib@dec@te@addmacroto@parameters{\tikz@lib@dec@te@charactercount}{\tikz@lib@dec@te@character}%
    \let\tikz@lib@dec@te@lastcharactercount=\pgfmathcounter%
  \repeatpgfmathloop%
  \let\tikz@lib@dec@te@wordtotal=\tikz@lib@dec@te@wordcount%
  \pgfmathloop
  \ifnum\pgfmathcounter>\tikz@lib@dec@te@charactertotalcount%
  \else%
    \tikz@lib@dec@te@addmacroto@parameters{\pgfmathcounter}{\tikz@lib@dec@te@charactertotalcount}%
    \tikz@lib@dec@te@addmacroto@parameters{\pgfmathcounter}{\tikz@lib@dec@te@wordtotal}%
    \expandafter\let\expandafter\tikz@lib@dec@te@lettertotalcount\expandafter=\csname tikz@lib@dec@te@word \tikz@lib@dec@te@wordcount @lettercount\endcsname%
    \tikz@lib@dec@te@addmacroto@parameters{\pgfmathcounter}{\tikz@lib@dec@te@lettertotalcount}%
  \repeatpgfmathloop%
  \def\tikz@lib@dec@te@textwidth{0pt}%
  \pgfmathloop%
  \ifnum\pgfmathcounter>\tikz@lib@dec@te@charactertotalcount%
  \else%
    \def\tikz@lib@dec@te@characterwidth{0pt}%
    \tikz@lib@dec@te@getcharacterwidth{\pgfmathcounter}%
    \expandafter\let\csname tikz@lib@dec@te@character@\pgfmathcounter @width\endcsname=\tikz@lib@dec@te@characterwidth%
    \pgf@x=\tikz@lib@dec@te@characterwidth\relax%
    \pgf@x=0.5\pgf@x%
    \expandafter\edef\csname tikz@lib@dec@te@character@\pgfmathcounter @prewidth\endcsname{\the\pgf@x}%
    \expandafter\edef\csname tikz@lib@dec@te@character@\pgfmathcounter @postwidth\endcsname{\the\pgf@x}%
    \tikz@lib@dec@te@advancedimenmacro{\tikz@lib@dec@te@textwidth}{\tikz@lib@dec@te@characterwidth}%
  \repeatpgfmathloop%
}%

\def\tikz@lib@dec@te@spacetoken{ }%

\let\tikz@lib@dec@te@wordsep=\tikz@lib@dec@te@spacetoken


\def\tikz@lib@dec@te@scancharacters#1{%
  \def\tikz@lib@dec@te@@@scancharacters@process{#1}%
  \def\tikz@lib@dec@te@scancount{0}%
  \expandafter\tikz@lib@dec@te@@scancharacters\tikz@lib@dec@te@text\tikz@lib@dec@te@scancharacters}%

\def\tikz@lib@dec@te@@scancharacters{%
  \futurelet\tikz@lib@dec@te@token\tikz@lib@dec@te@@@scancharacters}%

\def\tikz@lib@dec@te@@@scancharacters{%
  \ifx\tikz@lib@dec@te@token\tikz@lib@dec@te@scancharacters%
    \let\tikz@lib@dec@te@next=\tikz@lib@dec@te@@@@scancharacters%
  \else%
    \tikz@lib@dec@te@advancecountmacro\tikz@lib@dec@te@scancount{1}%
    \ifx\tikz@lib@dec@te@token\pgfutil@sptoken%
      \let\tikz@lib@dec@te@next=\tikz@lib@dec@te@@@scancharacters@space%
    \else%
      \ifx\tikz@lib@dec@te@token\bgroup%
        \let\tikz@lib@dec@te@next=\tikz@lib@dec@te@@@scancharacters@bgroup%
      \else%
        \let\tikz@lib@dec@te@next=\tikz@lib@dec@te@@@scancharacters@normal%
      \fi%
    \fi%
  \fi%
  \tikz@lib@dec@te@next%
}%

\def\tikz@lib@dec@te@@@scancharacters@space{%
  \let\tikz@lib@dec@te@character=\tikz@lib@dec@te@spacetoken%
  \tikz@lib@dec@te@@@scancharacters@process%
  \pgfutil@ifnextchar x\tikz@lib@dec@te@@scancharacters\tikz@lib@dec@te@@scancharacters%
}%

\def\tikz@lib@dec@te@@@scancharacters@bgroup#1{%
  \def\tikz@lib@dec@te@character{{#1}}%
  \tikz@lib@dec@te@@@scancharacters@process%
  \tikz@lib@dec@te@@scancharacters%
}%

\def\tikz@lib@dec@te@@@scancharacters@normal#1{%
  \def\tikz@lib@dec@te@character{#1}%
  \tikz@lib@dec@te@@@scancharacters@process%
  \tikz@lib@dec@te@@scancharacters%
}%


\def\tikz@lib@dec@te@@@@scancharacters#1\tikz@lib@dec@te@scancharacters{}%


\def\tikz@lib@dec@te@reversetext{%
  \c@pgf@counta=\tikz@lib@dec@te@charactertotalcount%
  \pgfmathloop%
  \ifnum\pgfmathcounter>\c@pgf@counta%
  \else%
    \tikz@lib@dec@te@namelet{tikz@lib@dec@te@tmp}{tikz@lib@dec@te@character@\pgfmathcounter @token}%
    \tikz@lib@dec@te@namelet{tikz@lib@dec@te@character@\pgfmathcounter @token}{tikz@lib@dec@te@character@\the\c@pgf@counta @token}%
    \tikz@lib@dec@te@namelet{tikz@lib@dec@te@character@\the\c@pgf@counta @token}{tikz@lib@dec@te@tmp}%
    \advance\c@pgf@counta by-1\relax%
  \repeatpgfmathloop%
}%

\def\tikz@lib@dec@te@groupletters{%
  \c@pgf@counta=0\relax%
  \let\tikz@lib@dec@te@tmp=\pgfutil@empty%
  \let\tikz@lib@dec@te@@tmp=\pgfutil@empty%
  \pgfmathloop%
  \ifnum\pgfmathcounter>\tikz@lib@dec@te@charactertotalcount%
    \ifx\tikz@lib@dec@te@@tmp\pgfutil@empty%
    \else%
      \advance\c@pgf@counta by1\relax%
      \tikz@lib@dec@te@namelet{tikz@lib@dec@te@character@\the\c@pgf@counta @token}{tikz@lib@dec@te@@tmp}%
    \fi%
  \else%
    \tikz@lib@dec@te@namelet{tikz@lib@dec@te@tmp}{tikz@lib@dec@te@character@\pgfmathcounter @token}%
    \ifx\tikz@lib@dec@te@tmp\tikz@lib@dec@te@wordsep%
      \advance\c@pgf@counta by1\relax%
      \tikz@lib@dec@te@namelet{tikz@lib@dec@te@character@\the\c@pgf@counta @token}{tikz@lib@dec@te@@tmp}%
      \let\tikz@lib@dec@te@@tmp=\pgfutil@empty%
      \advance\c@pgf@counta by1\relax%
      \tikz@lib@dec@te@namelet{tikz@lib@dec@te@character@\the\c@pgf@counta @token}{tikz@lib@dec@te@wordsep}%
    \else%
      \expandafter\tikz@lib@dec@te@addto@macro\expandafter{\expandafter\tikz@lib@dec@te@@tmp\expandafter}\expandafter{\tikz@lib@dec@te@tmp}%
    \fi%
  \repeatpgfmathloop%
  \edef\tikz@lib@dec@te@charactertotalcount{\the\c@pgf@counta}%
}%


\def\tikz@lib@dec@te@getcharacterwidth#1{%
  \csname tikz@lib@dec@te@character@#1\endcsname%
  \tikz@lib@dec@te@getoptions{every character width/.try}%
  \let\tikz@lib@dec@te@lastcharacterwidth=\tikz@lib@dec@te@characterwidth%
  \pgfpositionnodelater\tikz@lib@dec@te@@getcharacterwidth%
  \pgfutil@ifundefined{tikz@lib@dec@te@character@replacements@\meaning\tikz@lib@dec@te@character @code}{%
    \expandafter\node\expandafter[\tikz@lib@dec@te@options,scale=\tikz@lib@dec@scaledcharacterwidthfactor]%
    {\hbox{\tikz@lib@dec@te@charactercommand{\tikz@lib@dec@te@character}}};%
    \let\tikz@lib@dec@te@characterwidth=\tikz@lib@dec@te@characterwidth@tmp%
  }{%
    \tikz@lib@dec@te@getcharacter@replacementwidth{\tikz@lib@dec@te@character}%
    \let\tikz@lib@dec@te@characterwidth=\tikz@lib@dec@te@character@replacementwidth%
  }%
}%

\def\tikz@lib@dec@te@addwidthstoparameters{%
  \pgfmathloop%
  \ifnum\pgfmathcounter>\tikz@lib@dec@te@charactertotalcount%
  \else%
    \tikz@lib@dec@te@namelet{tikz@lib@dec@te@characterwidth}{tikz@lib@dec@te@character@\pgfmathcounter @width}%
    \tikz@lib@dec@te@namelet{tikz@lib@dec@te@characterprewidth}{tikz@lib@dec@te@character@\pgfmathcounter @prewidth}%
    \tikz@lib@dec@te@namelet{tikz@lib@dec@te@characterpostwidth}{tikz@lib@dec@te@character@\pgfmathcounter @postwidth}%
    \tikz@lib@dec@te@addmacroto@parameters{\pgfmathcounter}{\tikz@lib@dec@te@characterwidth}%
    \tikz@lib@dec@te@addmacroto@parameters{\pgfmathcounter}{\tikz@lib@dec@te@characterprewidth}%
    \tikz@lib@dec@te@addmacroto@parameters{\pgfmathcounter}{\tikz@lib@dec@te@characterpostwidth}%
  \repeatpgfmathloop%
}%


\def\tikz@lib@dec@te@addoptions#1{%
  \expandafter\def\expandafter\tikz@lib@dec@te@options\expandafter{\tikz@lib@dec@te@options,#1}%
}%

\def\tikz@lib@dec@te@getoptions#1{%
  \let\tikz@lib@dec@te@lastcharactercommand=\tikz@lib@dec@te@charactercommand%
  \def\tikz@lib@dec@te@options{/pgf/decoration/text effects/.cd}%
  \tikz@lib@dec@te@addoptions{#1}%
  \let\tikzdecorationcharactercount=\tikz@lib@dec@te@charactercount%
  \let\tikzdecorationcharactertotal=\tikz@lib@dec@te@charactertotalcount%
  \let\tikzdecorationlettercount=\tikz@lib@dec@te@lettercount%
  \let\tikzdecorationlettertotal=\tikz@lib@dec@te@lettertotalcount%
  \let\tikzdecorationwordcount=\tikz@lib@dec@te@wordcount%
  \let\tikzdecorationwordtotal=\tikz@lib@dec@te@wordtotal%
  \let\tikzdecorationcharacter=\tikz@lib@dec@te@character%
  \ifx\tikz@lib@dec@te@charactercountvar\pgfutil@empty%
  \else%
    \expandafter\let\tikz@lib@dec@te@charactercountvar=\tikz@lib@dec@te@charactercount%
  \fi%
  \ifx\tikz@lib@dec@te@charactertotalvar\pgfutil@empty%
  \else%
    \expandafter\let\tikz@lib@dec@te@charactertotalvar=\tikz@lib@dec@te@charactertotalcount%
  \fi%
  \ifx\tikz@lib@dec@te@wordcountvar\pgfutil@empty%
  \else%
    \expandafter\let\tikz@lib@dec@te@wordcountvar=\tikz@lib@dec@te@wordcount%
  \fi%
  \ifx\tikz@lib@dec@te@wordtotalvar\pgfutil@empty%
    \else%
      \expandafter\let\tikz@lib@dec@te@wordtotalvar=\tikz@lib@dec@te@wordtotal%
    \fi%
  \ifx\tikz@lib@dec@te@lettercountvar\pgfutil@empty%
  \else%
    \expandafter\let\tikz@lib@dec@te@lettercountvar=\tikz@lib@dec@te@lettercount%
  \fi%
  \ifx\tikz@lib@dec@te@lettertotalvar\pgfutil@empty%
  \else%
    \expandafter\let\tikz@lib@dec@te@lettertotalvar=\tikz@lib@dec@te@lettetotal%
  \fi%
  \edef\tikz@lib@dec@te@tmp{character \tikz@lib@dec@te@charactercount/.try,%
    character {\meaning\tikz@lib@dec@te@character}/.try}%
  \expandafter\tikz@lib@dec@te@addoptions\expandafter{\tikz@lib@dec@te@tmp}%
  \ifx\tikz@lib@dec@te@character\tikz@lib@dec@te@wordsep%
    \tikz@lib@dec@te@addoptions{/pgf/decoration/text effects/every word separator/.try}%
  \else%
      \ifnum\tikz@lib@dec@te@wordcount>0\relax%
        \edef\tikz@lib@dec@te@tmp{every word/.try, word \tikz@lib@dec@te@wordcount/.try}%
        \expandafter\tikz@lib@dec@te@addoptions\expandafter{\tikz@lib@dec@te@tmp}%
        \ifnum\tikz@lib@dec@te@lettercount>0\relax%
          \edef\tikz@lib@dec@te@tmp{every letter/.try,every \tikz@lib@dec@te@lettercount\space letter/.try}%
          \expandafter\tikz@lib@dec@te@addoptions\expandafter{\tikz@lib@dec@te@tmp}%
          \ifnum\tikz@lib@dec@te@lettercount=1\relax%
            \edef\tikz@lib@dec@te@tmp{every first letter/.try}%
            \expandafter\tikz@lib@dec@te@addoptions\expandafter{\tikz@lib@dec@te@tmp}%
          \fi%
          \iftikz@lib@dec@te@finalletter%
            \tikz@lib@dec@te@addoptions{every final letter/.try}%
          \fi%
        \fi%
      \fi%
  \fi%
}%

\def\tikz@lib@dec@te@@getcharacterwidth{%
  \iftikz@lib@dec@te@segmentfromwidth%
    \pgf@x=\pgfpositionnodelatermaxx\relax%
    \advance\pgf@x by-\pgfpositionnodelaterminx\relax%
  \else%
    \pgf@x=\pgfpositionnodelatermaxy\relax%
    \advance\pgf@x by-\pgfpositionnodelaterminy\relax%
  \fi%
  \xdef\tikz@lib@dec@te@characterwidth@tmp{\the\pgf@x}%
}%


\def\tikz@lib@dec@te@drawcharacter{%
  \csname tikz@lib@dec@te@character@\tikz@lib@dec@te@charactercount\endcsname%
  \tikz@lib@dec@te@getoptions{every character/.try}%
  \pgfpositionnodelater\relax%
  \pgfutil@ifundefined{tikz@lib@dec@te@character@replacements@\meaning\tikz@lib@dec@te@character @code}{%
    \expandafter\node\expandafter[\tikz@lib@dec@te@options, scale=\tikz@lib@dec@scaledcharacterwidthfactor]{\hbox{\tikz@lib@dec@te@charactercommand{\tikz@lib@dec@te@character}}};%
  }{\tikz@lib@dec@te@drawcharacter@replacement{\tikz@lib@dec@te@character}}%
}%

\def\tikz@lib@dec@te@drawcharacter@replacement#1{%
  \pgfscope%
  \expandafter\tikzset\expandafter{\tikz@lib@dec@te@options}%
  \csname tikz@lib@dec@te@character@replacements@\meaning#1@code\endcsname%
  \endpgfscope%
}%

\newbox\tikz@lib@dec@te@box
\def\tikz@lib@dec@te@getcharacter@replacementwidth#1{%
  \pgfinterruptpicture%
  \setbox\tikz@lib@dec@te@box=\hbox{%
  \pgfpicture
  \expandafter\tikzset\expandafter{\tikz@lib@dec@te@options}%
  \csname tikz@lib@dec@te@character@replacements@\meaning#1@code\endcsname%
  \endpgfpicture}%
  \xdef\tikz@lib@dec@te@character@replacementwidth{\the\wd\tikz@lib@dec@te@box}%
  \endpgfinterruptpicture%
}%

\def\tikz@lib@dec@scaledcharacterwidthfactor{1}%

\def\tikz@lib@dec@te@state@setup@precomputation{%
  \def\tikz@lib@te@alignshift{0pt}%
  \iftikz@lib@dec@te@pathfromtext%
  \else%
    \let\tikz@lib@dec@te@text=\pgfdecorationtext%
    \tikz@lib@dec@te@preparetext%
    \iftikz@lib@dec@te@scaletexttopath%
      \pgfmathdivide{\pgfdecoratedpathlength}{\tikz@lib@dec@te@textwidth}%
      \let\tikz@lib@dec@scaledcharacterwidthfactor=\pgfmathresult%
      \expandafter\pgfkeys\expandafter{\tikz@lib@dec@te@tmp}%
      \pgfmathloop
      \ifnum\pgfmathcounter>\tikz@lib@dec@te@charactertotalcount%
      \else%
        \pgf@x=\csname tikz@lib@dec@te@character@\pgfmathcounter @prewidth\endcsname\relax%
        \pgf@x=\tikz@lib@dec@scaledcharacterwidthfactor\pgf@x%
        \expandafter\edef\csname tikz@lib@dec@te@character@\pgfmathcounter @prewidth\endcsname{\the\pgf@x}%
        \pgf@x=\csname tikz@lib@dec@te@character@\pgfmathcounter @postwidth\endcsname\relax%
        \pgf@x=\tikz@lib@dec@scaledcharacterwidthfactor\pgf@x%
        \expandafter\edef\csname tikz@lib@dec@te@character@\pgfmathcounter @postwidth\endcsname{\the\pgf@x}%
      \repeatpgfmathloop%
      \tikz@lib@dec@te@addwidthstoparameters%
      \let\tikz@lib@dec@te@textwidth=\pgfdecoratedpathlength%
    \else%
      \iftikz@lib@dec@te@fittexttopath%
        \pgf@x=\pgfdecoratedpathlength%
        \pgf@xa=\csname tikz@lib@dec@te@character@1@postwidth\endcsname\relax%
        \pgf@xb=\csname tikz@lib@dec@te@character@\tikz@lib@dec@te@charactertotalcount @prewidth\endcsname\relax%
        \advance\pgf@x by-\pgf@xa%
        \advance\pgf@x by-\pgf@xb%
        \pgf@y=\tikz@lib@dec@te@textwidth\relax%
        \advance\pgf@y by-\pgf@xa%
        \advance\pgf@y by-\pgf@xb%
        \pgfmathdivide{\the\pgf@x}{\the\pgf@y}%
        \let\tikz@lib@dec@characterwidthscale=\pgfmathresult%
        \pgfmathloop
        \ifnum\pgfmathcounter>\tikz@lib@dec@te@charactertotalcount\relax%
        \else%
        \ifnum\pgfmathcounter>1\relax%
          \pgf@x=\csname tikz@lib@dec@te@character@\pgfmathcounter @prewidth\endcsname\relax%
          \pgf@x=\tikz@lib@dec@characterwidthscale\pgf@x%
            \expandafter\edef\csname tikz@lib@dec@te@character@\pgfmathcounter @prewidth\endcsname{\the\pgf@x}%
          \fi%
          \ifnum\pgfmathcounter<\tikz@lib@dec@te@charactertotalcount\relax%
            \pgf@x=\csname tikz@lib@dec@te@character@\pgfmathcounter @postwidth\endcsname\relax%
            \pgf@x=\tikz@lib@dec@characterwidthscale\pgf@x%
            \expandafter\edef\csname tikz@lib@dec@te@character@\pgfmathcounter @postwidth\endcsname{\the\pgf@x}%
          \fi%
        \repeatpgfmathloop%
        \tikz@lib@dec@te@addwidthstoparameters%
        \let\tikz@lib@dec@te@textwidth=\pgfdecoratedpathlength%
      \else%
        \pgfkeysgetvalue{/pgf/decoration/text align/align}{\tikz@lib@dec@align}%
        \ifx\tikz@lib@dec@align\tikz@lib@dec@align@center@text%
           \pgf@x=\pgfdecoratedpathlength\relax%
           \advance\pgf@x by-\tikz@lib@dec@te@textwidth\relax%
           \ifdim\pgf@x<0pt\relax%
             \pgf@x=0pt\relax%
           \fi%
           \divide\pgf@x by2\relax%
           \pgf@xa=\csname tikz@lib@dec@te@character@1@prewidth\endcsname\relax%
           \advance\pgf@xa by\pgf@x%
           \expandafter\edef\csname tikz@lib@dec@te@character@1@prewidth\endcsname{\the\pgf@xa}%
           \pgf@xa=\csname tikz@lib@dec@te@character@\tikz@lib@dec@te@charactertotalcount @postwidth\endcsname\relax%
           \advance\pgf@xa by\pgf@x%
           \expandafter\edef\csname tikz@lib@dec@te@character@\tikz@lib@dec@te@charactertotalcount @postwidth\endcsname{\the\pgf@xa}%
        \else%
          \ifx\tikz@lib@dec@align\tikz@lib@dec@align@right@text%
            \pgf@x=\pgfdecoratedpathlength\relax%
            \advance\pgf@x by-\tikz@lib@dec@te@textwidth\relax%
            \ifdim\pgf@x<0pt\relax%
              \pgf@x=0pt\relax%
            \fi%
            \pgf@xa=\csname tikz@lib@dec@te@character@1@prewidth\endcsname\relax%
            \advance\pgf@xa by\pgf@x%
            \expandafter\edef\csname tikz@lib@dec@te@character@1@prewidth\endcsname{\the\pgf@xa}%
          \fi%
        \fi%
        \tikz@lib@dec@te@addwidthstoparameters%
      \fi%
    \fi%
  \fi%
}%


\def\pgf@decorate@path@check@moveto#1{%
  \expandafter\pgf@decorate@path@@check@moveto#1\pgf@decorate@stop\pgf@decorate@@stop}%

\def\pgf@decorate@token@stop{\pgf@decorate@stop}%
\def\pgf@decorate@path@@check@moveto#1#2#3#4\pgf@decorate@@stop#5#6{%
  \def\pgf@decorate@temp{#4}%
  \pgf@x=#2\relax%
  \pgf@y=#3\relax%
  \ifx\pgf@decorate@temp\pgf@decorate@token@stop%
     \iftikz@lib@dec@te@pathfromtext%
      \pgfextract@process\tikz@lib@dec@te@pathstart{}%
      \tikz@lib@dec@te@preparetext%
      \tikz@lib@dec@te@addwidthstoparameters%
      \pgfsetpath\pgfutil@empty%
      \pgfpathmoveto{\tikz@lib@dec@te@pathstart}%
      \pgfpathlineto{\pgfpointadd{\tikz@lib@dec@te@pathstart}%
        {\pgfpointpolar{\tikz@lib@dec@te@pathfromtextangle}{\tikz@lib@dec@te@textwidth}}}%
      \pgfgetpath\pgfdecoratedpath%
      \pgfsetpath\pgfutil@empty%
    \else%
      #5%
    \fi%
  \else%
    \tikz@lib@dec@te@pathfromtextfalse%
    #6%
  \fi%
}%


\pgfdeclaredecoration{text effects along path}{setup}{%
  \state{setup}[width=+0pt, next state=scan, persistent precomputation={%
    \tikz@lib@dec@te@state@setup@precomputation%
    \def\tikz@lib@dec@te@charactercount{0}%
  }]{}%
\state{scan}[width=+0pt, next state=pre token, persistent precomputation={%
  \tikz@lib@dec@te@advancecountmacro\tikz@lib@dec@te@charactercount{1}%
  \ifnum\tikz@lib@dec@te@charactercount>\tikz@lib@dec@te@charactertotalcount\relax%
    \ifnum\tikz@lib@dec@te@repeattext=0\relax%
      \def\pgf@decorate@next@state{final}%
    \else%
      \tikz@lib@dec@te@advancecountmacro\tikz@lib@dec@te@repeattext{-1}%
      \def\tikz@lib@dec@te@charactercount{1}%
    \fi%
  \fi%
  \csname tikz@lib@dec@te@character@\tikz@lib@dec@te@charactercount\endcsname%
}]{}%
\state{pre token}[width=+\tikz@lib@dec@te@characterprewidth, next state=token]{}%
\state{token}[width=+0pt, next state=post token]
{%
  \tikz@lib@dec@te@drawcharacter%
}%
\state{post token}[width=+\tikz@lib@dec@te@characterpostwidth, next state=scan]{}%
}%


\def\tikz@lib@dec@te@parse@stylecharacters#1#2{%
  \def\tikz@lib@dec@te@text{#1}%
  \tikz@lib@dec@te@scancharacters{%
    \pgfkeysalso{/pgf/decoration/text effects/character {\meaning\tikz@lib@dec@te@character}/.style={#2}}%
  }%
}%

\def\tikz@lib@dec@te@parse@replacecharacters#1#2{%
  \def\tikz@lib@dec@te@text{#1}%
  \tikz@lib@dec@te@scancharacters{%
    \expandafter\def\csname tikz@lib@dec@te@character@replacements@\meaning\tikz@lib@dec@te@character @code\endcsname{#2}%
  }%
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.text.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryer.code.tex ====

\ProvidesFileRCS{tikzlibraryer.code.tex}

\usetikzlibrary{shapes.geometric}%


\tikzset{every entity/.style=           {}}%
\tikzset{entity/.style=             {rectangle,draw,
                                     minimum height=2\baselineskip,
                                     minimum width=4\baselineskip,every entity}}%



\tikzset{every relationship/.style=     {}}%
\tikzset{relationship/.style=       {diamond,draw,
                                     minimum size=1.5\baselineskip,
                                     inner sep=1pt,
                                     every relationship}}%



\tikzset{every attribute/.style=        {}}%
\tikzset{attribute/.style=              {minimum size=1.5\baselineskip,ellipse,draw,every attribute}}%
\tikzset{key attribute/.style=          {font=\itshape,attribute}}%




\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryer.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex ====

\ProvidesFileRCS{tikzlibraryfadings.code.tex}

\usepgflibrary{fadings}%


\def\tikzfadingfrompicture{%
  \begingroup%
    \setbox\pgfpic=\hbox\bgroup%
      \tikzpicture%
}%
\def\endtikzfadingfrompicture{%
        \global\let\tikz@smuggle=\tikz@fig@name%
      \endtikzpicture
    \egroup%
    \pgfdeclarefading{\tikz@smuggle}{\box\pgfpic}%
  \endgroup%
}%

\def\starttikzfadingfrompicture{\tikzfadingfrompicture}%
\def\stopttikzfadingfrompicture{\endtikzfadingfrompicture}%

\def\tikzfading[#1]{%
  {%
    \setbox\pgfpic=\hbox{%
      \tikzset{#1}%
      \global\let\tikz@smuggle=\tikz@fig@name%
      \tikz{%
        \useasboundingbox(0,0) (100bp,100bp);
        \node at (50bp,50bp) [rotate=\tikz@shade@angle]
        {\pgfuseshading{\tikz@shading}};
      }%
    }%
    \pgfdeclarefading{\tikz@smuggle}{\box\pgfpic}%
  }%
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex ====

\ProvidesFileRCS{tikzlibraryfit.code.tex}

\pgfqkeys{/tikz}{%
  fit/.code=\tikz@lib@fit{#1},
  rotate fit/.code={%
    \pgfmathsetmacro\tikz@lib@fit@rotate{#1}%
    \pgfkeysalso{/tikz/rotate=\tikz@lib@fit@rotate}%
  },
}%

\def\tikz@lib@fit@rotate{0}%

\def\tikz@lib@fit#1{%
  \pgf@xb=-16000pt\relax%
  \pgf@xa=16000pt\relax%
  \pgf@yb=-16000pt\relax%
  \pgf@ya=16000pt\relax%
  \tikz@lib@fit@scan#1\pgf@stop%
  \ifdim\pgf@xa>\pgf@xa%
  \else%
    \pgf@x=\pgf@xb%
    \advance\pgf@x by-\pgf@xa%
    \pgf@y=\pgf@yb%
    \advance\pgf@y by-\pgf@ya%
    \advance\pgf@xa by.5\pgf@x%
    \advance\pgf@ya by.5\pgf@y%
    \ifdim\tikz@lib@fit@rotate pt=0pt\relax%
      {%
        \pgftransforminvert%
        \pgf@pos@transform{\pgf@xa}{\pgf@ya}%
        \global\pgf@xa\pgf@xa
        \global\pgf@ya\pgf@ya
      }
    \else%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      {%
        \pgf@xc=\pgf@xa%
        \pgf@yc=\pgf@ya%
        \pgftransforminvert%
        \pgf@pos@transform{\pgf@xc}{\pgf@yc}%
        \pgftransformreset%
        \pgftransformrotate{\tikz@lib@fit@rotate}%
        \pgf@pos@transform{\pgf@xc}{\pgf@yc}%
        \global\pgf@x=\pgf@xc%
        \global\pgf@y=\pgf@yc%
      }%
      \pgf@xa=\pgf@x%
      \pgf@ya=\pgf@y%
      \pgf@x=\pgf@xc%
      \pgf@y=\pgf@yc%
    \fi%
    \edef\tikz@node@at{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
    \pgfkeysalso{/tikz/anchor=center,/tikz/text badly centered}%
    \pgfkeysalso{/tikz/text width/.expanded=\the\pgf@x}%
    \pgf@x=\pgf@y%
    \pgf@y=.5\pgf@y%
    \pgfkeysalso{
      /tikz/transform shape=false,
      /tikz/text height/.expanded=\the\pgf@y-.5\dp\pgfnodeparttextbox,
      /tikz/text depth/.expanded=\the\pgf@x-\noexpand\the\ht\pgfnodeparttextbox}%
    \pgfkeysalso{every fit/.try}%
  \fi%
}%

\def\tikz@lib@fit@scan{%
  \pgfutil@ifnextchar\pgf@stop{\pgfutil@gobble}
  {\tikz@scan@one@point\tikz@lib@fit@scan@handle}}%

\def\tikz@lib@fit@scan@handle#1{%
  \iftikz@shapeborder%
    \tikz@lib@fit@adjust{\pgfpointanchor{\tikz@shapeborder@name}{west}}%
    \tikz@lib@fit@adjust{\pgfpointanchor{\tikz@shapeborder@name}{east}}%
    \tikz@lib@fit@adjust{\pgfpointanchor{\tikz@shapeborder@name}{north}}%
    \tikz@lib@fit@adjust{\pgfpointanchor{\tikz@shapeborder@name}{south}}%
  \else%
    \tikz@lib@fit@adjust{#1}%
  \fi%
  \tikz@lib@fit@scan%
}%

\def\tikz@lib@fit@adjust#1{%
  \ifdim\tikz@lib@fit@rotate pt=0pt\relax%
    \pgf@process{\pgfpointtransformed{#1}}%
  \else%
    {%
      \pgf@process{\pgfpointtransformed{#1}}%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      \pgfgettransform\tikz@lib@fit@transform%
      \pgftransforminvert%
      \pgf@pos@transform{\pgf@xc}{\pgf@yc}%
      \pgftransformreset%
      \pgftransformrotate{-\tikz@lib@fit@rotate}%
      \pgf@pos@transform{\pgf@xc}{\pgf@yc}%
      \pgfsettransform\tikz@lib@fit@transform%
      \pgf@pos@transform{\pgf@xc}{\pgf@yc}%
      \global\pgf@x=\pgf@xc%
      \global\pgf@y=\pgf@yc%
    }%
  \fi%
  \ifdim\pgf@x<\pgf@xa%
    \pgf@xa=\pgf@x%
  \fi%
  \ifdim\pgf@y<\pgf@ya%
    \pgf@ya=\pgf@y%
  \fi%
  \ifdim\pgf@x>\pgf@xb%
    \pgf@xb=\pgf@x%
  \fi%
  \ifdim\pgf@y>\pgf@yb%
    \pgf@yb=\pgf@y%
  \fi%
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfixedpointarithmetic.code.tex ====

\usepgflibrary{fixedpointarithmetic}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfixedpointarithmetic.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfolding.code.tex ====

\ProvidesFileRCS{tikzlibraryfolding.code.tex}



\tikzoption{folding line length}{\pgfmathsetlength\tikz@lib@fold@length{#1}}%
\newdimen\tikz@lib@fold@length
\tikz@lib@fold@length=2cm



\def\tikz@lib@fold@triangle#1#2#3#4{%
  \scope[xshift=.5\tikz@lib@fold@length,yshift=.28868\tikz@lib@fold@length]
    #1
  \endscope
  \scope[shift={(60:\tikz@lib@fold@length)},rotate=-60]
    #2
  \endscope
  \scope[xshift=\tikz@lib@fold@length,rotate=180]
    #3
  \endscope
  \scope[rotate=60]
    #4
  \endscope
}%

\def\tikz@lib@fold@square#1#2#3#4#5{%
  \scope[xshift=.5\tikz@lib@fold@length,yshift=.5\tikz@lib@fold@length]
    #1
  \endscope
  \scope[yshift=\tikz@lib@fold@length]
    #2
  \endscope
  \scope[xshift=\tikz@lib@fold@length,yshift=\tikz@lib@fold@length,rotate=-90]
    #3
  \endscope
  \scope[xshift=\tikz@lib@fold@length,rotate=180]
    #4
  \endscope
  \scope[rotate=90]
    #5
  \endscope
}%

\def\tikz@lib@fold@squarerhombusr#1#2#3#4#5{%
  \scope[xshift=.63\tikz@lib@fold@length,yshift=.4755\tikz@lib@fold@length,xslant=0.34]
    #1
  \endscope
  \scope[shift={(70.529:\tikz@lib@fold@length)}]
    #2
  \endscope
  \scope[shift={(35.264:1.63299\tikz@lib@fold@length)},rotate=-109.471]
    #3
  \endscope
  \scope[xshift=\tikz@lib@fold@length,rotate=180]
    #4
  \endscope
  \scope[rotate=70.529]
    #5
  \endscope
}%

\def\tikz@lib@fold@squarerhombusl#1#2#3#4#5{%
  \scope[xshift=.33\tikz@lib@fold@length,yshift=.4755\tikz@lib@fold@length,xslant=-0.34]
    #1
  \endscope
  \scope[shift={(109.471:\tikz@lib@fold@length)}]
    #2
  \endscope
  \scope[shift={(54.736:1.1547\tikz@lib@fold@length)},rotate=-70.529]
    #3
  \endscope
  \scope[xshift=\tikz@lib@fold@length,rotate=180]
    #4
  \endscope
  \scope[rotate=109.471]
    #5
  \endscope
}%

\def\tikz@lib@fold@goldenrhombusr#1#2#3#4#5{%
  \scope[xshift=.724\tikz@lib@fold@length,yshift=.447\tikz@lib@fold@length, xslant=0.447]
    #1
  \endscope
  \scope[shift={(63.435:\tikz@lib@fold@length)}]
    #2
  \endscope
  \scope[shift={(31.717:1.701\tikz@lib@fold@length)},rotate=-116.565]
    #3
  \endscope
  \scope[xshift=\tikz@lib@fold@length,rotate=180]
    #4
  \endscope
  \scope[rotate=63.435]
    #5
  \endscope
}%

\def\tikz@lib@fold@goldenrhombusl#1#2#3#4#5{%
  \scope[xshift=.276\tikz@lib@fold@length,yshift=.447\tikz@lib@fold@length, xslant=-0.447]
    #1
  \endscope
  \scope[shift={(116.565:\tikz@lib@fold@length)}]
    #2
  \endscope
  \scope[shift={(58.283:1.051\tikz@lib@fold@length)},rotate=-63.435]
    #3
  \endscope
  \scope[xshift=\tikz@lib@fold@length,rotate=180]
    #4
  \endscope
  \scope[rotate=116.565]
    #5
  \endscope
}%

\def\tikz@lib@fold@pentagon#1#2#3#4#5#6{%
  \scope[xshift=.5\tikz@lib@fold@length,yshift=0.68819\tikz@lib@fold@length]
    #1
  \endscope
  \scope[shift={(108:\tikz@lib@fold@length)},shift={(36:\tikz@lib@fold@length)},rotate=-36]
    #2
  \endscope
  \scope[xshift=\tikz@lib@fold@length,shift={(72:\tikz@lib@fold@length)},rotate=-108]
    #3
  \endscope
  \scope[xshift=\tikz@lib@fold@length,rotate=180]
    #4
  \endscope
  \scope[rotate=108]
    #5
  \endscope
  \scope[shift={(108:\tikz@lib@fold@length)},rotate=36]
    #6
  \endscope
}%

\def\tikz@lib@fold@hexagon#1#2#3#4#5#6#7{%
  \scope
          [shift={(60:\tikz@lib@fold@length)}]
    #1
  \endscope
  \scope
          [shift={(120:\tikz@lib@fold@length)},
           shift={(60:\tikz@lib@fold@length)}]
    #2
  \endscope
   \scope
           [shift={(120:\tikz@lib@fold@length)},
            shift={(60:\tikz@lib@fold@length)},
            xshift=\tikz@lib@fold@length,
            rotate=-60]
    #3
  \endscope
  \scope
          [xshift=\tikz@lib@fold@length,
           shift={(60:\tikz@lib@fold@length)},
           rotate=-120]
    #4
  \endscope
  \scope
          [xshift=\tikz@lib@fold@length,
           rotate=180]
    #5
  \endscope
  \scope
          [rotate=120]
    #6
  \endscope
  \scope
          [shift={(120:\tikz@lib@fold@length)},
           rotate=60]
    #7
  \endscope
}%

\def\tikz@lib@fold@octagon#1#2#3#4#5#6#7#8#9{%
  \scope[xshift=.5\tikz@lib@fold@length,yshift=1.20711\tikz@lib@fold@length]
    #1
  \endscope
  \scope[yshift=2.41421\tikz@lib@fold@length]
    #2
  \endscope
  \scope[xshift=\tikz@lib@fold@length,yshift=2.41421\tikz@lib@fold@length,rotate=-45]
    #3
  \endscope
  \scope[xshift=1.70711\tikz@lib@fold@length,yshift=1.70711\tikz@lib@fold@length,rotate=-90]
    #4
  \endscope
  \scope[xshift=1.70711\tikz@lib@fold@length,yshift=.70711\tikz@lib@fold@length,rotate=-135]
    #5
  \endscope
  \scope[xshift=\tikz@lib@fold@length,rotate=180]
    #6
  \endscope
  \scope[rotate=135]
    #7
  \endscope
  \scope[xshift=-.70711\tikz@lib@fold@length,yshift=.70711\tikz@lib@fold@length,rotate=90]
    #8
  \endscope
  \scope[xshift=-.70711\tikz@lib@fold@length,yshift=1.70711\tikz@lib@fold@length,rotate=45]
    #9
  \endscope
}%

\def\tikz@lib@fold@decagon#1#2#3#4#5#6#7{%
  \scope[shift={(72:1.61803\tikz@lib@fold@length)}] %
    #1
  \endscope
  \scope
          [shift={(36:\tikz@lib@fold@length)},
           shift={(72:\tikz@lib@fold@length)},
           shift={(108:\tikz@lib@fold@length)},
           shift={(144:\tikz@lib@fold@length)}]
    #2
  \endscope
  \scope
          [xshift=\tikz@lib@fold@length,
           shift={(36:\tikz@lib@fold@length)},
           shift={(72:\tikz@lib@fold@length)},
           shift={(108:\tikz@lib@fold@length)},
           shift={(144:\tikz@lib@fold@length)},
           rotate=-36]
    #3
  \endscope
  \scope
          [xshift=\tikz@lib@fold@length,
           shift={(36:\tikz@lib@fold@length)},
           shift={(72:\tikz@lib@fold@length)},
           shift={(108:\tikz@lib@fold@length)},
           rotate=-72]
    #4
  \endscope
  \scope
          [xshift=\tikz@lib@fold@length,
           shift={(36:\tikz@lib@fold@length)},
           shift={(72:\tikz@lib@fold@length)},
           rotate=-108]
    #5
  \endscope
  \scope
          [xshift=\tikz@lib@fold@length,
           shift={(36:\tikz@lib@fold@length)},
           rotate=-144]
    #6
  \endscope
  \scope
          [xshift=\tikz@lib@fold@length,
           rotate=180]
    #7
  \endscope
  \tikz@lib@fold@decagonbis
}%

\def\tikz@lib@fold@decagonbis#1#2#3#4{%
  \scope
          [rotate=144]
    #1
  \endscope
  \scope
          [shift={(144:\tikz@lib@fold@length)},
           rotate=108]
    #2
  \endscope
  \scope
          [shift={(144:\tikz@lib@fold@length)},
           shift={(108:\tikz@lib@fold@length)},
           rotate=72]
    #3
  \endscope
  \scope
          [shift={(144:\tikz@lib@fold@length)},
           shift={(108:\tikz@lib@fold@length)},
           shift={(72:\tikz@lib@fold@length)},
           rotate=36]
    #4
  \endscope
}%

\def\tikz@lib@fold@path{\draw[every fold](0,0) -- (\tikz@lib@fold@length,0pt);}%
\def\tikz@lib@fold@cut@path{\draw[every cut](0,0) -- (\tikz@lib@fold@length,0pt);}%
\def\tikz@lib@fold@ear@path{
  \path[every ear] (0,0) -- (.5\tikz@lib@fold@length,.2\tikz@lib@fold@length) --(\tikz@lib@fold@length,0pt) --(0,0) -- cycle;
  \draw[every fold](0,0) -- (\tikz@lib@fold@length,0pt);
  \draw[every cut] (0,0) -- (.5\tikz@lib@fold@length,.2\tikz@lib@fold@length) --(\tikz@lib@fold@length,0pt);}%
\def\tikz@lib@fold@ear@custom@left@path#1{
  \path[every ear] (0,0) -- (#1:.66\tikz@lib@fold@length) -- (\tikz@lib@fold@length,0pt) --(0,0) -- cycle;
  \draw[every fold](0,0) -- (\tikz@lib@fold@length,0pt);
  \draw[every cut] (0,0) -- (#1:.66\tikz@lib@fold@length) -- (\tikz@lib@fold@length,0pt);}%
\def\tikz@lib@fold@ear@custom@right@path#1{
  \path[every ear] (0,0) -- (\tikz@lib@fold@length,0pt) -- ++(-#1:-.66\tikz@lib@fold@length) --(0,0) -- cycle;
  \draw[every fold](0,0) -- (\tikz@lib@fold@length,0pt);
  \draw[every cut] (\tikz@lib@fold@length,0pt) -- ++(-#1:-.66\tikz@lib@fold@length) -- (0,0);}%

\tikzset{every ear/.style={}}%
\tikzset{every cut/.style={}}%
\tikzset{every fold/.style={help lines}}%

\tikzoption{face 1}{\def\tikz@lib@fold@face@A{#1}}%
\tikzoption{face 2}{\def\tikz@lib@fold@face@B{#1}}%
\tikzoption{face 3}{\def\tikz@lib@fold@face@C{#1}}%
\tikzoption{face 4}{\def\tikz@lib@fold@face@D{#1}}%
\tikzoption{face 5}{\def\tikz@lib@fold@face@E{#1}}%
\tikzoption{face 6}{\def\tikz@lib@fold@face@F{#1}}%
\tikzoption{face 7}{\def\tikz@lib@fold@face@G{#1}}%
\tikzoption{face 8}{\def\tikz@lib@fold@face@H{#1}}%
\tikzoption{face 9}{\def\tikz@lib@fold@face@I{#1}}%
\tikzoption{face 10}{\def\tikz@lib@fold@face@J{#1}}%
\tikzoption{face 11}{\def\tikz@lib@fold@face@K{#1}}%
\tikzoption{face 12}{\def\tikz@lib@fold@face@L{#1}}%
\tikzoption{face 13}{\def\tikz@lib@fold@face@M{#1}}%
\tikzoption{face 14}{\def\tikz@lib@fold@face@N{#1}}%
\tikzoption{face 15}{\def\tikz@lib@fold@face@O{#1}}%
\tikzoption{face 16}{\def\tikz@lib@fold@face@P{#1}}%
\tikzoption{face 17}{\def\tikz@lib@fold@face@Q{#1}}%
\tikzoption{face 18}{\def\tikz@lib@fold@face@R{#1}}%
\tikzoption{face 19}{\def\tikz@lib@fold@face@S{#1}}%
\tikzoption{face 20}{\def\tikz@lib@fold@face@T{#1}}%
\tikzoption{face 21}{\def\tikz@lib@fold@face@U{#1}}%
\tikzoption{face 22}{\def\tikz@lib@fold@face@V{#1}}%
\tikzoption{face 23}{\def\tikz@lib@fold@face@W{#1}}%
\tikzoption{face 24}{\def\tikz@lib@fold@face@X{#1}}%
\tikzoption{face 25}{\def\tikz@lib@fold@face@Y{#1}}%
\tikzoption{face 26}{\def\tikz@lib@fold@face@Z{#1}}%
\tikzoption{face 27}{\def\tikz@lib@fold@face@AA{#1}}%
\tikzoption{face 28}{\def\tikz@lib@fold@face@AB{#1}}%
\tikzoption{face 29}{\def\tikz@lib@fold@face@AC{#1}}%
\tikzoption{face 30}{\def\tikz@lib@fold@face@AD{#1}}%
\tikzoption{face 31}{\def\tikz@lib@fold@face@AE{#1}}%
\tikzoption{face 32}{\def\tikz@lib@fold@face@AF{#1}}%
\tikzoption{face 33}{\def\tikz@lib@fold@face@AG{#1}}%
\tikzoption{face 34}{\def\tikz@lib@fold@face@AH{#1}}%
\tikzoption{face 35}{\def\tikz@lib@fold@face@AI{#1}}%
\tikzoption{face 36}{\def\tikz@lib@fold@face@AJ{#1}}%
\tikzoption{face 37}{\def\tikz@lib@fold@face@AK{#1}}%
\tikzoption{face 38}{\def\tikz@lib@fold@face@AL{#1}}%
\tikzoption{face 39}{\def\tikz@lib@fold@face@AM{#1}}%
\tikzoption{face 40}{\def\tikz@lib@fold@face@AN{#1}}%
\tikzoption{face 41}{\def\tikz@lib@fold@face@AO{#1}}%
\tikzoption{face 42}{\def\tikz@lib@fold@face@AP{#1}}%
\tikzoption{face 43}{\def\tikz@lib@fold@face@AQ{#1}}%
\tikzoption{face 44}{\def\tikz@lib@fold@face@AR{#1}}%
\tikzoption{face 45}{\def\tikz@lib@fold@face@AS{#1}}%
\tikzoption{face 46}{\def\tikz@lib@fold@face@AT{#1}}%
\tikzoption{face 47}{\def\tikz@lib@fold@face@AU{#1}}%
\tikzoption{face 48}{\def\tikz@lib@fold@face@AV{#1}}%
\tikzoption{face 49}{\def\tikz@lib@fold@face@AW{#1}}%
\tikzoption{face 50}{\def\tikz@lib@fold@face@AX{#1}}%
\tikzoption{face 51}{\def\tikz@lib@fold@face@AY{#1}}%
\tikzoption{face 52}{\def\tikz@lib@fold@face@AZ{#1}}%
\tikzoption{face 53}{\def\tikz@lib@fold@face@BA{#1}}%
\tikzoption{face 54}{\def\tikz@lib@fold@face@BB{#1}}%
\tikzoption{face 55}{\def\tikz@lib@fold@face@BC{#1}}%
\tikzoption{face 56}{\def\tikz@lib@fold@face@BD{#1}}%
\tikzoption{face 57}{\def\tikz@lib@fold@face@BE{#1}}%
\tikzoption{face 58}{\def\tikz@lib@fold@face@BF{#1}}%
\tikzoption{face 59}{\def\tikz@lib@fold@face@BG{#1}}%
\tikzoption{face 60}{\def\tikz@lib@fold@face@BH{#1}}%
\tikzoption{face 61}{\def\tikz@lib@fold@face@BI{#1}}%
\tikzoption{face 62}{\def\tikz@lib@fold@face@BJ{#1}}%
\tikzoption{face 63}{\def\tikz@lib@fold@face@BK{#1}}%
\tikzoption{face 64}{\def\tikz@lib@fold@face@BL{#1}}%
\tikzoption{face 65}{\def\tikz@lib@fold@face@BM{#1}}%
\tikzoption{face 66}{\def\tikz@lib@fold@face@BN{#1}}%
\tikzoption{face 67}{\def\tikz@lib@fold@face@BO{#1}}%
\tikzoption{face 68}{\def\tikz@lib@fold@face@BP{#1}}%
\tikzoption{face 69}{\def\tikz@lib@fold@face@BQ{#1}}%
\tikzoption{face 70}{\def\tikz@lib@fold@face@BR{#1}}%
\tikzoption{face 71}{\def\tikz@lib@fold@face@BS{#1}}%
\tikzoption{face 72}{\def\tikz@lib@fold@face@BT{#1}}%
\tikzoption{face 73}{\def\tikz@lib@fold@face@BU{#1}}%
\tikzoption{face 74}{\def\tikz@lib@fold@face@BV{#1}}%
\tikzoption{face 75}{\def\tikz@lib@fold@face@BW{#1}}%
\tikzoption{face 76}{\def\tikz@lib@fold@face@BX{#1}}%
\tikzoption{face 77}{\def\tikz@lib@fold@face@BY{#1}}%
\tikzoption{face 78}{\def\tikz@lib@fold@face@BZ{#1}}%
\tikzoption{face 79}{\def\tikz@lib@fold@face@CA{#1}}%
\tikzoption{face 80}{\def\tikz@lib@fold@face@CB{#1}}%
\tikzoption{face 81}{\def\tikz@lib@fold@face@CC{#1}}%
\tikzoption{face 82}{\def\tikz@lib@fold@face@CD{#1}}%
\tikzoption{face 83}{\def\tikz@lib@fold@face@CE{#1}}%
\tikzoption{face 84}{\def\tikz@lib@fold@face@CF{#1}}%
\tikzoption{face 85}{\def\tikz@lib@fold@face@CG{#1}}%
\tikzoption{face 86}{\def\tikz@lib@fold@face@CH{#1}}%
\tikzoption{face 87}{\def\tikz@lib@fold@face@CI{#1}}%
\tikzoption{face 88}{\def\tikz@lib@fold@face@CJ{#1}}%
\tikzoption{face 89}{\def\tikz@lib@fold@face@CK{#1}}%
\tikzoption{face 90}{\def\tikz@lib@fold@face@CL{#1}}%
\tikzoption{face 91}{\def\tikz@lib@fold@face@CM{#1}}%
\tikzoption{face 92}{\def\tikz@lib@fold@face@CN{#1}}%


\let\tikz@lib@fold@face@A=\pgfutil@empty
\let\tikz@lib@fold@face@B=\pgfutil@empty
\let\tikz@lib@fold@face@C=\pgfutil@empty
\let\tikz@lib@fold@face@D=\pgfutil@empty
\let\tikz@lib@fold@face@E=\pgfutil@empty
\let\tikz@lib@fold@face@F=\pgfutil@empty
\let\tikz@lib@fold@face@G=\pgfutil@empty
\let\tikz@lib@fold@face@H=\pgfutil@empty
\let\tikz@lib@fold@face@I=\pgfutil@empty
\let\tikz@lib@fold@face@J=\pgfutil@empty
\let\tikz@lib@fold@face@K=\pgfutil@empty
\let\tikz@lib@fold@face@L=\pgfutil@empty
\let\tikz@lib@fold@face@M=\pgfutil@empty
\let\tikz@lib@fold@face@N=\pgfutil@empty
\let\tikz@lib@fold@face@O=\pgfutil@empty
\let\tikz@lib@fold@face@P=\pgfutil@empty
\let\tikz@lib@fold@face@Q=\pgfutil@empty
\let\tikz@lib@fold@face@R=\pgfutil@empty
\let\tikz@lib@fold@face@S=\pgfutil@empty
\let\tikz@lib@fold@face@T=\pgfutil@empty
\let\tikz@lib@fold@face@U=\pgfutil@empty
\let\tikz@lib@fold@face@V=\pgfutil@empty
\let\tikz@lib@fold@face@W=\pgfutil@empty
\let\tikz@lib@fold@face@X=\pgfutil@empty
\let\tikz@lib@fold@face@Y=\pgfutil@empty
\let\tikz@lib@fold@face@Z=\pgfutil@empty
\let\tikz@lib@fold@face@AA=\pgfutil@empty
\let\tikz@lib@fold@face@AB=\pgfutil@empty
\let\tikz@lib@fold@face@AC=\pgfutil@empty
\let\tikz@lib@fold@face@AD=\pgfutil@empty
\let\tikz@lib@fold@face@AE=\pgfutil@empty
\let\tikz@lib@fold@face@AF=\pgfutil@empty
\let\tikz@lib@fold@face@AG=\pgfutil@empty
\let\tikz@lib@fold@face@AH=\pgfutil@empty
\let\tikz@lib@fold@face@AI=\pgfutil@empty
\let\tikz@lib@fold@face@AJ=\pgfutil@empty
\let\tikz@lib@fold@face@AK=\pgfutil@empty
\let\tikz@lib@fold@face@AL=\pgfutil@empty
\let\tikz@lib@fold@face@AM=\pgfutil@empty
\let\tikz@lib@fold@face@AN=\pgfutil@empty
\let\tikz@lib@fold@face@AO=\pgfutil@empty
\let\tikz@lib@fold@face@AP=\pgfutil@empty
\let\tikz@lib@fold@face@AQ=\pgfutil@empty
\let\tikz@lib@fold@face@AR=\pgfutil@empty
\let\tikz@lib@fold@face@AS=\pgfutil@empty
\let\tikz@lib@fold@face@AT=\pgfutil@empty
\let\tikz@lib@fold@face@AU=\pgfutil@empty
\let\tikz@lib@fold@face@AV=\pgfutil@empty
\let\tikz@lib@fold@face@AW=\pgfutil@empty
\let\tikz@lib@fold@face@AX=\pgfutil@empty
\let\tikz@lib@fold@face@AY=\pgfutil@empty
\let\tikz@lib@fold@face@AZ=\pgfutil@empty
\let\tikz@lib@fold@face@BA=\pgfutil@empty
\let\tikz@lib@fold@face@BB=\pgfutil@empty
\let\tikz@lib@fold@face@BC=\pgfutil@empty
\let\tikz@lib@fold@face@BD=\pgfutil@empty
\let\tikz@lib@fold@face@BE=\pgfutil@empty
\let\tikz@lib@fold@face@BF=\pgfutil@empty
\let\tikz@lib@fold@face@BG=\pgfutil@empty
\let\tikz@lib@fold@face@BH=\pgfutil@empty
\let\tikz@lib@fold@face@BI=\pgfutil@empty
\let\tikz@lib@fold@face@BJ=\pgfutil@empty
\let\tikz@lib@fold@face@BK=\pgfutil@empty
\let\tikz@lib@fold@face@BL=\pgfutil@empty
\let\tikz@lib@fold@face@BM=\pgfutil@empty
\let\tikz@lib@fold@face@BN=\pgfutil@empty
\let\tikz@lib@fold@face@BO=\pgfutil@empty
\let\tikz@lib@fold@face@BP=\pgfutil@empty
\let\tikz@lib@fold@face@BQ=\pgfutil@empty
\let\tikz@lib@fold@face@BR=\pgfutil@empty
\let\tikz@lib@fold@face@BS=\pgfutil@empty
\let\tikz@lib@fold@face@BT=\pgfutil@empty
\let\tikz@lib@fold@face@BU=\pgfutil@empty
\let\tikz@lib@fold@face@BV=\pgfutil@empty
\let\tikz@lib@fold@face@BW=\pgfutil@empty
\let\tikz@lib@fold@face@BX=\pgfutil@empty
\let\tikz@lib@fold@face@BY=\pgfutil@empty
\let\tikz@lib@fold@face@BZ=\pgfutil@empty
\let\tikz@lib@fold@face@CA=\pgfutil@empty
\let\tikz@lib@fold@face@CB=\pgfutil@empty
\let\tikz@lib@fold@face@CC=\pgfutil@empty
\let\tikz@lib@fold@face@CD=\pgfutil@empty
\let\tikz@lib@fold@face@CE=\pgfutil@empty
\let\tikz@lib@fold@face@CF=\pgfutil@empty
\let\tikz@lib@fold@face@CG=\pgfutil@empty
\let\tikz@lib@fold@face@CH=\pgfutil@empty
\let\tikz@lib@fold@face@CI=\pgfutil@empty
\let\tikz@lib@fold@face@CJ=\pgfutil@empty
\let\tikz@lib@fold@face@CK=\pgfutil@empty
\let\tikz@lib@fold@face@CL=\pgfutil@empty
\let\tikz@lib@fold@face@CM=\pgfutil@empty
\let\tikz@lib@fold@face@CN=\pgfutil@empty


\tikzset{numbered faces/.style={%
    face 1={\node{1};},
    face 2={\node{2};},
    face 3={\node{3};},
    face 4={\node{4};},
    face 5={\node{5};},
    face 6={\node{6};},
    face 7={\node{7};},
    face 8={\node{8};},
    face 9={\node{9};},
    face 10={\node{10};},
    face 11={\node{11};},
    face 12={\node{12};},
    face 13={\node{13};},
    face 14={\node{14};},
    face 15={\node{15};},
    face 16={\node{16};},
    face 17={\node{17};},
    face 18={\node{18};},
    face 19={\node{19};},
    face 20={\node{20};},
    face 21={\node{21};},
    face 22={\node{22};},
    face 23={\node{23};},
    face 24={\node{24};},
    face 25={\node{25};},
    face 26={\node{26};},
    face 27={\node{27};},
    face 28={\node{28};},
    face 29={\node{29};},
    face 30={\node{30};},
    face 31={\node{31};},
    face 32={\node{32};},
    face 33={\node{33};},
    face 34={\node{34};},
    face 35={\node{35};},
    face 36={\node{36};},
    face 37={\node{37};},
    face 38={\node{38};},
    face 39={\node{39};},
    face 40={\node{40};},
    face 41={\node{41};},
    face 42={\node{42};},
    face 43={\node{43};},
    face 44={\node{44};},
    face 45={\node{45};},
    face 46={\node{46};},
    face 47={\node{47};},
    face 48={\node{48};},
    face 49={\node{49};},
    face 50={\node{50};},
    face 51={\node{51};},
    face 52={\node{52};},
    face 53={\node{53};},
    face 54={\node{54};},
    face 55={\node{55};},
    face 56={\node{56};},
    face 57={\node{57};},
    face 58={\node{58};},
    face 59={\node{59};},
    face 60={\node{60};},
    face 61={\node{61};},
    face 62={\node{62};},
    face 63={\node{63};},
    face 64={\node{64};},
    face 65={\node{65};},
    face 66={\node{66};},
    face 67={\node{67};},
    face 68={\node{68};},
    face 69={\node{69};},
    face 70={\node{70};},
    face 71={\node{71};},
    face 72={\node{72};},
    face 73={\node{73};},
    face 74={\node{74};},
    face 75={\node{75};},
    face 76={\node{76};},
    face 77={\node{77};},
    face 78={\node{78};},
    face 79={\node{79};},
    face 80={\node{80};},
    face 81={\node{81};},
    face 82={\node{82};},
    face 83={\node{83};},
    face 84={\node{84};},
    face 85={\node{85};},
    face 86={\node{86};},
    face 87={\node{87};},
    face 88={\node{88};},
    face 89={\node{89};},
    face 90={\node{90};},
    face 91={\node{91};},
    face 92={\node{92};}}}%


\tikzset{
  pics/dodecahedron folding/.style            = {code=\tikzfoldingdodecahedron[];},
  pics/tetrahedron folding/.style             = {code=\tikzfoldingtetrahedron[];},
  pics/tetrahedron truncated folding/.style   = {code=\tikzfoldingtruncatedtetrahedron[];},
  pics/cube folding/.style                    = {code=\tikzfoldingcube[];},
  pics/cube truncated folding/.style          = {code=\tikzfoldingtruncatedcube[];},
  pics/octahedron folding/.style              = {code=\tikzfoldingoctahedron[];},
  pics/octahedron truncated folding/.style    = {code=\tikzfoldingtruncatedoctahedron[];},
  pics/dodecahedron folding/.style            = {code=\tikzfoldingdodecahedron[];},
  pics/dodecahedron' folding/.style           = {code=\tikzfoldingalternatedodecahedron[];},
  pics/dodecahedron rhombic folding/.style    = {code=\tikzfoldingrhombicdodecahedron[];},
  pics/dodecahedron golden folding/.style     = {code=\tikzfoldinggoldenrhombicdodecahedron[];},
  pics/cuboctahedron folding/.style           = {code=\tikzfoldingcuboctahedron[];},
  pics/cuboctahedron truncated folding/.style = {code=\tikzfoldingtruncatedcuboctahedron[];},
  pics/icosahedron folding/.style             = {code=\tikzfoldingicosahedron[];},
  pics/rhombicuboctahedron folding/.style     = {code=\tikzfoldingrhombicuboctahedron[];},
  pics/snub cube folding/.style               = {code=\tikzfoldingsnubcube[];},
  pics/icosidodecahedron folding/.style       = {code=\tikzfoldingicosidodecahedron[];}
}%




\def\tikzfoldingdodecahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@pentagon
        {\tikz@lib@fold@face@A}
        {\tikz@lib@fold@pentagon
             {\tikz@lib@fold@face@B}
             {\tikz@lib@fold@pentagon
                  {\tikz@lib@fold@face@C}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@ear@path}
             }
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@ear@path}
        }
        {\tikz@lib@fold@pentagon
             {\tikz@lib@fold@face@D}
             {\tikz@lib@fold@pentagon
                  {\tikz@lib@fold@face@E}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@cut@path}
                  {\tikz@lib@fold@ear@path}
             }
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@pentagon
             {\tikz@lib@fold@face@F}
             {\tikz@lib@fold@pentagon
                  {\tikz@lib@fold@face@G}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@cut@path}
                  {\tikz@lib@fold@ear@path}
             }
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@pentagon
             {\tikz@lib@fold@face@H}
             {\tikz@lib@fold@pentagon
                  {\tikz@lib@fold@face@I}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@cut@path}
                  {\tikz@lib@fold@ear@path}
             }
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@pentagon
             {\tikz@lib@fold@face@J}
             {\tikz@lib@fold@pentagon
                  {\tikz@lib@fold@face@K}
                  {\tikz@lib@fold@cut@path}
                  {\tikz@lib@fold@cut@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@cut@path}
                  {\tikz@lib@fold@pentagon
                       {\tikz@lib@fold@face@L}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@cut@path}
                  }
             }
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@cut@path}
        }
  \endgroup
}%


\def\tikzfoldingalternatedodecahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@pentagon
        {\tikz@lib@fold@face@A}
        {\tikz@lib@fold@pentagon
             {\tikz@lib@fold@face@B}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@pentagon
                  {\tikz@lib@fold@face@C}
                  {\tikz@lib@fold@pentagon
                       {\tikz@lib@fold@face@D}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@ear@path}
                  }
                  {\tikz@lib@fold@pentagon
                       {\tikz@lib@fold@face@E}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@ear@path}
                  }
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@pentagon
                       {\tikz@lib@fold@face@F}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@cut@path}
                  }
                  {\tikz@lib@fold@pentagon
                       {\tikz@lib@fold@face@G}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@ear@path}
                  }
             }
        }
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@pentagon
             {\tikz@lib@fold@face@H}
             {\tikz@lib@fold@pentagon
                  {\tikz@lib@fold@face@I}
                  {\tikz@lib@fold@cut@path}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@cut@path}
                  {\tikz@lib@fold@cut@path}
             }
             {\tikz@lib@fold@pentagon
                  {\tikz@lib@fold@face@J}
                  {\tikz@lib@fold@cut@path}
                  {\tikz@lib@fold@cut@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@pentagon
             {\tikz@lib@fold@face@K}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@pentagon
             {\tikz@lib@fold@face@L}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@cut@path}
        }
    }
    {\tikz@lib@fold@ear@path}
    {\tikz@lib@fold@ear@path}
  \endgroup
}%



\def\tikzfoldingtetrahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@triangle
        {\tikz@lib@fold@face@A}
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@B}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@C}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@D}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
    }
  \endgroup
}%


\def\tikzfoldingcube#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@square{\tikz@lib@fold@face@A}
    {
            \tikz@lib@fold@square{\tikz@lib@fold@face@B}
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@ear@path}
    }
    {
            \tikz@lib@fold@square{\tikz@lib@fold@face@C}
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@cut@path}
    }
    {
            \tikz@lib@fold@square{\tikz@lib@fold@face@D}
        {
                \tikz@lib@fold@square{\tikz@lib@fold@face@E}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
        }
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@ear@path}
    }
    {
            \tikz@lib@fold@square{\tikz@lib@fold@face@F}
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@cut@path}
    }
  \endgroup
}%



\def\tikzfoldingoctahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@triangle
        {\tikz@lib@fold@face@A}
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@B}
             {\tikz@lib@fold@triangle
                  {\tikz@lib@fold@face@C}
                  {\tikz@lib@fold@cut@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@triangle
                       {\tikz@lib@fold@face@D}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@cut@path}
                  }
             }
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@triangle
                  {\tikz@lib@fold@face@E}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@ear@path}
             }
        }
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@F}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@ear@path}
        }
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@G}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@triangle
                  {\tikz@lib@fold@face@H}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@cut@path}
             }
        }
  \endgroup
}%



\def\tikzfoldingicosahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@triangle
        {\tikz@lib@fold@face@A}
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@B}
             {\tikz@lib@fold@triangle
                  {\tikz@lib@fold@face@C}
                  {\tikz@lib@fold@triangle
                       {\tikz@lib@fold@face@D}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@triangle
                            {\tikz@lib@fold@face@E}
                            {\tikz@lib@fold@cut@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@triangle
                                 {\tikz@lib@fold@face@F}
                                 {\tikz@lib@fold@ear@path}
                                 {\tikz@lib@fold@path}
                                 {\tikz@lib@fold@triangle
                                      {\tikz@lib@fold@face@G}
                                      {\tikz@lib@fold@ear@path}
                                      {\tikz@lib@fold@path}
                                      {\tikz@lib@fold@cut@path}
                                 }
                            }
                       }
                  }
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@ear@path}
             }
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@ear@path}
        }
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@H}
             {\tikz@lib@fold@triangle
                  {\tikz@lib@fold@face@I}
                  {\tikz@lib@fold@triangle
                       {\tikz@lib@fold@face@J}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@triangle
                            {\tikz@lib@fold@face@K}
                            {\tikz@lib@fold@cut@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@triangle
                                 {\tikz@lib@fold@face@L}
                                 {\tikz@lib@fold@triangle
                                      {\tikz@lib@fold@face@M}
                                      {\tikz@lib@fold@cut@path}
                                      {\tikz@lib@fold@path}
                                      {\tikz@lib@fold@cut@path}
                                 }
                                 {\tikz@lib@fold@path}
                                 {\tikz@lib@fold@triangle
                                      {\tikz@lib@fold@face@N}
                                      {\tikz@lib@fold@ear@path}
                                      {\tikz@lib@fold@path}
                                      {\tikz@lib@fold@cut@path}
                                 }
                            }
                       }
                  }
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@ear@path}
             }
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@ear@path}
        }
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@O}
             {\tikz@lib@fold@triangle
                  {\tikz@lib@fold@face@P}
                  {\tikz@lib@fold@triangle
                       {\tikz@lib@fold@face@Q}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@triangle
                            {\tikz@lib@fold@face@R}
                            {\tikz@lib@fold@cut@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@triangle
                                 {\tikz@lib@fold@face@S}
                                 {\tikz@lib@fold@ear@path}
                                 {\tikz@lib@fold@path}
                                 {\tikz@lib@fold@triangle
                                      {\tikz@lib@fold@face@T}
                                      {\tikz@lib@fold@ear@path}
                                      {\tikz@lib@fold@path}
                                      {\tikz@lib@fold@cut@path}
                                 }
                            }
                       }
                  }
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@ear@path}
             }
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@ear@path}
        }
  \endgroup
}%



\def\tikzfoldingtruncatedtetrahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@hexagon
        {\tikz@lib@fold@face@A}
        {\tikz@lib@fold@hexagon
             {\tikz@lib@fold@face@B}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@C}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@hexagon
             {\tikz@lib@fold@face@D}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@E}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@hexagon
             {\tikz@lib@fold@face@F}
             {\tikz@lib@fold@triangle
                  {\tikz@lib@fold@face@G}
                  {\tikz@lib@fold@cut@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@cut@path}
             }
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@H}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
        }
  \endgroup
}%


\def\tikzfoldingcuboctahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@square
        {\tikz@lib@fold@face@A}
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@B}
             {\tikz@lib@fold@square
                  {\tikz@lib@fold@face@C}
                  {\tikz@lib@fold@triangle
                       {\tikz@lib@fold@face@D}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@square
                            {\tikz@lib@fold@face@E}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@ear@path}
                       }
                  }
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@ear@path}
             }
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@F}
             {\tikz@lib@fold@square
                  {\tikz@lib@fold@face@G}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@ear@path}
             }
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@H}
             {\tikz@lib@fold@square
                  {\tikz@lib@fold@face@I}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@triangle
                       {\tikz@lib@fold@face@J}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@cut@path}
                  }
             }
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@triangle
             {\tikz@lib@fold@face@K}
             {\tikz@lib@fold@square
                  {\tikz@lib@fold@face@L}
                  {\tikz@lib@fold@triangle
                       {\tikz@lib@fold@face@M}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@cut@path}
                  }
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@triangle
                       {\tikz@lib@fold@face@N}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@cut@path}
                  }
             }
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@cut@path}
    }
  \endgroup
}%


\def\tikzfoldingtruncatedcube#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@octagon
        {\tikz@lib@fold@face@A}
        {\tikz@lib@fold@octagon
             {\tikz@lib@fold@face@B}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@triangle
                     {\tikz@lib@fold@face@C}
                 {\tikz@lib@fold@ear@path}
                 {\tikz@lib@fold@path}
                 {\tikz@lib@fold@ear@path}
                 }
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@triangle
                     {\tikz@lib@fold@face@D}
                 {\tikz@lib@fold@ear@path}
                 {\tikz@lib@fold@path}
                 {\tikz@lib@fold@ear@path}
                 }
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@triangle
                     {\tikz@lib@fold@face@E}
                 {\tikz@lib@fold@ear@path}
                 {\tikz@lib@fold@path}
                 {\tikz@lib@fold@ear@path}
                 }
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@triangle
                     {\tikz@lib@fold@face@F}
                 {\tikz@lib@fold@ear@path}
                 {\tikz@lib@fold@path}
                 {\tikz@lib@fold@ear@path}
                 }
        }
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@octagon
             {\tikz@lib@fold@face@G}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@triangle
                     {\tikz@lib@fold@face@H}
                 {\tikz@lib@fold@ear@path}
                 {\tikz@lib@fold@path}
                 {\tikz@lib@fold@ear@path}
                 }
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@octagon
             {\tikz@lib@fold@face@I}
             {\tikz@lib@fold@octagon
                     {\tikz@lib@fold@face@J}
                 {\tikz@lib@fold@cut@path}
                 {\tikz@lib@fold@cut@path}
                 {\tikz@lib@fold@ear@path}
                 {\tikz@lib@fold@triangle
                         {\tikz@lib@fold@face@K}
                     {\tikz@lib@fold@ear@path}
                     {\tikz@lib@fold@path}
                     {\tikz@lib@fold@ear@path}
                     }
                 {\tikz@lib@fold@path}
                 {\tikz@lib@fold@triangle
                         {\tikz@lib@fold@face@L}
                     {\tikz@lib@fold@ear@path}
                     {\tikz@lib@fold@path}
                     {\tikz@lib@fold@ear@path}
                     }
                 {\tikz@lib@fold@ear@path}
                 {\tikz@lib@fold@cut@path}
                 }
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@octagon
             {\tikz@lib@fold@face@M}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@cut@path}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@triangle
                     {\tikz@lib@fold@face@N}
                 {\tikz@lib@fold@ear@path}
                 {\tikz@lib@fold@path}
                 {\tikz@lib@fold@ear@path}
                 }
             {\tikz@lib@fold@ear@path}
             {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@cut@path}
  \endgroup
}%



\def\tikzfoldingtruncatedoctahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@hexagon
        {\tikz@lib@fold@face@A}
        {\tikz@lib@fold@hexagon
            {\tikz@lib@fold@face@B}
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@C}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@cut@path}
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@cut@path}
            }
            {\tikz@lib@fold@hexagon
                {\tikz@lib@fold@face@D}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@ear@path}
            }
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@E}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@cut@path}
            }
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@F}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@cut@path}
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@ear@path}
            }
            {\tikz@lib@fold@hexagon
                {\tikz@lib@fold@face@G}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@ear@path}
            }
        }
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@square
            {\tikz@lib@fold@face@H}
            {\tikz@lib@fold@hexagon
                {\tikz@lib@fold@face@I}
                {\tikz@lib@fold@hexagon
                    {\tikz@lib@fold@face@J}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@ear@path}
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@ear@path}
                    {\tikz@lib@fold@cut@path}
                }
                {\tikz@lib@fold@square
                    {\tikz@lib@fold@face@K}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@ear@path}
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@cut@path}
                }
                {\tikz@lib@fold@hexagon
                    {\tikz@lib@fold@face@L}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@cut@path}
                }
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@hexagon
                    {\tikz@lib@fold@face@M}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@cut@path}
                }
                {\tikz@lib@fold@square
                    {\tikz@lib@fold@face@N}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@ear@path}
                }
            }
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
        }
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@cut@path}
  \endgroup
}%



\def\tikzfoldingrhombicuboctahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@square
        {\tikz@lib@fold@face@A}
        {\tikz@lib@fold@square
            {\tikz@lib@fold@face@B}
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@C}
                {\tikz@lib@fold@square
                    {\tikz@lib@fold@face@D}
                    {\tikz@lib@fold@square
                        {\tikz@lib@fold@face@E}
                        {\tikz@lib@fold@cut@path}
                        {\tikz@lib@fold@square
                            {\tikz@lib@fold@face@F}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@cut@path}
                        }
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@square
                            {\tikz@lib@fold@face@G}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@cut@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@ear@path}
                        }
                    }
                    {\tikz@lib@fold@triangle
                        {\tikz@lib@fold@face@H}
                        {\tikz@lib@fold@ear@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@cut@path}
                    }
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@triangle
                        {\tikz@lib@fold@face@I}
                        {\tikz@lib@fold@cut@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@ear@path}
                    }
                }
                {\tikz@lib@fold@square
                    {\tikz@lib@fold@face@J}
                    {\tikz@lib@fold@ear@path}
                    {\tikz@lib@fold@ear@path}
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@cut@path}
                }
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@square
                    {\tikz@lib@fold@face@K}
                    {\tikz@lib@fold@ear@path}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@ear@path}
                }
            }
            {\tikz@lib@fold@triangle
                {\tikz@lib@fold@face@L}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@cut@path}
            }
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@triangle
                {\tikz@lib@fold@face@M}
                {\tikz@lib@fold@cut@path}
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@ear@path}
            }
        }
        {\tikz@lib@fold@square
            {\tikz@lib@fold@face@N}
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@O}
                {\tikz@lib@fold@cut@path}
                {\tikz@lib@fold@cut@path}
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@cut@path}
            }
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@square
            {\tikz@lib@fold@face@P}
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@Q}
                {\tikz@lib@fold@square
                    {\tikz@lib@fold@face@R}
                    {\tikz@lib@fold@ear@path}
                    {\tikz@lib@fold@triangle
                        {\tikz@lib@fold@face@S}
                        {\tikz@lib@fold@cut@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@ear@path}
                    }
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@triangle
                        {\tikz@lib@fold@face@T}
                        {\tikz@lib@fold@ear@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@cut@path}
                    }
                }
                {\tikz@lib@fold@square
                    {\tikz@lib@fold@face@U}
                    {\tikz@lib@fold@ear@path}
                    {\tikz@lib@fold@cut@path}
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@ear@path}
                }
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@square
                    {\tikz@lib@fold@face@V}
                    {\tikz@lib@fold@ear@path}
                    {\tikz@lib@fold@ear@path}
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@cut@path}
                }
            }
            {\tikz@lib@fold@triangle
                {\tikz@lib@fold@face@W}
                {\tikz@lib@fold@cut@path}
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@ear@path}
            }
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@triangle
                {\tikz@lib@fold@face@X}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@cut@path}
            }
        }
        {\tikz@lib@fold@square
            {\tikz@lib@fold@face@Y}
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@Z}
                {\tikz@lib@fold@cut@path}
                {\tikz@lib@fold@cut@path}
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@cut@path}
            }
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
        }
  \endgroup
}%


\def\tikzfoldingtruncatedcuboctahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@square
        {\tikz@lib@fold@face@A}
        {\tikz@lib@fold@octagon
            {\tikz@lib@fold@face@B}
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@C}
           {\tikz@lib@fold@octagon
               {\tikz@lib@fold@face@D}
               {\tikz@lib@fold@square
                   {\tikz@lib@fold@face@E}
                   {\tikz@lib@fold@cut@path}
                   {\tikz@lib@fold@hexagon
                       {\tikz@lib@fold@face@F}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@ear@custom@right@path{15}}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@ear@path}
                   }
                   {\tikz@lib@fold@path}
                   {\tikz@lib@fold@hexagon
                       {\tikz@lib@fold@face@G}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@ear@custom@left@path{15}}
                       {\tikz@lib@fold@ear@path}
                   }
               }
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@square
                   {\tikz@lib@fold@face@H}
                   {\tikz@lib@fold@ear@path}
                   {\tikz@lib@fold@cut@path}
                   {\tikz@lib@fold@path}
                   {\tikz@lib@fold@cut@path}
               }
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@square
                   {\tikz@lib@fold@face@I}
                   {\tikz@lib@fold@ear@path}
                   {\tikz@lib@fold@cut@path}
                   {\tikz@lib@fold@path}
                   {\tikz@lib@fold@cut@path}
               }
               {\tikz@lib@fold@cut@path}
           }
           {\tikz@lib@fold@hexagon
               {\tikz@lib@fold@face@J}
               {\tikz@lib@fold@ear@path}
               {\tikz@lib@fold@ear@path}
               {\tikz@lib@fold@ear@custom@right@path{15}}
               {\tikz@lib@fold@path}
               {\tikz@lib@fold@ear@custom@left@path{15}}
               {\tikz@lib@fold@ear@path}
           }
           {\tikz@lib@fold@path}
           {\tikz@lib@fold@hexagon
               {\tikz@lib@fold@face@K}
               {\tikz@lib@fold@ear@path}
               {\tikz@lib@fold@ear@path}
               {\tikz@lib@fold@ear@custom@right@path{15}}
               {\tikz@lib@fold@path}
               {\tikz@lib@fold@ear@custom@left@path{15}}
               {\tikz@lib@fold@ear@path}
           }
            }
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@L}
           {\tikz@lib@fold@ear@path}
           {\tikz@lib@fold@cut@path}
           {\tikz@lib@fold@path}
           {\tikz@lib@fold@cut@path}
            }
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@M}
           {\tikz@lib@fold@ear@path}
           {\tikz@lib@fold@cut@path}
           {\tikz@lib@fold@path}
           {\tikz@lib@fold@cut@path}
            }
            {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@hexagon
            {\tikz@lib@fold@face@N}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@ear@custom@right@path{15}}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@custom@left@path{15}}
            {\tikz@lib@fold@ear@path}
        }
        {\tikz@lib@fold@octagon
            {\tikz@lib@fold@face@O}
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@P}
           {\tikz@lib@fold@octagon
               {\tikz@lib@fold@face@Q}
               {\tikz@lib@fold@ear@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@square
                   {\tikz@lib@fold@face@R}
                   {\tikz@lib@fold@ear@path}
                   {\tikz@lib@fold@cut@path}
                   {\tikz@lib@fold@path}
                   {\tikz@lib@fold@cut@path}
               }
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@square
                   {\tikz@lib@fold@face@S}
                   {\tikz@lib@fold@ear@path}
                   {\tikz@lib@fold@cut@path}
                   {\tikz@lib@fold@path}
                   {\tikz@lib@fold@cut@path}
               }
               {\tikz@lib@fold@cut@path}
           }
           {\tikz@lib@fold@hexagon
               {\tikz@lib@fold@face@T}
               {\tikz@lib@fold@ear@path}
               {\tikz@lib@fold@ear@path}
               {\tikz@lib@fold@ear@custom@right@path{15}}
               {\tikz@lib@fold@path}
               {\tikz@lib@fold@ear@custom@left@path{15}}
               {\tikz@lib@fold@ear@path}
           }
           {\tikz@lib@fold@path}
           {\tikz@lib@fold@hexagon
               {\tikz@lib@fold@face@U}
               {\tikz@lib@fold@ear@path}
               {\tikz@lib@fold@ear@path}
               {\tikz@lib@fold@ear@custom@right@path{15}}
               {\tikz@lib@fold@path}
               {\tikz@lib@fold@ear@custom@left@path{15}}
               {\tikz@lib@fold@ear@path}
           }
            }
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@V}
           {\tikz@lib@fold@octagon
               {\tikz@lib@fold@face@W}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@cut@path}
           }
           {\tikz@lib@fold@cut@path}
           {\tikz@lib@fold@path}
           {\tikz@lib@fold@cut@path}
            }
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@square
                {\tikz@lib@fold@face@X}
           {\tikz@lib@fold@octagon
               {\tikz@lib@fold@face@Y}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@cut@path}
               {\tikz@lib@fold@cut@path}
           }
           {\tikz@lib@fold@cut@path}
           {\tikz@lib@fold@path}
           {\tikz@lib@fold@cut@path}
            }
            {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@hexagon
            {\tikz@lib@fold@face@Z}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@ear@custom@right@path{15}}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@custom@left@path{15}}
            {\tikz@lib@fold@ear@path}
        }
  \endgroup
}%


\def\tikzfoldingsnubcube#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@square{\tikz@lib@fold@face@A}
    {
        \tikz@lib@fold@triangle{\tikz@lib@fold@face@B}
        {
            \tikz@lib@fold@triangle{\tikz@lib@fold@face@C}
            {
                \tikz@lib@fold@triangle{\tikz@lib@fold@face@D}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@path}
                {
                    \tikz@lib@fold@square{\tikz@lib@fold@face@E}
                    {
                        \tikz@lib@fold@triangle{\tikz@lib@fold@face@F}
                        {
                            \tikz@lib@fold@triangle{\tikz@lib@fold@face@G}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@ear@path}
                        }
                        {\tikz@lib@fold@path}
                        {
                            \tikz@lib@fold@triangle{\tikz@lib@fold@face@H}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@cut@path}
                        }
                    }
                    {
                        \tikz@lib@fold@triangle{\tikz@lib@fold@face@I}
                        {\tikz@lib@fold@ear@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@ear@path}
                    }
                    {\tikz@lib@fold@path}
                    {
                        \tikz@lib@fold@triangle{\tikz@lib@fold@face@J}
                        {\tikz@lib@fold@cut@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@cut@path}
                    }
                }
            }
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@cut@path}
    }
    {
        \tikz@lib@fold@triangle{\tikz@lib@fold@face@K}
        {
            \tikz@lib@fold@triangle{\tikz@lib@fold@face@L}
            {
                \tikz@lib@fold@triangle{\tikz@lib@fold@face@M}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@path}
                {
                    \tikz@lib@fold@square{\tikz@lib@fold@face@N}
                    {
                        \tikz@lib@fold@triangle{\tikz@lib@fold@face@O}
                        {
                            \tikz@lib@fold@triangle{\tikz@lib@fold@face@P}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@ear@path}
                        }
                        {\tikz@lib@fold@path}
                        {
                            \tikz@lib@fold@triangle{\tikz@lib@fold@face@Q}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@cut@path}
                        }
                    }
                    {
                        \tikz@lib@fold@triangle{\tikz@lib@fold@face@R}
                        {\tikz@lib@fold@ear@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@ear@path}
                    }
                    {\tikz@lib@fold@path}
                    {
                        \tikz@lib@fold@triangle{\tikz@lib@fold@face@S}
                        {\tikz@lib@fold@cut@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@cut@path}
                    }
                }
            }
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@cut@path}
    }
    {
        \tikz@lib@fold@triangle{\tikz@lib@fold@face@T}
        {
            \tikz@lib@fold@triangle{\tikz@lib@fold@face@U}
            {
                \tikz@lib@fold@triangle{\tikz@lib@fold@face@V}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@path}
                {
                    \tikz@lib@fold@square{\tikz@lib@fold@face@W}
                    {
                        \tikz@lib@fold@triangle{\tikz@lib@fold@face@X}
                        {
                            \tikz@lib@fold@triangle{\tikz@lib@fold@face@Y}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@ear@path}
                        }
                        {\tikz@lib@fold@path}
                        {
                            \tikz@lib@fold@triangle{\tikz@lib@fold@face@Z}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@cut@path}
                        }
                    }
                    {
                        \tikz@lib@fold@triangle{\tikz@lib@fold@face@AA}
                        {\tikz@lib@fold@ear@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@ear@path}
                    }
                    {\tikz@lib@fold@path}
                    {
                        \tikz@lib@fold@triangle{\tikz@lib@fold@face@AB}
                        {\tikz@lib@fold@cut@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@cut@path}
                    }
                }
            }
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@cut@path}
    }
    {
        \tikz@lib@fold@triangle{\tikz@lib@fold@face@AC}
        {
            \tikz@lib@fold@triangle{\tikz@lib@fold@face@AD}
            {
                \tikz@lib@fold@triangle{\tikz@lib@fold@face@AE}
                {\tikz@lib@fold@ear@path}
                {\tikz@lib@fold@path}
                {
                    \tikz@lib@fold@square{\tikz@lib@fold@face@AF}
                    {
                        \tikz@lib@fold@triangle{\tikz@lib@fold@face@AG}
                        {
                            \tikz@lib@fold@triangle{\tikz@lib@fold@face@AH}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@ear@path}
                        }
                        {\tikz@lib@fold@path}
                        {
                            \tikz@lib@fold@triangle{\tikz@lib@fold@face@AI}
                            {
                                \tikz@lib@fold@square{\tikz@lib@fold@face@AJ}
                                {\tikz@lib@fold@cut@path}
                                {\tikz@lib@fold@cut@path}
                                {\tikz@lib@fold@path}
                                {\tikz@lib@fold@cut@path}
                            }
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@cut@path}
                        }
                    }
                    {
                        \tikz@lib@fold@triangle{\tikz@lib@fold@face@AK}
                        {\tikz@lib@fold@ear@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@ear@path}
                    }
                    {\tikz@lib@fold@path}
                    {
                        \tikz@lib@fold@triangle{\tikz@lib@fold@face@AL}
                        {\tikz@lib@fold@cut@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@cut@path}
                    }
                }
            }
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@cut@path}
        }
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@cut@path}
    }
  \endgroup
}%


\def\tikzfoldingicosidodecahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@pentagon{\tikz@lib@fold@face@A}
        {
             \tikz@lib@fold@triangle{\tikz@lib@fold@face@B}
             {
                  \tikz@lib@fold@pentagon{\tikz@lib@fold@face@C}
                  {
                      \tikz@lib@fold@triangle{\tikz@lib@fold@face@D}
                      {\tikz@lib@fold@ear@path}
                      {\tikz@lib@fold@path}
                      {\tikz@lib@fold@ear@path}
                  }
                  {\tikz@lib@fold@ear@custom@right@path{24}}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@cut@path}
                  {
                      \tikz@lib@fold@triangle{\tikz@lib@fold@face@E}
                      {\tikz@lib@fold@ear@path}
                      {\tikz@lib@fold@path}
                      {\tikz@lib@fold@cut@path}
                  }
             }
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
         }
        {
             \tikz@lib@fold@triangle{\tikz@lib@fold@face@F}
             {
                  \tikz@lib@fold@pentagon{\tikz@lib@fold@face@G}
                  {\tikz@lib@fold@ear@path}
                  {\tikz@lib@fold@ear@custom@right@path{24}}
                  {\tikz@lib@fold@path}
                  {\tikz@lib@fold@cut@path}
                  {
                      \tikz@lib@fold@triangle{\tikz@lib@fold@face@H}
                      {\tikz@lib@fold@ear@path}
                      {\tikz@lib@fold@path}
                      {
                          \tikz@lib@fold@pentagon{\tikz@lib@fold@face@I}
                          {\tikz@lib@fold@ear@path}
                          {
                              \tikz@lib@fold@triangle{\tikz@lib@fold@face@J}
                              {\tikz@lib@fold@ear@path}
                              {\tikz@lib@fold@path}
                              {\tikz@lib@fold@ear@path}
                          }
                          {\tikz@lib@fold@path}
                          {\tikz@lib@fold@cut@path}
                          {\tikz@lib@fold@cut@path}
                      }
                  }
             }
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
         }
        {
             \tikz@lib@fold@triangle{\tikz@lib@fold@face@K}
             {\tikz@lib@fold@ear@custom@right@path{24}}
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
        }
        {
            \tikz@lib@fold@triangle{\tikz@lib@fold@face@L}
            {
                \tikz@lib@fold@pentagon{\tikz@lib@fold@face@M}
                {
                    \tikz@lib@fold@triangle{\tikz@lib@fold@face@N}
                    {\tikz@lib@fold@ear@path}
                    {\tikz@lib@fold@path}
                    {
                        \tikz@lib@fold@pentagon{\tikz@lib@fold@face@O}
                        {
                            \tikz@lib@fold@triangle{\tikz@lib@fold@face@P}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@ear@path}
                        }
                        {\tikz@lib@fold@ear@path}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@cut@path}
                        {\tikz@lib@fold@cut@path}
                    }
                }
                {\tikz@lib@fold@ear@custom@right@path{24}}
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@cut@path}
                {
                    \tikz@lib@fold@triangle{\tikz@lib@fold@face@Q}
                    {\tikz@lib@fold@ear@custom@right@path{24}}
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@cut@path}
                }
            }
            {\tikz@lib@fold@path}
            {
                \tikz@lib@fold@pentagon{\tikz@lib@fold@face@R}
                {
                    \tikz@lib@fold@triangle{\tikz@lib@fold@face@S}
                    {
                        \tikz@lib@fold@pentagon{\tikz@lib@fold@face@T}
                        {\tikz@lib@fold@ear@path}
                        {\tikz@lib@fold@ear@custom@right@path{24}}
                        {\tikz@lib@fold@path}
                        {
                            \tikz@lib@fold@triangle{\tikz@lib@fold@face@U}
                            {
                                 \tikz@lib@fold@pentagon{\tikz@lib@fold@face@V}
                                 {\tikz@lib@fold@cut@path}
                                 {\tikz@lib@fold@ear@custom@right@path{24}}
                                 {\tikz@lib@fold@path}
                                 {\tikz@lib@fold@cut@path}
                                 {\tikz@lib@fold@ear@path}
                            }
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@cut@path}
                        }
                        {
                            \tikz@lib@fold@triangle{\tikz@lib@fold@face@W}
                            {\tikz@lib@fold@ear@path}
                            {\tikz@lib@fold@path}
                            {\tikz@lib@fold@cut@path}
                        }
                    }
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@cut@path}
                }
                {
                    \tikz@lib@fold@triangle{\tikz@lib@fold@face@X}
                    {\tikz@lib@fold@ear@custom@right@path{24}}
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@cut@path}
                }
                {\tikz@lib@fold@path}
                {\tikz@lib@fold@cut@path}
                {
                    \tikz@lib@fold@triangle{\tikz@lib@fold@face@Y}
                    {
                        \tikz@lib@fold@pentagon{\tikz@lib@fold@face@Z}
                        {\tikz@lib@fold@ear@path}
                        {\tikz@lib@fold@ear@custom@right@path{24}}
                        {\tikz@lib@fold@path}
                        {\tikz@lib@fold@cut@path}
                        {\tikz@lib@fold@cut@path}
                    }
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@cut@path}
                }
            }
        }
        {
             \tikz@lib@fold@triangle{\tikz@lib@fold@face@AA}
             {
                 \tikz@lib@fold@pentagon{\tikz@lib@fold@face@AB}
                 {
                    \tikz@lib@fold@triangle{\tikz@lib@fold@face@AC}
                    {\tikz@lib@fold@ear@path}
                    {\tikz@lib@fold@path}
                    {
                       \tikz@lib@fold@pentagon{\tikz@lib@fold@face@AD}
                       {
                           \tikz@lib@fold@triangle{\tikz@lib@fold@face@AE}
                           {\tikz@lib@fold@cut@path}
                           {\tikz@lib@fold@path}
                           {\tikz@lib@fold@cut@path}
                       }
                       {\tikz@lib@fold@ear@path}
                       {\tikz@lib@fold@path}
                       {\tikz@lib@fold@cut@path}
                       {\tikz@lib@fold@cut@path}
                    }
                 }
                 {\tikz@lib@fold@ear@custom@right@path{24}}
                 {\tikz@lib@fold@path}
                 {\tikz@lib@fold@cut@path}
                 {
                    \tikz@lib@fold@triangle{\tikz@lib@fold@face@AF}
                    {\tikz@lib@fold@ear@custom@right@path{24}}
                    {\tikz@lib@fold@path}
                    {\tikz@lib@fold@cut@path}
                 }
             }
             {\tikz@lib@fold@path}
             {\tikz@lib@fold@cut@path}
        }
  \endgroup
}%

\def\tikzfoldingrhombicdodecahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@squarerhombusr{\tikz@lib@fold@face@B}
    {\tikz@lib@fold@squarerhombusl{\scope[rotate=90]\tikz@lib@fold@face@C\endscope}
      {\tikz@lib@fold@cut@path}
      {\tikz@lib@fold@ear@path}
      {\tikz@lib@fold@path}
      {\tikz@lib@fold@ear@path}
    }
    {\tikz@lib@fold@squarerhombusr{\tikz@lib@fold@face@E}
      {\tikz@lib@fold@squarerhombusl{\scope[rotate=90]\tikz@lib@fold@face@F\endscope}
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@ear@path}
      }
      {\tikz@lib@fold@cut@path}
      {\tikz@lib@fold@path}
      {\tikz@lib@fold@squarerhombusr{\scope[rotate=180]\tikz@lib@fold@face@D\endscope}
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@cut@path}
      }
    }
    {\tikz@lib@fold@squarerhombusl{\scope[rotate=-90]\tikz@lib@fold@face@H\endscope}
      {\tikz@lib@fold@squarerhombusr{\scope[rotate=180]\tikz@lib@fold@face@G\endscope}
        {\tikz@lib@fold@squarerhombusl{\scope[rotate=-90]\tikz@lib@fold@face@L\endscope}
          {\tikz@lib@fold@squarerhombusr{\scope[rotate=180]\tikz@lib@fold@face@K\endscope}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
          }
          {\tikz@lib@fold@squarerhombusl{\scope[rotate=90]\tikz@lib@fold@face@J\endscope}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
          }
          {\tikz@lib@fold@path}
          {\tikz@lib@fold@ear@path}
        }
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@ear@path}
      }
      {\tikz@lib@fold@squarerhombusl{\tikz@lib@fold@face@H}
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@ear@path}
      }
      {\tikz@lib@fold@path}
      {\tikz@lib@fold@ear@path}
    }
    {\tikz@lib@fold@squarerhombusr{\tikz@lib@fold@face@F}
      {\tikz@lib@fold@cut@path}
      {\tikz@lib@fold@cut@path}
      {\tikz@lib@fold@path}
      {\tikz@lib@fold@cut@path}
    }
  \endgroup
}%

\def\tikzfoldinggoldenrhombicdodecahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@A}
    {\tikz@lib@fold@goldenrhombusl{\scope[rotate=180]\tikz@lib@fold@face@B\endscope}
      {\tikz@lib@fold@cut@path}
      {\tikz@lib@fold@ear@path}
      {\tikz@lib@fold@path}
      {\tikz@lib@fold@path}
    }
    {\tikz@lib@fold@goldenrhombusr{\scope[rotate=180]\tikz@lib@fold@face@E\endscope}
      {\tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@H}
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@ear@path}
      }
      {\tikz@lib@fold@cut@path}
      {\tikz@lib@fold@path}
      {\tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@G}
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@cut@path}
      }
    }
    {\tikz@lib@fold@goldenrhombusl{\scope[rotate=180]\tikz@lib@fold@face@D\endscope}
      {\tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@I}
        {\tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@L}
          {\tikz@lib@fold@goldenrhombusr{\scope[rotate=180]\tikz@lib@fold@face@K\endscope}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
          }
          {\tikz@lib@fold@goldenrhombusl{\scope[rotate=180]\tikz@lib@fold@face@J\endscope}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@path}
          }
          {\tikz@lib@fold@path}
          {\tikz@lib@fold@ear@path}
        }
        {\tikz@lib@fold@cut@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@ear@path}
      }
      {\tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@F}
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@ear@path}
      }
      {\tikz@lib@fold@path}
      {\tikz@lib@fold@path}
    }
    {\tikz@lib@fold@goldenrhombusr{\scope[rotate=180]\tikz@lib@fold@face@C\endscope}
      {\tikz@lib@fold@cut@path}
      {\tikz@lib@fold@cut@path}
      {\tikz@lib@fold@path}
      {\tikz@lib@fold@cut@path}
    }
  \endgroup
}%


\def\tikzfoldingrhombictricontahedron#1[#2]#3;{%
  \begingroup%
    \tikzset{#2}%
    \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@A}
    { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@B}
      { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@F}
        { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@I}
          { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@J}
            { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@K}
              {\tikz@lib@fold@path}
              {\tikz@lib@fold@ear@path}
              {\tikz@lib@fold@path}
              {\tikz@lib@fold@ear@path}
            }
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
          }
          {\tikz@lib@fold@ear@path}
          {\tikz@lib@fold@path}
          {\tikz@lib@fold@path}
        }
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@path}
        { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@H}
          {\tikz@lib@fold@path}
          {\tikz@lib@fold@cut@path}
          {\tikz@lib@fold@path}
          {\tikz@lib@fold@ear@path}
        }
      }
      { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@G}
        { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@L}
          { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@N}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
          }
          {\tikz@lib@fold@cut@path}
          {\tikz@lib@fold@path}
          { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@M}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
          }
        }
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@path}
      }
      {\tikz@lib@fold@path}
      {\tikz@lib@fold@cut@path}
    }
    { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@C}
          { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@N}
          { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@N}
          { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@N}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
          }
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
          }
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
          }
          {\tikz@lib@fold@ear@path}
          {\tikz@lib@fold@path}
          { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@N}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@cut@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
          }
    }
    { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@D}
      { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@D}
        { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@D}
          { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@D}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
          }
          {\tikz@lib@fold@ear@path}
          {\tikz@lib@fold@path}
          {\tikz@lib@fold@ear@path}
        }
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@path}
        { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@D}
          {\tikz@lib@fold@path}
          {\tikz@lib@fold@ear@path}
          {\tikz@lib@fold@path}
          {\tikz@lib@fold@ear@path}
        }
      }
      { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@D}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@ear@path}
      }
      {\tikz@lib@fold@path}
      {\tikz@lib@fold@ear@path}
    }
    { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@E}
      { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@E}
        { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@E}
          { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@E}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@path}
          }
          {\tikz@lib@fold@ear@path}
          {\tikz@lib@fold@path}
          { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@E}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@cut@path}
          }
        }
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@cut@path}
      }
      {\tikz@lib@fold@path}
      {\tikz@lib@fold@path}
      { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@E}
        { \tikz@lib@fold@goldenrhombusl{\tikz@lib@fold@face@E}
          { \tikz@lib@fold@goldenrhombusr{\tikz@lib@fold@face@E}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@ear@path}
            {\tikz@lib@fold@path}
            {\tikz@lib@fold@path}
          }
          {\tikz@lib@fold@ear@path}
          {\tikz@lib@fold@path}
          {\tikz@lib@fold@ear@path}
        }
        {\tikz@lib@fold@ear@path}
        {\tikz@lib@fold@path}
        {\tikz@lib@fold@path}
      }
    }
  \endgroup
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfolding.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfpu.code.tex ====

\usepgflibrary{fpu}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfpu.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryintersections.code.tex ====

\usepgflibrary{intersections}%


\pgfkeys{%
  /tikz/name path global/.code={%
    \expandafter\global\expandafter\let\csname tikz@intersect@path@name@#1\endcsname=\relax
    \tikz@key@name@path{#1}{\gdef}%
  },
  /tikz/name path local/.code={%
    \pgfkeys{/tikz/name path={#1}}%
  },
  /tikz/name path/.code={%
    \tikz@key@name@path{#1}{\def}%
  },
}%

\def\tikz@key@name@path#1#2{%
    \tikz@addmode{%
      \pgfsyssoftpath@getcurrentpath\tikz@intersect@temppath@round%
      \pgfprocessround\tikz@intersect@temppath@round\tikz@intersect@temppath%
      \ifx\tikz@intersect@namedpaths\pgfutil@empty%
      \else%
        \tikz@intersect@namedpaths%
      \fi%
      \tikz@intersect@addto@path@names{#1}{#2}%
    }%
}%

\def\tikz@intersect@addto@path@names#1#2{%
  \edef\tikz@marshal{#2\expandafter\noexpand\csname tikz@intersect@path@name@#1\endcsname}%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\tikz@marshal%
    \expandafter\expandafter\expandafter{\expandafter\tikz@marshal\expandafter{\tikz@intersect@temppath}}%
  \expandafter\pgfutil@g@addto@macro\expandafter\tikz@intersect@namedpaths\expandafter{\tikz@marshal}%
}%

\let\tikz@finish@orig=\tikz@finish
\def\tikz@finish{%
  \tikz@finish@orig%
  \tikz@intersect@finish%
}%

\def\tikz@intersect@finish{%
  \tikz@intersect@namedpaths%
}%

\let\tikz@intersect@namedpaths=\pgfutil@empty
\let\tikz@intersect@path@a=\pgfutil@empty
\let\tikz@intersect@path@b=\pgfutil@empty
\let\tikz@intersect@name=\pgfutil@empty
\let\tikz@intersect@total=\pgfutil@empty

\tikzset{
  every scope/.append style={
    execute at begin scope={\let\tikz@intersect@namedpaths@outside\tikz@intersect@namedpaths},
    execute at end scope={\global\let\tikz@intersect@namedpaths\tikz@intersect@namedpaths@outside},
  },
  name intersections/.code={%
    \tikzset{/tikz/intersection/.cd,
      by=,
      #1}%
    \pgfutil@ifundefined{tikz@intersect@path@name@\tikz@intersect@path@a}{%
      \tikzerror{I do not know the path named `\tikz@intersect@path@a'. Perhaps you misspelt it}}%
    {\pgfutil@ifundefined{tikz@intersect@path@name@\tikz@intersect@path@b}{%
        \tikzerror{I do not know the path named `\tikz@intersect@path@b'. Perhaps you misspelt it}}%
      {%
        \pgfintersectionofpaths%
        {%
          \expandafter\pgfsetpath\csname tikz@intersect@path@name@\tikz@intersect@path@a\endcsname%
        }%
        {%
          \expandafter\pgfsetpath\csname tikz@intersect@path@name@\tikz@intersect@path@b\endcsname%
        }%
        \ifx\tikz@intersect@total\pgfutil@empty%
        \else%
          \expandafter\let\tikz@intersect@total=\pgfintersectionsolutions%
        \fi%
        \ifx\tikz@intersect@name\pgfutil@empty%
          \def\tikz@intersect@@name{intersection}%
        \else%
          \let\tikz@intersect@@name=\tikz@intersect@name%
        \fi%
        \pgfmathloop%
        \ifnum\pgfmathcounter>\pgfintersectionsolutions\relax%
        \else%
          \path[reset cm]\pgfextra{\pgftransformshift{\pgfpointintersectionsolution{\pgfmathcounter}}}%
            coordinate (\tikz@intersect@@name-\pgfmathcounter);
        \repeatpgfmathloop%
        \ifx\tikz@intersect@by\pgfutil@empty%
        \else%
          \foreach\tikz@intersect@name[count=\tikz@intersection@count] in \tikz@intersect@by%
          {\expandafter\tikz@intersect@name@parse\tikz@intersect@name\pgf@stop}%
        \fi%
      }%
    }%
  },%
  intersection/.cd,
  of/.code=\tikz@intersect@path@names@parse#1\tikz@stop,%
  name/.store in=\tikz@intersect@name,
  total/.store in=\tikz@intersect@total,
  by/.store in=\tikz@intersect@by,
  sort by/.code=\edef\tikz@intersect@sort@by{#1}\tikz@intersect@check@sort@by%
}%


\def\tikz@intersect@check@sort@by{%
    \ifx\tikz@intersect@sort@by\tikz@intersect@path@a%
        \pgfintersectionsortbyfirstpath%
    \else%
        \ifx\tikz@intersect@sort@by\tikz@intersect@path@b%
            \pgfintersectionsortbysecondpath%
        \else%
            \pgf@intersect@sortfalse%
        \fi%
    \fi%
}%
\def\tikz@intersect@path@names@parse#1 and #2\tikz@stop{%
  \def\tikz@intersect@path@a{#1}%
  \def\tikz@intersect@path@b{#2}%
}%

\def\tikz@intersect@name@parse{\pgfutil@ifnextchar[\tikz@intersect@name@parse@opt{\tikz@intersect@name@parse@opt[]}}%
\def\tikz@intersect@name@parse@opt[#1]#2\pgf@stop{%
  \coordinate [#1] (#2) at (\tikz@intersect@@name-\tikz@intersection@count);
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryintersections.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarylindenmayersystems.code.tex ====

\usepgflibrary{lindenmayersystems}%

\def\tikz@@lsystem-system{%
    \pgfutil@ifnextchar[{\tikz@lsystem@options}{\tikz@lsystem@options[]}}%

\def\tikz@lsystem indenmayer system{%
    \pgfutil@ifnextchar[{\tikz@lsystem@options}{\tikz@lsystem@options[]}}%

\def\tikz@lsystem@options[#1]{%
    \tikzset{#1}%
    \ifx\tikz@lsystem@rules\pgfutil@empty%
    \else%
        \tikz@lsystem@declare%
        \def\tikz@lsystem@name{tikz@temp}%
    \fi%
    \ifx\tikz@lsystem@anchor\pgfutil@empty%
        \pgfpathmoveto{\pgfqpoint{\tikz@lastxsaved}{\tikz@lastysaved}}%
        \pgflindenmayersystem{\tikz@lsystem@name}{\tikz@lsystem@axiom}{\tikz@lsystem@order}%
    \else%
        \pgfextract@process\tikz@lsystem@pos{\pgfqpoint{\tikz@lastxsaved}{\tikz@lastysaved}}%
        \setbox\pgfnodeparttextbox=\hbox{%
            \pgfinterruptpicture%
            \pgfpicture%
                \pgfpathmoveto{\pgfpointorigin}%
                \pgflindenmayersystem{\tikz@lsystem@name}{\tikz@lsystem@axiom}{\tikz@lsystem@order}%
                \begingroup%
                    \tikz@finish%
            \endpgfpicture%
            \endpgfinterruptpicture%
        }%
        {%
            \pgftransformshift{\tikz@lsystem@pos}%
            \tikzset{inner sep=0pt, outer sep=0pt, minimum size=0pt}%
            \pgfmultipartnode{rectangle}{\tikz@lsystem@anchor}{lindenmayer system}{\pgfusepath{discard}}%
        }%
    \fi%
    \tikz@scan@next@command}%

\tikzset{%
    lindenmayer system/.style={/pgf/lindenmayer system/.cd, #1,/tikz/.cd},
    l-system/.style={lindenmayer system={#1}},
}%
\pgfkeys{/pgf/lindenmayer system/.cd,
    name/.code=\edef\tikz@lsystem@name{#1}\let\tikz@lsystem@rules=\pgfutil@empty,%
    axiom/.store in=\tikz@lsystem@axiom,%
    order/.store in=\tikz@lsystem@order,
    .unknown/.code={%
        \pgfutil@ifundefined{pgf@lsystem@\pgfkeyscurrentname}{%
            \pgfkeys{/errors/unknown key={/pgf/lindenmayer system/\pgfkeyscurrentname}{#1}}%
            \let\tikz@lsystem@name=\pgfutil@empty%
        }%
        {\edef\tikz@lsystem@name{\pgfkeyscurrentname}}
    },%
    anchor/.store in=\tikz@lsystem@anchor,%
    rule set/.store in=\tikz@lsystem@rules
}%
\let\tikz@lsystem@anchor=\pgfutil@empty%
\let\tikz@lsystem@rules=\pgfutil@empty%

\def\tikz@lsystem@declare{%
    \expandafter\let\csname pgf@lsystem@tikz@temp\endcsname=\relax%
    \pgfdeclarelindenmayersystem{tikz@temp}{%
        \expandafter\tikz@lsystem@parse@rules\tikz@lsystem@rules,\tikz@stop,%
    }%
}%
\def\tikz@lsystem@parse@rules#1,{%
    \ifx#1\tikz@stop%
    \else%
        \rule{#1}%
        \expandafter\tikz@lsystem@parse@rules%
    \fi%
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarylindenmayersystems.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymath.code.tex ====

\usetikzlibrary{fpu}

\edef\tikz@math@at@catcode{\the\catcode`\@}%
\catcode`\@=11

\def\tikz@math@gobblespaces#1{\pgfutil@ifnextchar x{#1}{#1}}%

\def\tikz@math@meaning@macro{macro}%
\def\tikz@math@meaning@dimen{dimen}%
\def\tikz@math@meaning@count{count}%
\def\tikz@math@meaning@null{null}%

\def\tikz@math@getmeaning#1{\expandafter\tikz@math@@getmeaning\meaning#1\tikz@math@getmeaning@stop}%

\def\tikz@math@@getmeaning#1#2#3#4#5\tikz@math@getmeaning@stop{%
    \if#1u%
        \let\tikz@math@meaning=\tikz@math@meaning@macro%
    \else%
        \if#1m%
            \let\tikz@math@meaning=\tikz@math@meaning@macro%
        \else%
            \if#2d%
                \let\tikz@math@meaning=\tikz@math@meaning@dimen%
            \else%
                \if#2c%
                    \let\tikz@math@meaning=\tikz@math@meaning@count%
                \else%
                    \if#3k%
                        \let\tikz@math@meaning=\tikz@math@meaning@dimen%
                    \else%
                        \let\tikz@math@meaning=\tikz@math@meaning@null%
                    \fi%
                \fi%
            \fi%
        \fi%
    \fi%
}%

\def\tikz@math@firstoftwo#1#2{#1}%
\def\tikz@math@secondoftwo#1#2{#2}%


\def\tikz@math@getvarstring#1{%
    \begingroup%
        \escapechar=-1\relax%
        \expandafter\tikz@math@@getvarstring\string#1\tikz@math}%

\def\tikz@math@@getvarstring#1\tikz@math#2{%
    \endgroup%
    \def#2{#1}%
}%

\long\def\tikz@math@collecttosemicolon@other#1#2;{%
    \def\tikz@math@collected{#2}#1}%
\def\tikz@math@semicolon@other{;}%

{\catcode`\;=13
\long\gdef\tikz@math@collecttosemicolon@active#1#2;{%
    \def\tikz@math@collected{#2}#1}%
\gdef\tikz@math@semicolon@active{;}%
}%


\def\tikz@math@setvartype#1#2{%
    \expandafter\let\csname tikz@math@var@vartype@\string#1\endcsname=#2%
}%


\def\tikz@math@getvartype#1#2{%
    \def\tikz@math@marshal{\let#1=}%
    \expandafter\tikz@math@marshal\csname
    tikz@math@var@vartype@\string#2\endcsname%
}%



\def\tikz@math@ifvarcoordinate#1{%
    \expandafter\ifx\csname
    tikz@math@var@vartype@\string#1\endcsname\tikz@math@keyword@coordinate%
        \let\tikz@math@next=\tikz@math@firstoftwo%
    \else%
        \let\tikz@math@next=\tikz@math@secondoftwo%
    \fi%
    \tikz@math@next%
}%

\def\tikz@math@ifvarinteger#1{%
    \expandafter\ifx\csname
    tikz@math@var@vartype@\string#1\endcsname\tikz@math@keyword@integer%
        \let\tikz@math@next=\tikz@math@firstoftwo%
    \else%
        \let\tikz@math@next=\tikz@math@secondoftwo%
    \fi%
    \tikz@math@next%
}%


\def\tikz@math@setvarindexed#1{%
    \expandafter\let\csname
    tikz@math@var@subtype@\string#1\endcsname=\tikz@math@subtype@indexed%
}%

\def\tikz@math@clearvarindexed#1{%
    \expandafter\let\csname tikz@math@var@subtype@\string#1\endcsname=\relax%
}%

\def\tikz@math@ifvarindexed#1{%
    \expandafter\ifx\csname tikz@math@var@subtype@\string#1\endcsname\relax%
        \let\tikz@math@next=\tikz@math@secondoftwo%
    \else%
        \let\tikz@math@next=\tikz@math@firstoftwo%
    \fi%
    \tikz@math@next%
}%

\def\tikz@math@stop{@}%

\let\tikz@math@parse@hook@before=\pgfutil@empty
\let\tikz@math@parse@hook@after=\pgfutil@empty

\def\tikz@math{%
    \ifnum\catcode`\;=13\relax%
        \let\tikz@math@semicolon=\tikz@math@semicolon@active%
        \let\tikz@math@collecttosemicolon=\tikz@math@collecttosemicolon@active%
    \else%
        \let\tikz@math@semicolon=\tikz@math@semicolon@other%
        \let\tikz@math@collecttosemicolon=\tikz@math@collecttosemicolon@other%
    \fi%
    \tikz@math@parse@hook@before%
    \tikz@@math}%




\long\def\tikz@@math#1{%
    \def\tikz@math@marshal{\tikz@math@parse#1}%
    \expandafter\expandafter\expandafter\tikz@math@marshal\expandafter\tikz@math@stop\tikz@math@semicolon}%

\def\tikz@math@parse{\pgfutil@ifnextchar\bgroup\tikz@math@@parse@bgroup\tikz@math@@parse@nobgroup}%


\def\tikz@math@@parse@bgroup{%
    \tikz@math@collecttosemicolon{%
        \ifx\pgf@selectfontorig\tikz@math@undefined%
            \begingroup\tikz@math@collected\endgroup%
        \else%
            \begingroup\csname nullfont\endcsname\tikz@math@collected\endgroup%
        \fi\tikz@math@parse}}%



\def\tikz@math@@parse@nobgroup{\tikz@math@collecttosemicolon{\tikz@math@@parse@@nobgroup}}%

\def\tikz@math@@parse@@nobgroup{%
    \let\tikz@math@tmp=\tikz@math@collected%
    \ifx\tikz@math@tmp\tikz@math@stop%
        \def\tikz@math@next{\expandafter\tikz@math@parse@finish\tikz@math@semicolon}%
    \else%
        \def\tikz@math@next{\expandafter\expandafter\expandafter\tikz@math@parse@keyword@check\expandafter\tikz@math@tmp\tikz@math@semicolon}%
    \fi%
    \tikz@math@next%
}%

\def\tikz@math@parse@finish{%
    \tikz@math@collecttosemicolon{\tikz@math@parse@hook@after}%
}%



\newif\iftikz@math@let
\def\tikz@math@parse@keyword@check#1{%
    \tikz@math@letfalse%
    \tikz@math@getmeaning{#1}%
    \ifx\tikz@math@meaning\tikz@math@meaning@null%
        \let\tikz@math@next=\tikz@math@parse@keyword%
    \else%
        \let\tikz@math@next=\tikz@math@parse@nokeyword%
    \fi%
    \tikz@math@next#1}%


\def\tikz@math@parse@keyword{%
    \let\tikz@math@parsed@keyword=\pgfutil@empty%
    \futurelet\tikz@math@parse@token\tikz@math@@parse@keyword}%

\def\tikz@math@@parse@keyword{%
    \ifx\tikz@math@parse@token\pgfutil@sptoken%
        \let\tikz@math@next=\tikz@math@@@parse@keyword%
    \else%
        \ifx\tikz@math@parse@token(%
            \let\tikz@math@next=\tikz@math@@@parse@keyword%
        \else%
            \ifx\tikz@math@parse@token\bgroup%
                \let\tikz@math@next=\tikz@math@@@parse@keyword%
            \else%
                \let\tikz@math@next=\tikz@math@@@@parse@keyword%
            \fi%
        \fi%
    \fi%
    \tikz@math@next}%

\def\tikz@math@error#1{\pgfutil@packageerror{tikz}{tikz math library: #1}{}}%

\def\tikz@math@@@parse@keyword{%
        \expandafter\ifx\csname tikz@math@process@keyword@\tikz@math@parsed@keyword\endcsname\relax%
            \expandafter\ifx\csname pgfmath\tikz@math@parsed@keyword\endcsname\relax%
                    \tikz@math@error{Unknown function or keyword '\tikz@math@parsed@keyword'}%
            \else%
                \def\tikz@math@next{\tikz@math@collecttosemicolon{\tikz@math@function@noassign}}%
            \fi%
        \else%
            \expandafter\def\expandafter\tikz@math@next\expandafter{\csname tikz@math@process@keyword@\tikz@math@parsed@keyword\endcsname}%
        \fi%
    \tikz@math@next}%

\def\tikz@math@@@@parse@keyword#1{%
    \edef\tikz@math@parsed@keyword{\tikz@math@parsed@keyword#1}%
    \futurelet\tikz@math@parse@token\tikz@math@@parse@keyword%
}%

\def\tikz@math@function@noassign{%
    \pgfmathparse{\tikz@math@parsed@keyword\tikz@math@collected}%
    \tikz@math@parse%
}%




\def\tikz@math@process@keyword@count{\tikz@math@collecttosemicolon{\tikz@math@process@keyword@@count}}%
\def\tikz@math@process@keyword@@count{%
\def\tikz@math@assign@register{\csname newcount\endcsname}%
\expandafter\tikz@math@gobblespaces\expandafter\tikz@math@process@registers\tikz@math@collected,@,}%

\def\tikz@math@process@keyword@length{\tikz@math@collecttosemicolon{\tikz@math@process@keyword@@length}}%
\def\tikz@math@process@keyword@@length{%
\def\tikz@math@assign@register{\csname newdimen\endcsname}%
\expandafter\tikz@math@gobblespaces\expandafter\tikz@math@process@registers\tikz@math@collected,@,}%


\def\tikz@math@process@registers#1#2,{%
    \def\tikz@math@var{#1}%
    \ifx\tikz@math@var\tikz@math@stop%
        \let\tikz@math@next=\tikz@math@parse%
    \else%
        \tikz@math@assign@register#1\relax%
        \let\tikz@math@next=\tikz@math@process@registers%
    \fi%
    \tikz@math@gobblespaces\tikz@math@next%
}%


\def\tikz@math@process@keyword@if#1then{%
    \def\tikz@math@if@condition{#1}%
    \tikz@math@gobblespaces\tikz@math@parse@if@iftrue%
}%
\def\tikz@math@parse@if@iftrue#1{%
    \def\tikz@math@if@trueaction{#1}%
    \pgfutil@ifnextchar e{\tikz@math@parse@else}{\tikz@math@if@doif}}%

\def\tikz@math@parse@else else{\tikz@math@gobblespaces\tikz@math@if@doifelse}%

\def\tikz@math@if@doif{\tikz@math@collecttosemicolon{\tikz@math@if@@doif}}%

\def\tikz@math@if@@doif{%
    \pgfmathparse{\tikz@math@if@condition}%
    \ifpgfmathfloatparseactive%
        \pgfmathfloattofixed{\pgfmathresult}%
    \fi%
    \ifdim\pgfmathresult pt=0pt\relax%
    \else%
        \expandafter\tikz@math\expandafter{\tikz@math@if@trueaction}%
    \fi%
    \tikz@math@parse%
}%
\def\tikz@math@if@doifelse{\tikz@math@collecttosemicolon{\tikz@math@if@@doifelse}}%
\def\tikz@math@if@@doifelse{%
    \pgfmathparse{\tikz@math@if@condition}%
    \ifpgfmathfloatparseactive%
        \pgfmathfloattofixed{\pgfmathresult}%
    \fi%
    \let\tikz@math@if@falseaction=\tikz@math@collected%
    \ifdim\pgfmathresult pt=0pt\relax%
        \expandafter\tikz@math\expandafter{\tikz@math@if@falseaction}%
    \else%
        \expandafter\tikz@math\expandafter{\tikz@math@if@trueaction}%
    \fi%
    \tikz@math@parse%
}%
\def\tikz@math@process@keyword@let{%
    \tikz@math@lettrue%
    \tikz@math@gobblespaces\tikz@math@parse@nokeyword%
}%


\def\tikz@math@parse@nokeyword#1{%
    \def\tikz@math@var{#1}%
    \tikz@math@getvarstring{#1}\tikz@math@varstring%
    \let\tikz@math@vartype=\pgfutil@empty%
    \ifx\tikz@math@var\tikz@math@stop%
        \let\tikz@math@next=\tikz@math@parse@finish%
    \else%
         \ifx\tikz@math@semicolon\tikz@math@var%
            \let\tikz@math@next=\tikz@math@parse%
            \else%
                \let\tikz@math@next=\tikz@math@parse@index@check%
            \fi%
    \fi%
    \tikz@math@next}%

\def\tikz@math@parse@index@check{%
    \pgfutil@ifnextchar={\tikz@math@parse@noindex}{\tikz@math@parse@index}}%

\def\tikz@math@parse@noindex{%
    \expandafter\tikz@math@clearvarindexed\tikz@math@var%
    \let\tikz@math@current@index=\pgfutil@empty%
    \tikz@math@parse@afterindex%
}%

\def\tikz@math@parse@index#1{%
    \def\tikz@math@tmp{#1}%
    \expandafter\tikz@math@setvarindexed\tikz@math@var%
    \edef\tikz@math@current@index{#1}%
    \tikz@math@parse@afterindex%
}%
\def\tikz@math@parse@afterindex#1={\tikz@math@gobblespaces\tikz@math@parse@assignment}%

\def\tikz@math@parse@assignment{\tikz@math@collecttosemicolon{\tikz@math@parse@@assignment}}%
\def\tikz@math@parse@@assignment{%
    \expandafter\expandafter\expandafter\tikz@math@doassignment\expandafter\expandafter\expandafter%
        {\expandafter\tikz@math@var\expandafter}\expandafter{\tikz@math@collected}%
    \tikz@math@parse%
}%

\def\tikz@math@dollar@char{$}%
\def\tikz@math@dollar@char{$}%

\def\tikz@math@doassignment#1#2{%
    \tikz@math@ifvarcoordinate{#1}{%
        \def\tikz@math@var{#1}%
        \tikz@math@getvarstring{#1}\tikz@math@varstring%
        \expandafter\pgfutil@in@\tikz@math@dollar@char{#2}%
        \edef\tikz@math@expression{#2}%
        \ifpgfutil@in@%
            \expandafter\tikz@scan@one@point\expandafter\tikz@math@assign@coordinate\tikz@math@expression%
        \else%
            \expandafter\ifx\csname tikz@library@calc@loaded\endcsname\relax%
                \expandafter\tikz@scan@one@point\expandafter\tikz@math@assign@coordinate\tikz@math@expression%
            \else%
                \expandafter\tikz@scan@one@point\expandafter\tikz@math@assign@coordinate\expandafter%
                (\expandafter$\tikz@math@expression$)%
            \fi%
        \fi%
    }{%
        \iftikz@math@let%
            \ifx\tikz@math@current@index\pgfutil@empty%
                \edef#1{#2}%
            \else%
                \edef\tikz@math@tmp{#2}%
                \expandafter\expandafter\expandafter\tikz@math@assign@index\expandafter\expandafter\expandafter%
                    {\expandafter\tikz@math@varstring\expandafter}\expandafter{\tikz@math@tmp}%
            \fi%
            \tikz@math@letfalse%
        \else%
            \ifx\tikz@math@current@index\pgfutil@empty%
                \tikz@math@getmeaning{#1}%
                \ifx\tikz@math@meaning\tikz@math@meaning@dimen%
                    \pgfmathsetlength{#1}{#2}%
                    \let\tikz@math@last@assigned@value=\pgfmathresult%
                \else%
                    \ifx\tikz@math@meaning\tikz@math@meaning@count%
                        \pgfmathsetcount{#1}{#2}%
                        \let\tikz@math@last@assigned@value=\pgfmathresult%
                    \else%
                        \tikz@math@ifvarinteger{#1}{\pgfmathparse{int(#2)}}{\pgfmathparse{#2}}%
                        \let\tikz@math@last@assigned@value=\pgfmathresult%
                        \let#1=\pgfmathresult%
                    \fi%
                \fi%
            \else%
                \tikz@math@ifvarinteger{#1}{\pgfmathparse{int(#2)}}{\pgfmathparse{#2}}%
                \expandafter\tikz@math@assign@index\expandafter{\tikz@math@varstring}\pgfmathresult%
                \let\tikz@math@last@assigned@value=\pgfmathresult%
            \fi%
        \fi%
    }%
}%



\def\tikz@math@assign@index#1#2{%
    \expandafter\def\csname#1\endcsname##1{\csname
    tikz@math@var@indexed@#1@##1\endcsname}%
    \expandafter\edef\csname
    tikz@math@var@indexed@#1@\tikz@math@current@index\endcsname{#2}\relax%
}%



\def\tikz@math@assign@coordinate#1{%
    \pgf@process{#1}%
    \ifx\tikz@math@current@index\pgfutil@empty%
        \expandafter\edef\csname\tikz@math@varstring\endcsname{\the\pgf@x,\the\pgf@y}%
        \expandafter\edef\csname\tikz@math@varstring x\endcsname{\the\pgf@x}%
        \expandafter\edef\csname\tikz@math@varstring y\endcsname{\the\pgf@y}%
    \else%
        \expandafter\tikz@math@assign@index\expandafter{\tikz@math@varstring}{\the\pgf@x,\the\pgf@y}%
        \expandafter\tikz@math@assign@index\expandafter{\tikz@math@varstring x}{\the\pgf@x}%
        \expandafter\tikz@math@assign@index\expandafter{\tikz@math@varstring y}{\the\pgf@y}%
    \fi%
}%



\def\tikz@math@keyword@coordinate{coordinate}%
\def\tikz@math@process@keyword@coordinate{%
    \let\tikz@math@vartype=\tikz@math@keyword@coordinate%
    \tikz@math@gobblespaces\tikz@math@process@vartypes%
}%

\def\tikz@math@keyword@integer{integer}%
\def\tikz@math@process@keyword@integer{%
    \let\tikz@math@vartype=\tikz@math@keyword@integer%
    \tikz@math@gobblespaces\tikz@math@process@vartypes%
}%
\def\tikz@math@process@keyword@int{%
    \tikz@math@process@keyword@integer%
}%

\def\tikz@math@keyword@real{real}%
\def\tikz@math@process@keyword@real{%
    \let\tikz@math@vartype=\tikz@math@keyword@real%
    \tikz@math@gobblespaces\tikz@math@process@vartypes%
}%

\def\tikz@math@process@keyword@point{\tikz@math@process@keyword@coordinate}%


\def\tikz@math@process@vartypes{\tikz@math@collecttosemicolon{\tikz@math@process@@vartypes}}%

\def\tikz@math@process@@vartypes{%
    \expandafter\tikz@math@@process@vartypes\tikz@math@collected,@,\tikz@math%
}%

\def\tikz@math@@process@vartypes#1#2,{%
    \def\tikz@math@var{#1}%
    \tikz@math@getvarstring{#1}\tikz@math@varstring%
    \ifx\tikz@math@var\tikz@math@stop%
        \let\tikz@math@next=\tikz@math@@@process@vartypes%
    \else%
        \expandafter\tikz@math@setvartype\tikz@math@var\tikz@math@vartype%
        \def\tikz@math@next{\tikz@math@gobblespaces\tikz@math@@process@vartypes}%
    \fi%
    \tikz@math@next%
}%

\def\tikz@math@process@keyword@print{\tikz@math@collecttosemicolon{\tikz@math@process@keyword@@print}}%
\def\tikz@math@process@keyword@@print{%
    \begingroup\tikz@math@collected\endgroup\tikz@math@parse%
}%

\def\tikz@math@@@process@vartypes#1\tikz@math{%
    \tikz@math@parse%
}%

\newcount\tikz@math@for@depth

\def\tikz@math@for@namedef#1{\expandafter\def\csname tikz@math@for@def@#1@\the\tikz@math@for@depth\endcsname}%
\def\tikz@math@for@nameedef#1{\expandafter\edef\csname tikz@math@for@def@#1@\the\tikz@math@for@depth\endcsname}%
\def\tikz@math@for@namelet#1{\expandafter\let\csname tikz@math@for@def@#1@\the\tikz@math@for@depth\endcsname}%

\def\tikz@math@for@namegetvalue#1#2{%
    \def\tikz@math@marshal{\let#2=}%
    \expandafter\tikz@math@marshal\csname tikz@math@for@def@#1@\the\tikz@math@for@depth\endcsname}%

\def\tikz@math@process@keyword@for{%
    \tikz@math@for%
}%

\def\tikz@math@for@external{%
    \ifnum\catcode`\;=13\relax%
        \let\tikz@math@semicolon=\tikz@math@semicolon@active%
        \let\tikz@math@collecttosemicolon=\tikz@math@collecttosemicolon@active%
    \else%
        \let\tikz@math@semicolon=\tikz@math@semicolon@other%
        \let\tikz@math@collecttosemicolon=\tikz@math@collecttosemicolon@other%
    \fi
    \advance\tikz@math@for@depth by1\relax%
    \tikz@math@for@namedef{execute}{\tikz@math@for@external@execute}%
    \tikz@math@for@namedef{finished}{\relax}%
    \tikz@math@gobblespaces\tikz@math@for@parsevar}%

\def\tikz@math@for@external@execute#1{#1}%

\def\tikz@math@for{%
    \advance\tikz@math@for@depth by1\relax%
    \tikz@math@for@namedef{execute}{\tikz@math}%
    \tikz@math@for@namedef{finished}{\tikz@math@parse}%
    \tikz@math@gobblespaces\tikz@math@for@parsevar}%


\def\tikz@math@for@parsevar#1{%
    \tikz@math@for@namedef{var}{#1}%
    \tikz@math@for@parsein}%

\def\tikz@math@getindex#1{%
    \tikz@math@@getindex#1\tikz@math@getindex\tikz@math@@getindex%
}%

\def\tikz@math@@getindex#1#2\tikz@math@@getindex{#1}%

\def\tikz@math@for@parsein#1in{%
    \def\tikz@math@tmp{#1}%
    \ifx\tikz@math@tmp\pgfutil@empty%
        \tikz@math@for@namedef{index}{}%
    \else%
        \tikz@math@for@nameedef{index}{\tikz@math@getindex{#1}}%
    \fi%
    \tikz@math@gobblespaces\tikz@math@for@parselist%
}%


\long\def\tikz@math@for@parselist#1{%
    \edef\tikz@math@for@list{#1}%
    \tikz@math@gobblespaces{%
      \tikz@math@collecttosemicolon{\tikz@math@for@parseaction}}}%

\def\tikz@math@for@parseaction{%
    \tikz@math@for@namedef{prevvalue}{}%
    \tikz@math@for@namedef{prevprevvalue}{}%
    \tikz@math@for@namelet{action}=\tikz@math@collected%
    \expandafter\tikz@math@for@scan\tikz@math@for@list,\tikz@math,\tikz@@math%
}%

\def\tikz@math@token{\tikz@math}%


\def\tikz@math@for@scan#1,{%
    \def\tikz@math@for@value{#1}%
    \ifx\tikz@math@for@value\tikz@math@token%
        \let\tikz@math@next=\tikz@math@for@scan@end%
    \else%
        \ifx\tikz@math@for@value\pgfutil@empty%
            \let\tikz@math@next=\tikz@math@for@scan@end%
        \else%
            \pgfutil@in@{...}{#1}%
            \ifpgfutil@in@%
                \let\tikz@math@next=\tikz@math@for@scan@dots%
            \else%
                \tikz@math@for@namegetvalue{var}{\tikz@math@var}%
                \tikz@math@for@namegetvalue{index}{\tikz@math@current@index}%
                \tikz@math@for@namegetvalue{action}{\tikz@math@action}%
                \expandafter\tikz@math@getvarstring\expandafter{\tikz@math@var}\tikz@math@varstring%
                \expandafter\tikz@math@doassignment\expandafter{\tikz@math@var}{#1}%
                \tikz@math@for@namelet{value}=\tikz@math@last@assigned@value%
                \tikz@math@for@namegetvalue{execute}{\tikz@math@execute}%
                \expandafter\tikz@math@execute\expandafter{\tikz@math@action}%
                \tikz@math@for@namegetvalue{prevvalue}{\tikz@math@prevvalue}%
                \tikz@math@for@namelet{prevprevvalue}=\tikz@math@prevvalue%
                \tikz@math@for@namegetvalue{value}{\tikz@math@value}%
                \tikz@math@for@namelet{prevvalue}=\tikz@math@value%
                \let\tikz@math@next=\tikz@math@for@scan%
            \fi%
        \fi%
    \fi%
    \tikz@math@next%
}%

\newdimen\tikz@math@dimen

\def\tikz@math@for@scan@dots#1,{%
    \pgfmathparse{#1}\let\tikz@math@value=\pgfmathresult%
    \tikz@math@for@nameedef{endvalue}{\tikz@math@value}%
    \tikz@math@for@namegetvalue{prevvalue}{\tikz@math@prevvalue}%
    \tikz@math@for@namegetvalue{prevprevvalue}{\tikz@math@prevprevvalue}%
    \tikz@math@dimen=\tikz@math@prevvalue pt\relax%
    \ifx\tikz@math@prevprevvalue\pgfutil@empty%
        \ifdim\tikz@math@prevvalue pt<\tikz@math@value pt\relax%
            \def\tikz@math@step{1pt}%
        \else%
            \def\tikz@math@step{-1pt}%
        \fi%
    \else%
        \tikz@math@dimen=\tikz@math@prevvalue pt\relax%
        \advance\tikz@math@dimen by-\tikz@math@prevprevvalue pt\relax%
        \edef\tikz@math@step{\the\tikz@math@dimen}%
    \fi%
    \ifdim\tikz@math@step<0pt\relax%
        \tikz@math@for@namedef{comparitor}{<}%
    \else%
        \tikz@math@for@namedef{comparitor}{>}%
    \fi%
    \tikz@math@for@nameedef{step}{\tikz@math@step}%
    \tikz@math@for@doloop%
}%

\def\tikz@math@for@doloop{%
    \tikz@math@for@namegetvalue{prevvalue}{\tikz@math@prevvalue}%
    \tikz@math@for@namegetvalue{step}{\tikz@math@step}%
    \tikz@math@for@namegetvalue{comparitor}{\tikz@math@comparitor}%
    \tikz@math@for@namegetvalue{endvalue}{\tikz@math@endvalue}%
    \tikz@math@dimen=\tikz@math@prevvalue pt\relax%
    \advance\tikz@math@dimen by\tikz@math@step\relax%
    \ifdim\tikz@math@dimen\tikz@math@comparitor\tikz@math@endvalue pt\relax%
        \let\tikz@math@next=\tikz@math@for@endloop%
    \else%
        \tikz@math@for@nameedef{value}{\pgfmath@tonumber{\tikz@math@dimen}}%
        \tikz@math@for@namegetvalue{var}{\tikz@math@var}%
        \expandafter\tikz@math@getvarstring\expandafter{\tikz@math@var}\tikz@math@varstring%
        \tikz@math@for@namegetvalue{index}{\tikz@math@current@index}%
        \tikz@math@for@namegetvalue{action}{\tikz@math@action}%
        \tikz@math@for@namegetvalue{value}{\tikz@math@value}%
        \expandafter\expandafter\expandafter\tikz@math@doassignment\expandafter\expandafter\expandafter%
            {\expandafter\tikz@math@var\expandafter}\expandafter{\tikz@math@value}%
        \tikz@math@for@namegetvalue{execute}{\tikz@math@execute}%
        \expandafter\tikz@math@execute\expandafter{\tikz@math@action}%
        \tikz@math@for@namegetvalue{prevvalue}{\tikz@math@prevvalue}%
        \tikz@math@for@namelet{prevprevvalue}=\tikz@math@prevvalue%
        \tikz@math@for@namegetvalue{value}{\tikz@math@value}%
        \tikz@math@for@namelet{prevvalue}=\tikz@math@value%
        \let\tikz@math@next=\tikz@math@for@doloop%
    \fi%
    \tikz@math@next%
}%

\def\tikz@math@for@endloop{%
\tikz@math@for@scan}%




\def\tikz@math@for@scan@end#1\tikz@@math{%
\tikz@math@for@namegetvalue{finished}{\tikz@math@next}%
\advance\tikz@math@for@depth by-1\relax%
\tikz@math@next}%





\def\tikz@math@process@keyword@return{%
    \tikz@math@collecttosemicolon{\pgfmathparse{\tikz@math@collected}\tikz@math@parse}}%

\def\tikz@math@process@keyword@function{\tikz@math@collecttosemicolon{\tikz@math@process@keyword@@function}}%
\def\tikz@math@process@keyword@@function{%
    \let\tikz@math@function@name=\pgfutil@empty%
    \let\tikz@math@function@arguments=\pgfutil@empty%
    \let\tikz@math@function@body=\pgfutil@empty%
    \expandafter\expandafter\expandafter\tikz@math@@declarefunction\expandafter\tikz@math@collected\tikz@math@semicolon%
}%

\def\tikz@math@@declarefunction{%
    \pgfutil@ifnextchar\bgroup\tikz@math@@@collectbody\tikz@math@@@declarefunction}%


\def\tikz@math@@@declarefunction#1{%
    \if#1(%
        \let\tikz@math@next=\tikz@math@@@collectarguments%
    \else%
        \expandafter\def\expandafter\tikz@math@function@name\expandafter{\tikz@math@function@name#1}%
        \let\tikz@math@next=\tikz@math@@declarefunction%
    \fi%
    \tikz@math@next%
}%
\def\tikz@math@@@collectarguments#1){%
    \def\tikz@math@function@arguments{#1}%
    \tikz@math@@declarefunction%
}%

\newtoks\tikz@math@toks
\tikz@math@toks={#}%
\edef\tikz@math@char@hash{\the\tikz@math@toks}%
\tikz@math@toks={}%

\def\tikz@math@@@collectbody{\tikz@math@collecttosemicolon{\tikz@math@@@@collectbody}}%

\def\tikz@math@@@@collectbody{%
    \tikz@math@toks={}%
    \c@pgf@counta=0\relax%
    \ifx\tikz@math@function@arguments\pgfutil@empty%
    \else%
        \expandafter\tikz@math@createargumentlist\tikz@math@function@arguments,,%
        \expandafter\tikz@math@addto@toks\expandafter{\tikz@math@collected}%
    \fi%
    \edef\tikz@math@local@temp{%
        \noexpand\pgfmathdeclarefunction{\tikz@math@function@name}{\the\c@pgf@counta}%
        {\noexpand\def\noexpand\return{0}\noexpand\tikz@math{\the\tikz@math@toks}}%
    }%
    \tikz@math@local@temp
    \tikz@math@parse%
}%

\def\tikz@math@addto@toks#1{%
    \expandafter\tikz@math@toks\expandafter{\the\tikz@math@toks#1}}%

\def\tikz@math@createargumentlist{%
    \pgfutil@ifnextchar
    x\tikz@math@@createargumentlist\tikz@math@@createargumentlist}%

\def\tikz@math@comma{,}%
\def\tikz@math@@createargumentlist#1,{%
    \def\tikz@math@tmp{#1}%
    \ifx\tikz@math@tmp\pgfutil@empty%
        \let\tikz@math@next=\relax%
    \else%
        \advance\c@pgf@counta by1\relax%
        \tikz@math@addto@toks{#1=}%
        \expandafter\expandafter\expandafter\tikz@math@addto@toks\expandafter\expandafter\expandafter%
            {\expandafter\tikz@math@char@hash\the\c@pgf@counta;}%
        \let\tikz@math@next=\tikz@math@createargumentlist%
    \fi%
    \tikz@math@next%
}%



\let\tikzmath=\tikz@math
\tikzset{evaluate/.code={\tikz@math{#1}}}%
\let\tikzmathfor=\tikz@math@for@external


\catcode`\@=\tikz@math@at@catcode\relax
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymath.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymatrix.code.tex ====

\ProvidesFileRCS{tikzlibrarymatrix.code.tex}



\tikzset{matrix of nodes/.style={%
   matrix,%
   cells={anchor=base},%
   execute at begin cell=\tikz@lib@matrix@start@cell,%
   execute at end cell=\tikz@lib@matrix@end@cell,%
   execute at empty cell=\tikz@lib@matrix@empty@cell,
   execute at begin matrix=\iftikz@handle@active@code\tikz@orig@shorthands\fi,%
}}%

\def\tikz@lib@matrix@empty@cell{\iftikz@lib@matrix@empty\node[name=\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn]{};\fi}%

\newif\iftikz@lib@matrix@plain

\def\tikz@lib@matrix@start@cell{%
  \pgfutil@ifnextchar|{\tikz@lib@matrix@with@options}{\tikz@lib@matrix@normal@start@cell}}%

\def\tikz@lib@matrix@with@options|#1|{\tikz@lib@matrix@plainfalse\node%
  [name=\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn]#1\bgroup\tikz@lib@matrix@startup}%


\def\tikz@lib@matrix@normal@start@cell{\pgfutil@ifnextchar\let{\tikz@lib@matrix@check}{\tikz@lib@matrix@plainfalse\node
  [name=\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn]\bgroup\tikz@lib@matrix@startup}}%

\def\tikz@lib@matrix@check#1{%
  \pgfutil@ifnextchar\tikz@signal@path{\tikz@lib@matrix@plaintrue\let}{\tikz@lib@matrix@plainfalse\node
  [name=\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn]\bgroup\tikz@lib@matrix@startup\let}%
}%

\def\tikz@lib@matrix@end@cell{%
  \iftikz@lib@matrix@plain%
  \else%
    \expandafter\egroup\expandafter;%
  \fi%
}%

\def\tikz@lib@matrix@startup{%
  \pgfutil@ifnextchar\bgroup{%
    \let\tikz@lib@matrix@saved@eol=\\%
    \let\\=\pgfmatrixendrow%
    \afterassignment\tikz@lib@matrix@smuggle%
    \let\tikz@next}
  {\let\\=\pgfmatrixendrow}%
}%
\def\tikz@lib@matrix@smuggle{%
  \bgroup%
  \let\\=\tikz@lib@matrix@saved@eol%
}%



\newif\iftikz@lib@matrix@empty

\tikzoption{nodes in empty cells}[true]{\csname tikz@lib@matrix@empty#1\endcsname}%


\tikzset{matrix of math nodes/.style={%
  matrix of nodes,
  nodes={%
   execute at begin node=$,%
   execute at end node=$%
  }%
}}%




\tikzoption{left delimiter}{\tikzset{append after command={\tikz@delimiter%
    {south east}%
    {south west}%
    {every delimiter,every left delimiter}%
    {south}%
    {north}%
    {#1}%
    {.}%
    {\pgf@y}}}}%

\tikzoption{right delimiter}{\tikzset{append after command={\tikz@delimiter%
    {south west}%
    {south east}%
    {every delimiter,every right delimiter}%
    {south}%
    {north}%
    {.}%
    {#1}%
    {\pgf@y}}}}%

\tikzoption{above delimiter}{\tikzset{append after command={\tikz@delimiter%
    {south east}%
    {north west}%
    {every delimiter,every above delimiter,rotate=-90}%
    {west}%
    {east}%
    {#1}%
    {.}%
    {\pgf@x}}}}%

\tikzoption{below delimiter}{\tikzset{append after command={\tikz@delimiter%
    {south west}%
    {south west}%
    {every delimiter,every below delimiter,rotate=-90}%
    {west}%
    {east}%
    {.}%
    {#1}%
    {\pgf@x}}}}%

\def\tikz@delimiter#1#2#3#4#5#6#7#8{%
  \bgroup
    \pgfextra{\let\tikz@save@last@fig@name=\tikz@last@fig@name\tikz@node@is@a@labelfalse}%
    node[outer sep=0pt,inner sep=0pt,draw=none,fill=none,anchor=#1,at=(\tikz@last@fig@name.#2),#3]
    {%
      {\nullfont\pgf@process{\pgfpointdiff{\pgfpointanchor{\tikz@last@fig@name}{#4}}{\pgfpointanchor{\tikz@last@fig@name}{#5}}}}%
      $\left#6\vcenter{\hrule height .5#8 depth .5#8 width0pt}\right#7$%
    }
    \pgfextra{\global\let\tikz@last@fig@name=\tikz@save@last@fig@name}%
  \egroup%
}%

\tikzset{every delimiter/.style={}}%
\tikzset{every left delimiter/.style={}}%
\tikzset{every right delimiter/.style={}}%
\tikzset{every above delimiter/.style={}}%
\tikzset{every below delimiter/.style={}}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymatrix.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymindmap.code.tex ====

\ProvidesFileRCS{tikzlibrarymindmap.code.tex}


\usetikzlibrary{trees,decorations}%



\pgfdeclaredecoration{circle connection bar}{initial}
{%
  \state{initial}[width=0pt,next state=bar]
  {
    {
    \pgftransformxshift{-\pgfkeysvalueof{/pgf/decoration/start radius}}%
    \pgfpathmoveto{\pgfpointpolar{\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}}
    \pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}
    \pgfutil@tempcnta=-\pgfdecorationsegmentangle\relax
    \advance\pgfutil@tempcnta by90\relax
    \pgfmathsetlength\pgfutil@tempdima{\pgfkeysvalueof{/pgf/decoration/start radius}}
    \pgfmathsetlength\pgfutil@tempdimb{\pgfdecorationsegmentamplitude}
    \pgfpathcurveto
    {\pgfpointadd
      {\pgfpointpolar{-\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}}
      {\pgfpointpolar{\the\pgfutil@tempcnta}{.25\pgfutil@tempdima}}}
    {\pgfqpoint{1.25\pgfutil@tempdima}{-.5\pgfutil@tempdimb}}
    {\pgfqpoint{1.5\pgfutil@tempdima}{-.5\pgfutil@tempdimb}}
    \pgfpathlineto{\pgfpoint{1.5\pgfutil@tempdima}{.5\pgfutil@tempdimb}}
    \pgfutil@tempcnta=\pgfdecorationsegmentangle\relax
    \advance\pgfutil@tempcnta by-90\relax
    \pgfpathcurveto
    {\pgfpoint{1.25\pgfutil@tempdima}{.5\pgfutil@tempdimb}}
    {\pgfpointadd
      {\pgfpointpolar{\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}}
      {\pgfpointpolar{\the\pgfutil@tempcnta}{.25\pgfutil@tempdima}}}
    {\pgfpointpolar{\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}}
    \pgfpathclose
    }
  }%
  \state{bar}[width=0pt,next state=end]
  {
    \pgfmathsetlength\pgfutil@tempdima{\pgfkeysvalueof{/pgf/decoration/start radius}}%
    \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/decoration/end radius}}%
    \pgfmathsetlength\pgf@xc{\pgfdecorationsegmentamplitude}%
    \pgfpathrectangle
    {\pgfqpoint{.5\pgfutil@tempdima}{-.5\pgf@xc}}
    {\pgfpoint{\pgfdecoratedremainingdistance+-.5\pgfutil@tempdimb+-.5\pgfutil@tempdima}{\pgf@xc}}
  }%
  \state{end}[width=0pt,next state=final]
  {
    {
    \pgftransformxshift{\pgfdecoratedremainingdistance}%
    \pgftransformxscale{-1}%
    \pgftransformxshift{-\pgfkeysvalueof{/pgf/decoration/end radius}}%
    \pgfpathmoveto{\pgfpointpolar{\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/end radius}}}
    \pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/end radius}}
    \pgfutil@tempcnta=-\pgfdecorationsegmentangle\relax
    \advance\pgfutil@tempcnta by90\relax
    \pgfmathsetlength\pgfutil@tempdima{\pgfkeysvalueof{/pgf/decoration/end radius}}
    \pgfmathsetlength\pgfutil@tempdimb{\pgfdecorationsegmentamplitude}%
    \pgfpathcurveto
    {\pgfpointadd
      {\pgfpointpolar{-\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/end radius}}}
      {\pgfpointpolar{\the\pgfutil@tempcnta}{.25\pgfutil@tempdima}}}
    {\pgfqpoint{1.25\pgfutil@tempdima}{-.5\pgfutil@tempdimb}}
    {\pgfqpoint{1.5\pgfutil@tempdima}{-.5\pgfutil@tempdimb}}
    \pgfpathlineto{\pgfpoint{1.5\pgfutil@tempdima}{.5\pgfutil@tempdimb}}
    \pgfutil@tempcnta=\pgfdecorationsegmentangle\relax
    \advance\pgfutil@tempcnta by-90\relax
    \pgfpathcurveto
    {\pgfpoint{1.25\pgfutil@tempdima}{.5\pgfutil@tempdimb}}
    {\pgfpointadd
      {\pgfpointpolar{\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/end radius}}}
      {\pgfpointpolar{\the\pgfutil@tempcnta}{.25\pgfutil@tempdima}}}
    {\pgfpointpolar{\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/end radius}}}
    \pgfpathclose
    }
  }%
  \state{final}
  {}%
}%



\pgfkeys{/pgf/decoration/angle=20}%


\tikzset{circle connection bar/.style=
{to path={
  \pgfextra{%
    \tikz@lib@mindmap@check{\tikztostart}%
    \tikz@compute@circle@radii\tikz@compute@segmentamplitude%
  }
  [every circle connection bar]
  decorate [decoration=circle connection bar]
  { -- (\tikztotarget) \tikztonodes}
},
append after command={[fill=\tikz@concept@color,draw=none]}
}}%
\tikzset{every circle connection bar/.style={}}%

\def\tikz@compute@circle@radii{%
  \pgf@process{\pgfpointtransformed{\pgfpointanchor{\tikztostart}{center}}}%
  \pgf@xa=\pgf@x%
  \pgf@process{\pgfpointtransformed{\pgfpointanchor{\tikztostart}{west}}}%
  \advance\pgf@xa by-\pgf@x%
  \pgfkeys{/pgf/decoration/start radius/.expanded=\the\pgf@xa}%
  \pgf@process{\pgfpointtransformed{\pgfpointanchor{\tikztotarget}{center}}}%
  \pgf@xa=\pgf@x%
  \pgf@process{\pgfpointtransformed{\pgfpointanchor{\tikztotarget}{west}}}%
  \advance\pgf@xa by-\pgf@x%
  \pgfkeys{/pgf/decoration/end radius/.expanded=\the\pgf@xa}%
}%
\def\tikz@compute@segmentamplitude{%
  \pgf@x=\pgfkeysvalueof{/pgf/decoration/start radius}\relax%
  \ifdim\pgf@x>\pgfkeysvalueof{/pgf/decoration/end radius}\relax%
    \pgf@x=\pgfkeysvalueof{/pgf/decoration/end radius}\relax%
  \fi%
  \pgf@x=.175\pgf@x\relax%
  \edef\pgfdecorationsegmentamplitude{\the\pgf@x}%
}%




\def\tikz@lib@mindmap@check#1{%
  \pgfutil@ifundefined{pgf@sh@ns@#1}%
  {\tikzerror{You are attempting to connect two things by a circle
      connection bar where one is not a node}}{%
    \expandafter\ifx\csname pgf@sh@ns@#1\endcsname\tikz@lib@coordinate@text%
      \tikzerror{You are attempting to connect node of shape
        'coordinate' by a circle connection bar. The shape should be
        'circle' or something similar, instead.}
    \fi%
  }
}%

\def\tikz@lib@coordinate@text{coordinate}%



\tikzoption{circle connection bar switch color}{\tikz@parse@switch#1\pgf@unique}%
\def\tikz@parse@switch from (#1) to (#2)\pgf@unique{%
  \tikzset{to path={%
      \pgfextra{%
        \tikz@lib@mindmap@check{\tikztostart}%
        \tikz@compute@circle@radii\tikz@compute@segmentamplitude%
        \global\let\tikz@lib@save@start=\tikztostart%
        \global\let\tikz@lib@save@target=\tikztotarget%
        \pgfkeysgetvalue{/pgf/decoration/start radius}\pgf@temp%
        \global\let\tikz@lib@saved@start@radius=\pgf@temp%
        \pgfkeysgetvalue{/pgf/decoration/end radius}\pgf@temp%
        \global\let\tikz@lib@saved@end@radius=\pgf@temp%
      }%
      [every circle connection bar]
      decorate [decoration=circle connection bar]
      { -- (\tikztotarget) \tikztonodes}
    },
    append after command={
      [fill=none,draw=none,path picture=\tikz@lib@shade@pic]
      \pgfextra{
        \pgfutil@colorlet{tikz@switch@from}{#1}%
        \pgfutil@colorlet{tikz@switch@to}{#2}%
      }}
  }
}%

\def\tikz@lib@shade@pic{%
 \pgftransformreset%
 \pgf@process{\pgfpointnormalised{\pgfpointdiff{\pgfpointanchor{\tikz@lib@save@start}{center}}{\pgfpointanchor{\tikz@lib@save@target}{center}}}}%
  \edef\tikz@lib@mm@vec{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgfmathsetlength\pgf@xc{\tikz@lib@saved@start@radius}
  \pgf@process{\pgfpointadd{\pgfpointtransformed{\pgfpointanchor{\tikz@lib@save@start}{center}}}
                           {\pgfpointscale{\pgf@sys@tonumber{\pgf@xc}}{\tikz@lib@mm@vec}}}
  \edef\tikz@lib@mm@start{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgfmathsetlength\pgf@xc{\tikz@lib@saved@end@radius}
  \pgf@process{\pgfpointdiff{\tikz@lib@mm@start}{\pgfpointadd{\pgfpointtransformed{\pgfpointanchor{\tikz@lib@save@target}{center}}}
                           {\pgfpointscale{-\pgf@sys@tonumber{\pgf@xc}}{\tikz@lib@mm@vec}}}}
  \edef\tikz@lib@mm@end{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgftransformshift{\tikz@lib@mm@start}
   \pgflowlevelsynccm
  \pgf@process{\tikz@lib@mm@vec}
  {
    \pgf@xa=-\pgf@x%
    \pgftransformcm{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
      {\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@xa}}%
      {\pgfpointorigin}%
    \pgf@process{\pgfpointtransformed{\tikz@lib@mm@end}}%
    \expandafter
  }
  \edef\tikz@lib@mm@length{\the\pgf@x}%
  \pgf@process{\tikz@lib@mm@vec}
  \pgf@ya=-\pgf@y%
  \pgftransformcm{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
    {\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}%
    {\pgfpointorigin}%
  \pgfmathsetlength\pgf@y{\tikz@lib@saved@start@radius}%
  \pgfmathsetlength\pgf@ya{\tikz@lib@saved@end@radius}%
  \ifdim\pgf@y<\pgf@ya%
    \pgf@y=\pgf@ya%
  \fi%
  \pgf@y=0.01992528\pgf@y%
  \pgftransformyscale{\pgf@sys@tonumber{\pgf@y}}%
  \pgfpathrectanglecorners
  {\pgfpoint{-\tikz@lib@saved@start@radius}{-50bp}}
  {\pgfpoint{1pt}{50bp}}
  \pgfsetfillcolor{tikz@switch@from}
  \pgfusepath{fill}
  \pgfpathrectanglecorners
  {\pgfpoint{\tikz@lib@mm@length+\tikz@lib@saved@end@radius}{-50bp}}
  {\pgfpoint{\tikz@lib@mm@length-1pt}{50bp}}
  \pgfsetfillcolor{tikz@switch@to}
  \pgfusepath{fill}
  \pgf@x=\tikz@lib@mm@length%
  \pgf@x=0.009962\pgf@x%
  \pgftransformxscale{\pgf@sys@tonumber{\pgf@x}}%
  \pgftransformxshift{50bp}
  \pgflowlevelsynccm%
  \pgfuseshading{tikz@shade@bar}
}%

\tikzoption{concept color}{%
  \let\tikz@old@concept@color=\tikz@concept@color%
  \def\tikz@edge@to@parent@path{
    (\tikzparentnode)
    to[circle connection bar switch color=from (\tikz@old@concept@color) to (#1)]
    (\tikzchildnode)}
  \def\tikz@concept@color{#1}%
}%

\pgfdeclarehorizontalshading[tikz@switch@from,tikz@switch@to]{tikz@shade@bar}{100bp}{%
  color(0pt)=(tikz@switch@from);
  color(100bp)=(tikz@switch@to)}%





\tikzset{concept/.style=          {circle,fill=\tikz@concept@color,draw=\tikz@concept@color,every concept}}%
\tikzset{every concept/.style=    {}}%

\def\tikz@concept@color{black}%

\tikzset{tikz@concept@setting/.style={edge from parent path={(\tikzparentnode) to [circle connection bar] (\tikzchildnode)}}}%
\tikzset{tikz@concept@color@set/.style={}}%


\tikzset{extra concept/.style=     {concept color=black!50,level 2 concept,concept,every extra concept}}%
\tikzset{every extra concept/.style={}}%

\tikzset{concept connection/.style={line width=1mm,shorten <=2mm,shorten >=2mm,cap=round,draw=black!50}}%



\tikzset{mindmap/.style=
  {fill,draw,very thick,outer sep=0pt,inner sep=1pt,%
   every child/.append style={style=tikz@concept@setting,style=tikz@concept@color@set},%
   root concept,
   level 1/.append style={level 1 concept},
   level 2/.append style={level 2 concept},
   level 3/.append style={level 3 concept},
   level 4/.append style={level 4 concept},
   text centered,%
   segment angle=20,
   style=every mindmap,
  }}%
\tikzset{every mindmap/.style={}}%


\tikzset{root concept/.style=   {minimum size=4cm,text width=3.5cm,font=\pgfutil@font@large}}%
\tikzset{level 1 concept/.style={minimum size=2.25cm,
                                 level distance=5cm,
                                 text width=2cm,
                                 sibling angle=60,
                                 font=\pgfutil@font@small}}%
\tikzset{level 2 concept/.style={minimum size=1.75cm,%
                                 level distance=2.9cm,%
                                 text width=1.5cm,%
                                 sibling angle=60,%
                                 font=\pgfutil@font@footnotesize}}%
\tikzset{level 3 concept/.style={minimum size=1.15cm,%
                                 text width=1cm,%
                                 level distance=2.4cm,%
                                 sibling angle=30,%
                                 font=\pgfutil@font@tiny}}%
\tikzset{level 4 concept/.style={minimum size=0.9cm,%
                                 text width=0.7cm,
                                 level distance=1.85cm,%
                                 sibling angle=30,%
                                 font=\pgfutil@font@tiny}}%

\tikzset{small mindmap/.style=
  {%
  root concept/.style={minimum size=2.3cm,text width=2.1cm,font=\pgfutil@font@footnotesize},
  level 1 concept/.style={%
    minimum size=1.5cm,
    level distance=2.8cm,
    text width=1.4cm,
    sibling angle=75,
    font=\pgfutil@font@scriptsize},%
  level 2 concept/.style={%
    minimum size=1.1cm,%
    level distance=2.2cm,%
    text width=1.1cm,%
    sibling angle=60,%
    font=\pgfutil@font@tiny},%
  level 3 concept/.style={%
    level 2 concept,
    sibling angle=30,%
    font=\pgfutil@font@tiny},%
  level 4 concept/.style={%
    level 3 concept,
  },
  mindmap,%
  line width=2pt,
  }}%

\tikzset{large mindmap/.style=
  {%
  root concept/.style={minimum size=5.6cm,text width=4.5cm,font=\pgfutil@font@Large},
  level 1 concept/.style={%
    minimum size=3.2cm,
    level distance=7cm,
    text width=2.8cm,
    sibling angle=60,
    font=},%
  level 2 concept/.style={%
    minimum size=2.45cm,%
    level distance=4cm,%
    text width=2.2cm,%
    sibling angle=60,%
    font=\pgfutil@font@small%
    },%
  level 3 concept/.style={%
    minimum size=1.63cm,%
    text width=1.4cm,%
    level distance=3.38cm,%
    sibling angle=30,%
    font=\pgfutil@font@scriptsize},%
  level 4 concept/.style={%
    minimum size=1.27cm,%
    text width=1cm,
    level distance=2.60cm,%
    sibling angle=30,%
    font=\pgfutil@font@tiny},%
  mindmap,%
  line width=2pt,
  }}%

\tikzset{huge mindmap/.style=
  {%
  root concept/.style={minimum size=8cm,text width=7cm,font=\pgfutil@font@huge},
  level 1 concept/.style={%
    minimum size=4.5cm,
    level distance=10cm,
    text width=4cm,
    sibling angle=60,
    font=\pgfutil@font@large},%
  level 2 concept/.style={%
    minimum size=3.5cm,%
    level distance=5.8cm,%
    text width=3cm,%
    sibling angle=60,%
    font=%
    },%
  level 3 concept/.style={%
    minimum size=2.3cm,%
    text width=2cm,%
    level distance=4.8cm,%
    sibling angle=30,%
    font=\pgfutil@font@footnotesize},%
  level 4 concept/.style={%
    minimum size=1.7cm,%
    text width=1.4cm,
    level distance=3.7cm,%
    sibling angle=30,%
    font=\pgfutil@font@scriptsize},%
  mindmap,%
  line width=3pt,
  }}%



\tikzset{annotation/.style={shape=rectangle,
                            minimum size=0pt,
                            text width=3.5cm,
                            outer sep=1.5mm,
                            inner sep=1mm,
                            text badly ragged,
                            rounded corners,
                            font=\pgfutil@font@tiny,
                            every annotation}}%
\tikzset{every annotation/.style={}}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymindmap.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypatterns.code.tex ====

\ProvidesFileRCS{tikzlibrarypatterns.code.tex}

\usepgflibrary{patterns}%

\tikzoption{pattern color}{\edef\tikz@pattern@color{#1}}%
\tikzoption{pattern}[]{%
  \edef\tikz@temp{#1}%
  \ifx\tikz@temp\tikz@nonetext%
    \tikz@addmode{\tikz@mode@fillfalse}%
  \else%
    \ifx\tikz@temp\pgfutil@empty%
    \else%
      \tikz@addoption{\pgfsetfillpattern{#1}{\tikz@pattern@color}}%
      \def\tikz@pattern{#1}%
    \fi%
    \tikz@addmode{\tikz@mode@filltrue}%
  \fi%
}%
\def\tikz@pattern@color{black}%
\def\tikz@pattern{dots}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypatterns.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypatterns.meta.code.tex ====

\usepgflibrary{patterns.meta}%

\tikzset{%
  pattern color/.code=\edef\tikz@pattern@color{#1},
  pattern/.code={%
  \edef\tikz@temp{#1}%
  \ifx\tikz@temp\tikz@nonetext%
    \tikz@addmode{\tikz@mode@fillfalse}%
  \else%
    \ifx\tikz@temp\pgfutil@empty%
    \else%
      \tikz@addoption{\pgfsetfillpattern{#1}{\tikz@pattern@color}}%
      \def\tikz@pattern{#1}%
    \fi%
    \tikz@addmode{\tikz@mode@filltrue}%
  \fi%
  }
}%

\def\tikz@pattern@color{black}%
\def\tikz@pattern{}%

\tikzset{patterns/.cd,
  .unknown/.code={%
    \let\tikz@pat@key=\pgfkeyscurrentname%
    \pgfkeys{/pgf/patterns/\tikz@pat@key/.try={#1}}%
  },
  bottom left/.style={/pgf/patterns/bottom left={\tikz@scan@one@point\pgf@pat@process#1}},
  top right/.style={/pgf/patterns/top right={\tikz@scan@one@point\pgf@pat@process#1}},
  bounding box/.style args={#1(#2)#3and#4(#5)#6}{%
    /tikz/patterns/bottom left={(#2)},
    /tikz/patterns/top right={#4(#5)},
  },
  tile size/.style={/pgf/patterns/tile size={\tikz@scan@one@point\pgf@pat@process#1}},
  tile transformation/.style={/pgf/patterns/tile transformation={%
      \let\tikz@transform=\relax\pgfkeys{/tikz/.cd,#1}}%
  },
  infer tile bounding box/.code={
    \def\pgf@pat@codeafter{%
      \xdef\tikz@pat@installbb{%
        \noexpand\pgfkeys{/tikz/patterns/bounding box={%
        (\the\pgf@picminx-#1,\the\pgf@picminy-#1) and
        (\the\pgf@picmaxx+#1,\the\pgf@picmaxy+#1)
      },
      /tikz/patterns/tile size={%
        (\the\pgf@picmaxx-\the\pgf@picminx,
          \the\pgf@picmaxy-\the\pgf@picminy)}}}%
    }%
    \let\pgf@pat@declarepost=\tikz@pat@installbb%
  },
  infer tile bounding box/.default=0pt,
}%

\def\tikzdeclarepattern#1{%
   \begingroup%
     \def\pgf@pat@codebefore{%
        \let\tikz@transform=\relax%
        \pgftransformreset%
        \tikz@declarepattern@install%
        \ifnum\pgf@pat@type=0\relax%
          \let\pgfsetstrokecolor=\pgfutil@gobble%
          \let\pgfsetfillcolor=\pgfutil@gobble%
        \fi%
        \def\tikz@fig{\tikzerror{You cannot use `\string\node' inside a pattern}}%
        \def\tikz@edge@plain{\tikzerror{You cannot use `edge' inside a pattern}}%
        \def\tikz@to{\tikzerror{You cannot use `to' paths inside a pattern}}%
        \tikzset{pattern/.code={\tikzerror{You cannot nest patterns}},
          pattern color/.style={pattern}}%
     }%
     \pgfdeclarepattern{/tikz/patterns/.cd,#1}%
   \endgroup%
 }%

\def\tikz@declarepattern@install{%
  \let\tikz@compat@color@set=\tikz@compat@color@set@insidepatttern%
  \tikz@installcommands%
}%

\let\tikz@compat@color@set@orig=\tikz@compat@color@set
\def\tikz@compat@color@set@insidepatttern#1{%
  \tikz@compat@color@set@orig{#1}%
  \pgfsetfillcolor{#1}\pgfsetstrokecolor{#1}%
}%


==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypatterns.meta.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryperspective.code.tex ====

\ProvidesFileRCS{tikzlibraryperspective.code.tex}

\pgfmathsetmacro\pgf@H@tpp@aa{+1}
  \pgfmathsetmacro\pgf@H@tpp@ab{+0}
    \pgfmathsetmacro\pgf@H@tpp@ac{+0}
\pgfmathsetmacro\pgf@H@tpp@ba{+0}
  \pgfmathsetmacro\pgf@H@tpp@bb{+1}
    \pgfmathsetmacro\pgf@H@tpp@bc{+0}
\pgfmathsetmacro\pgf@H@tpp@ca{+0}
  \pgfmathsetmacro\pgf@H@tpp@cb{+0}
    \pgfmathsetmacro\pgf@H@tpp@cc{+1}
\pgfmathsetmacro\pgf@H@tpp@da{+0}
  \pgfmathsetmacro\pgf@H@tpp@db{+0}
    \pgfmathsetmacro\pgf@H@tpp@dc{+0}

\def\pgfpointperspectivexyz#1#2#3{%
  \pgfmathsetmacro\pgf@pp@w%
    { \pgf@H@tpp@da*(#1) + \pgf@H@tpp@db*(#2) + \pgf@H@tpp@dc*(#3) + 1}
  \pgfmathsetmacro\pgf@pp@x%
    {(\pgf@H@tpp@aa*(#1) + \pgf@H@tpp@ab*(#2) + \pgf@H@tpp@ac*(#3))/\pgf@pp@w}
  \pgfmathsetmacro\pgf@pp@y%
    {(\pgf@H@tpp@ba*(#1) + \pgf@H@tpp@bb*(#2) + \pgf@H@tpp@bc*(#3))/\pgf@pp@w}
  \pgfmathsetmacro\pgf@pp@z%
    {(\pgf@H@tpp@ca*(#1) + \pgf@H@tpp@cb*(#2) + \pgf@H@tpp@cc*(#3))/\pgf@pp@w}
  \pgf@x=\pgf@pp@x\pgf@xx%
  \advance\pgf@x by \pgf@pp@y\pgf@yx%
  \advance\pgf@x by \pgf@pp@z\pgf@zx%
  \pgf@y=\pgf@pp@x\pgf@xy%
  \advance\pgf@y by \pgf@pp@y\pgf@yy%
  \advance\pgf@y by \pgf@pp@z\pgf@zy}

\tikzdeclarecoordinatesystem{three point perspective}
{%
  \tikzset{cs/.cd,x=0,y=0,z=0,#1}%
  \pgfpointperspectivexyz{\tikz@cs@x}{\tikz@cs@y}{\tikz@cs@z}
}
\tikzaliascoordinatesystem{tpp}{three point perspective}

\pgfkeys{
  /perspective/.cd,
    p/.code args={(#1,#2,#3)}{
      \pgfmathparse{ifthenelse(#1,int(1),int(0))}
      \ifnum\pgfmathresult=0\else
        \pgfmathsetmacro\pgf@H@tpp@ba{#2/#1}
        \pgfmathsetmacro\pgf@H@tpp@ca{#3/#1}
        \pgfmathsetmacro\pgf@H@tpp@da{ 1/#1}
      \fi
    },
    q/.code args={(#1,#2,#3)}{
      \pgfmathparse{ifthenelse(#2,int(1),int(0))}
      \ifnum\pgfmathresult=0\else
        \pgfmathsetmacro\pgf@H@tpp@ab{#1/#2}
        \pgfmathsetmacro\pgf@H@tpp@cb{#3/#2}
        \pgfmathsetmacro\pgf@H@tpp@db{ 1/#2}
      \fi
    },
    r/.code args={(#1,#2,#3)}{
      \pgfmathparse{ifthenelse(#3,int(1),int(0))}
      \ifnum\pgfmathresult=0\else
        \pgfmathsetmacro\pgf@H@tpp@ac{#1/#3}
        \pgfmathsetmacro\pgf@H@tpp@bc{#2/#3}
        \pgfmathsetmacro\pgf@H@tpp@dc{ 1/#3}
      \fi
    },
}

\tikzset{
  perspective/.append code={\pgfkeys{/perspective/.cd,#1}},
  perspective/.default={
    p={(10,0,0)},
    q={(0,10,0)},
    r={(0,0,20)}},
}

\tikzset{
  3d view/.code 2 args={%
    \pgfmathsetmacro\pgf@view@az{#1}%
    \pgfmathsetmacro\pgf@view@el{#2}%
    \pgfmathsetmacro\pgf@xvec@x{cos(\pgf@view@az)}%
    \pgfmathsetmacro\pgf@xvec@y{-sin(\pgf@view@az)*sin(\pgf@view@el)}%
    \pgfmathsetmacro\pgf@yvec@x{sin(\pgf@view@az)}%
    \pgfmathsetmacro\pgf@yvec@y{cos(\pgf@view@az)*sin(\pgf@view@el)}%
    \pgfmathsetmacro\pgf@zvec@x{+0}%
    \pgfmathsetmacro\pgf@zvec@y{cos(\pgf@view@el)}%
    \pgfsetxvec{\pgfpoint{\pgf@xvec@x cm}{\pgf@xvec@y cm}}%
    \pgfsetyvec{\pgfpoint{\pgf@yvec@x cm}{\pgf@yvec@y cm}}%
    \pgfsetzvec{\pgfpoint{\pgf@zvec@x cm}{\pgf@zvec@y cm}}%
  },
  3d view/.default={-30}{15},
  isometric view/.style={3d view={-45}{atan(1/sqrt(2))}},
}

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryperspective.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypetri.code.tex ====

\ProvidesFileRCS{tikzlibrarypetri.code.tex}



\tikzset{every place/.style=           {}}%
\tikzset{place/.style=                 {circle,draw,inner sep=0pt,
                                        minimum size=5ex,
                                        every place}}%



\tikzset{every transition/.style=      {}}%
\tikzset{transition/.style=            {rectangle,draw,inner sep=0pt,
                                        minimum size=4mm,
                                        every transition}}%



\tikzset{pre/.style=                   {<-,shorten <=1pt}}%
\tikzset{post/.style=                  {->,shorten >=1pt}}%
\tikzset{pre and post/.style=          {<->,shorten >=1pt,shorten <=1pt}}%




\tikzset{every token/.style=           {}}%
\tikzset{token/.style=                 {fill=black,draw=none,circle,
                                        inner sep=0.5pt,minimum size=1ex,
                                        text=white,font=\pgfutil@font@tiny,every token}}%

\tikzoption{token distance}{\def\tikz@token@distance{#1}}%
\def\tikz@token@distance{1.5ex}%

\tikzset{children are tokens/.style=   {growth function=\tikz@grow@tokens,edge from parent path=}}%

\tikzoption{tokens}{%
  \ifnum#1>0\relax%
    \tikzset{append after command={}
     {[children are tokens]child foreach \tikz@dummy in {1,...,#1} {node[token]{}}}}%
  \fi}%

\tikzoption{colored tokens}{%
  \tikzset{append after command={}%
    {[children are tokens]child foreach \tikz@child@color in {#1} {node[token,\tikz@child@color]{}}}}%
  }%

\tikzoption{structured tokens}{%
  \tikzset{append after command={}%
    {[children are tokens]child foreach \tikzpetrichildname in {#1} {node[token]{\tikzpetrichildname}}}}%
  }%


\def\tikz@grow@tokens{%
  \pgfmathsetlength{\pgf@xa}{\tikz@token@distance}%
  \pgfmathsetlength{\pgf@ya}{\tikz@token@distance}%
  \pgf@xc=0pt%
  \pgf@yc=0pt%
  \csname tikz@grow@tokens@placer@\the\tikznumberofchildren @\the\tikznumberofcurrentchild\endcsname%
  \pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
}%

\def\tikz@def@grow@tokens#1#2#3#4{%
  \expandafter\def\csname tikz@grow@tokens@placer@#1@#2\endcsname{%
    \pgf@xc=#3\pgf@xa%
    \pgf@yc=#4\pgf@ya}%
}%


\tikz@def@grow@tokens{1}{1}{0}{0}%

\tikz@def@grow@tokens{2}{1}{-.5}{0}%
\tikz@def@grow@tokens{2}{2}{.5}{0}%

\tikz@def@grow@tokens{3}{1}{0} {0.57}%
\tikz@def@grow@tokens{3}{2}{-.5}{-.306025}%
\tikz@def@grow@tokens{3}{3}{.5} {-.306025}%

\tikz@def@grow@tokens{4}{1}{-.5}{.5}%
\tikz@def@grow@tokens{4}{2}{.5}{.5}%
\tikz@def@grow@tokens{4}{3}{-.5}{-.5}%
\tikz@def@grow@tokens{4}{4}{.5}{-.5}%

\tikz@def@grow@tokens{5}{1}{0}{.85}%
\tikz@def@grow@tokens{5}{2}{-0.808398}{0.26266}%
\tikz@def@grow@tokens{5}{3}{0.808398}{0.26266}%
\tikz@def@grow@tokens{5}{4}{-0.499617}{-0.687664}%
\tikz@def@grow@tokens{5}{5}{0.499617}{-0.687664}%

\tikz@def@grow@tokens{6}{1}{-1}{.5}%
\tikz@def@grow@tokens{6}{2}{0}{.5}%
\tikz@def@grow@tokens{6}{3}{1}{.5}%
\tikz@def@grow@tokens{6}{4}{-1}{-.5}%
\tikz@def@grow@tokens{6}{5}{0}{-.5}%
\tikz@def@grow@tokens{6}{6}{1}{-.5}%

\tikz@def@grow@tokens{7}{1}{0}{1}%
\tikz@def@grow@tokens{7}{2}{-1}{.5}%
\tikz@def@grow@tokens{7}{3}{0}{0}%
\tikz@def@grow@tokens{7}{4}{1}{.5}%
\tikz@def@grow@tokens{7}{5}{-1}{-.5}%
\tikz@def@grow@tokens{7}{6}{0}{-1}%
\tikz@def@grow@tokens{7}{7}{1}{-.5}%

\tikz@def@grow@tokens{8}{1}{-.5}{1}%
\tikz@def@grow@tokens{8}{2}{.5}{1}%
\tikz@def@grow@tokens{8}{3}{-1}{0}%
\tikz@def@grow@tokens{8}{4}{0}{0}%
\tikz@def@grow@tokens{8}{5}{1}{0}%
\tikz@def@grow@tokens{8}{6}{-1}{-1}%
\tikz@def@grow@tokens{8}{7}{0}{-1}%
\tikz@def@grow@tokens{8}{8}{1}{-1}%

\tikz@def@grow@tokens{9}{1}{-1}{1}%
\tikz@def@grow@tokens{9}{2}{0}{1}%
\tikz@def@grow@tokens{9}{3}{1}{1}%
\tikz@def@grow@tokens{9}{4}{-1}{0}%
\tikz@def@grow@tokens{9}{5}{0}{0}%
\tikz@def@grow@tokens{9}{6}{1}{0}%
\tikz@def@grow@tokens{9}{7}{-1}{-1}%
\tikz@def@grow@tokens{9}{8}{0}{-1}%
\tikz@def@grow@tokens{9}{9}{1}{-1}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypetri.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryplothandlers.code.tex ====

\ProvidesFileRCS{tikzlibraryplothandlers.code.tex}

\usepgflibrary{plothandlers}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryplothandlers.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryplotmarks.code.tex ====

\ProvidesFileRCS{tikzlibraryplotmarks.code.tex}

\usepgflibrary{plotmarks}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryplotmarks.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex ====

\ProvidesFileRCS{tikzlibrarypositioning.code.tex}


\tikzset{above/.code=\tikz@lib@place@handle@{#1}{south}{0}{1}{north}{1}}%
\tikzset{above left/.code=\tikz@lib@place@handle@{#1}{south east}{-1}{1}{north west}{0.707106781}}%
\tikzset{above right/.code=\tikz@lib@place@handle@{#1}{south west}{1}{1}{north east}{0.707106781}}%
\tikzset{base left/.code =\tikz@lib@place@handle@{#1}{base east}{-1}{0}{base west}{1}}%
\tikzset{base right/.code=\tikz@lib@place@handle@{#1}{base west}{1}{0}{base east}{1}}%
\tikzset{below/.code=\tikz@lib@place@handle@{#1}{north}{0}{-1}{south}{1}}%
\tikzset{below left/.code=\tikz@lib@place@handle@{#1}{north east}{-1}{-1}{south west}{0.707106781}}%
\tikzset{below right/.code=\tikz@lib@place@handle@{#1}{north west}{1}{-1}{south east}{0.707106781}}%
\tikzset{left/.code =\tikz@lib@place@handle@{#1}{east}{-1}{0}{west}{1}}%
\tikzset{mid left/.code =\tikz@lib@place@handle@{#1}{mid east}{-1}{0}{mid west}{1}}%
\tikzset{mid right/.code=\tikz@lib@place@handle@{#1}{mid west}{1}{0}{mid east}{1}}%
\tikzset{right/.code=\tikz@lib@place@handle@{#1}{west}{1}{0}{east}{1}}%

\newif\iftikz@lib@ignore@size

\pgfutil@g@addto@macro\tikz@node@reset@hook{\tikz@addtransform{\tikz@lib@pos@call}\let\tikz@lib@pos@call=\relax}%

\tikzset{on grid/.is if=tikz@lib@ignore@size}%

\tikzset{node distance=1cm and 1cm}%

\def\tikz@lib@place@handle@#1#2#3#4#5#6{%
  \def\tikz@anchor{#2}%
  \let\tikz@do@auto@anchor=\relax%
  \edef\tikz@temp{#1}%
  \def\tikz@lib@place@single@factor{#6}%
  \expandafter\tikz@lib@place@handle@@\expandafter{\tikz@temp}{#3}{#4}{#5}%
}%
\def\tikz@lib@place@handle@@#1#2#3#4{%
  \pgfutil@in@{of }{#1}%
  \ifpgfutil@in@%
    \tikz@lib@place@of#1\tikz@stop{#4}%
  \else%
    \edef\tikz@lib@place@nums{#1}%
  \fi%
  \ifx\tikz@lib@place@nums\pgfutil@empty%
  \else%
    \expandafter\tikz@lib@place@parse@nums\expandafter{\tikz@lib@place@nums}%
    \pgf@x=#2\pgf@x%
    \pgf@y=#3\pgf@y%
    \edef\tikz@lib@pos@call{\noexpand\pgftransformshift{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
  \fi%
}%

\def\tikz@lib@place@parse@nums#1{%
  \pgfutil@in@{and}{#1}%
  \ifpgfutil@in@%
    \tikz@lib@place@parse@nums@#1\tikz@stop%
  \else%
    \tikz@lib@place@parse@nums@#1and#1\tikz@stop%
    \pgf@x=\tikz@lib@place@single@factor\pgf@x%
    \pgf@y=\tikz@lib@place@single@factor\pgf@y%
  \fi
}%
\def\tikz@lib@place@parse@nums@#1and#2\tikz@stop{%
  \pgfmathparse{#2}%
  \ifpgfmathunitsdeclared%
    \pgf@xa=\pgfmathresult pt%
    \pgf@ya=0pt%
  \else%
    \let\tikz@lib@temp=\pgfmathresult%
    \pgf@process{\pgfpointxy{\tikz@lib@temp}{0}}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
  \fi%
  \pgfmathparse{#1}%
  \ifpgfmathunitsdeclared%
    \advance\pgf@ya by\pgfmathresult pt%
  \else%
    \let\tikz@lib@temp=\pgfmathresult%
    \pgf@process{\pgfpointxy{0}{\tikz@lib@temp}}%
    \advance\pgf@xa by\pgf@x%
    \advance\pgf@ya by\pgf@y%
  \fi%
  \pgf@x=\pgf@xa%
  \pgf@y=\pgf@ya%
}%

\def\tikz@lib@place@of#1of #2\tikz@stop#3{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
    \tikz@lib@place@of@{\tikz@node@distance}{#2}{#3}%
  \else%
    \tikz@lib@place@of@{#1}{#2}{#3}%
  \fi%
}%
\def\tikz@lib@place@of@#1#2#3{%
  \tikz@scan@one@point\tikz@lib@place@remember(#2)%
  \iftikz@shapeborder%
    \iftikz@lib@ignore@size%
      \edef\tikz@node@at{\noexpand\pgfpointanchor{\tikz@shapeborder@name}{center}}%
      \def\tikz@anchor{center}%
    \else%
      \edef\tikz@node@at{\noexpand\pgfpointanchor{\tikz@shapeborder@name}{#3}}%
    \fi%
  \fi%
  \edef\tikz@lib@place@nums{#1}%
}%
\def\tikz@lib@place@remember#1{\def\tikz@node@at{#1}}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryquotes.code.tex ====

\ProvidesFileRCS{tikzlibraryquotes.code.tex}

\def\tikz@quote@parser#1{\tikz@quote@@parser#1\pgf@stop}%
\def\tikz@quote@@parser"#1"{%
  \pgfutil@ifnextchar\bgroup{%
    \tikz@quote@@parser@group{#1}}{%
    \pgfutil@ifnextchar'{%
      \tikz@quote@@parser@apo{#1}}{%
      \tikz@quote@@parser@normal{#1}}}}%
\def\tikz@quote@@parser@apo#1'{%
  \pgfutil@ifnextchar\bgroup{\tikz@quote@@parser@apo@group{#1}}{\tikz@quote@@parser@apo@normal{#1}}}%
\def\tikz@quote@@parser@group#1#2#3\pgf@stop{%
  \expandafter\def\expandafter\tikz@temp\expandafter{\tikz@quotes@as{#1}{#2}}%
  \expandafter\pgfkeysalso\expandafter{\tikz@temp}%
}%
\def\tikz@quote@@parser@normal#1#2\pgf@stop{%
  \expandafter\def\expandafter\tikz@temp\expandafter{\tikz@quotes@as{#1}{#2}}%
  \expandafter\pgfkeysalso\expandafter{\tikz@temp}%
}%
\def\tikz@quote@@parser@apo@group#1#2#3\pgf@stop{%
  \expandafter\def\expandafter\tikz@temp\expandafter{\tikz@quotes@as{#1}{',#2}}%
  \expandafter\pgfkeysalso\expandafter{\tikz@temp}%
}%
\def\tikz@quote@@parser@apo@normal#1#2\pgf@stop{%
  \expandafter\def\expandafter\tikz@temp\expandafter{\tikz@quotes@as{#1}{',#2}}%
  \expandafter\pgfkeysalso\expandafter{\tikz@temp}%
}%

\pgfkeys{/handlers/first char syntax=true}%

\def\tikz@enable@node@quotes{%
  \pgfkeyssetvalue{/handlers/first char syntax/\expandafter\meaning\string"}{\tikz@quote@parser}%
  \let\tikz@quotes@as\tikz@node@quotes@as%
}%
\def\tikz@enable@edge@quotes{%
  \pgfkeyssetvalue{/handlers/first char syntax/\expandafter\meaning\string"}{\tikz@quote@parser}%
  \let\tikz@quotes@as\tikz@edge@quotes@as%
}%
\def\tikz@enable@pic@quotes{%
  \pgfkeyssetvalue{/handlers/first char syntax/\expandafter\meaning\string"}{\tikz@quote@parser}%
  \let\tikz@quotes@as\tikz@pic@quotes@as%
}%

\tikzset{
  node quotes mean/.code={\def\tikz@node@quotes@as##1##2{#1}},
  edge quotes mean/.code={\def\tikz@edge@quotes@as##1##2{#1}},
  pic quotes mean/.code={\def\tikz@pic@quotes@as##1##2{#1}},
  quotes mean pin/.style={node quotes mean={
      pin={[direction shorthands,every pin quotes/.try,##2]##1}}},
  quotes mean label/.style={node quotes mean={
      label={[direction shorthands,every label quotes/.try,##2]##1}}},
  quotes mean label,
  edge quotes mean={edge node={node [every edge quotes,#2]{#1}}},
  pic quotes mean={pic text={#1},pic text options={every pic quotes/.try,#2}},
  every edge quotes/.style={auto},
  direction shorthands/.code={%
    \pgfkeyslet{/tikz/centered/.@cmd}\tikz@label@@centered
    \pgfkeyslet{/tikz/above/.@cmd}\tikz@label@@above
    \pgfkeyslet{/tikz/below/.@cmd}\tikz@label@@below
    \pgfkeyslet{/tikz/left/.@cmd}\tikz@label@@left
    \pgfkeyslet{/tikz/right/.@cmd}\tikz@label@@right
    \pgfkeyslet{/tikz/above left/.@cmd}\tikz@label@@above@left
    \pgfkeyslet{/tikz/above right/.@cmd}\tikz@label@@above@right
    \pgfkeyslet{/tikz/below left/.@cmd}\tikz@label@@below@left
    \pgfkeyslet{/tikz/below right/.@cmd}\tikz@label@@below@right
  }
}%

\def\tikz@label@@centered#1\pgfeov{\pgfkeysalso{label position=center,pin position=center}}%
\def\tikz@label@@above#1\pgfeov{\pgfkeysalso{label position=90,pin position=90}}%
\def\tikz@label@@below#1\pgfeov{\pgfkeysalso{label position=-90,pin position=-90}}%
\def\tikz@label@@left#1\pgfeov{\pgfkeysalso{label position=180,pin position=180}}%
\def\tikz@label@@right#1\pgfeov{\pgfkeysalso{label position=0,pin position=0}}%
\def\tikz@label@@above@left#1\pgfeov{\pgfkeysalso{label position=135,pin position=135}}%
\def\tikz@label@@below@left#1\pgfeov{\pgfkeysalso{label position=-135,pin position=-135}}%
\def\tikz@label@@above@right#1\pgfeov{\pgfkeysalso{label position=45,pin position=45}}%
\def\tikz@label@@below@right#1\pgfeov{\pgfkeysalso{label position=-45,pin position=-45}}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryquotes.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryrdf.code.tex ====

\ProvidesFileRCS{tikzlibraryrdf.code.tex}



\def\tikz@add@rdf@pre@option#1{\expandafter\def\expandafter\tikz@rdf@pre@options\expandafter{\tikz@rdf@pre@options#1}}%
\def\tikz@add@rdf@post@option#1{\expandafter\def\expandafter\tikz@rdf@post@options\expandafter{\tikz@rdf@post@options#1}}%

\let\tikz@rdf@pre@options\pgfutil@empty
\let\tikz@rdf@post@options\pgfutil@empty

\tikzset{
  rdf engine on/.code={%
    \def\tikz@clear@rdf@options{\let\tikz@rdf@pre@options\pgfutil@empty\let\tikz@rdf@post@options\pgfutil@empty}%
    \def\tikz@do@rdf@pre@options{\tikz@rdf@pre@options\let\tikz@rdf@pre@options\pgfutil@empty}%
    \def\tikz@do@rdf@post@options{\tikz@rdf@post@options\let\tikz@rdf@post@options\pgfutil@empty}%
    \pgfkeys{/tikz/rdf engine/.code=\tikz@add@rdf@pre@option{\pgfqkeys{/tikz/rdf engine}{##1}}}%
  },
  rdf engine/.cd,
  every statement/.style=,
  prefix/.code=\pgfrdfprefix{#1},
  statement/.code={%
    {%
      \pgfkeys{/tikz/rdf engine/every statement}%
      \pgfqkeys{/tikz/rdf engine/statements}{#1}%
      \iftikz@rdf@is@a@container\tikz@rdf@init@container\fi%
      \iftikz@rdf@is@a@member\tikz@rdf@make@member\fi%
      \tikz@rdf@make@triple%
    \expandafter}\tikz@rdf@action%
  },
  get scope curie/.code={%
    \ifx\tikz@id@name\pgfutil@empty%
      \def\tikz@id@name{@rdf}%
    \fi%
    \pgfidrefnextuse\tikz@temp{\tikz@id@name}%
    \edef#1{\tikzrdfhashmark\tikz@temp}%
  },
  get new resource curie/.code={%
    \pgfsys@new@id\tikz@temp%
    \edef#1{\tikzrdfhashmark\tikz@temp}%
  },
  scope is new context/.style={get scope curie=\tikzrdfcontext}
}%

\def\tikzrdfcontext{\tikzrdfhashmark}%

\tikzset{
  rdf engine/statements/.cd,
  subject/.code={%
    \def\tikz@rdf@target{\tikz@rdf@subject}%
    \tikz@rdf@parse{#1}%
  },
  predicate/.code={%
    \def\tikz@rdf@target{\tikz@rdf@predicate}%
    \tikz@rdf@parse{#1}%
  },
  object/.code={%
    \let\tikz@rdf@object@literal\relax%
    \let\tikz@rdf@object\relax%
    \def\tikz@temp{#1}%
    \ifx\tikz@temp\tikz@rdf@current@scope@text%
      \tikz@rdf@object@scope@contenttrue%
    \else%
      \tikz@rdf@object@scope@contentfalse%
      \def\tikz@rdf@target{\tikz@rdf@object}%
      \tikz@rdf@parse{#1}%
    \fi%
  },
  has type/.style={predicate=rdf:type,object={#1}},
  is a bag/.style={has type=rdf:Bag, is a container},
  is a sequence/.style={has type=rdf:Seq, is a container},
  is an alternative/.style={has type=rdf:Alt, is a container},
  is a container/.code={\tikz@rdf@is@a@containertrue},
  has as member/.code={\tikz@rdf@is@a@membertrue},%
}%

\def\tikz@rdf@current@scope@text{scope content}%

\let\tikz@rdf@subject\relax
\let\tikz@rdf@predicate\pgfutil@empty
\let\tikz@rdf@object\relax
\let\tikz@rdf@object@literal\relax
\let\tikz@rdf@container\relax

\newif\iftikz@rdf@object@scope@content
\newif\iftikz@rdf@is@a@container
\newif\iftikz@rdf@is@a@member


\def\tikz@rdf@parse#1{%
  \edef\tikz@temp{#1}%
  \expandafter\tikz@rdf@parse@#1\relax%
}%

\def\tikz@rdf@parse@{%
  \pgfutil@ifnextchar({\tikz@rdf@parse@name}{%
    \pgfutil@ifnextchar"{\tikz@rdf@parse@literals}{%
      \tikz@rdf@parse@curie%
    }%
  }%
}%

\def\tikz@rdf@parse@name(#1)\relax{%
  \pgfidrefprevuse\tikz@rdf@the@id{#1}\expandafter\edef\tikz@rdf@target{\tikzrdfhashmark\tikz@rdf@the@id}%
}%
\def\tikz@rdf@parse@literals"#1"{%
  \ifx\tikz@rdf@target\tikz@rdf@object@name%
    \def\tikz@rdf@object@literal{#1}%
  \else%
    \tikzerror{Only RDF objects can be literals}%
  \fi%
  \pgfutil@ifnextchar\relax\pgfutil@gobble\tikz@rdf@parse@literals@rest%
}%
\def\tikz@rdf@parse@literals@rest and scope content\relax{%
  \tikz@rdf@object@scope@contenttrue%
}%

\def\tikz@rdf@object@name{\tikz@rdf@object}%
\def\tikz@rdf@parse@curie#1\relax{%
  \expandafter\def\tikz@rdf@target{#1}%
}%

{%
  \catcode`\#=11
  \gdef\tikzrdfhashmark{#}%
}%


\def\tikz@rdf@make@triple{%
  \ifx\tikz@rdf@subject\relax%
    \tikzerror{RDF statement misses subject}%
  \else%
    \ifx\tikz@rdf@predicate\relax%
      \tikzerror{RDF statement misses predicate}%
    \else%
      \iftikz@rdf@object@scope@content%
        \edef\tikz@marshal{\noexpand\tikz@rdf@make@content@triple{\tikz@rdf@subject}{\tikz@rdf@predicate}{\tikz@rdf@object@literal}}%
        \tikz@marshal%
      \else%
        \ifx\tikz@rdf@object\relax%
          \ifx\tikz@rdf@object@literal\relax%
            \tikzerror{RDF statement misses object}%
          \else%
            \edef\tikz@marshal{\noexpand\tikz@rdf@make@literal@triple{\tikz@rdf@subject}{\tikz@rdf@predicate}{\tikz@rdf@object@literal}}%
            \tikz@marshal%
          \fi%
        \else%
          \edef\tikz@marshal{\noexpand\tikz@rdf@make@normal@triple{\tikz@rdf@subject}{\tikz@rdf@predicate}{\tikz@rdf@object}}%
          \tikz@marshal%
        \fi%
      \fi%
    \fi%
  \fi%
}%

\def\tikz@rdf@make@content@triple#1#2#3{%
  \def\tikz@rdf@action{%
    \def\tikz@rdf@invoke@code{%
      \def\tikz@temp{#3}%
      \ifx\tikz@temp\tikz@rdf@object@literal@text\else%
        \pgfrdfcontent{#3}%
      \fi%
      \pgfrdfabout{#1}%
      \pgfrdfdatatype{rdf:XMLLiteral}%
      \foreach \tikz@rdf@pred in {#2}{%
        \ifx\tikz@rdf@pred\pgfutil@empty\else%
          \expandafter\pgfrdfproperty\expandafter{\tikz@rdf@pred}%
        \fi%
      }%
    }%
  }%
}%

\def\tikz@rdf@make@literal@triple#1#2#3{%
  \def\tikz@rdf@action{%
    \tikz@add@rdf@post@option{%
      {%
        \pgfrdfabout{#1}%
        \foreach \tikz@rdf@pred in {#2}{%
          \ifx\tikz@rdf@pred\pgfutil@empty\else%
            \expandafter\pgfrdfproperty\expandafter{\tikz@rdf@pred}%
          \fi%
        }%
        \pgfrdfcontent{#3}%
        \pgfidscope%
        \endpgfidscope%
      }%
    }%
  }%
}%

\def\tikz@rdf@make@normal@triple#1#2#3{%
  \def\tikz@rdf@action{%
    \tikz@add@rdf@post@option{%
      {%
        \pgfrdfabout{#1}%
        \foreach \tikz@rdf@pred in {#2}{%
          \ifx\tikz@rdf@pred\pgfutil@empty\else%
            \expandafter\pgfrdfproperty\expandafter{\tikz@rdf@pred}%
          \fi%
        }%
        \pgfrdfresource{#3}%
        \pgfidscope%
        \endpgfidscope%
      }%
    }%
  }%
}%

\def\tikz@rdf@object@literal@text{\tikz@rdf@object@literal}%





\def\tikz@rdf@init@container{%
  \ifx\tikz@rdf@subject\relax%
    \tikzerror{RDF statement misses subject}%
  \else%
    \expandafter\gdef\csname tikz@rdf@c@\tikz@rdf@subject\endcsname{0}%
  \fi%
}%


\def\tikz@rdf@make@member{%
  \ifx\tikz@rdf@subject\relax%
    \tikzerror{RDF statement misses subject}%
  \else%
    \expandafter\let\expandafter\tikz@temp\csname tikz@rdf@c@\tikz@rdf@subject\endcsname%
    \ifx\tikz@temp\relax%
      \tikzerror{RDF subject is not a container}%
    \else%
      \c@pgf@counta\tikz@temp%
      \advance\c@pgf@counta by1\relax%
      \expandafter\xdef\csname tikz@rdf@c@\tikz@rdf@subject\endcsname{\the\c@pgf@counta}%
      \edef\tikz@rdf@predicate{rdf:_\the\c@pgf@counta}%
    \fi%
  \fi%
}%






\let\tikz@rdf@invoke@code\relax

\def\tikz@rdf@id@hook{%
  \tikz@rdf@invoke@code%
  \let\tikz@rdf@invoke@code\relax%
}%

\expandafter\def\expandafter\tikz@id@hook\expandafter{\tikz@id@hook\tikz@rdf@id@hook}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryrdf.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryscopes.code.tex ====

\ProvidesFileRCS{tikzlibraryscopes.code.tex}


\def\tikz@lib@scope@check{%
    \pgfutil@ifnextchar\tikz@intersect@finish{%
        \tikz@intersect@finish\afterassignment\tikz@lib@scope@check\let\tikz@next%
    }{%
      \pgfutil@ifnextchar\par{%
        \afterassignment\tikz@lib@scope@check\let\tikz@next%
      }%
      {\pgfutil@ifnextchar\bgroup{%
          \afterassignment\tikz@lib@scope@gotcha\let\tikz@next%
        }%
        {}%
      }%
    }%
}%

\def\tikz@lib@scope@gotcha{%
  \pgfutil@ifnextchar[{%
    \tikz@lib@scope@action%
  }{%
    \bgroup%
  }%
}%
\def\tikz@lib@scope@action[#1]{%
  \scope[#1]\bgroup\aftergroup\endscope%
  \tikz@lib@scope@check%
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryscopes.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadings.code.tex ====

\ProvidesFileRCS{tikzlibraryshadings.code.tex}

\usepgflibrary{shadings}%

\tikzset{
  lower left/.style={shading=bilinear interpolation,/utils/exec=\colorlet{lower left}{#1}},
  upper left/.style={shading=bilinear interpolation,/utils/exec=\colorlet{upper left}{#1}},
  lower right/.style={shading=bilinear interpolation,/utils/exec=\colorlet{lower right}{#1}},
  upper right/.style={shading=bilinear interpolation,/utils/exec=\colorlet{upper right}{#1}}
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadings.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex ====

\ProvidesFileRCS{tikzlibraryshadows.code.tex}

\usetikzlibrary{fadings}%


\tikzset{
  /tikz/shadow scale/.initial=1,
  /tikz/shadow xshift/.initial=0pt,
  /tikz/shadow yshift/.initial=0pt,
}%

\tikzset{
  general shadow/.style={
    preaction={
      #1,
      transform canvas={
        scale around=\pgfkeysvalueof{/tikz/shadow scale}:(current path bounding box.center),
        shift={(\pgfkeysvalueof{/tikz/shadow xshift},\pgfkeysvalueof{/tikz/shadow yshift})}
      },
    }
  },
  every shadow/.style={}
}%




\tikzset{
  /tikz/drop shadow/.style={
    general shadow={%
      shadow scale=1,
      shadow xshift=.5ex,
      shadow yshift=-.5ex,
      opacity=.5,
      fill=black!50,
      every shadow,
      #1
    }
  }
}%



\tikzset{
  /tikz/circular drop shadow/.style={
    general shadow={%
      shadow scale=1.1,
      shadow xshift=.3ex,
      shadow yshift=-.3ex,
      fill=black!50,
      path fading={circle with fuzzy edge 15 percent},
      every shadow,
      #1
    }
  }
}%




\tikzset{
  /tikz/circular glow/.style={
    general shadow={%
      shadow scale=1.25,
      shadow xshift=0pt,
      shadow yshift=0pt,
      fill=black!50,
      path fading={circle with fuzzy edge 15 percent},
      every shadow,
      #1,
    }
  }
}%






\tikzset{
  /tikz/copy shadow/.style={
    general shadow={%
      /utils/exec={\let\tikz@lib@shadow@fill=\tikz@fillcolor\let\tikz@lib@shadow@draw=\tikz@strokecolor},
      shadow scale=1,
      shadow xshift=.5ex,
      shadow yshift=.5ex,
      fill=\tikz@lib@shadow@fill,
      draw=\tikz@lib@shadow@draw,
      every shadow,
      #1
    }
  }
}%



\tikzset{
  /tikz/double copy shadow/.style={
    general shadow={%
      /utils/exec={\let\tikz@lib@shadow@fill=\tikz@fillcolor\let\tikz@lib@shadow@draw=\tikz@strokecolor},
      shadow scale=1,
      shadow xshift=.5ex,
      shadow yshift=.5ex,
      fill=\tikz@lib@shadow@fill,
      draw=\tikz@lib@shadow@draw,
      #1,
      shadow xshift/.expanded=2*\pgfkeysvalueof{/tikz/shadow xshift},
      shadow yshift/.expanded=2*\pgfkeysvalueof{/tikz/shadow yshift},
    },
    general shadow={%
      /utils/exec={\let\tikz@lib@shadow@fill=\tikz@fillcolor\let\tikz@lib@shadow@draw=\tikz@strokecolor},
      shadow scale=1,
      shadow xshift=.5ex,
      shadow yshift=.5ex,
      fill=\tikz@lib@shadow@fill,
      draw=\tikz@lib@shadow@draw,
      #1,
    },
  }
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex ====

\ProvidesFileRCS{tikzlibraryshapes.arrows.code.tex}

\usepgflibrary{shapes.arrows}%

\pgfkeys{/tikz/arrow box arrows/.code={\pgf@lib@arrowbox@parsearrows{#1}}}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex ====

\usepgflibrary{shapes.callouts}%

\pgfkeys{/tikz/callout absolute pointer/.code={%
    \tikz@scan@one@point\tikz@lib@callout@checkforplus#1\relax%
    }%
}%

\def\tikz@lib@callout@checkforplus#1{%
    \pgfutil@ifnextchar+{\def\tikz@lib@callout@originalpoint{#1}\tikz@lib@callout@scan@relative}%
        {\pgf@lib@callout@makeabsolutepointer{#1}}}%

\def\tikz@lib@callout@scan@relative+{%
    \pgfutil@ifnextchar+{\tikz@lib@callout@scan@plusplus}{\tikz@lib@callout@scan@plus}}%
\def\tikz@lib@callout@scan@plusplus+{\tikz@scan@one@point\tikz@lib@callout@add}%
\def\tikz@lib@callout@scan@plus{\tikz@scan@one@point\tikz@lib@callout@add}%
\def\tikz@lib@callout@add#1{%
    \expandafter\pgf@lib@callout@makeabsolutepointer\expandafter{%
        \expandafter\pgfpointadd\expandafter{\tikz@lib@callout@originalpoint}{#1}}%
}%

\pgfkeys{/tikz/callout relative pointer/.code={%
        \tikz@scan@one@point\pgf@lib@callout@makerelativepointer#1\relax%
    }%
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex ====

\ProvidesFileRCS{tikzlibraryshapes.code.tex}

\usetikzlibrary{shapes.geometric}%
\usetikzlibrary{shapes.misc}%
\usetikzlibrary{shapes.symbols}%
\usetikzlibrary{shapes.arrows}%
\usetikzlibrary{shapes.callouts}%
\usetikzlibrary{shapes.multipart}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.gates.logic.IEC.code.tex ====

\ProvidesFileRCS{tikzlibraryshapes.gates.logic.IEC.code.tex}

\usepgflibrary{shapes.gates.logic.IEC}%

\tikzset{%
  use IEC style logic gates/.code={%
    \tikzset{%
            and gate/.style={shape=and gate IEC},
            nand gate/.style={shape=nand gate IEC},
            or gate/.style={shape=or gate IEC},
            nor gate/.style={shape=nor gate IEC},
            xor gate/.style={shape=xor gate IEC},
            xnor gate/.style={shape=xnor gate IEC},
            not gate/.style={shape=not gate IEC},
            buffer gate/.style={shape=buffer gate IEC},
            and gate symbol/.style={and gate IEC symbol={##1}},
            nand gate symbol/.style={nand gate IEC symbol={##1}},
            or gate symbol/.style={or gate IEC symbol={##1}},
            nor gate symbol/.style={nor gate IEC symbol={##1}},
            xor gate symbol/.style={xor gate IEC symbol={##1}},
            xnor gate symbol/.style={xnor gate IEC symbol={##1}},
            not gate symbol/.style={not gate IEC symbol={##1}},
            buffer gate symbol/.style={buffer gate IEC symbol={##1}},
            logic gate symbol align/.style={/pgf/logic gate IEC symbol align={##1}},
            logic gate symbol color/.style={/pgf/logic gate IEC symbol color={##1}}
        }%
    }%
}%
\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.gates.logic.IEC.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.gates.logic.US.code.tex ====

\ProvidesFileRCS{tikzlibraryshapes.gates.logic.US.code.tex}

\usepgflibrary{shapes.gates.logic.US}%

\tikzset{%
   use US style logic gates/.code={%
    \tikzset{%
            and gate/.style={shape=and gate US},
            nand gate/.style={shape=nand gate US},
            or gate/.style={shape=or gate US},
            nor gate/.style={shape=nor gate US},
            xor gate/.style={shape=xor gate US},
            xnor gate/.style={shape=xnor gate US},
            not gate/.style={shape=not gate US},
            buffer gate/.style={shape=buffer gate US}
        }%
    },
    use CDH style logic gates/.code={%
    \tikzset{%
            and gate/.style={shape=and gate CDH},
            nand gate/.style={shape=nand gate CDH},
            or gate/.style={shape=or gate US},
            nor gate/.style={shape=nor gate US},
            xor gate/.style={shape=xor gate US},
            xnor gate/.style={shape=xnor gate US},
            not gate/.style={shape=not gate US},
            buffer gate/.style={shape=buffer gate US}
        }
    }
}%
\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.gates.logic.US.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex ====

\ProvidesFileRCS{tikzlibraryshapes.geometric.code.tex}

\usepgflibrary{shapes.geometric}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex ====

\ProvidesFileRCS{tikzlibraryshapes.misc.code.tex}

\usepgflibrary{shapes.misc}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex ====

\ProvidesFileRCS{tikzlibraryshapes.multipart.code.tex}

\usepgflibrary{shapes.multipart}%

\pgfkeys{/tikz/rectangle split/parts/.code={%
    \pgfkeys{/pgf/rectangle split parts={#1}}%
    }%
}%

\pgfkeys{/tikz/rectangle split use custom fill/.code={%
    \pgfkeys{/pgf/rectangle split use custom fill={#1}}%
    \pgfkeys{/tikz/fill=none}}%
}%

\pgfkeys{/tikz/rectangle split draw splits/.is if=pgfrectanglesplitdrawsplits}%

\pgfkeys{/tikz/rectangle split part align/.code={%
        \pgfkeys{/pgf/rectangle split part align={#1}}%
    }%
}%

\pgfkeys{/tikz/rectangle split part fill/.code={%
        \pgfkeys{/pgf/rectangle split part fill={#1}}%
    }%
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex ====

\ProvidesFileRCS{tikzlibraryshapes.symbols.code.tex}

\pgfkeysifdefined{/tikz/shape border uses incircle}{}{%
    \pgfkeys{/tikz/shape border uses incircle/.is if=pgfshapeborderusesincircle}}%

\usepgflibrary{shapes.symbols}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarysnakes.code.tex ====

\ProvidesFileRCS{tikzlibrarysnakes.code.tex}

\pgfwarning{Snakes have been superseded by
decorations. Please use the decoration libraries instead of the snakes
library}%

\usetikzlibrary{decorations.pathmorphing,decorations.pathreplacing,decorations.shapes}%



\tikzoption{snake}[]{%
  \def\tikz@@snake{#1}%
  \ifx\tikz@@snake\pgfutil@empty%
    \tikz@snakedtrue%
  \else%
    \ifx\tikz@@snake\tikz@nonetext%
      \tikz@snakedfalse%
    \else%
      \tikz@snakedtrue%
      \let\tikz@snake=\tikz@@snake%
    \fi%
  \fi}%

\tikzoption{raise snake}{\def\pgf@snake@raise{\pgftransformyshift{#1}}}%
\tikzoption{mirror snake}[true]{%
  \csname if#1\endcsname
    \def\pgf@snake@mirror{\pgftransformyscale{-1}}%
  \else%
    \let\pgf@snake@mirror=\pgfutil@empty%
  \fi
}%

\tikzoption{gap before snake}{\def\tikz@presnake{{moveto}{#1}{\noexpand\tikz@snake@install@trans}{}}}%
\tikzoption{line before snake}{\def\tikz@presnake{{lineto}{#1}{\noexpand\tikz@snake@install@trans}{}}}%

\tikzoption{gap after snake}{\def\tikz@postsnake{{moveto}{#1}{\noexpand\tikz@snake@install@trans}{}}\def\tikz@mainsnakelength{\pgfsnakeremainingdistance-#1}}%
\tikzoption{line after snake}{\def\tikz@postsnake{{lineto}{#1}{\noexpand\tikz@snake@install@trans}{}}\def\tikz@mainsnakelength{\pgfsnakeremainingdistance-#1}}%

\tikzoption{gap around snake}{%
  \def\tikz@presnake{{moveto}{#1}{\noexpand\tikz@snake@install@trans}{}}%
  \def\tikz@postsnake{{moveto}{#1}{\noexpand\tikz@snake@install@trans}{}}%
  \def\tikz@mainsnakelength{\pgfsnakeremainingdistance-#1}%
}%
\tikzoption{line around snake}{%
  \def\tikz@presnake{{lineto}{#1}{\noexpand\tikz@snake@install@trans}{}}%
  \def\tikz@postsnake{{lineto}{#1}{\noexpand\tikz@snake@install@trans}{}}%
  \def\tikz@mainsnakelength{\pgfsnakeremainingdistance-#1}%
}%
\let\pgf@snake@mirror=\pgfutil@empty
\let\pgf@snake@raise=\pgfutil@empty

\def\tikz@snake@install@trans{\pgfsetsnakesegmenttransformation{\pgf@snake@mirror\pgf@snake@raise}}%

\def\tikz@snake{zigzag}%

\let\tikz@presnake=\pgfutil@empty
\let\tikz@postsnake=\pgfutil@empty
\def\tikz@mainsnakelength{\pgfsnakeremainingdistance}%


\tikzset{snake triangles 45/.style=      {snake=triangles,segment object length=2.41421356\pgfsnakesegmentamplitude}}%
\tikzset{snake triangles 60/.style=      {snake=triangles,segment object length=1.73205081\pgfsnakesegmentamplitude}}%
\tikzset{snake triangles 90/.style=      {snake=triangles,segment object length=\pgfsnakesegmentamplitude}}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarysnakes.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryspy.code.tex ====

\ProvidesFileRCS{tikzlibraryspy.code.tex}




\tikzset{
  spy using outlines/.style={
    spy scope={
      every spy on node/.style={very thin,draw},
      every spy in node/.style={thick,draw},
      #1
    }
  },
  spy using overlays/.style={
    spy scope={
      every spy on node/.style={fill,fill opacity=0.2,text opacity=1},
      every spy in node/.style={fill,fill opacity=0.2,text opacity=1},
      #1
    }
  },
  connect spies/.style={
    spy connection path={\draw[thin] (tikzspyonnode) -- (tikzspyinnode);}
  }
}%

\newbox\tikz@lib@spybox

\let\tikz@lib@spy@collection=\pgfutil@empty%

\tikzset{spy scope/.style={
    size/.style={minimum size={##1}},
    height/.style={minimum height={##1}},
    width/.style={minimum width={##1}},
    execute at begin scope={%
      \let\tikz@lib@spy@save=\tikz@lib@spy@collection%
      \setbox\tikz@lib@spybox=\hbox\bgroup\bgroup%
      \let\spy=\tikz@lib@spy@parse},
    execute at end scope={%
      \egroup\egroup%
      {%
        \copy\tikz@lib@spybox%
        \tikz@lib@spy@collection%
      }%
      \global\let\tikz@lib@spy@collection=\tikz@lib@spy@save%
    },%
    tikz@lib@spy@style/.style={#1},
    tikz@lib@reset@gs
  },
  lens/.store in=\tikz@lib@spy@lens,
  lens=,
  magnification/.style={lens={scale={#1}}},
  spy connection path/.store in=\tikz@lib@spy@path,
  spy connection path=
}%

\tikzset{
  tikz@lib@reset@gs/.style={black,thin,solid,opaque,line cap=butt,line join=miter}
}%

\def\tikz@lib@spy@parse{%
  \pgfutil@ifnextchar[{\tikz@lib@spy@parse@opt}{\tikz@lib@spy@parse@opt[]}%
}%
\def\tikz@lib@spy@parse@opt[#1]{
  \pgfutil@ifnextchar x{\tikz@lib@spy@parse@opta[#1]}{\tikz@lib@spy@parse@opta[#1]}%
}%
\def\tikz@lib@spy@parse@opta[#1]on#2in node#3;{%
  \pgfutil@g@addto@macro\tikz@lib@spy@collection{\tikz@lib@spy@do{#1}{#2}{#3}}%
}%

\def\tikz@lib@spy@do#1#2#3{%
  \scope[tikz@lib@spy@style,#1]
    \node [alias=tikzspyonnode,inner sep=0pt,outer sep=0pt,every spy on node/.try,
    /utils/exec={
      {%
        \let\tikz@transform=\relax
        \pgftransformreset%
        \expandafter\tikzset\expandafter{\tikz@lib@spy@lens}
        \pgftransforminvert%
        \pgfgettransformentries\a\b\c\d\e\f%
        \global\let\pgf@lib@svg@a=\a%
        \global\let\pgf@lib@svg@b=\b%
        \global\let\pgf@lib@svg@c=\c%
        \global\let\pgf@lib@svg@d=\d%
      }%
      \tikz@addtransform{%
        \tikz@scan@one@point\pgftransformshift#2%
        \pgftransformcm{\pgf@lib@svg@a}{\pgf@lib@svg@b}{\pgf@lib@svg@c}{\pgf@lib@svg@d}{\pgfpointorigin}%
      }
    }]{};
    \expandafter\pgfutil@switch\expandafter\pgfutil@ifstrequal\expandafter{\tikz@anchor}{%
      {north}     {\def\tikz@spy@anchor{south}}%
      {north east}{\def\tikz@spy@anchor{south west}}%
      {east}      {\def\tikz@spy@anchor{west}}%
      {south east}{\def\tikz@spy@anchor{north west}}%
      {south}     {\def\tikz@spy@anchor{north}}%
      {south west}{\def\tikz@spy@anchor{north east}}%
      {west}      {\def\tikz@spy@anchor{east}}%
      {north west}{\def\tikz@spy@anchor{south east}}%
    }{}{\def\tikz@spy@anchor{center}}%
    \node [alias=tikzspyinnode,inner sep=0pt,outer sep=0pt,at={#2},every spy in node/.try,
    path picture={\node[anchor=\tikz@spy@anchor,tikz@lib@reset@gs]{\nullfont%
        \pgfpicture\relax\pgfsetbaseline{default}\pgfsettrimleft{default}\pgfsettrimright{default}%
        \pgftransformreset%
        \let\tikz@transform=\relax%
        \expandafter\tikzset\expandafter{\tikz@lib@spy@lens}%
        \pgflowlevelsynccm%
        \tikz@scan@one@point\tikz@lib@spy@shift#2%
        \pgflowlevelsynccm%
        \copy\tikz@lib@spybox%
        \endpgfpicture};}]#3{};
    \tikz@lib@spy@path
  \endscope
}%

\def\tikz@lib@spy@shift#1{%
  \pgf@process{#1}%
  \pgf@x=-\pgf@x%
  \pgf@y=-\pgf@y%
  \pgftransformshift{}%
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryspy.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarysvg.path.code.tex ====

\ProvidesFileRCS{tikzlibrarysvg.path.code.tex}

\usepgflibrary{svg.path}%

\def\tikz@svg@path vg{\pgfutil@ifnextchar[\tikz@svg@@path{\tikz@svg@@path[]}}%

\def\tikz@svg@@path[#1]{\pgfutil@ifnextchar"{\tikz@svg@@path@old{#1}}{\tikz@svg@@path@new{#1}}}%
\def\tikz@svg@@path@new#1#2{\tikz@svg@@path@old{#1}"#2"}%
\def\tikz@svg@@path@old#1"#2"{
  {%
    \tikzset{#1}%
    \pgfpathsvg{#2}%
  }%
  {
    \pgftransforminvert
    \pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@path@lastx}{\pgf@path@lasty}}}
  }
  \tikz@lastx=\pgf@x%
  \tikz@lasty=\pgf@y%
  \tikz@lastxsaved=\tikz@lastx%
  \tikz@lastysaved=\tikz@lasty%
  \tikz@updatecurrenttrue%
  \tikz@scan@next@command
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarysvg.path.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarythrough.code.tex ====

\ProvidesFileRCS{tikzlibrarythrough.code.tex}



\tikzset{circle through/.code={%
    \pgfkeysalso{shape=circle,inner sep=0pt,outer sep=0pt}%
    \pgfgettransform{\tikz@lib@saved@transform}%
    \tikz@scan@one@point\tikz@lib@circle@through#1%
  }}%

\def\tikz@lib@circle@through#1{%
  \tikz@addoption{%
    {%
      \pgfsettransform{\tikz@lib@saved@transform}%
      \pgf@process{\pgfpointtransformed{#1}}%
      \pgf@xa=\pgf@x%
      \pgf@ya=\pgf@y%
      \pgf@process{\pgfpointtransformed{\tikz@node@at}}%
      \advance\pgf@xa by-\pgf@x%
      \advance\pgf@ya by-\pgf@y%
      \pgfmathparse{2*veclen(\the\pgf@xa,\the\pgf@ya)}%
      \global\let\tikz@lib@circle@size=\pgfmathresult%
    }%
    \pgfset{/pgf/minimum size/.expanded=\tikz@lib@circle@size}%
  }%
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarythrough.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex ====

\ProvidesFileRCS{tikzlibrarytopaths.code.tex}



\tikzset{move to/.style=                 {to path={(\tikztotarget) \tikztonodes}}}



\tikzset{line to/.style=                 {to path={-- (\tikztotarget) \tikztonodes}}}



\tikzset{every curve to/.style=          {}}
\tikzset{curve to/.style=                {to path=\tikz@to@curve@path}}

\tikzoption{bend angle}{\pgfmathsetmacro\tikz@to@bend{#1}}

\tikzoption{bend left}[]{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \pgfmathsetmacro\tikz@to@bend{#1}%
  \fi%
  \let\tikz@to@out=\tikz@to@bend%
  \pgfmathsetmacro\tikz@to@in{180-(\tikz@to@out)}%
  \tikz@to@switch@on%
  \tikz@to@relativetrue%
}

\tikzoption{bend right}[]{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \pgfmathsetmacro\tikz@to@bend{#1}%
  \fi%
  \pgfmathsetmacro\tikz@to@out{-(\tikz@to@bend)}
  \pgfmathsetmacro\tikz@to@in{180-(\tikz@to@out)}
  \tikz@to@switch@on%
  \tikz@to@relativetrue%
}

\tikzoption{relative}[true]{\csname tikz@to@relative#1\endcsname}
\newif\iftikz@to@relative
\tikz@to@relativefalse

\tikzoption{in}{\def\tikz@to@in{#1}\tikz@to@switch@on}
\tikzoption{out}{\def\tikz@to@out{#1}\tikz@to@switch@on}

\tikzoption{in looseness}{\tikz@to@set@in@looseness{#1}}
\tikzoption{out looseness}{\tikz@to@set@out@looseness{#1}}
\tikzoption{looseness}{\tikz@to@set@in@looseness{#1}\tikz@to@set@out@looseness{#1}}

\tikzoption{in control}{\tikz@to@set@in@control{#1}}
\tikzoption{out control}{\tikz@to@set@out@control{#1}}
\tikzoption{controls}{\tikz@to@parse@controls#1\pgf@stop}

\tikzoption{in min distance}{\tikz@to@set@distances{#1}{}{}{}}
\tikzoption{in max distance}{\tikz@to@set@distances{}{#1}{}{}}
\tikzoption{in distance}{\tikz@to@set@distances{#1}{#1}{}{}}
\tikzoption{out min distance}{\tikz@to@set@distances{}{}{#1}{}}
\tikzoption{out max distance}{\tikz@to@set@distances{}{}{}{#1}}
\tikzoption{out distance}{\tikz@to@set@distances{}{}{#1}{#1}}
\tikzoption{min distance}{\tikz@to@set@distances{#1}{}{#1}{}}
\tikzoption{max distance}{\tikz@to@set@distances{}{#1}{}{#1}}
\tikzoption{distance}{\tikz@to@set@distances{#1}{#1}{#1}{#1}}

\def\tikz@to@set@distances#1#2#3#4{%
  \tikz@to@setifnotempy{#1}{\tikz@to@in@min}{\let\tikz@to@end@compute=\tikz@to@end@compute@looseness}%
  \tikz@to@setifnotempy{#2}{\tikz@to@in@max}{\let\tikz@to@end@compute=\tikz@to@end@compute@looseness}%
  \tikz@to@setifnotempy{#3}{\tikz@to@out@min}{\let\tikz@to@start@compute=\tikz@to@start@compute@looseness}%
  \tikz@to@setifnotempy{#4}{\tikz@to@out@max}{\let\tikz@to@start@compute=\tikz@to@start@compute@looseness}%
  \tikz@to@switch@on%
}

\def\tikz@to@setifnotempy#1#2#3{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty\else\def#2{#1}#3\fi%
}


\def\tikz@to@set@in@looseness#1{%
  \pgfmathsetmacro\tikz@to@in@looseness{#1}%
  \let\tikz@to@end@compute=\tikz@to@end@compute@looseness%
  \tikz@to@switch@on%
}
\def\tikz@to@set@out@looseness#1{%
  \pgfmathsetmacro\tikz@to@out@looseness{#1}%
  \let\tikz@to@start@compute=\tikz@to@start@compute@looseness%
  \tikz@to@switch@on%
}

\def\tikz@to@parse@controls#1and#2\pgf@stop{\tikz@to@set@in@control{#2}\tikz@to@set@out@control{#1}}

\def\tikz@to@set@in@control#1{%
  \def\tikz@to@in@control{#1}%
  \let\tikz@to@end@compute=\tikz@to@end@compute@control%
  \tikz@to@switch@on%
}
\def\tikz@to@set@out@control#1{%
  \def\tikz@to@out@control{#1}%
  \let\tikz@to@start@compute=\tikz@to@start@compute@control%
  \tikz@to@switch@on%
}


\def\tikz@to@bend{30}

\def\tikz@to@out{45}
\def\tikz@to@in{135}

\def\tikz@to@out@looseness{1}
\def\tikz@to@in@looseness{1}

\def\tikz@to@in@min{0pt}
\def\tikz@to@in@max{10000pt}
\def\tikz@to@out@min{0pt}
\def\tikz@to@out@max{10000pt}

\def\tikz@to@switch@on{\let\tikz@to@path=\tikz@to@curve@path}

\def\tikz@to@curve@path{%
  [every curve to]
  \pgfextra{\iftikz@to@relative\tikz@to@compute@relative\else\tikz@to@compute\fi}
  \tikz@computed@path
  \pgfextra{\tikz@updatenexttrue\tikz@updatecurrenttrue}%
  \tikztonodes%
}

\def\tikz@to@modify#1#2{%
  \pgfutil@ifundefined{pgf@sh@ns@#1}
  {}%
  {\edef#1{#1.#2}}
}%

\def\tikz@to@compute{%
  \let\tikz@tofrom=\tikztostart%
  \let\tikz@toto=\tikztotarget%
  \tikz@to@modify\tikz@tofrom\tikz@to@out%
  \tikz@to@modify\tikz@toto\tikz@to@in%
  \ifx\tikz@to@start@compute\tikz@to@start@compute@looseness%
    \tikz@to@compute@distance%
  \else%
    \ifx\tikz@from@start@compute\tikz@to@start@compute@looseness%
      \tikz@to@compute@distance%
    \fi%
  \fi%
  \tikz@to@start@compute%
  \tikz@to@end@compute%
  \edef\tikz@computed@path{.. controls \tikz@computed@start and \tikz@computed@end .. (\tikztotarget)}
}

\def\tikz@to@compute@distance{\tikz@scan@one@point\tikz@@to@compute@distance(\tikz@tofrom)}
\def\tikz@@to@compute@distance#1{%
  \def\tikz@first@point{#1}%
  \tikz@scan@one@point\tikz@@@to@compute@distance(\tikz@toto)}
\def\tikz@@@to@compute@distance#1{%
  \iftikz@updatecurrent\else
    \tikz@updatenextfalse
  \fi
  \def\tikz@second@point{#1}%
  \tikz@to@compute@distance@main%
}
\def\tikz@to@compute@distance@main{%
  \pgf@process{\pgfpointdiff{\tikz@first@point}{\tikz@second@point}}%
  \ifdim\pgf@x<0pt\pgf@xa=-\pgf@x\else\pgf@xa=\pgf@x\fi%
  \ifdim\pgf@y<0pt\pgf@ya=-\pgf@y\else\pgf@ya=\pgf@y\fi%
  \pgf@process{\pgfpointnormalised{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
  \ifdim\pgf@x>\pgf@y%
    \c@pgf@counta=\pgf@x%
    \ifnum\c@pgf@counta=0\relax%
    \else%
      \divide\c@pgf@counta by 255\relax%
      \pgf@xa=16\pgf@xa\relax%
      \divide\pgf@xa by\c@pgf@counta%
      \pgf@xa=16\pgf@xa\relax%
    \fi%
  \else%
    \c@pgf@counta=\pgf@y%
    \ifnum\c@pgf@counta=0\relax%
    \else%
      \divide\c@pgf@counta by 255\relax%
      \pgf@ya=16\pgf@ya\relax%
      \divide\pgf@ya by\c@pgf@counta%
      \pgf@xa=16\pgf@ya\relax%
    \fi%
  \fi%
  \pgf@x=0.3915\pgf@xa%
  \pgf@xa=\tikz@to@out@looseness\pgf@x%
  \pgf@xb=\tikz@to@in@looseness\pgf@x%
  \pgfmathsetlength{\pgf@ya}{\tikz@to@out@min}
  \ifdim\pgf@xa<\pgf@ya%
    \pgf@xa=\pgf@ya%
  \fi%
  \pgfmathsetlength{\pgf@ya}{\tikz@to@out@max}
  \ifdim\pgf@xa>\pgf@ya%
    \pgf@xa=\pgf@ya%
  \fi%
  \pgfmathsetlength{\pgf@ya}{\tikz@to@in@min}
  \ifdim\pgf@xb<\pgf@ya%
    \pgf@xb=\pgf@ya%
  \fi%
  \pgfmathsetlength{\pgf@ya}{\tikz@to@in@max}
  \ifdim\pgf@xb>\pgf@ya%
    \pgf@xb=\pgf@ya%
  \fi%
}

\def\tikz@to@start@compute@looseness{%
  \edef\tikz@computed@start{([shift=({\tikz@to@out}:\the\pgf@xa)]\tikz@tofrom)}%
}
\def\tikz@to@end@compute@looseness{%
  \edef\tikz@computed@end{([shift=({\tikz@to@in}:\the\pgf@xb)]\tikz@toto)}%
}
\def\tikz@to@start@compute@control{%
  \let\tikz@computed@start=\tikz@to@out@control%
}
\def\tikz@to@end@compute@control{%
  \let\tikz@computed@end=\tikz@to@in@control%
}

\let\tikz@to@start@compute=\tikz@to@start@compute@looseness%
\let\tikz@to@end@compute=\tikz@to@end@compute@looseness%





\def\tikz@to@compute@relative{%
  \tikz@scan@one@point\tikz@@to@compute@relative(\tikztostart)%
}
\def\tikz@@to@compute@relative#1{%
  \def\tikz@tofrom{#1}%
  \tikz@scan@one@point\tikz@@@to@compute@relative(\tikztotarget)%
}
\def\tikz@@@to@compute@relative#1{%
  \def\tikz@toto{#1}%
  \begingroup
    \pgfutil@ifundefined{pgf@sh@ns@\tikztostart}
    {%
      \let\tikz@first@point=\tikz@tofrom%
      \let\tikz@tostart@tikz=\pgfutil@empty
    }%
    {%
      {%
        \tikz@tofrom%
        \pgf@xc=\pgf@x%
        \pgf@yc=\pgf@y%
        {%
          \pgftransformreset%
          \pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
          \pgftransformrotate{\tikz@to@out}%
          \pgftransformshift{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}%
          \pgf@process{\pgfpointtransformed{\tikz@toto}}%
        }%
        \pgf@xc=\pgf@x%
        \pgf@yc=\pgf@y%
        \pgfpointshapeborder{\tikztostart}{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
        \xdef\tikz@tofrom@smuggle{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
      }%
      \let\tikz@first@point=\tikz@tofrom@smuggle%
      \tikz@first@point%
      \edef\tikz@tostart@tikz{(\the\pgf@x,\the\pgf@y)}%
    }%
    \pgfutil@ifundefined{pgf@sh@ns@\tikztotarget}
    {%
      \let\tikz@second@point=\tikz@toto%
    }%
    {%
      {%
        \tikz@toto%
        \pgf@xc=\pgf@x%
        \pgf@yc=\pgf@y%
        {%
          \pgftransformreset%
          \pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
          \pgftransformrotate{180}%
          \pgftransformrotate{\tikz@to@in}%
          \pgftransformshift{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}%
          \pgf@process{\pgfpointtransformed{\tikz@tofrom}}%
        }%
        \pgf@xc=\pgf@x%
        \pgf@yc=\pgf@y%
        \pgfpointshapeborder{\tikztotarget}{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
        \xdef\tikz@toto@smuggle{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
      }%
      \let\tikz@second@point=\tikz@toto@smuggle%
    }%
    \tikz@second@point%
    \edef\tikz@totarget@tikz{(\the\pgf@x,\the\pgf@y)}%
    \tikz@to@compute@distance@main%
    \edef\tikz@to@first@distance{\the\pgf@xa}%
    \edef\tikz@to@second@distance{\the\pgf@xb}%
    \pgftransformreset%
    \pgf@process{\tikz@first@point}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\tikz@second@point}%
    \advance\pgf@x by-\pgf@xa%
    \advance\pgf@y by-\pgf@ya%
    \pgfpointnormalised{}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgf@xb=-\pgf@x%
    \pgf@yb=-\pgf@y%
    {%
      \pgftransformshift{\tikz@first@point}%
      \pgftransformcm{\pgf@sys@tonumber\pgf@xc}{\pgf@sys@tonumber\pgf@yc}{\pgf@sys@tonumber\pgf@yb}{\pgf@sys@tonumber\pgf@xc}%
                      {\pgfpointorigin}%
      \pgf@process{\pgfpointtransformed{\pgfpointpolar{\tikz@to@out}{\tikz@to@first@distance}}}%
      \xdef\tikz@computed@start{(\the\pgf@x,\the\pgf@y)}%
    }
    {%
      \pgftransformshift{\tikz@second@point}%
      \pgftransformcm{\pgf@sys@tonumber\pgf@xc}{\pgf@sys@tonumber\pgf@yc}{\pgf@sys@tonumber\pgf@yb}{\pgf@sys@tonumber\pgf@xc}%
                      {\pgfpointorigin}%
      \pgf@process{\pgfpointtransformed{\pgfpointpolar{\tikz@to@in}{\tikz@to@second@distance}}}%
      \xdef\tikz@computed@end{(\the\pgf@x,\the\pgf@y)}%
    }
    \xdef\tikz@computed@path{
      \tikz@tostart@tikz
      .. controls \tikz@computed@start and \tikz@computed@end ..
      \tikz@totarget@tikz}%
  \endgroup
}




\tikzset{loop/.style=                    {to path={
  \pgfextra{\let\tikztotarget=\tikztostart}
  [looseness=8,min distance=5mm,every loop]
  \tikz@to@curve@path
  }}}

\tikzset{every loop/.style=              {->,shorten >=1pt}}

\tikzset{loop right/.style=              {right,out=15,in=-15,loop}}
\tikzset{loop above/.style=              {above,out=105,in=75,loop}}
\tikzset{loop left/.style=               {left,out=195,in=165,loop}}
\tikzset{loop below/.style=              {below,out=285,in=255,loop}}





\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytrees.code.tex ====

\ProvidesFileRCS{tikzlibrarytrees.code.tex}




\tikzoption{grow via three points}{\let\tikz@grow=\tikz@grow@three\tikz@parse@three#1}%

\def\tikz@parse@three one child at#1(#2)#3and two children at#4(#5)#6and#7(#8){%
  \def\tikz@tree@one@child{\tikz@scan@one@point\pgf@process(#2)}
  \def\tikz@tree@left@child{\tikz@scan@one@point\pgf@process(#5)}
  \def\tikz@tree@right@child{\tikz@scan@one@point\pgf@process(#8)}
}%

\def\tikz@grow@three{%
  \pgf@process{\tikz@tree@one@child}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{\tikz@tree@left@child}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \advance\pgf@xb by-\pgf@xa%
  \advance\pgf@yb by-\pgf@ya%
  \pgf@process{\tikz@tree@right@child}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \advance\pgf@xc by-\pgf@xa%
  \advance\pgf@yc by-\pgf@ya%
  \advance\pgf@xc by-\pgf@xb%
  \advance\pgf@yc by-\pgf@yb%
  \advance\tikznumberofchildren by-1\relax%
  \pgf@xb=\tikznumberofchildren\pgf@xb\relax%
  \pgf@yb=\tikznumberofchildren\pgf@yb\relax%
  \advance\tikznumberofcurrentchild by-1\relax%
  \pgf@xc=\tikznumberofcurrentchild\pgf@xc\relax%
  \pgf@yc=\tikznumberofcurrentchild\pgf@yc\relax%
  \advance\pgf@xa by\pgf@xb%
  \advance\pgf@xa by\pgf@xc%
  \advance\pgf@ya by\pgf@yb%
  \advance\pgf@ya by\pgf@yc%
  \edef\pgf@temp{\noexpand\pgftransformshift{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}}%
  \pgf@temp%
}%




\tikzset{
  grow cyclic/.style={
    edge from parent/.append style={reset cm},
    growth function=\tikz@grow@circle,
  }
}%

\tikzset{sibling angle/.initial=20}%

\def\tikz@grow@circle{%
  \pgftransformrotate{%
    (\pgfkeysvalueof{/tikz/sibling angle})*(-.5-.5*\tikznumberofchildren+\tikznumberofcurrentchild)}%
  \pgftransformxshift{\the\tikzleveldistance}%
}%

\tikzoption{counterclockwise from}{\let\tikz@grow=\tikz@grow@circle@from\def\tikz@grow@circle@from@start{#1}}%

\def\tikz@grow@circle@from{%
  \pgftransformshift{\pgfpointpolar{\tikz@grow@circle@from@start+(\pgfkeysvalueof{/tikz/sibling angle})*(\tikznumberofcurrentchild-1)}{\the\tikzleveldistance}}%
}%

\tikzoption{clockwise from}{\let\tikz@grow=\tikz@grow@circle@from@\def\tikz@grow@circle@from@start{#1}}%

\def\tikz@grow@circle@from@{%
  \pgftransformshift{\pgfpointpolar{\tikz@grow@circle@from@start-(\pgfkeysvalueof{/tikz/sibling angle})*(\tikznumberofcurrentchild-1)}{\the\tikzleveldistance}}%
}%




\tikzset{edge from parent fork down/.style=
  {edge from parent path={(\tikzparentnode\tikzparentanchor) -- +(0pt,-.5\tikzleveldistance)  -| (\tikzchildnode\tikzchildanchor)}}}%

\tikzset{edge from parent fork up/.style=
  {edge from parent path={(\tikzparentnode\tikzparentanchor) -- +(0pt,.5\tikzleveldistance)  -| (\tikzchildnode\tikzchildanchor)}}}%

\tikzset{edge from parent fork left/.style=
  {edge from parent path={(\tikzparentnode\tikzparentanchor) -- +(-.5\tikzleveldistance,0pt) |- (\tikzchildnode\tikzchildanchor)}}}%

\tikzset{edge from parent fork right/.style=
  {edge from parent path={(\tikzparentnode\tikzparentanchor) -- +(.5\tikzleveldistance,0pt) |- (\tikzchildnode\tikzchildanchor)}}}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytrees.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryturtle.code.tex ====

\ProvidesFileRCS{tikzlibraryturtle.code.tex}


\tikzset{turtle/.style={/tikz/turtle/.cd,#1}}%

\tikzset{turtle/direction/.code=\gdef\tikz@lib@turtle@dir{#1},turtle/direction=90}%

\tikzset{turtle/distance/.initial=1cm}%

\tikzset{turtle/how/.style=}%

\tikzset{turtle/home/.style={/tikz/insert path={(0,0) [turtle/direction=90]}}}%

\tikzset{
  turtle/forward/.default=\pgfkeysvalueof{/tikz/turtle/distance},
  turtle/forward/.style={/tikz/insert path={to[/tikz/turtle/how]++({\tikz@lib@turtle@dir}:{#1})}}
}%



\tikzset{
  turtle/back/.default=\pgfkeysvalueof{/tikz/turtle/distance},
  turtle/back/.style={turtle forward={-(#1)}}
}%



\tikzset{
  turtle/left/.default=90,
  turtle/left/.code={%
    \pgfmathparse{(#1)+(\tikz@lib@turtle@dir)}%
    \ifdim\pgfmathresult pt>360pt\relax%
      \pgfmathparse{\pgfmathresult-360}%
    \fi%
    \global\let\tikz@lib@turtle@dir\pgfmathresult
  }
}%


\tikzset{
  turtle/right/.default=90,
  turtle/right/.code={%
    \pgfmathparse{#1}
    \pgfmathparse{(\tikz@lib@turtle@dir)-\pgfmathresult}%
    \ifdim\pgfmathresult pt<0pt\relax%
      \pgfmathparse{\pgfmathresult+360}%
    \fi%
    \global\let\tikz@lib@turtle@dir\pgfmathresult
  }
}%


\tikzset{turtle/.cd,
  fd/.style={forward={#1}},
  fd/.default=\pgfkeysvalueof{/tikz/turtle/distance},
  bk/.style={back={#1}},
  bk/.default=\pgfkeysvalueof{/tikz/turtle/distance},
  lt/.style={left={#1}},
  lt/.default=90,
  rt/.style={right={#1}},
  rt/.default=90}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryturtle.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryviews.code.tex ====

\ProvidesFileRCS{tikzlibraryviews.code.tex}


\tikzset{
  meet/.style={execute at begin scope={\tikz@lib@view@parse{meet}#1\pgf@stop},execute at end scope={\endpgfviewboxscope}},
  view/.style={meet = {#1}},
  slice/.style={execute at begin scope={\tikz@lib@view@parse{slice}#1\pgf@stop},execute at end scope={\endpgfviewboxscope}},
}%

\def\tikz@lib@view@parse#1#2\pgf@stop{%
  \tikz@scan@one@point\tikz@lib@view@a#2\pgf@stop%
  \pgfviewboxscope{\tikz@lib@view@stored@a}{\tikz@lib@view@stored@b}{\tikz@lib@view@stored@c}{\tikz@lib@view@stored@d}{#1}%
}%
\def\tikz@lib@view@a#1{%
  \def\tikz@lib@view@stored@a{#1}%
  \pgfutil@ifnextchar r{\tikz@lib@view@a@rec}{\tikz@scan@one@point\tikz@lib@view@b}%
}%
\def\tikz@lib@view@a@rec rectangle{\tikz@scan@one@point\tikz@lib@view@b}%
\def\tikz@lib@view@b#1{%
  \def\tikz@lib@view@stored@b{#1}%
  \pgfutil@ifnextchar\pgf@stop{%
    \let\tikz@lib@view@stored@c\tikz@lib@view@stored@a%
    \let\tikz@lib@view@stored@d\tikz@lib@view@stored@b%
    \pgfutil@gobble%
  }{\tikz@lib@view@b@at}%
}%
\def\tikz@lib@view@b@at at{\tikz@scan@one@point\tikz@lib@view@c}%
\def\tikz@lib@view@c#1{%
  \def\tikz@lib@view@stored@c{#1}%
  \pgfutil@ifnextchar r{\tikz@lib@view@c@rec}{\tikz@scan@one@point\tikz@lib@view@d}%
}%
\def\tikz@lib@view@c@rec rectangle{\tikz@scan@one@point\tikz@lib@view@d}%
\def\tikz@lib@view@d#1{\def\tikz@lib@view@stored@d{#1}\pgfutil@ifnextchar\pgf@stop\pgfutil@gobble{\tikzerror{Wrong syntax for meet or slice key}}}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryviews.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex ====

\ProvidesPackageRCS{tikz.code.tex}


\def\tikzerror#1{\pgfutil@packageerror{tikz}{#1}{}}

\usepgflibrary{plothandlers}

\newdimen\tikz@lastx
\newdimen\tikz@lasty
\newdimen\tikz@lastxsaved
\newdimen\tikz@lastysaved
\newdimen\tikz@lastmovetox
\newdimen\tikz@lastmovetoy

\newdimen\tikzleveldistance
\newdimen\tikzsiblingdistance

\newbox\tikz@figbox
\newbox\tikz@figbox@bg
\newbox\tikz@tempbox
\newbox\tikz@tempbox@bg

\newcount\tikztreelevel
\newcount\tikznumberofchildren
\newcount\tikznumberofcurrentchild

\newcount\tikz@fig@count

\newif\iftikz@node@is@a@label
\newif\iftikz@snaked
\newif\iftikz@decoratepath

\let\tikz@options\pgfutil@empty
\def\tikz@addoption#1{%
  \expandafter\def\expandafter\tikz@options\expandafter{\tikz@options#1}}%
\def\tikz@addmode#1{%
  \expandafter\def\expandafter\tikz@mode\expandafter{\tikz@mode#1}}%
\def\tikz@addtransform#1{%
  \ifx\tikz@transform\relax
    #1%
  \else
    \expandafter\def\expandafter\tikz@transform\expandafter{\tikz@transform#1}%
  \fi
}%



\pgfkeys{/tikz/.is family}%

\def\tikzset{\pgfqkeys{/tikz}}%

\def\tikzoption#1{%
  \pgfutil@ifnextchar[%
    {\tikzoption@opt{#1}}{\tikzoption@noopt{#1}}}%
\def\tikzoption@opt#1[#2]#3{%
  \pgfkeysdef{/tikz/#1}{#3}%
  \pgfkeyssetvalue{/tikz/#1/.@def}{#2}}%
\def\tikzoption@noopt#1#2{%
  \pgfkeysdef{/tikz/#1}{#2}%
  \pgfkeyssetvalue{/tikz/#1/.@def}{\pgfkeysvaluerequired}}%

\tikzoption{baseline}[0pt]{%
  \pgfutil@ifnextchar(%
    {\tikz@baseline@coordinate}{\tikz@baseline@simple}#1\@nil}%
\def\tikz@baseline@simple#1\@nil{\pgfsetbaseline{#1}}%
\def\tikz@baseline@coordinate#1\@nil{%
  \pgfsetbaselinepointlater{\tikz@scan@one@point\pgfutil@firstofone#1}}%

\tikzoption{trim left}[0pt]{\pgfutil@ifnextchar({\tikz@trim@coordinate{left}}{\tikz@trim@simple{left}}#1\@nil}%
\tikzoption{trim right}{\pgfutil@ifnextchar({\tikz@trim@coordinate{right}}{\tikz@trim@simple{right}}#1\@nil}%
\def\tikz@trim@simple#1#2\@nil{\csname pgfsettrim#1\endcsname{#2}}%
\def\tikz@trim@coordinate#1#2\@nil{\csname pgfsettrim#1pointlater\endcsname{\tikz@scan@one@point\pgfutil@firstofone#2}}%

\tikzoption{line width}{\tikz@semiaddlinewidth{#1}}%

\def\tikz@semiaddlinewidth#1{\tikz@addoption{\pgfsetlinewidth{#1}}\pgfmathsetlength\pgflinewidth{#1}}%

\tikzoption{cap}{\tikz@addoption{\csname pgfset#1cap\endcsname}}%
\tikzoption{join}{\tikz@addoption{\csname pgfset#1join\endcsname}}%
\tikzoption{line cap}{\tikz@addoption{\csname pgfset#1cap\endcsname}}%
\tikzoption{line join}{\tikz@addoption{\csname pgfset#1join\endcsname}}%
\tikzoption{miter limit}{\tikz@addoption{\pgfsetmiterlimit{#1}}}%

\tikzoption{dash pattern}{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
    \def\tikz@dashpattern{}%
    \tikz@addoption{\pgfsetdash{}{0pt}}%
  \else%
    \def\tikz@dashpattern{}%
    \expandafter\tikz@scandashon\pgfutil@gobble#1o\@nil%
    \edef\tikz@temp{{\tikz@dashpattern}{\noexpand\tikz@dashphase}}%
    \expandafter\tikz@addoption\expandafter{\expandafter\pgfsetdash\tikz@temp}%
  \fi}%
\tikzoption{dash phase}{%
  \def\tikz@dashphase{#1}%
  \edef\tikz@temp{{\tikz@dashpattern}{\noexpand\tikz@dashphase}}%
  \expandafter\tikz@addoption\expandafter{\expandafter\pgfsetdash\tikz@temp}%
}%
\tikzoption{dash}{\tikz@parse@full@dash#1\pgf@stop}%
\def\tikz@parse@full@dash#1phase#2\pgf@stop{%
  \def\tikz@dashphase{#2}%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
    \def\tikz@dashpattern{}%
    \tikz@addoption{\pgfsetdash{}{0pt}}%
  \else%
    \def\tikz@dashpattern{}%
    \expandafter\tikz@scandashon\pgfutil@gobble#1o\@nil%
    \edef\tikz@temp{{\tikz@dashpattern}{\noexpand\tikz@dashphase}}%
    \expandafter\tikz@addoption\expandafter{\expandafter\pgfsetdash\tikz@temp}%
  \fi%
}%
\def\tikz@dashphase{0pt}%
\def\tikz@dashpattern{}%

\def\tikz@scandashon n#1o{%
  \expandafter\def\expandafter\tikz@dashpattern\expandafter{\tikz@dashpattern{#1}}%
  \pgfutil@ifnextchar\@nil{\pgfutil@gobble}{\tikz@scandashoff}}%
\def\tikz@scandashoff ff#1o{%
  \expandafter\def\expandafter\tikz@dashpattern\expandafter{\tikz@dashpattern{#1}}%
  \pgfutil@ifnextchar\@nil{\pgfutil@gobble}{\tikz@scandashon}}%

\tikzset{
    dash expand off/.code={%
        \ifcsname tikz@library@decorations@loaded\endcsname\else
            \tikzerror{You need \string\usetikzlibrary{decorations} for ``dash expand off''}%
        \fi
        \tikz@addoption{%
            \pgfgetpath\currentpath
            \pgfprocessround{\currentpath}{\currentpath}%
            \pgf@decorate@parsesoftpath{\currentpath}{\currentpath}%
            \pgfmathsetmacro\on{\expandafter\pgfutil@firstoftwo\tikz@dashpattern}%
            \pgfmathsetmacro\off{\expandafter\pgfutil@secondoftwo\tikz@dashpattern}%
            \pgfmathsetmacro\tikz@dashphase{\tikz@dashphase}%
            \pgfmathsubtract@{\on}{\tikz@dashphase}%
            \pgfmathmax@{\pgfmathresult,0}%
            \let\dashphase=\pgfmathresult
            \edef\rest{\pgf@sys@tonumber\dimexpr\pgf@decorate@totalpathlength - \on pt + 2\dimexpr\dashphase pt\relax\relax}%
            \edef\onoff{\pgf@sys@tonumber\dimexpr\on pt+\off pt\relax}%
            \pgfmathdivide@{\rest}{\onoff}%
            \pgfmathfloor@{\pgfmathresult}%
            \pgfmathmax@{\pgfmathresult,1}%
            \pgfmathdivide@{\rest}{\pgfmathresult}%
            \pgfmathsubtract@{\pgfmathresult}{\on}%
            \pgfmathmax@{\pgfmathresult,\off}%
            \edef\tikz@marshal{\noexpand\pgfsetdash{{+\on pt}{+\pgfmathresult pt}}{+\dashphase pt}}%
            \tikz@marshal
        }%
    }
}

\tikzoption{draw opacity}{\tikz@addoption{\pgfsetstrokeopacity{#1}}}%

\tikzoption{double}[]{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\tikz@nonetext%
    \tikz@addmode{\tikz@mode@doublefalse}%
  \else%
    \ifx\tikz@temp\pgfutil@empty%
    \else%
      \pgfsetinnerstrokecolor{#1}%
    \fi%
    \tikz@addmode{\tikz@mode@doubletrue}%
    \tikzset{every double/.try}%
  \fi}%
\tikzoption{double distance}{%
  \pgfmathsetlength{\pgf@x}{#1}%
  \edef\tikz@double@setup{%
    \pgf@x=\the\pgf@x%
    \advance\pgf@x by2\pgflinewidth%
    \pgflinewidth=\pgf@x%
    \noexpand\pgfsetlinewidth{\pgflinewidth}%
    \noexpand\pgfsetinnerlinewidth{\the\pgf@x}%
  }%
  \tikzset{double}}%
\def\tikz@double@setup{%
  \pgf@x=2\pgflinewidth%
  \advance\pgf@x by0.6pt%
  \pgflinewidth=\pgf@x%
  \pgfsetlinewidth{\pgflinewidth}%
  \pgfsetinnerlinewidth{0.6pt}%
}%
\tikzset{double distance between line centers/.code={
  \pgfmathsetlength{\pgf@x}{#1}%
  \edef\tikz@double@setup{%
    \pgf@x=\pgflinewidth%
    \pgf@xa=\the\pgf@x%
    \advance\pgf@x by\pgf@xa%
    \advance\pgf@xa by-\pgflinewidth%
    \pgflinewidth=\pgf@x%
    \noexpand\pgfsetlinewidth{\pgflinewidth}%
    \noexpand\pgfsetinnerlinewidth{\pgf@xa}%
  }%
  \tikzset{double}}}%
\tikzset{double equal sign distance/.style={double distance between line centers=0.45ex}}%





\tikzoption{even odd rule}[]{\tikz@addoption{\pgfseteorule}}%
\tikzoption{nonzero rule}[]{\tikz@addoption{\pgfsetnonzerorule}}%

\tikzoption{fill opacity}{\tikz@addoption{\pgfsetfillopacity{#1}}}%



\tikzoption{opacity}{\tikz@addoption{\pgfsetstrokeopacity{#1}\pgfsetfillopacity{#1}}}%



\tikzset{blend mode/.code={\tikz@addoption{\pgfsetblendmode{#1}}}}%


\tikzoption{color}{%
  \tikz@addoption{%
    \ifx\tikz@fillcolor\pgfutil@empty%
      \ifx\tikz@strokecolor\pgfutil@empty%
      \else%
        \pgfsys@color@reset@inorderfalse%
        \let\tikz@strokecolor\pgfutil@empty%
        \let\tikz@fillcolor\pgfutil@empty%
      \fi%
    \else%
      \pgfsys@color@reset@inorderfalse%
      \let\tikz@strokecolor\pgfutil@empty%
      \let\tikz@fillcolor\pgfutil@empty%
    \fi%
    \pgfutil@colorlet{tikz@color}{#1}%
    \pgfutil@colorlet{.}{tikz@color}%
    \pgfsetcolor{.}%
    \pgfsys@color@reset@inordertrue%
  }%
  \def\tikz@textcolor{#1}}%



\tikzoption{rounded corners}[4pt]{\pgfsetcornersarced{\pgfpoint{#1}{#1}}}%
\tikzoption{sharp corners}[]{\pgfsetcornersarced{\pgfpointorigin}}%

\tikzset{x radius/.initial=0pt}%
\tikzset{y radius/.initial=0pt}%
\tikzset{%
  radius/.code={%
    \pgfmathparse{#1}%
    \ifpgfmathunitsdeclared
      \pgfkeyssetevalue{/tikz/x radius}{\pgfmathresult pt}%
      \pgfkeyssetevalue{/tikz/y radius}{\pgfmathresult pt}%
    \else
      \pgfkeyssetevalue{/tikz/x radius}{\pgfmathresult}%
      \pgfkeyssetevalue{/tikz/y radius}{\pgfmathresult}%
    \fi
  }%
}%
\tikzset{start angle/.initial=}%
\tikzset{end angle/.initial=}%
\tikzset{delta angle/.initial=}%


\tikzoption{x}{\tikz@handle@vec{\pgfsetxvec}{\tikz@handle@x}#1\relax}%
\tikzoption{y}{\tikz@handle@vec{\pgfsetyvec}{\tikz@handle@y}#1\relax}%
\tikzoption{z}{\tikz@handle@vec{\pgfsetzvec}{\tikz@handle@z}#1\relax}%

\def\tikz@handle@vec#1#2{\pgfutil@ifnextchar({\tikz@handle@coordinate#1}{\tikz@handle@single#2}}%
\def\tikz@handle@coordinate#1{\tikz@scan@one@point#1}%
\def\tikz@handle@single#1#2\relax{#1{#2}}%
\def\tikz@handle@x#1{\pgfsetxvec{\pgfpoint{#1}{0pt}}}%
\def\tikz@handle@y#1{\pgfsetyvec{\pgfpoint{0pt}{#1}}}%
\def\tikz@handle@z#1{\pgfsetzvec{\pgfpoint{#1}{#1}}}%


\tikzoption{scale}{\tikz@addtransform{\pgftransformscale{#1}}}%
\tikzoption{scale around}{\tikz@addtransform{\def\tikz@aroundaction{\pgftransformscale}\tikz@doaround{#1}}}%
\tikzoption{xscale}{\tikz@addtransform{\pgftransformxscale{#1}}}%
\tikzoption{xslant}{\tikz@addtransform{\pgftransformxslant{#1}}}%
\tikzoption{yscale}{\tikz@addtransform{\pgftransformyscale{#1}}}%
\tikzoption{yslant}{\tikz@addtransform{\pgftransformyslant{#1}}}%
\tikzoption{rotate}{\tikz@addtransform{\pgftransformrotate{#1}}}%
\tikzoption{rotate around}{\tikz@addtransform{\def\tikz@aroundaction{\pgftransformrotate}\tikz@doaround{#1}}}%
\def\tikz@doaround#1{%
  \edef\tikz@temp{#1}%
  \expandafter\tikz@doparseA\tikz@temp%
}%
\def\tikz@doparseA#1:{%
  \def\tikz@temp@rot{#1}%
  \tikz@scan@one@point\tikz@doparseB%
}%
\def\tikz@doparseB#1{%
  \pgf@process{#1}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
  \tikz@aroundaction{\tikz@temp@rot}%
  \pgftransformshift{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}%
}%

\tikzoption{shift}{\tikz@addtransform{\tikz@scan@one@point\pgftransformshift#1\relax}}%
\tikzoption{xshift}{\tikz@addtransform{\pgftransformxshift{#1}}}%
\tikzoption{yshift}{\tikz@addtransform{\pgftransformyshift{#1}}}%
\tikzoption{cm}{\tikz@addtransform{\tikz@parse@cm#1\relax}}%
\tikzoption{reset cm}[]{\tikz@addtransform{\pgftransformreset}}%
\tikzoption{shift only}[]{\tikz@addtransform{\pgftransformresetnontranslations}}%

\def\tikz@parse@cm#1,#2,#3,#4,{%
  \def\tikz@p@cm{{#1}{#2}{#3}{#4}}%
  \tikz@scan@one@point\tikz@parse@cmA}%
\def\tikz@parse@cmA#1{%
  \expandafter\pgftransformcm\tikz@p@cm{#1}%
}%

\tikzset{transform canvas/.code=%
  {%
    \tikz@addoption
    {%
      {%
        \pgftransformreset%
        \let\tikz@transform=\relax%
        \tikzset{#1}%
        \pgflowlevelsynccm%
      }%
      \pgf@relevantforpicturesizefalse%
    }%
  }%
}%

\tikzset{turn/.code={%
    \pgf@x=0pt%
    \pgf@y\pgf@x%
    \pgf@process{\tikz@tangent}%
    \advance\pgf@x by-\tikz@lastx%
    \advance\pgf@y by-\tikz@lasty%
    \pgfpointnormalised{}%
    \pgf@x=-\pgf@x%
    \pgf@ya=-\pgf@y%
    \pgftransformcm%
    {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@ya}}%
    {\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@x}}{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
  }%
}%

\def\tikz@tangent@lookup{%
  \pgfgetpath\tikz@temp%
  \pgfprocesspathextractpoints\tikz@temp%
  \pgfpointsecondlastonpath%
}%

\def\tikz@xyz@rotate@let{%
  \let\pgf@z=\pgf@yc%
  \let\pgf@za=\pgf@xc%
}%

\def\tikz@xyz@rotate@xyz@xaxis#1#2#3#4{%
  \tikz@xyz@rotate@let%
  \pgf@x=#1\relax%
  \pgf@ya=#2\relax%
  \pgf@za=#3\relax%
  \pgfmathsin@{#4}\let\tikz@xyz@sin=\pgfmathresult%
  \pgfmathcos@{#4}\let\tikz@xyz@cos=\pgfmathresult%
  \pgf@y=\tikz@xyz@cos\pgf@ya%
  \advance\pgf@y by-\tikz@xyz@sin\pgf@za%
  \pgf@z=\tikz@xyz@sin\pgf@ya%
  \advance\pgf@z by\tikz@xyz@cos\pgf@za%
}%

\def\tikz@xyz@rotate@xyz@yaxis#1#2#3#4{%
  \tikz@xyz@rotate@let%
  \pgf@xa=#1\relax%
  \pgf@y=#2\relax%
  \pgf@za=#3\relax%
  \pgfmathsin@{#4}\let\tikz@xyz@sin=\pgfmathresult%
  \pgfmathcos@{#4}\let\tikz@xyz@cos=\pgfmathresult%
  \pgf@x=\tikz@xyz@cos\pgf@xa%
  \advance\pgf@x by\tikz@xyz@sin\pgf@za%
  \pgf@z=-\tikz@xyz@sin\pgf@xa%
  \advance\pgf@z by\tikz@xyz@cos\pgf@za%
}%

\def\tikz@xyz@rotate@xyz@zaxis#1#2#3#4{%
  \tikz@xyz@rotate@let%
  \pgf@xa=#1\relax%
  \pgf@ya=#2\relax%
  \pgf@z=#3\relax%
  \pgfmathsin@{#4}\let\tikz@xyz@sin=\pgfmathresult%
  \pgfmathcos@{#4}\let\tikz@xyz@cos=\pgfmathresult%
  \pgf@x=\tikz@xyz@cos\pgf@xa%
  \advance\pgf@x by-\tikz@xyz@sin\pgf@ya%
  \pgf@y=\tikz@xyz@sin\pgf@xa%
  \advance\pgf@y by\tikz@xyz@cos\pgf@ya%
}%

\tikzset{rotate around x/.code={%
    \tikz@xyz@rotate@let%
    \pgfmathparse{#1}\let\tikz@xyz@angle=\pgfmathresult%
    \tikz@xyz@rotate@xyz@xaxis{0pt}{1pt}{0pt}{\tikz@xyz@angle}%
    \pgfextract@process\tikz@xyz@rotate@yvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
    \tikz@xyz@rotate@xyz@xaxis{0pt}{0pt}{1pt}{\tikz@xyz@angle}%
    \pgfsetzvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
    \pgfsetyvec{\tikz@xyz@rotate@yvec}%
  },
  rotate around y/.code={%
    \tikz@xyz@rotate@let%
    \pgfmathparse{#1}\let\tikz@xyz@angle=\pgfmathresult%
    \tikz@xyz@rotate@xyz@yaxis{1pt}{0pt}{0pt}{\tikz@xyz@angle}%
    \pgfextract@process\tikz@xyz@rotate@xvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
    \tikz@xyz@rotate@xyz@yaxis{0pt}{0pt}{1pt}{\tikz@xyz@angle}%
    \pgfsetzvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
    \pgfsetxvec{\tikz@xyz@rotate@xvec}%
  },
  rotate around z/.code={%
    \tikz@xyz@rotate@let%
    \pgfmathparse{#1}\let\tikz@xyz@angle=\pgfmathresult%
    \tikz@xyz@rotate@xyz@zaxis{1pt}{0pt}{0pt}{\tikz@xyz@angle}%
    \pgfextract@process\tikz@xyz@rotate@xvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
    \tikz@xyz@rotate@xyz@zaxis{0pt}{1pt}{0pt}{\tikz@xyz@angle}%
    \pgfsetyvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
    \pgfsetxvec{\tikz@xyz@rotate@xvec}%
  },
}%

\tikzoption{xstep}{\def\tikz@grid@x{#1}}%
\tikzoption{ystep}{\def\tikz@grid@y{#1}}%
\tikzoption{step}{\tikz@handle@vec{\tikz@step@point}{\tikz@step@single}#1\relax}%
\def\tikz@step@single#1{\def\tikz@grid@x{#1}\def\tikz@grid@y{#1}}%
\def\tikz@step@point#1{\pgf@process{#1}\edef\tikz@grid@x{\the\pgf@x}\edef\tikz@grid@y{\the\pgf@y}}%

\def\tikz@grid@x{1cm}%
\def\tikz@grid@y{1cm}%


\newif\iftikz@current@point@local
\tikzset{current point is local/.is if=tikz@current@point@local}%

\newif\iftikz@mode@double
\newif\iftikz@mode@fill
\newif\iftikz@mode@draw
\newif\iftikz@mode@clip
\newif\iftikz@mode@boundary
\newif\iftikz@mode@shade
\newif\iftikz@mode@fade@path
\newif\iftikz@mode@fade@scope
\let\tikz@mode=\pgfutil@empty

\def\tikz@nonetext{none}%

\tikzoption{path only}[]{\let\tikz@mode=\pgfutil@empty}%
\tikzset{
  shade/.is choice,
  shade/.default=true,
  shade/true/.code=\tikz@addmode{\tikz@mode@shadetrue},
  shade/false/.code=\tikz@addmode{\tikz@mode@shadefalse},
  shade/none/.code=\tikz@addmode{\tikz@mode@shadefalse},
}%

\tikzoption{fill}[]{%
  \edef\tikz@temp{#1}%
  \ifx\tikz@temp\tikz@nonetext%
    \tikz@addmode{\tikz@mode@fillfalse}%
  \else%
    \ifx\tikz@temp\pgfutil@empty%
    \else%
      \tikz@addoption{\pgfsetfillcolor{#1}}%
      \def\tikz@fillcolor{#1}%
    \fi%
    \tikz@addmode{\tikz@mode@filltrue}%
  \fi%
}%
\tikzoption{draw}[]{%
  \edef\tikz@temp{#1}%
  \ifx\tikz@temp\tikz@nonetext%
    \tikz@addmode{\tikz@mode@drawfalse}%
  \else%
    \ifx\tikz@temp\pgfutil@empty%
    \else%
      \tikz@addoption{\pgfsetstrokecolor{#1}}%
      \def\tikz@strokecolor{#1}%
    \fi%
    \tikz@addmode{\tikz@mode@drawtrue}%
  \fi%
}%
\tikzoption{clip}[]{\tikz@addmode{\tikz@mode@cliptrue}}%
\tikzoption{use as bounding box}[]{\tikz@addmode{\tikz@mode@boundarytrue}}%

\tikzoption{save path}{\tikz@addmode{\pgfsyssoftpath@getcurrentpath#1\global\let#1=#1}}%
\tikzoption{use path}{\tikz@addmode{\pgfsyssoftpath@setcurrentpath#1}}%

\let\tikz@fillcolor=\pgfutil@empty
\let\tikz@strokecolor=\pgfutil@empty

\tikzset{insert path/.code=\tikz@scan@next@command#1\pgf@stop}%

\tikzset{pattern/.code=\tikzerror{You need to say \string\usetikzlibrary{patterns}},
         pattern color/.style=pattern}%

\tikzset{path picture/.code=\tikz@addmode{\def\tikz@path@picture{#1}}}%

\tikzset{path fading/.code={
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\tikz@nonetext%
    \tikz@addmode{\tikz@mode@fade@pathfalse}%
  \else%
    \ifx\tikz@temp\pgfutil@empty%
    \else%
      \def\tikz@path@fading{#1}%
    \fi%
    \tikz@addmode{\tikz@mode@fade@pathtrue}%
  \fi%
  },
  path fading/.default=,
  scope fading/.code={
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\tikz@nonetext%
    \tikz@addmode{\tikz@mode@fade@scopefalse}%
  \else%
    \ifx\tikz@temp\pgfutil@empty%
    \else%
      \def\tikz@scope@fading{#1}%
    \fi%
    \tikz@addmode{\tikz@mode@fade@scopetrue}%
  \fi%
  },
  scope fading/.default=}%
\tikzset{fit fading/.is if=tikz@fade@adjust}%
\tikzset{fading transform/.store in=\tikz@fade@transform}%
\tikzset{fading angle/.style={fading transform={rotate={#1}}}}%

\newif\iftikz@fade@adjust%
\tikz@fade@adjusttrue%
\let\tikz@fade@transform\pgfutil@empty%

\pgfutil@colorlet{transparent}{pgftransparent}%
\def\tikz@do@fade@transform{\let\tikz@transform=\relax\expandafter\tikzset\expandafter{\tikz@fade@transform}}%



\newif\iftikz@transparency@group%
\tikzset{/tikz/transparency group/.code=\tikz@transparency@grouptrue\def\tikz@transparency@group@options{isolated=true,#1}\let\tikz@blend@group\pgfutil@empty}%
\tikzset{/tikz/blend group/.code=\tikz@transparency@grouptrue\def\tikz@transparency@group@options{isolated=true}\def\tikz@blend@group{\pgfsetblendmode{#1}}}%

\let\tikz@blend@group\pgfutil@empty

\tikzoption{shading}{\def\tikz@shading{#1}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{shading angle}{\def\tikz@shade@angle{#1}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{top color}{%
  \pgfutil@colorlet{tikz@axis@top}{#1}%
  \pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
  \def\tikz@shading{axis}\def\tikz@shade@angle{0}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{bottom color}{%
  \pgfutil@colorlet{tikz@axis@bottom}{#1}%
  \pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
  \def\tikz@shading{axis}\def\tikz@shade@angle{0}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{middle color}{%
  \pgfutil@colorlet{tikz@axis@middle}{#1}%
  \def\tikz@shading{axis}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{left color}{%
  \pgfutil@colorlet{tikz@axis@top}{#1}%
  \pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
  \def\tikz@shading{axis}\def\tikz@shade@angle{90}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{right color}{%
  \pgfutil@colorlet{tikz@axis@bottom}{#1}%
  \pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
  \def\tikz@shading{axis}\def\tikz@shade@angle{90}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{ball color}{\pgfutil@colorlet{tikz@ball}{#1}\def\tikz@shading{ball}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{inner color}{\pgfutil@colorlet{tikz@radial@inner}{#1}\def\tikz@shading{radial}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{outer color}{\pgfutil@colorlet{tikz@radial@outer}{#1}\def\tikz@shading{radial}\tikz@addmode{\tikz@mode@shadetrue}}%

\def\tikz@shading{axis}%
\def\tikz@shade@angle{0}%

\pgfdeclareverticalshading[tikz@axis@top,tikz@axis@middle,tikz@axis@bottom]{axis}{100bp}{%
  color(0bp)=(tikz@axis@bottom);
  color(25bp)=(tikz@axis@bottom);
  color(50bp)=(tikz@axis@middle);
  color(75bp)=(tikz@axis@top);
  color(100bp)=(tikz@axis@top)}%

\pgfutil@colorlet{tikz@axis@top}{gray}%
\pgfutil@colorlet{tikz@axis@middle}{gray!50!white}%
\pgfutil@colorlet{tikz@axis@bottom}{white}%

\pgfdeclareradialshading[tikz@ball]{ball}{\pgfqpoint{-10bp}{10bp}}{%
 color(0bp)=(tikz@ball!15!white);
 color(9bp)=(tikz@ball!75!white);
 color(18bp)=(tikz@ball!70!black);
 color(25bp)=(tikz@ball!50!black);
 color(50bp)=(black)}%

\pgfutil@colorlet{tikz@ball}{blue}%

\pgfdeclareradialshading[tikz@radial@inner,tikz@radial@outer]{radial}{\pgfpointorigin}{%
 color(0bp)=(tikz@radial@inner);
 color(25bp)=(tikz@radial@outer);
 color(50bp)=(tikz@radial@outer)}%

\pgfutil@colorlet{tikz@radial@inner}{gray}%
\pgfutil@colorlet{tikz@radial@outer}{white}%


\tikzset{
  pin distance/.store in=\tikz@pin@distance,
  pin distance=3ex,
  pin position/.store in=\tikz@pin@default@pos,
  pin position=above,
  pin edge/.store in=\tikz@pin@edge@style,
  pin edge={},
  tikz@pin@post/.code={\global\let\tikz@pin@edge@style@smuggle=\tikz@pin@edge@style},
  tikz@pre@pin@edge/.code={%
    \toks0=\expandafter{\tikz@pin@edge@style@smuggle}%
    \edef\pgf@marshal{\noexpand\tikzset{tikz@pin@options/.style={\the\toks0}}}%
    \pgf@marshal
  },%
}%

\tikzset{%
  pin/.code={%
    \begingroup
      \ifnum\the\catcode`\:=\active\relax
        \def\tikz@next{%
          \endgroup
          \tikz@parse@pin@active@i{#1}}%
      \else
        \def\tikz@next{%
          \endgroup
          \pgfutil@ifnextchar[%
            {\tikz@parse@pin@nonactive}
            {\tikz@parse@pin@nonactive[]}#1:\pgf@nil}%
      \fi
    \tikz@next}}%

\begingroup
  \catcode`\:=\active\relax

  \gdef\tikz@parse@pin@active@i#1{%
    \pgfutil@ifnextchar[%
      {\tikz@parse@pin@active}
      {\tikz@parse@pin@active[]}#1:\pgf@nil}%

  \long\gdef\tikz@parse@pin@active[#1]#2:#3\pgf@nil{%
    \def\tikz@temp{#3}%
    \ifx\tikz@temp\pgfutil@empty
      \tikz@@parse@pin@active[#1]\tikz@pin@default@pos:#2:\pgf@nil%
    \else
      \tikz@@parse@pin@active[#1]#2:#3\pgf@nil%
    \fi}%

  \long\gdef\tikz@@parse@pin@active[#1]#2:#3:\pgf@nil{%
    \tikzset{%
      append after command = {%
        \bgroup
          [current point is local = true]
          \pgfextra{\let\tikz@save@last@node=\tikzlastnode\tikz@node@is@a@labelfalse}%
          node [tikz@label@angle = #2,
                anchor=@auto,
                every pin,
                #1,
                append after command = {%
                  (\tikz@save@last@node)
                  edge [every pin edge,
                        tikz@pre@pin@edge,
                        tikz@pin@options]
                  (\tikzlastnode)},
                tikz@label@post = \tikz@pin@distance,
                tikz@pin@post] {#3}
        \egroup}}}%
\endgroup

\long\def\tikz@parse@pin@nonactive[#1]#2:#3\pgf@nil{%
  \def\tikz@temp{#3}%
  \ifx\tikz@temp\pgfutil@empty
    \tikz@@parse@pin@nonactive[#1]\tikz@pin@default@pos:#2:\pgf@nil%
  \else
    \tikz@@parse@pin@nonactive[#1]#2:#3\pgf@nil%
  \fi}%

\long\def\tikz@@parse@pin@nonactive[#1]#2:#3:\pgf@nil{%
  \tikzset{%
    append after command = {%
      \bgroup
        [current point is local = true]
        \pgfextra{\let\tikz@save@last@node=\tikzlastnode\tikz@node@is@a@labelfalse}%
        node [tikz@label@angle = #2,
              anchor=@auto,
              every pin,
              #1,
              append after command = {%
                (\tikz@save@last@node)
                edge [every pin edge,
                      tikz@pre@pin@edge,
                      tikz@pin@options]
                (\tikzlastnode)},
              tikz@label@post = \tikz@pin@distance,
              tikz@pin@post] {#3}
      \egroup}}}%


\tikzset{
  label distance/.store in=\tikz@label@distance,
  label distance=0pt,
  label position/.store in=\tikz@label@default@pos,
  label position=above,
  absolute/.is if=tikz@absolute,
  tikz@label@angle/.store in=\tikz@label@angle
}%

\newif\iftikz@absolute
\def\tikz@on@text{center}%

\tikzset{tikz@label@post/.code 2 args={
  \edef\tikz@label@angle{\tikz@label@angle}%
  \expandafter\pgfkeys@spdef\expandafter\tikz@label@angle\expandafter{\tikz@label@angle}%
  \csname tikz@label@angle@is@\tikz@label@angle\endcsname
  \ifx\tikz@label@angle\tikz@on@text%
    \def\tikz@node@at{\pgfpointanchor{\tikzlastnode}{center}}%
    \def\tikz@anchor{center}%
  \else%
    \iftikz@absolute%
      \pgftransformreset%
      \pgf@process{%
        \pgfpointshapeborder{\tikzlastnode}%
        {\pgfpointadd{\pgfpointanchor{\tikzlastnode}{center}}{\pgfpointpolar{\tikz@label@angle}{1pt}}}}%
      \edef\tikz@node@at{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
      \tikz@compute@direction{\tikz@label@angle}%
      \tikz@addtransform{\pgftransformshift{\pgfpointpolar{\tikz@label@angle}{#1}}}%
    \else%
      \pgf@process{\pgfpointanchor{\tikzlastnode}{\tikz@label@angle}}%
      \edef\tikz@node@at{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
      \pgf@xb=\pgf@x%
      \pgf@yb=\pgf@y%
      \pgf@process{\pgfpointanchor{\tikzlastnode}{center}}%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      \tikz@label@simplefalse%
      \ifdim\pgf@xc=\pgf@xb\relax%
        \ifdim\pgf@yc=\pgf@yb\relax%
          \tikz@label@simpletrue%
        \fi%
      \fi%
      \iftikz@label@simple%
        \tikz@compute@direction{\tikz@label@angle}%
        \tikz@addtransform{\pgftransformshift{\pgfpointpolar{\tikz@label@angle}{#1}}}%
      \else%
        \pgf@process{\pgfpointnormalised{%
            \pgfpointdiff{\pgfpointtransformed{\pgfqpoint{\pgf@xc}{\pgf@yc}}}{\pgfpointtransformed{\pgfqpoint{\pgf@xb}{\pgf@yb}}}}}%
        \edef\pgf@marshal{%
          \noexpand\tikz@addtransform{\noexpand\pgftransformshift{\noexpand\pgfpointscale{#1}{
                \noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}}}%
        \pgf@marshal%
        \pgf@xc=\pgf@x%
        \pgf@yc=\pgf@y%
        \pgf@x=\pgf@yc%
        \pgf@y=-\pgf@xc%
        \ifx\tikz@anchor\tikz@auto@text%
          \tikz@auto@anchor%
        \fi%
      \fi%
    \fi%
  \fi}
}%

\newif\iftikz@label@simple%

\tikzset{%
  label/.code={%
    \begingroup
      \ifnum\the\catcode`\:=\active\relax
        \def\tikz@next{%
          \endgroup
          \tikz@parse@label@active@i{#1}}%
      \else
        \def\tikz@next{%
          \endgroup
          \pgfutil@ifnextchar[%
            {\tikz@parse@label@nonactive}
            {\tikz@parse@label@nonactive[]}#1:\pgf@nil}%
      \fi
    \tikz@next}}%

\begingroup
  \catcode`\:=\active\relax

  \gdef\tikz@parse@label@active@i#1{%
    \pgfutil@ifnextchar[%
      {\tikz@parse@label@active}
      {\tikz@parse@label@active[]}#1:\pgf@nil}%

  \gdef\tikz@parse@label@active[#1]#2:#3\pgf@nil{%
    \def\tikz@temp{#3}%
    \ifx\tikz@temp\pgfutil@empty
      \tikz@@parse@label@active[#1]\tikz@label@default@pos:#2:\pgf@nil%
    \else
      \def\tikz@temp{#2}%
      \ifx\tikz@temp\pgfutil@empty
        \tikz@@parse@label@active[#1]\tikz@label@default@pos:#3\pgf@nil%
      \else
        \tikz@@parse@label@active[#1]#2:#3\pgf@nil%
      \fi
    \fi
  }%

  \gdef\tikz@@parse@label@active[#1]#2:#3:\pgf@nil{%
    \tikzset{%
      append after command = {%
        \bgroup
          [current point is local=true]
          \pgfextra{\let\tikz@save@last@fig@name=\tikz@last@fig@name\tikz@node@is@a@labelfalse}
          node [tikz@label@angle = #2,
                anchor=@auto,
                every label,
                #1,
                tikz@label@post = \tikz@label@distance] {\iftikz@handle@active@nodes\expandafter\scantokens\else\expandafter\pgfutil@firstofone\fi{#3\noexpand}}
          \pgfextra{\global\let\tikz@last@fig@name=\tikz@save@last@fig@name}
        \egroup}}}%
\endgroup

\def\tikz@parse@label@nonactive[#1]#2:#3\pgf@nil{%
  \def\tikz@temp{#3}%
  \ifx\tikz@temp\pgfutil@empty
    \tikz@@parse@label@nonactive[#1]\tikz@label@default@pos:#2:\pgf@nil%
  \else
    \def\tikz@temp{#2}%
    \ifx\tikz@temp\pgfutil@empty
      \tikz@@parse@label@nonactive[#1]\tikz@label@default@pos:#3\pgf@nil%
    \else
      \tikz@@parse@label@nonactive[#1]#2:#3\pgf@nil%
    \fi
  \fi
}%

\def\tikz@@parse@label@nonactive[#1]#2:#3:\pgf@nil{%
  \tikzset{%
    append after command = {%
      \bgroup
        [current point is local=true]
        \pgfextra{\let\tikz@save@last@fig@name=\tikz@last@fig@name\tikz@node@is@a@labelfalse}
        node [tikz@label@angle = #2,
              anchor=@auto,
              every label,
              #1,
              tikz@label@post = \tikz@label@distance] {\iftikz@handle@active@nodes\expandafter\scantokens\else\expandafter\pgfutil@firstofone\fi{#3\noexpand}}
        \pgfextra{\global\let\tikz@last@fig@name=\tikz@save@last@fig@name}
      \egroup}}}%

\expandafter\def\csname tikz@label@angle@is@right\endcsname{\def\tikz@label@angle{0}}%
\expandafter\def\csname tikz@label@angle@is@above right\endcsname{\def\tikz@label@angle{45}}%
\expandafter\def\csname tikz@label@angle@is@above\endcsname{\def\tikz@label@angle{90}}%
\expandafter\def\csname tikz@label@angle@is@above left\endcsname{\def\tikz@label@angle{135}}%
\expandafter\def\csname tikz@label@angle@is@left\endcsname{\def\tikz@label@angle{180}}%
\expandafter\def\csname tikz@label@angle@is@below left\endcsname{\def\tikz@label@angle{225}}%
\expandafter\def\csname tikz@label@angle@is@below\endcsname{\def\tikz@label@angle{270}}%
\expandafter\def\csname tikz@label@angle@is@below right\endcsname{\def\tikz@label@angle{315}}%

\def\tikz@compute@direction#1{%
  \ifx\tikz@anchor\tikz@auto@text%
  \let\tikz@do@auto@anchor=\relax
  \pgfmathsetcount{\c@pgf@counta}{#1}%
  \ifnum\c@pgf@counta<0\relax
    \advance\c@pgf@counta by 360\relax%
  \fi%
  \ifnum\c@pgf@counta>359\relax
    \advance\c@pgf@counta by-360\relax%
  \fi%
  \ifnum\c@pgf@counta<4\relax%
    \def\tikz@anchor{west}%
  \else\ifnum\c@pgf@counta<87\relax%
    \def\tikz@anchor{south west}%
  \else\ifnum\c@pgf@counta<94\relax%
    \def\tikz@anchor{south}%
  \else\ifnum\c@pgf@counta<177\relax%
    \def\tikz@anchor{south east}%
  \else\ifnum\c@pgf@counta<184\relax%
    \def\tikz@anchor{east}%
  \else\ifnum\c@pgf@counta<267\relax%
    \def\tikz@anchor{north east}%
  \else\ifnum\c@pgf@counta<274\relax%
    \def\tikz@anchor{north}%
  \else\ifnum\c@pgf@counta<357\relax%
    \def\tikz@anchor{north west}%
  \else%
    \def\tikz@anchor{west}%
  \fi\fi\fi\fi\fi\fi\fi\fi%
  \fi%
}%
\def\tikz@auto@text{@auto}%

\tikzset{
  name/.code={\edef\tikz@fig@name{\tikz@pp@name{#1}}\let\tikz@id@name\tikz@fig@name},%
  name prefix/.initial=,%
  name suffix/.initial=,%
  local bounding box/.style={/pgf/local bounding box/.expanded=\tikz@pp@name{#1}}
}%
\def\tikz@pp@name#1{\csname pgfk@/tikz/name prefix\endcsname#1\csname pgfk@/tikz/name suffix\endcsname}%


\tikzset{
  node contents/.code=\def\tikz@node@content{#1},
  pic type/.code=\def\tikz@node@content{#1}, %
}%

\tikzset{
  behind path/.code=\def\tikz@whichbox{\tikz@figbox@bg},
  in front of path/.code=\def\tikz@whichbox{\tikz@figbox}
}%
\def\tikz@whichbox{\tikz@figbox}%

\tikzoption{at}{\tikz@scan@one@point\tikz@set@at#1}%
\def\tikz@set@at#1{\def\tikz@node@at{#1}}%

\tikzoption{shape}{\edef\tikz@shape{#1}}%

\tikzoption{nodes}{\tikzset{every node/.append style={#1}}}%

\tikzset{alias/.code={%
    \tikz@fig@mustbenamed
    \begingroup
    \toks0=\expandafter{\tikz@alias}%
    \edef\pgf@temp{\noexpand\pgfnodealias{\tikz@pp@name{#1}}{\noexpand\tikz@fig@name}}%
    \toks1=\expandafter{\pgf@temp}%
    \xdef\pgf@marshal{%
        \noexpand\def\noexpand\tikz@alias{\the\toks0 \the\toks1 }%
    }%
    \endgroup
    \pgf@marshal
}}%

\def\tikzaddafternodepathoption#1{#1\tikzset{prefix after command={\pgfextra{#1}}}}%
\tikzset{after node path/.style={append after command={#1}}}%


\tikzset{pic text/.store in=\tikzpictext}%
\let\tikzpictext\relax
\tikzset{pic text options/.store in=\tikzpictextoptions}%
\let\tikzpictextoptions\pgfutil@empty



\tikzoption{anchor}{\def\tikz@anchor{#1}\let\tikz@do@auto@anchor=\relax}%

\tikzoption{left}[]{\def\tikz@anchor{east}\tikz@possibly@transform{x}{-}{#1}}%
\tikzoption{right}[]{\def\tikz@anchor{west}\tikz@possibly@transform{x}{}{#1}}%
\tikzoption{above}[]{\def\tikz@anchor{south}\tikz@possibly@transform{y}{}{#1}}%
\tikzoption{below}[]{\def\tikz@anchor{north}\tikz@possibly@transform{y}{-}{#1}}%
\tikzoption{above left}[]%
  {\def\tikz@anchor{south east}%
    \tikz@possibly@transform{x}{-}{#1}\tikz@possibly@transform{y}{}{#1}}%
\tikzoption{above right}[]%
  {\def\tikz@anchor{south west}%
    \tikz@possibly@transform{x}{}{#1}\tikz@possibly@transform{y}{}{#1}}%
\tikzoption{below left}[]%
  {\def\tikz@anchor{north east}%
    \tikz@possibly@transform{x}{-}{#1}\tikz@possibly@transform{y}{-}{#1}}%
\tikzoption{below right}[]%
  {\def\tikz@anchor{north west}%
    \tikz@possibly@transform{x}{}{#1}\tikz@possibly@transform{y}{-}{#1}}%
\tikzset{centered/.code=\def\tikz@anchor{center}}%

\tikzoption{node distance}{\def\tikz@node@distance{#1}}%
\def\tikz@node@distance{1cm}%

\tikzoption{above of}{\tikz@of{#1}{90}}%
\tikzoption{below of}{\tikz@of{#1}{-90}}%
\tikzoption{left of}{\tikz@of{#1}{180}}%
\tikzoption{right of}{\tikz@of{#1}{0}}%
\tikzoption{above left of}{\tikz@of{#1}{135}}%
\tikzoption{below left of}{\tikz@of{#1}{-135}}%
\tikzoption{above right of}{\tikz@of{#1}{45}}%
\tikzoption{below right of}{\tikz@of{#1}{-45}}%
\def\tikz@of#1#2{%
  \def\tikz@anchor{center}%
  \let\tikz@do@auto@anchor=\relax%
  \tikz@addtransform{%
    \expandafter\tikz@extract@node@dist\tikz@node@distance and\pgf@stop%
    \pgftransformshift{\pgfpointpolar{#2}{\tikz@extracted@node@distance}}}%
  \def\tikz@node@at{\pgfpointanchor{\tikz@pp@name{#1}}{center}}}%
\def\tikz@extract@node@dist#1and#2\pgf@stop{%
  \def\tikz@extracted@node@distance{#1}}%

\tikzset{
  transform shape nonlinear/.is choice,
  transform shape nonlinear/.default=true,
  transform shape nonlinear/true/.code=\let\tikz@nlt\relax,
  transform shape nonlinear/false/.code=\def\tikz@nlt{\pgfapproximatenonlineartranslation},
  transform shape nonlinear=false,
}%


\tikzoption{transform shape}[true]{%
  \csname tikz@fullytransformed#1\endcsname%
  \iftikz@fullytransformed%
    \pgfresetnontranslationattimefalse%
  \else%
    \pgfresetnontranslationattimetrue%
  \fi%
}%

\newif\iftikz@fullytransformed
\pgfresetnontranslationattimetrue%

\def\tikz@anchor{center}%
\def\tikz@shape{rectangle}%

\def\tikz@possibly@transform#1#2#3{%
  \let\tikz@do@auto@anchor=\relax%
  \def\tikz@test{#3}%
  \ifx\tikz@test\pgfutil@empty%
  \else%
    \pgfmathsetlength{\pgf@x}{#3}%
    \pgf@x=#2\pgf@x\relax%
    \edef\tikz@marshal{\noexpand\tikz@addtransform{%
        \expandafter\noexpand\csname  pgftransform#1shift\endcsname{\the\pgf@x}}}%
    \tikz@marshal%
  \fi%
}%


\tikzoption{remember picture}[true]{\csname pgfrememberpicturepositiononpage#1\endcsname}
\tikzset{
    overlay/.is choice,
    overlay/true/.code={\pgf@relevantforpicturesizefalse},
    overlay/false/.code={\pgf@relevantforpicturesizetrue},
    overlay/.default=true
}



\tikzoption{sloped}[true]{\csname pgfslopedattime#1\endcsname}%
\tikzoption{allow upside down}[true]{\csname pgfallowupsidedownattime#1\endcsname}%

\tikzoption{pos}{\edef\tikz@time{#1}\ifx\tikz@time\pgfutil@empty\else\pgfmathsetmacro\tikz@time{\tikz@time}\fi}%

\tikzoption{auto}[]{\csname tikz@install@auto@anchor@#1\endcsname}%
\tikzoption{swap}[]{%
  \def\tikz@temp{left}%
  \ifx\tikz@auto@anchor@direction\tikz@temp%
    \def\tikz@auto@anchor@direction{right}%
  \else%
    \def\tikz@auto@anchor@direction{left}%
  \fi%
}%
\tikzset{'/.style=swap}%


\def\tikz@install@auto@anchor@{\let\tikz@do@auto@anchor=\tikz@auto@anchor@on}%
\def\tikz@install@auto@anchor@false{\let\tikz@do@auto@anchor=\relax}%
\def\tikz@install@auto@anchor@left{\let\tikz@do@auto@anchor=\tikz@auto@anchor@on\def\tikz@auto@anchor@direction{left}}%
\def\tikz@install@auto@anchor@right{\let\tikz@do@auto@anchor=\tikz@auto@anchor@on\def\tikz@auto@anchor@direction{right}}%

\let\tikz@do@auto@anchor=\relax%

\def\tikz@auto@anchor@on{\csname tikz@auto@anchor@\tikz@auto@anchor@direction\endcsname}

\def\tikz@auto@anchor@left{\tikz@auto@pre\tikz@auto@anchor\tikz@auto@post}%
\def\tikz@auto@anchor@right{\tikz@auto@pre\tikz@auto@anchor@prime\tikz@auto@post}%

\def\tikz@auto@anchor@direction{left}%

\tikzoption{text}{\def\tikz@textcolor{#1}}%
\tikzoption{font}{\def\tikz@textfont{#1}}%
\tikzoption{node font}{\def\tikz@node@textfont{#1}}%
\tikzoption{text opacity}{\def\tikz@textopacity{#1}}%
\tikzoption{text width}{\def\tikz@text@width{#1}}%
\tikzoption{text height}{\def\tikz@text@height{#1}}%
\tikzoption{text depth}{\def\tikz@text@depth{#1}}%
\tikzoption{text ragged}[]%
{\def\tikz@text@action{\pgfutil@raggedright\rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax}}%
\tikzoption{text badly ragged}[]{\def\tikz@text@action{\pgfutil@raggedright\relax}}%
\tikzoption{text ragged left}[]%
{\def\tikz@text@action{\pgfutil@raggedleft\leftskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax}}%
\tikzoption{text badly ragged left}[]{\def\tikz@text@action{\pgfutil@raggedleft\relax}}%
\tikzoption{text justified}[]{\def\tikz@text@action{\leftskip0pt\rightskip0pt\relax}}%
\tikzoption{text centered}[]{\def\tikz@text@action{%
  \leftskip0pt plus2em%
  \rightskip0pt plus2em%
  \spaceskip.3333em \xspaceskip.5em%
  \parfillskip=0pt%
  \iftikz@warn@for@narrow@centered\else\hbadness10000\fi%
  \let\\=\@centercr%
  \relax}}%
\tikzoption{text badly centered}[]%
{\def\tikz@text@action{%
  \let\\=\@centercr%
  \parfillskip=0pt%
  \rightskip\pgfutil@flushglue%
  \leftskip\pgfutil@flushglue\relax}}%
\tikzset{badness warnings for centered text/.is if=tikz@warn@for@narrow@centered}%
\newif\iftikz@warn@for@narrow@centered

\def\tikz@text@reset{%
  \let\tikz@text@width=\pgfutil@empty
  \let\tikz@text@height=\pgfutil@empty
  \let\tikz@text@depth=\pgfutil@empty
  \let\tikz@textcolor=\pgfutil@empty
  \let\tikz@textfont=\pgfutil@empty
  \let\tikz@textopacity=\pgfutil@empty
  \let\tikz@node@textfont=\pgfutil@empty
  \def\tikz@text@action{\pgfutil@raggedright\rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax}%
}
\tikz@text@reset


\tikzset{
  node halign header/.initial=,
  align/.is choice,
  align/left/.style  ={text ragged,node halign header=\tikz@align@left@header},
  align/flush left/.style  ={text badly ragged,node halign header=\tikz@align@left@header},
  align/right/.style ={text ragged left,node halign header=\tikz@align@right@header},
  align/flush right/.style ={text badly ragged left,node halign header=\tikz@align@right@header},
  align/center/.style={text centered,node halign header=\tikz@align@center@header},
  align/flush center/.style={text badly centered,node halign header=\tikz@align@center@header},
  align/justify/.style ={text justified,node halign header=\tikz@align@left@header},
  align/none/.style ={text justified,node halign header=},
}%
\def\tikz@align@left@header{##\hfil\cr}%
\def\tikz@align@right@header{\hfil##\cr}%
\def\tikz@align@center@header{\hfil##\hfil\cr}%



\tikzoption{arrows}{\tikz@processarrows{#1}}%


\tikzoption{>}{\pgfdeclarearrow{name=<->,means={#1}}}%
\pgfdeclarearrow{name=|<->|,   means={>[sep=0pt].|}}%

\tikzoption{shorten <}{\pgfsetshortenstart{#1}}%
\tikzoption{shorten >}{\pgfsetshortenend{#1}}%

\def\tikz@processarrows#1{%
  \def\tikz@current@arrows{#1}%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
  \else%
    \pgfsetarrows{#1}%
  \fi%
}%

\def\tikz@current@arrows{-}%

\tikzoption{bend}{\tikz@scan@one@point\tikz@set@parabola@bend#1\relax}%
\tikzoption{bend pos}{\def\tikz@parabola@bend@factor{#1}}%
\tikzoption{parabola height}{%
  \def\tikz@parabola@bend@factor{.5}%
  \def\tikz@parabola@bend{\pgfpointadd{\pgfpoint{0pt}{#1}}{\tikz@last@position@saved}}}%

\def\tikz@parabola@bend{\tikz@last@position@saved}%
\def\tikz@parabola@bend@factor{0}%

\def\tikz@set@parabola@bend#1{\def\tikz@parabola@bend{#1}}%

\tikzoption{domain}{\edef\tikz@plot@domain{#1}\expandafter\tikz@plot@samples@recalc\tikz@plot@domain\relax}%
\tikzoption{range}{\def\tikz@plot@range{#1}}%
\tikzoption{yrange}{\def\tikz@plot@range{#1}}%
\let\tikz@plot@range=\pgfutil@empty
\tikzoption{xrange}{\def\tikz@plot@xrange{#1}}%
\let\tikz@plot@xrange=\pgfutil@empty

\tikzoption{smooth}[]{\let\tikz@plot@handler=\pgfplothandlercurveto}%
\tikzoption{smooth cycle}[]{\let\tikz@plot@handler=\pgfplothandlerclosedcurve}%
\tikzoption{sharp plot}[]{\let\tikz@plot@handler\pgfplothandlerlineto}%
\tikzoption{sharp cycle}[]{\let\tikz@plot@handler\pgfplothandlerpolygon}%

\tikzoption{tension}{\pgfsetplottension{#1}}%

\tikzoption{xcomb}[]{\let\tikz@plot@handler=\pgfplothandlerxcomb}%
\tikzoption{ycomb}[]{\let\tikz@plot@handler=\pgfplothandlerycomb}%
\tikzoption{polar comb}[]{\let\tikz@plot@handler=\pgfplothandlerpolarcomb}%
\tikzoption{ybar}[]{\let\tikz@plot@handler=\pgfplothandlerybar}%
\tikzoption{ybar interval}[]{\let\tikz@plot@handler=\pgfplothandlerybarinterval}%
\tikzoption{xbar interval}[]{\let\tikz@plot@handler=\pgfplothandlerxbarinterval}%
\tikzoption{xbar}[]{\let\tikz@plot@handler=\pgfplothandlerxbar}%
\tikzoption{const plot}[]{\let\tikz@plot@handler=\pgfplothandlerconstantlineto}%
\tikzoption{const plot mark left}[]{\let\tikz@plot@handler=\pgfplothandlerconstantlineto}%
\tikzoption{const plot mark right}[]{\let\tikz@plot@handler=\pgfplothandlerconstantlinetomarkright}%
\tikzoption{const plot mark mid}[]{\let\tikz@plot@handler=\pgfplothandlerconstantlinetomarkmid}%
\tikzoption{jump mark right}[]{\let\tikz@plot@handler=\pgfplothandlerjumpmarkright}%
\tikzoption{jump mark mid}[]{\let\tikz@plot@handler=\pgfplothandlerjumpmarkmid}%
\tikzoption{jump mark left}[]{\let\tikz@plot@handler=\pgfplothandlerjumpmarkleft}%

\tikzoption{raw gnuplot}[true]{\csname tikz@plot@raw@gnuplot#1\endcsname}%
\tikzoption{prefix}{\def\tikz@plot@prefix{#1}}%
\tikzoption{id}{\def\tikz@plot@id{#1}}%

\tikzoption{samples}{\pgfmathsetmacro\tikz@plot@samples{max(2,#1)}\expandafter\tikz@plot@samples@recalc\tikz@plot@domain\relax}%
\tikzoption{samples at}{\def\tikz@plot@samplesat{#1}}%
\tikzoption{parametric}[true]{\csname tikz@plot@parametric#1\endcsname}%

\tikzoption{variable}{\def\tikz@plot@var{#1}}%

\tikzoption{only marks}[]{\let\tikz@plot@handler\pgfplothandlerdiscard}%

\tikzoption{mark}{%
    \def\tikz@plot@mark{#1}%
    \def\tikz@temp{none}%
    \ifx\tikz@temp\tikz@plot@mark
        \let\tikz@plot@mark=\pgfutil@empty
    \fi
}%
\tikzset{
    no marks/.style={mark=none},%
    no markers/.style={mark=none},%
    every mark/.style={},
    mark options/.style={%
        every mark/.style={#1}%
    }}%
\tikzoption{mark size}{\pgfsetplotmarksize{#1}}%

\tikzoption{mark indices}{\def\tikz@mark@list{#1}}%
\tikzoption{mark phase}{\pgfsetplotmarkphase{#1}}%
\tikzoption{mark repeat}{\pgfsetplotmarkrepeat{#1}}%

\let\tikz@mark@list=\pgfutil@empty

\let\tikz@plot@handler=\pgfplothandlerlineto
\let\tikz@plot@mark=\pgfutil@empty

\def\tikz@plot@samples{25}%
\def\tikz@plot@domain{-5:5}%
\def\tikz@plot@var{\x}%
\def\tikz@plot@samplesat{-5,-4.5833333,...,5}%
\def\tikz@plot@samples@recalc#1:#2\relax{%
  \begingroup
  \pgfmathparse{#1}%
  \let\tikz@temp@start=\pgfmathresult%
  \pgfmathparse{#2}%
  \let\tikz@temp@end=\pgfmathresult%
  \pgfmathsetmacro\tikz@temp@diff{(\tikz@temp@end-\tikz@temp@start)/(\tikz@plot@samples-1)}%
  \pgfkeys{/pgf/fpu/output format/fixed/.try}%
  \pgfmathsetmacro\tikz@temp@diff@abs{abs(\tikz@temp@diff)}%
  \ifdim\tikz@temp@diff@abs pt<0.0001pt\relax%
    \edef\tikz@plot@samplesat{\tikz@temp@start,\tikz@temp@end}%
  \else%
    \pgfmathparse{\tikz@temp@start+\tikz@temp@diff}%
    \edef\tikz@plot@samplesat{\tikz@temp@start,\pgfmathresult,...,\tikz@temp@end}%
  \fi%
  \pgfmath@smuggleone\tikz@plot@samplesat
  \endgroup
}%


\def\tikz@plot@prefix{\jobname.}%
\def\tikz@plot@id{pgf-plot}%

\newif\iftikz@plot@parametric
\newif\iftikz@plot@raw@gnuplot


\tikzoption{to path}{\def\tikz@to@path{#1}}%

\def\tikz@to@path{-- (\tikztotarget) \tikztonodes}%

\tikzset{edge macro/.store in=\tikz@edge@macro}%
\let\tikz@edge@macro\pgfutil@empty

\tikzset{
  edge node/.code={
    \expandafter\def\expandafter\tikz@tonodes\expandafter{\tikz@tonodes #1}
  },
  edge label/.style={/tikz/edge node={node[auto]{#1}}},
  edge label'/.style={/tikz/edge node={node[auto,swap]{#1}}},
}%


\tikzset{
  append after command/.code=\expandafter\def\expandafter\tikz@after@path\expandafter{\tikz@after@path#1},
  prefix after command/.code={%
    \def\tikz@temp{#1}%
    \expandafter\expandafter\expandafter\def%
    \expandafter\expandafter\expandafter\tikz@after@path%
    \expandafter\expandafter\expandafter{%
      \expandafter\tikz@temp\tikz@after@path}%
  },
}%
\let\tikz@after@path\pgfutil@empty


\newif\iftikz@child@missing
\pgfkeys{/tikz/missing/.is if=tikz@child@missing}%

\tikzset{edge from parent macro/.initial=\tikz@edge@from@parent@macro}%
\def\tikz@edge@from@parent@macro#1#2{
  [style=edge from parent, #1, /utils/exec=\tikz@node@is@a@labeltrue] \tikz@edge@to@parent@path #2}%

\tikzoption{edge from parent path}{\def\tikz@edge@to@parent@path{#1}}%

\tikzoption{parent anchor}{\def\tikzparentanchor{.#1}\ifx\tikzparentanchor\tikz@border@text\let\tikzparentanchor\pgfutil@empty\fi}%
\tikzoption{child anchor}{\def\tikzchildanchor{.#1}\ifx\tikzchildanchor\tikz@border@text\let\tikzchildanchor\pgfutil@empty\fi}%

\tikzoption{level distance}{\pgfmathsetlength\tikzleveldistance{#1}}%
\tikzoption{sibling distance}{\pgfmathsetlength\tikzsiblingdistance{#1}}%

\tikzoption{growth function}{\let\tikz@grow=#1}%

\tikzset{grow siblings on line/.style={growth function=\tikz@grow@direction}}%

\tikzoption{growth parent anchor}{\def\tikz@growth@anchor{#1}}%
\tikzoption{grow}{\tikz@set@growth{#1}\edef\tikz@special@level{\the\tikztreelevel}}%
\tikzoption{grow'}{\tikz@set@growth{#1}\tikz@swap@growth\edef\tikz@special@level{\the\tikztreelevel}}%

\def\tikz@growth@anchor{center}%

\def\tikz@special@level{-1}%

\def\tikz@swap@growth{%
  \let\tikz@temp=\tikz@angle@grow@right%
  \let\tikz@angle@grow@right=\tikz@angle@grow@left%
  \let\tikz@angle@grow@left=\tikz@temp%
}%

\def\tikz@set@growth#1{%
  \let\tikz@grow=\tikz@grow@direction%
  \expandafter\ifx\csname tikz@grow@direction@#1\endcsname\relax%
    \c@pgf@counta=#1\relax%
  \else%
    \c@pgf@counta=\csname tikz@grow@direction@#1\endcsname%
  \fi%
  \edef\tikz@angle@grow{\the\c@pgf@counta}%
  \advance\c@pgf@counta by-90\relax%
  \edef\tikz@angle@grow@left{\the\c@pgf@counta}%
  \advance\c@pgf@counta by180\relax%
  \edef\tikz@angle@grow@right{\the\c@pgf@counta}%
}%

\def\tikz@border@text{.border}%
\let\tikzparentanchor=\pgfutil@empty
\let\tikzchildanchor=\pgfutil@empty
\def\tikz@edge@to@parent@path{(\tikzparentnode\tikzparentanchor) -- (\tikzchildnode\tikzchildanchor)}%

\tikzleveldistance=15mm%
\tikzsiblingdistance=15mm%

\def\tikz@grow@direction@down{-90}%
\def\tikz@grow@direction@up{90}%
\def\tikz@grow@direction@left{180}%
\def\tikz@grow@direction@right{0}%

\def\tikz@grow@direction@south{-90}%
\def\tikz@grow@direction@north{90}%
\def\tikz@grow@direction@west{180}%
\def\tikz@grow@direction@east{0}%

\expandafter\def\csname tikz@grow@direction@north east\endcsname{45}%
\expandafter\def\csname tikz@grow@direction@north west\endcsname{135}%
\expandafter\def\csname tikz@grow@direction@south east\endcsname{-45}%
\expandafter\def\csname tikz@grow@direction@south west\endcsname{-135}%

\def\tikz@grow@direction{%
  \pgftransformshift{\pgfpointpolar{\tikz@angle@grow}{\tikzleveldistance}}%
  \ifnum\tikztreelevel=\tikz@special@level%
  \else%
    \pgf@xc=.5\tikzsiblingdistance%
    \c@pgf@counta=\tikznumberofchildren%
    \advance\c@pgf@counta by1\relax%
    \pgfutil@tempdima=\c@pgf@counta\pgf@xc%
    \pgftransformshift{\pgfpointpolar{\tikz@angle@grow@left}{\pgfutil@tempdima}}%
    \pgftransformshift{\pgfpointpolar{\tikz@angle@grow@right}{\tikznumberofcurrentchild\tikzsiblingdistance}}%
  \fi%
}%

\tikzset{grow=down}%


\tikzset{snake/.code=\tikzerror{You need to say \string\usetikzlibrary{snakes}}}%

\tikzset{decorate/.code=\tikzerror{You need to load a  decoration library}}%

\usepgfmodule{matrix}%

\tikzoption{matrix}[true]{\csname tikz@is@matrix#1\endcsname}%

\tikzoption{matrix anchor}{\def\tikz@matrix@anchor{#1}}%

\tikzoption{column sep}{\def\pgfmatrixcolumnsep{#1}}%
\tikzoption{row sep}{\def\pgfmatrixrowsep{#1}}%

\tikzoption{cells}{\tikzset{every cell/.append style={#1}}}%

\tikzoption{ampersand replacement}{\def\tikz@ampersand@replacement{#1}}%

\newif\iftikz@is@matrix
\let\tikz@matrix@anchor=\pgfutil@empty
\let\tikz@ampersand@replacement=\pgfutil@empty


\tikzset{%
  handle active characters in code/.is if=tikz@handle@active@code,
  handle active characters in nodes/.is if=tikz@handle@active@nodes,
}%
\newif\iftikz@handle@active@code
\newif\iftikz@handle@active@nodes


\tikzoption{execute at begin picture}{\expandafter\def\expandafter\tikz@atbegin@picture\expandafter{\tikz@atbegin@picture#1}}%
\tikzoption{execute at end picture}{\expandafter\def\expandafter\tikz@atend@picture\expandafter{\tikz@atend@picture#1}}%
\tikzoption{execute at begin scope}{\expandafter\def\expandafter\tikz@atbegin@scope\expandafter{\tikz@atbegin@scope#1}}%
\tikzoption{execute at end scope}{\expandafter\def\expandafter\tikz@atend@scope\expandafter{\tikz@atend@scope#1}}%
\tikzoption{execute at begin to}{\expandafter\def\expandafter\tikz@atbegin@to\expandafter{\tikz@atbegin@to#1}}%
\tikzoption{execute at end to}{\expandafter\def\expandafter\tikz@atend@to\expandafter{\tikz@atend@to#1}}%
\tikzoption{execute at begin node}{\expandafter\def\expandafter\tikz@atbegin@node\expandafter{\tikz@atbegin@node#1}}%
\tikzoption{execute at end node}{\expandafter\def\expandafter\tikz@atend@node\expandafter{\tikz@atend@node#1}}%
\tikzoption{execute at begin matrix}{\expandafter\def\expandafter\tikz@atbegin@matrix\expandafter{\tikz@atbegin@matrix#1}}%
\tikzoption{execute at end matrix}{\expandafter\def\expandafter\tikz@atend@matrix\expandafter{\tikz@atend@matrix#1}}%
\tikzoption{execute at begin cell}{\expandafter\def\expandafter\tikz@atbegin@cell\expandafter{\tikz@atbegin@cell#1}}%
\tikzoption{execute at end cell}{\expandafter\def\expandafter\tikz@atend@cell\expandafter{\tikz@atend@cell#1}}%
\tikzoption{execute at empty cell}{\expandafter\def\expandafter\tikz@at@emptycell\expandafter{\tikz@at@emptycell#1}}%

\let\tikz@atbegin@picture=\pgfutil@empty
\let\tikz@atend@picture=\pgfutil@empty
\let\tikz@atbegin@scope=\pgfutil@empty
\let\tikz@atend@scope=\pgfutil@empty
\let\tikz@atbegin@to=\pgfutil@empty
\let\tikz@atend@to=\pgfutil@empty
\let\tikz@atbegin@node=\pgfutil@empty
\let\tikz@atend@node=\pgfutil@empty
\let\tikz@atbegin@cell=\pgfutil@empty
\let\tikz@atend@cell=\pgfutil@empty
\let\tikz@at@emptycell=\pgfutil@empty
\let\tikz@atbegin@matrix=\pgfutil@empty
\let\tikz@atend@matrix=\pgfutil@empty


\tikzset{preaction/.code=\expandafter\def\expandafter\tikz@preactions\expandafter{\tikz@preactions\tikz@extra@preaction{#1}}}%
\tikzset{postaction/.code=\expandafter\def\expandafter\tikz@postactions\expandafter{\tikz@postactions\tikz@extra@postaction{#1}}}%
\let\tikz@preactions=\pgfutil@empty
\let\tikz@postactions=\pgfutil@empty

\tikzoption{set style}{\tikzstyle#1}%

\def\tikzstyle{\pgfutil@ifnextchar\bgroup\tikz@style@parseA\tikz@style@parseB}%
\def\tikz@style@parseB#1={\tikz@style@parseA{#1}=}%
\def\tikz@style@parseA#1#2=#3[#4]{%
  \pgfutil@in@[{#2}%
  \ifpgfutil@in@%
    \tikz@style@parseC{#1}#2={#4}%
  \else%
    \tikz@style@parseD{#1}#2={#4}%
  \fi%
}%

\def\tikz@style@parseC#1[#2]#3=#4{%
  \pgfkeys{/tikz/#1/.default={#2}}%
  \pgfutil@in@+{#3}%
  \ifpgfutil@in@%
    \pgfkeys{/tikz/#1/.append style={#4}}%
  \else%
    \pgfkeys{/tikz/#1/.style={#4}}%
  \fi}%
\def\tikz@style@parseD#1#2=#3{%
  \pgfutil@in@+{#2}%
  \ifpgfutil@in@%
    \pgfkeys{/tikz/#1/.append style={#3}}%
  \else%
    \pgfkeys{/tikz/#1/.style={#3}}%
  \fi}%



\tikzset{help lines/.style=              {color=gray,line width=0.2pt}}%

\tikzset{every picture/.style=           {}}%
\tikzset{every path/.style=              {}}%
\tikzset{every scope/.style=             {}}%
\tikzset{every plot/.style=              {}}%
\tikzset{every node/.style=              {}}%
\tikzset{every child/.style=             {}}%
\tikzset{every child node/.style=        {}}%
\tikzset{every to/.style=                {}}%
\tikzset{every cell/.style=              {}}%
\tikzset{every matrix/.style=            {}}%
\tikzset{every edge/.style=              {draw}}%
\tikzset{every label/.style=             {draw=none,fill=none}}%
\tikzset{every pin/.style=               {draw=none,fill=none}}%
\tikzset{every pin edge/.style=          {help lines}}%

\tikzset{ultra thin/.style=              {line width=0.1pt}}%
\tikzset{very thin/.style=               {line width=0.2pt}}%
\tikzset{thin/.style=                    {line width=0.4pt}}%
\tikzset{semithick/.style=               {line width=0.6pt}}%
\tikzset{thick/.style=                   {line width=0.8pt}}%
\tikzset{very thick/.style=              {line width=1.2pt}}%
\tikzset{ultra thick/.style=             {line width=1.6pt}}%

\tikzset{solid/.style=                   {dash pattern=}}%
\tikzset{dotted/.style=                  {dash pattern=on \pgflinewidth off 2pt}}%
\tikzset{densely dotted/.style=          {dash pattern=on \pgflinewidth off 1pt}}%
\tikzset{loosely dotted/.style=          {dash pattern=on \pgflinewidth off 4pt}}%
\tikzset{dashed/.style=                  {dash pattern=on 3pt off 3pt}}%
\tikzset{densely dashed/.style=          {dash pattern=on 3pt off 2pt}}%
\tikzset{loosely dashed/.style=          {dash pattern=on 3pt off 6pt}}%
\tikzset{dashdotted/.style=              {dash pattern=on 3pt off 2pt on \the\pgflinewidth off 2pt}}%
\tikzset{dash dot/.style=                {dash pattern=on 3pt off 2pt on \the\pgflinewidth off 2pt}}%
\tikzset{densely dashdotted/.style=      {dash pattern=on 3pt off 1pt on \the\pgflinewidth off 1pt}}%
\tikzset{densely dash dot/.style=        {dash pattern=on 3pt off 1pt on \the\pgflinewidth off 1pt}}%
\tikzset{loosely dashdotted/.style=      {dash pattern=on 3pt off 4pt on \the\pgflinewidth off 4pt}}%
\tikzset{loosely dash dot/.style=        {dash pattern=on 3pt off 4pt on \the\pgflinewidth off 4pt}}%
\tikzset{dashdotdotted/.style=           {dash pattern=on 3pt off 2pt on \the\pgflinewidth off 2pt on \the\pgflinewidth off 2pt}}%
\tikzset{densely dashdotdotted/.style=   {dash pattern=on 3pt off 1pt on \the\pgflinewidth off 1pt on \the\pgflinewidth off 1pt}}%
\tikzset{loosely dashdotdotted/.style=   {dash pattern=on 3pt off 4pt on \the\pgflinewidth off 4pt on \the\pgflinewidth off 4pt}}%
\tikzset{dash dot dot/.style=         {dash pattern=on 3pt off 2pt on \the\pgflinewidth off 2pt on \the\pgflinewidth off 2pt}}%
\tikzset{densely dash dot dot/.style=   {dash pattern=on 3pt off 1pt on \the\pgflinewidth off 1pt on \the\pgflinewidth off 1pt}}%
\tikzset{loosely dash dot dot/.style=   {dash pattern=on 3pt off 4pt on \the\pgflinewidth off 4pt on \the\pgflinewidth off 4pt}}%


\tikzset{transparent/.style=             {opacity=0}}%
\tikzset{ultra nearly transparent/.style={opacity=0.05}}%
\tikzset{very nearly transparent/.style= {opacity=0.1}}%
\tikzset{nearly transparent/.style=      {opacity=0.25}}%
\tikzset{semitransparent/.style=         {opacity=0.5}}%
\tikzset{nearly opaque/.style=           {opacity=0.75}}%
\tikzset{very nearly opaque/.style=      {opacity=0.9}}%
\tikzset{ultra nearly opaque/.style=     {opacity=0.95}}%
\tikzset{opaque/.style=                  {opacity=1}}%

\tikzset{at start/.style=                {pos=0}}%
\tikzset{very near start/.style=         {pos=0.125}}%
\tikzset{near start/.style=              {pos=0.25}}%
\tikzset{midway/.style=                  {pos=0.5}}%
\tikzset{near end/.style=                {pos=0.75}}%
\tikzset{very near end/.style=           {pos=0.875}}%
\tikzset{at end/.style=                  {pos=1}}%

\tikzset{bend at start/.style=           {bend pos=0,bend={+(0,0)}}}%
\tikzset{bend at end/.style=             {bend pos=1,bend={+(0,0)}}}%

\tikzset{edge from parent/.style=        {draw}}%



\tikzset{
  animate/.code=\tikzerror{You need to say \string\usetikzlibrary{animations} to use animations}
}

\newif\iftikz@is@node
\let\tikz@id@name\pgfutil@empty
\let\tikz@id@hook\pgfutil@empty
\def\tikz@call@id@hook{\ifx\tikz@id@hook\pgfutil@empty\else\tikz@id@hook\pgfuseid{\tikz@id@name}\fi}%


\let\tikz@clear@rdf@options\relax
\let\tikz@do@rdf@post@options\relax
\let\tikz@do@rdf@pre@options\relax



\pgfkeys{/tikz/style/.style={#1}}%

\pgfkeys{/tikz/.unknown/.code=%
  \let\tikz@key\pgfkeyscurrentname%
  \pgfkeys{/pgf/\tikz@key/.try={#1}}%
  \ifpgfkeyssuccess%
  \else%
    \expandafter\pgfutil@in@\expandafter!\expandafter{\tikz@key}%
    \ifpgfutil@in@%
      \expandafter\tikz@addoption\expandafter{\expandafter\tikz@compat@color@set\expandafter{\tikz@key}}%
      \edef\tikz@textcolor{\tikz@key}%
    \else%
      \pgfutil@doifcolorelse{\tikz@key}
      {%
        \expandafter\tikz@addoption\expandafter{\expandafter\tikz@compat@color@set\expandafter{\tikz@key}}%
        \edef\tikz@textcolor{\tikz@key}%
      }%
      {%
        \expandafter\pgfutil@in@\expandafter-\expandafter{\tikz@key}%
        \ifpgfutil@in@%
          \expandafter\tikz@processarrows\expandafter{\tikz@key}%
        \else%
          \expandafter\ifx\csname pgf@sh@s@\tikz@key\endcsname\relax%
            \pgfkeys{/errors/unknown key/.expand
              once=\expandafter{\expandafter/\expandafter t\expandafter i\expandafter k\expandafter z\expandafter/\tikz@key}{#1}}%
          \else%
            \edef\tikz@shape{\tikz@key}%
          \fi%
        \fi%
      }%
    \fi%
  \fi%
}%
\def\tikz@compat@color@set#1{%
  \pgfutil@color{#1}\pgfutil@colorlet{pgffillcolor}{#1}%
  \expandafter\let\expandafter\pgf@temp\csname\string\color@pgffillcolor\endcsname%
  \global\let\pgf@strokecolor@global=\pgf@temp
  \global\let\pgf@fillcolor@global=\pgf@temp
}%

\def\tikz@startup@env{%
  \ifnum\the\catcode`\;=\active\relax\expandafter\let\expandafter\tikz@origsemi\expandafter=\tikz@activesemicolon\fi%
  \ifnum\the\catcode`\:=\active\relax\expandafter\let\expandafter\tikz@origcolon\expandafter=\tikz@activecolon\fi%
  \ifnum\the\catcode`\|=\active\relax\expandafter\let\expandafter\tikz@origbar\expandafter=\tikz@activebar\fi%
  \tikz@deactivatthings%
  \iftikz@handle@active@code%
    \tikz@switchoff@shorthands%
  \fi%
}%

\newif\iftikz@inside@picture
\tikz@inside@picturefalse
\def\tikz@check@inside@picture{%
  \iftikz@inside@picture%
    \pgfwarning{Nesting tikzpictures is NOT supported}%
  \fi%
  \tikz@inside@picturetrue%
}

\def\tikzpicture{%
  \begingroup%
    \tikz@startup@env%
    \tikz@collect@scope@anims\tikz@picture}%
\def\tikz@picture[#1]{%
  \pgfpicture%
  \let\tikz@atbegin@picture=\pgfutil@empty%
  \let\tikz@atend@picture=\pgfutil@empty%
  \let\tikz@transform=\relax%
  \def\tikz@time{.5}%
  \tikz@installcommands%
  \scope[every picture,#1]%
  \iftikz@handle@active@code%
    \tikz@switchoff@shorthands%
  \fi%
  \expandafter\tikz@atbegin@picture%
  \tikz@lib@scope@check%
}%
\def\endtikzpicture{%
    \tikz@atend@picture%
    \global\let\pgf@shift@baseline@smuggle=\pgf@baseline%
    \global\let\pgf@trimleft@final@smuggle=\pgf@trimleft%
    \global\let\pgf@trimright@final@smuggle=\pgf@trimright%
    \global\let\pgf@remember@smuggle=\ifpgfrememberpicturepositiononpage%
    \pgf@remember@layerlist@globally
    \endscope%
    \let\pgf@baseline=\pgf@shift@baseline@smuggle%
    \let\pgf@trimleft=\pgf@trimleft@final@smuggle%
    \let\pgf@trimright=\pgf@trimright@final@smuggle%
    \let\ifpgfrememberpicturepositiononpage=\pgf@remember@smuggle%
    \pgf@restore@layerlist@from@global
  \endpgfpicture\endgroup}%




\def\tikz{%
  \begingroup%
    \tikz@startup@env%
    \tikz@collect@scope@anims\tikz@opt}%
\def\tikz@opt[#1]{\tikzpicture[#1]\pgfutil@ifnextchar\bgroup{\tikz@}{\tikz@@single}}%
\def\tikz@{\bgroup\tikz@auto@end@pathtrue\aftergroup\endtikzpicture\aftergroup\endgroup\let\pgf@temp=}%
\def\tikz@@single#1{%
  \expandafter\ifx\csname tikz@protected@command\string#1\endcsname\relax%
    \expandafter\tikz@@%
  \else%
    \begingroup\def\tikz@path@do@at@end{\endgroup\endtikzpicture\endgroup}%
  \fi%
  #1%
}%

\expandafter\let\csname tikz@protected@command\string\draw\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\pattern\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\fill\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\filldraw\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\shade\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\shadedraw\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\clip\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\graph\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\useasboundingbox\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\node\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\coordinate\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\matrix\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\datavisualization\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\path\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\pic\endcsname\pgfutil@empty%

\def\tikz@@{%
  \let\tikz@next=\tikz@collectnormalsemicolon%
  \ifnum\the\catcode`\;=\active\relax%
    \let\tikz@next=\tikz@collectactivesemicolon%
  \fi%
  \tikz@next}%
\def\tikz@collectnormalsemicolon#1;{#1;\endtikzpicture\endgroup}
{
  \catcode`\;=\active
  \gdef\tikz@collectactivesemicolon#1;{#1;\endtikzpicture\endgroup}
}%

\def\tikzifinpicture#1#2{%
    \pgfutil@ifundefined{filldraw}{#2}{#1}%
}%


\def\tikz@collect@scope@anims#1{%
  \pgfutil@ifnextchar[#1{#1[]}%
}%

\def\tikz@scope@env{%
  \pgfscope%
  \begingroup%
  \let\tikz@atbegin@scope=\pgfutil@empty%
  \let\tikz@atend@scope=\pgfutil@empty%
  \let\tikz@options=\pgfutil@empty%
  \tikz@clear@rdf@options%
  \let\tikz@mode=\pgfutil@empty%
  \let\tikz@id@name=\pgfutil@empty%
  \tikz@transparency@groupfalse%
  \tikzset{every scope/.try}%
  \tikz@collect@scope@anims\tikz@scope@opt%
}%
\def\tikz@scope@opt[#1]{%
  \tikzset{#1}%
  \tikz@options%
  \tikz@do@rdf@pre@options%
  \iftikz@transparency@group\expandafter\pgftransparencygroup\expandafter[\tikz@transparency@group@options]\tikz@blend@group\fi%
  \tikz@is@nodefalse%
  \tikz@call@id@hook%
  \pgfidscope%
    \tikz@do@rdf@post@options%
    \begingroup%
      \let\tikz@id@name\pgfutil@empty%
      \expandafter\tikz@atbegin@scope%
      \expandafter\pgfclearid%
      \tikz@lib@scope@check%
}%
\def\endtikz@scope@env{%
      \tikz@atend@scope%
    \endgroup%
  \endpgfidscope%
  \iftikz@transparency@group\endpgftransparencygroup\fi%
  \endgroup%
  \endpgfscope%
  \tikz@lib@scope@check%
}%


\def\tikz@scoped{\tikz@collect@scope@anims\tikz@scoped@opt}%
\def\tikz@scoped@opt[#1]{\scope[#1]\pgfutil@ifnextchar\bgroup{\tikz@scoped@}{\tikz@scoped@@single}}%
\def\tikz@scoped@{\bgroup\tikz@auto@end@pathtrue\aftergroup\endscope\let\pgf@temp=}%
\def\tikz@scoped@@single#1{%
  \expandafter\ifx\csname tikz@scoped@protected@command\string#1\endcsname\relax%
    \expandafter\tikz@scoped@@%
  \else%
    \begingroup\def\tikz@scoped@path@do@at@end{\endgroup\endscope}%
  \fi%
  #1%
}%
\def\tikz@scoped@@{%
  \let\tikz@scoped@next=\tikz@scoped@collectnormalsemicolon%
  \ifnum\the\catcode`\;=\active\relax%
    \let\tikz@scoped@next=\tikz@scoped@collectactivesemicolon%
  \fi%
  \tikz@scoped@next}%
\def\tikz@scoped@collectnormalsemicolon#1;{#1;\endscope}
{
  \catcode`\;=\active
  \gdef\tikz@scoped@collectactivesemicolon#1;{#1;\endscope}
}%


\def\tikzaddtikzonlycommandshortcutlet#1#2{%
    \expandafter\def\expandafter\tikz@installcommands\expandafter{\tikz@installcommands
        \let#1=#2%
    }%
}%

\def\tikzaddtikzonlycommandshortcutdef#1#2{%
    \expandafter\def\expandafter\tikz@installcommands\expandafter{\tikz@installcommands
        \def#1{#2}%
    }%
}%

\def\tikz@installcommands{%
  \let\tikz@origscope=\scope%
  \let\tikz@origscoped=\scoped%
  \let\tikz@origendscope=\endscope%
  \let\tikz@origstartscope=\startscope%
  \let\tikz@origstopscope=\stopscope%
  \let\tikz@origpath=\path%
  \let\tikz@origagainpath=\againpath%
  \let\tikz@origdraw=\draw%
  \let\tikz@origpattern=\pattern%
  \let\tikz@origfill=\fill%
  \let\tikz@origfilldraw=\filldraw%
  \let\tikz@origshade=\shade%
  \let\tikz@origshadedraw=\shadedraw%
  \let\tikz@origclip=\clip%
  \let\tikz@origuseasboundingbox=\useasboundingbox%
  \let\tikz@orignode=\node%
  \let\tikz@origpic=\pic%
  \let\tikz@origcoordinate=\coordinate%
  \let\tikz@origmatrix=\matrix%
  \let\tikz@origcalendar=\calendar%
  \let\tikz@origdv=\datavisualization%
  \let\tikz@origgraph=\graph%
  \let\scope=\tikz@scope@env%
  \let\scoped=\tikz@scoped%
  \let\endscope=\endtikz@scope@env%
  \let\startscope=\scope%
  \let\stopscope=\endscope%
  \let\path=\tikz@command@path%
  \let\againpath=\tikz@command@againpath%
  \def\draw{\path[draw]}%
  \def\pattern{\path[pattern]}%
  \def\fill{\path[fill]}%
  \def\filldraw{\path[fill,draw]}%
  \def\shade{\path[shade]}%
  \def\shadedraw{\path[shade,draw]}%
  \def\clip{\path[clip]}%
  \def\graph{\path graph}%
  \def\useasboundingbox{\path[use as bounding box]}%
  \def\node{\tikz@path@overlay{node}}%
  \def\pic{\tikz@path@overlay{pic}}%
  \def\coordinate{\tikz@path@overlay{coordinate}}%
  \def\matrix{\tikz@path@overlay{node[matrix]}}%
  \def\calendar{\tikz@lib@cal@calendar}%
  \def\datavisualization{\tikz@lib@datavisualization}%
}%
\ifx\tikz@lib@cal@calendar\@undefined
\def\tikz@lib@cal@calendar{\tikzerror{You need to say \string\usetikzlibrary{calendar} to use the \string\calendar{} command}}%
\fi
\ifx\tikz@lib@datavisualization\@undefined
\def\tikz@lib@datavisualization{\tikzerror{You need to say \string\usetikzlibrary{datavisualization} to use the \string\datavisualization{} command}}%
\fi

\def\tikz@path@overlay#1{%
  \let\tikz@signal@path=\tikz@signal@path%
  \pgfutil@ifnextchar<{\tikz@path@overlayed{#1}}{\path #1}}%
\def\tikz@path@overlayed#1<#2>{\path<#2> #1}%

\def\tikz@uninstallcommands{%
  \let\scope=\tikz@origscope%
  \let\scoped=\tikz@origscoped%
  \let\endscope=\tikz@origendscope%
  \let\startscope=\tikz@origstartscope%
  \let\stopscope=\tikz@origstopscope%
  \let\path=\tikz@origpath%
  \let\againpath=\tikz@origagainpath%
  \let\draw=\tikz@origdraw%
  \let\pattern=\tikz@origpattern%
  \let\fill=\tikz@origfill%
  \let\filldraw=\tikz@origfilldraw%
  \let\shade=\tikz@origshade%
  \let\shadedraw=\tikz@origshadedraw%
  \let\clip=\tikz@origclip%
  \let\useasboundingbox=\tikz@origuseasboundingbox%
  \let\node=\tikz@orignode%
  \let\pic=\tikz@origpic%
  \let\coordinate=\tikz@origcoordinate%
  \let\matrix=\tikz@origmatrix%
  \let\calendar=\tikz@origcalendar%
  \let\datavisualization=\tikz@origdv%
  \let\graph=\tikz@origgraph%
}%


{%
  \catcode`\;=12
  \gdef\tikz@nonactivesemicolon{;}%
  \catcode`\:=12
  \gdef\tikz@nonactivecolon{:}%
  \catcode`\|=12
  \gdef\tikz@nonactivebar{|}%
  \catcode`\!=12
  \gdef\tikz@nonactiveexlmark{!}%
  \catcode`\;=\active
  \catcode`\:=\active
  \catcode`\|=\active
  \catcode`\"=\active
  \catcode`\!=\active
  \gdef\tikz@activesemicolon{;}%
  \gdef\tikz@activecolon{:}%
  \gdef\tikz@activebar{|}%
  \gdef\tikz@activequotes{"}%
  \global\let\tikz@active@quotes@token="%
  \gdef\tikz@activeexlmark{!}%
  \gdef\tikz@deactivatthings{%
    \def;{\tikz@nonactivesemicolon}%
    \def:{\tikz@nonactivecolon}%
    \def|{\tikz@nonactivebar}%
    \def!{\tikz@nonactiveexlmark}%
  }%
}%

\let\tikz@orig@shorthands\pgfutil@empty
\def\tikz@switchoff@shorthands{%
  \ifx\tikz@orig@shorthands\pgfutil@empty%
    \edef\tikz@orig@shorthands{%
      \catcode\noexpand`\noexpand\;\the\catcode`\;\relax%
      \catcode\noexpand`\noexpand\:\the\catcode`\:\relax%
      \catcode\noexpand`\noexpand\|\the\catcode`\|\relax%
      \catcode\noexpand`\noexpand\!\the\catcode`\!\relax%
      \catcode\noexpand`\noexpand\,\the\catcode`\,\relax%
      \catcode\noexpand`\noexpand\<\the\catcode`\<\relax%
      \catcode\noexpand`\noexpand\>\the\catcode`\>\relax%
      \catcode\noexpand`\noexpand\"\the\catcode`\"\relax%
      \catcode\noexpand`\noexpand\'\the\catcode`\'\relax%
      \catcode\noexpand`\noexpand\-\the\catcode`\-\relax%
      \catcode\noexpand`\noexpand\=\the\catcode`\=\relax%
      \catcode\noexpand`\noexpand\.\the\catcode`\.\relax%
      \catcode\noexpand`\noexpand\$\the\catcode`\$\relax%
    }%
    \catcode`\;12\relax%
    \catcode`\:12\relax%
    \catcode`\|12\relax%
    \catcode`\!12\relax%
    \catcode`\,12\relax%
    \catcode`\<12\relax%
    \catcode`\>12\relax%
    \catcode`\"12\relax%
    \catcode`\'12\relax%
    \catcode`\-12\relax%
    \catcode`\=12\relax%
    \catcode`\.12\relax%
    \catcode`\$3\relax%
  \fi%
}%




\def\tikz@command@path{%
  \let\tikz@signal@path=\tikz@signal@path%
  \pgfutil@ifnextchar[{\tikz@check@earg}%
  {\pgfutil@ifnextchar<{\tikz@doopt}{\tikz@@command@path}}}%
\pgfutil@protected\def\tikz@signal@path{\tikz@signal@path}%
\def\tikz@check@earg[#1]{%
  \pgfutil@ifnextchar<{\tikz@swap@args[#1]}{\tikz@@command@path[#1]}}
\def\tikz@swap@args[#1]<#2>{\tikz@command@path<#2>[#1]}%

\def\tikz@doopt{%
  \let\tikz@next=\tikz@eargnormalsemicolon%
  \ifnum\the\catcode`\;=\active\relax%
    \let\tikz@next=\tikz@eargactivesemicolon%
  \fi%
  \tikz@next}%
\long\def\tikz@eargnormalsemicolon<#1>#2;{\alt<#1>{\tikz@@command@path#2;}{\tikz@path@do@at@end}}%
{
  \catcode`\;=\active
  \long\global\def\tikz@eargactivesemicolon<#1>#2;{\alt<#1>{\tikz@@command@path#2;}{\tikz@path@do@at@end}}%
}

\def\tikz@@command@path{%
  \edef\tikzscope@linewidth{\the\pgflinewidth}%
  \begingroup%
    \setbox\tikz@figbox=\box\pgfutil@voidb@x%
    \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
    \let\tikz@path@do@at@end=\tikz@lib@scope@check%
    \let\tikz@options=\pgfutil@empty%
    \tikz@clear@rdf@options%
    \let\tikz@mode=\pgfutil@empty%
    \let\tikz@moveto@waiting=\relax%
    \let\tikz@timer=\relax%
    \let\tikz@tangent=\relax%
    \let\tikz@collected@onpath=\pgfutil@empty%
    \let\tikz@preactions=\pgfutil@empty%
    \let\tikz@postactions=\pgfutil@empty%
    \tikz@snakedfalse%
    \tikz@decoratepathfalse%
    \tikz@node@is@a@labelfalse%
    \tikz@resetexpandcount
    \pgf@path@lastx=0pt%
    \pgf@path@lasty=0pt%
    \tikz@lastx=0pt%
    \tikz@lasty=0pt%
    \tikz@lastxsaved=0pt%
    \tikz@lastysaved=0pt%
    \tikzset{every path/.try}%
    \tikz@scan@next@command%
}%
\def\tikz@scan@next@command{%
  \ifx\tikz@collected@onpath\pgfutil@empty%
  \else%
    \tikz@invoke@collected@onpath%
  \fi%
  \afterassignment\tikz@handle\let\pgf@let@token=%
}%
\newcount\tikz@expandcount
\def\tikz@resetexpandcount{\tikz@expandcount=100\relax}
\let\tikz@collected@onpath=\pgfutil@empty%

\edef\tikz@frozen@relax@token{\ifnum0=0\fi}

\def\tikz@handle{%
  \pgfutil@switch\pgfutil@ifx\pgf@let@token{%
    {(}{\let\pgfutil@next\tikz@movetoabs}%
    {+}{\let\pgfutil@next\tikz@movetorel}%
    {-}{\let\pgfutil@next\tikz@lineto}%
    {.}{\let\pgfutil@next\tikz@dot}%
    {r}{\let\pgfutil@next\tikz@rect}%
    {n}{\let\pgfutil@next\tikz@fig}%
    {[}{\let\pgfutil@next\tikz@parse@options}%
    {c}{\let\pgfutil@next\tikz@cchar}%
    {\bgroup}{\let\pgfutil@next\tikz@beginscope}%
    {\egroup}{\let\pgfutil@next\tikz@endscope}%
    {;}{\let\pgfutil@next\tikz@finish}%
    {a}{\let\pgfutil@next\tikz@a@char}%
    {e}{\let\pgfutil@next\tikz@e@char}%
    {g}{\let\pgfutil@next\tikz@g@char}%
    {s}{\let\pgfutil@next\tikz@schar}%
    {|}{\let\pgfutil@next\tikz@vh@lineto}%
    {p}{\pgfsetmovetofirstplotpoint\let\pgfutil@next\tikz@pchar}%
    {t}{\let\pgfutil@next\tikz@to}%
    {\pgfextra}{\let\pgfutil@next\tikz@extra}%
    {\foreach}{\let\pgfutil@next\tikz@foreach}%
    {f}{\let\pgfutil@next\tikz@fchar}%
    {\pgf@stop}{\let\pgfutil@next\relax}%
    {\par}{\let\pgfutil@next\tikz@scan@next@command}%
    {d}{\let\pgfutil@next\tikz@decoration}%
    {l}{\let\pgfutil@next\tikz@l@char}%
    {:}{\let\pgfutil@next\tikz@colon@char}%
    {\relax}{\relax\let\pgfutil@next\tikz@scan@next@command}%
  }{\tikz@resetexpandcount\pgfutil@next}{\tikz@expand}%
}%

\def\tikz@l@char{%
  \pgfutil@ifnextchar e{\tikz@let@command}{%
    \pgfutil@ifnextchar i{\tikz@lsystem}{%
      \pgfutil@ifnextchar-{\tikz@@lsystem}{\tikz@expand}%
    }%
  }%
}%

\def\tikz@lsystem{%
  \tikzerror{You need to say \string\usetikzlibrary{lindenmayersystems} to draw Lindenmayer systems}
}%

\def\tikz@@lsystem{%
  \tikzerror{You need to say \string\usetikzlibrary{lindenmayersystems} to draw L-systems}
}%

\def\tikz@pchar{\pgfutil@ifnextchar l{\tikz@plot}{\pgfutil@ifnextchar i{\tikz@subpicture}{\tikz@parabola}}}%
\def\tikz@cchar{%
  \pgfutil@ifnextchar i{\tikz@circle}%
  {\pgfutil@ifnextchar h{\tikz@children}{\tikz@cochar}}}%
\def\tikz@cochar o{%
  \pgfutil@ifnextchar o{\tikz@coordinate}{\tikz@cosine}}%
\def\tikz@e@char{%
  \pgfutil@ifnextchar l{\tikz@ellipse}{\tikz@@e@char}}%
\def\tikz@a@char{%
  \pgfutil@ifnextchar r{\tikz@arcA}{\tikzerror{Arc expected}}}%
\def\tikz@@e@char dge{%
  \pgfutil@ifnextchar f{\tikz@edgetoparent}{\tikz@edge@plain}}%

\def\tikz@schar{\pgfutil@ifnextchar i{\tikz@sine}{\tikz@svg@path}}%

\def\tikz@g@char r{\pgfutil@ifnextchar i{\tikz@grid}{\tikz@graph}}%


\def\tikz@svg@path{%
  \tikzerror{You need to say \string\usetikzlibrary{svg.path} to use the svg path command}
}%


\def\tikz@finish{%
  \box\tikz@figbox@bg%
  \iftikz@decoratepath%
    \tikz@lib@dec@decorate@path%
  \fi%
  \pgfsyssoftpath@getcurrentpath\tikz@actions@path%
  \edef\tikz@restorepathsize{%
    \global\pgf@pathmaxx=\the\pgf@pathmaxx%
    \global\pgf@pathmaxy=\the\pgf@pathmaxy%
    \global\pgf@pathminx=\the\pgf@pathminx%
    \global\pgf@pathminy=\the\pgf@pathminy%
  }%
  \tikz@preactions%
  \let\tikz@path@picture=\pgfutil@empty%
  \tikz@mode@fillfalse%
  \tikz@mode@drawfalse%
  \tikz@mode@doublefalse%
  \tikz@mode@clipfalse%
  \tikz@mode@boundaryfalse%
  \tikz@mode@fade@pathfalse%
  \tikz@mode@fade@scopefalse%
  \edef\tikz@pathextend{%
    {\noexpand\pgfqpoint{\the\pgf@pathminx}{\the\pgf@pathminy}}%
    {\noexpand\pgfqpoint{\the\pgf@pathmaxx}{\the\pgf@pathmaxy}}%
  }%
  \tikz@mode%
  \iftikz@mode@fade@path%
    \tikz@addoption{%
      \iftikz@fade@adjust%
        \iftikz@mode@draw%
          \pgfsetfadingforcurrentpathstroked{\tikz@path@fading}{\tikz@do@fade@transform}%
        \else%
          \pgfsetfadingforcurrentpath{\tikz@path@fading}{\tikz@do@fade@transform}%
        \fi%
      \else%
        \pgfsetfading{\tikz@path@fading}{\tikz@do@fade@transform}%
      \fi%
      \tikz@mode@fade@pathfalse%
    }%
  \fi%
  \iftikz@mode@fade@scope%
    \iftikz@fade@adjust%
      \iftikz@mode@draw%
        \pgfsetfadingforcurrentpathstroked{\tikz@scope@fading}{\tikz@do@fade@transform}%
      \else%
        \pgfsetfadingforcurrentpath{\tikz@scope@fading}{\tikz@do@fade@transform}%
      \fi%
    \else%
      \pgfsetfading{\tikz@scope@fading}{\tikz@do@fade@transform}%
    \fi%
    \tikz@mode@fade@scopefalse%
  \fi%
  \ifx\tikz@options\pgfutil@empty%
  \else%
    \pgfsys@beginscope%
      \let\pgfscope@stroke@color=\pgf@strokecolor@global%
      \let\pgfscope@fill@color=\pgf@fillcolor@global%
      \begingroup%
        \tikz@options%
  \fi%
  \tikz@do@rdf@pre@options%
  \tikz@is@nodefalse%
  \tikz@call@id@hook%
  \iftikz@mode@clip\else%
    \pgfidscope%
      \tikz@do@rdf@post@options%
      \begingroup%
  \fi%
  \iftikz@mode@fill%
    \iftikz@mode@shade%
      \pgfsyssoftpath@getcurrentpath\tikz@temppath
      \pgfprocessround{\tikz@temppath}{\tikz@temppath}%
      \pgfsyssoftpath@setcurrentpath\tikz@temppath%
      \pgfsyssoftpath@invokecurrentpath%
      \pgfpushtype%
      \pgfusetype{.path fill}%
      \pgfsys@fill%
      \pgfpoptype%
      \tikz@mode@fillfalse%
    \else%
      \ifx\tikz@path@picture\pgfutil@empty%
      \else%
        \pgfsyssoftpath@getcurrentpath\tikz@temppath
        \pgfprocessround{\tikz@temppath}{\tikz@temppath}%
        \pgfsyssoftpath@setcurrentpath\tikz@temppath%
        \pgfsyssoftpath@invokecurrentpath%
        \pgfpushtype%
        \pgfusetype{.path fill}%
        \pgfsys@fill%
        \pgfpoptype%
        \tikz@mode@fillfalse%
      \fi%
    \fi%
  \fi%
  \iftikz@mode@shade%
    \pgfsyssoftpath@getcurrentpath\tikz@temppath
    \pgfprocessround{\tikz@temppath}{\tikz@temppath}%
    \pgfsyssoftpath@setcurrentpath\tikz@temppath%
    \pgfpushtype%
    \pgfusetype{.path shade}%
    \pgfshadepath{\tikz@shading}{\tikz@shade@angle}%
    \pgfpoptype%
    \tikz@mode@shadefalse%
  \fi%
  \ifx\tikz@path@picture\pgfutil@empty%
  \else%
    \begingroup%
      \pgfusetype{.path picture}%
      \pgfidscope%
      \pgfsys@beginscope%
        \let\tikz@id@name\pgfutil@empty%
        \pgfclearid%
        \pgfsyssoftpath@getcurrentpath\tikz@temppath
        \pgfprocessround{\tikz@temppath}{\tikz@temppath}%
        \pgfsyssoftpath@setcurrentpath\tikz@temppath%
        \pgfsyssoftpath@invokecurrentpath%
        \pgfsys@clipnext%
        \pgfsys@discardpath%
        \pgf@relevantforpicturesizefalse%
        \expandafter\def\csname pgf@sh@ns@path picture bounding box\endcsname{rectangle}
        \expandafter\edef\csname pgf@sh@np@path picture bounding box\endcsname{%
          \def\noexpand\southwest{\noexpand\pgfqpoint{\the\pgf@pathminx}{\the\pgf@pathminy}}%
          \def\noexpand\northeast{\noexpand\pgfqpoint{\the\pgf@pathmaxx}{\the\pgf@pathmaxy}}%
        }
        \expandafter\def\csname pgf@sh@nt@path picture bounding box\endcsname{{1}{0}{0}{1}{0pt}{0pt}}
        \expandafter\def\csname pgf@sh@pi@path picture bounding box\endcsname{\pgfpictureid}
        \pgfinterruptpath%
          \tikz@path@picture%
        \endpgfinterruptpath%
      \pgfsys@endscope%
      \endpgfidscope%
    \endgroup%
    \let\tikz@path@picture=\pgfutil@empty%
  \fi%
  \iftikz@mode@draw%
    \iftikz@mode@double%
      \begingroup%
        \pgfsys@beginscope%
          \tikz@double@setup%
    \fi%
  \fi%
  \pgfpushtype%
  \edef\tikz@temp{\noexpand\pgfusepath{%
    \iftikz@mode@fill fill,\fi%
    \iftikz@mode@draw draw,\fi%
    \iftikz@mode@clip clip\fi%
    }}%
  \pgfusetype{.path}%
  \tikz@temp%
  \pgfpoptype%
  \tikz@mode@fillfalse%
  \iftikz@mode@draw%
    \iftikz@mode@double%
        \pgfsys@endscope%
      \endgroup%
    \fi%
  \fi%
  \tikz@mode@drawfalse%
  \tikz@postactions%
  \box\tikz@figbox%
  \iftikz@mode@clip\else\endgroup\endpgfidscope\fi%
  \ifx\tikz@options\pgfutil@empty%
  \else%
      \endgroup%
      \global\let\pgf@strokecolor@global=\pgfscope@stroke@color%
      \global\let\pgf@fillcolor@global=\pgfscope@fill@color%
    \pgfsys@endscope%
    \iftikz@mode@clip%
      \tikzerror{Extra options not allowed for clipping path command.}%
    \fi%
  \fi%
  \iftikz@mode@clip%
    \aftergroup\pgf@relevantforpicturesizefalse%
  \fi%
  \iftikz@mode@boundary%
    \aftergroup\pgf@relevantforpicturesizefalse%
  \fi%
  \endgroup%
  \global\pgflinewidth=\tikzscope@linewidth%
  \tikz@path@do@at@end%
}%
\let\tikz@lib@scope@check\pgfutil@empty%
\def\tikz@path@do@at@end{\tikz@lib@scope@check}%
\def\tikz@@pathtext{@path}%

\def\pgf@outer@auto@adjust@hook{%
  {%
    \tikz@mode@drawfalse%
    \tikz@mode%
    \expandafter%
  }%
  \iftikz@mode@draw\else%
    \pgfkeyslet{/pgf/outer xsep}\pgf@zero@text
    \pgfkeyslet{/pgf/outer ysep}\pgf@zero@text
  \fi%
}%


\def\tikz@extra@preaction#1{%
  {%
    \pgfsys@beginscope%
      \setbox\tikz@figbox=\box\pgfutil@voidb@x%
      \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
      \path[#1];%
      \pgfsyssoftpath@setcurrentpath\tikz@actions@path%
      \tikz@restorepathsize%
    \pgfsys@endscope%
  }%
}%

\def\tikz@extra@postaction#1{%
  {%
    \pgfsys@beginscope%
      \setbox\tikz@figbox=\box\pgfutil@voidb@x%
      \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
      \tikz@restorepathsize%
      \path[#1]\pgfextra{\pgfsyssoftpath@setcurrentpath\tikz@actions@path};%
      \pgf@resetpathsizes%
    \pgfsys@endscope%
  }%
}%



\def\tikz@skip#1{\tikz@scan@next@command#1}%
\def\tikz@expand{%
  \advance\tikz@expandcount by -1
  \ifnum\tikz@expandcount<0\relax%
    \expandafter\pgfutil@firstoftwo
  \else
    \expandafter\pgfutil@secondoftwo
  \fi
  {%
    \tikzerror{Giving up on this path. Did you forget a semicolon?}%
    \global\let\tikz@expand@last@token=\pgf@let@token
    \tikz@finish%
    \expandafter\let\expandafter\tikz@expand@last@token@\csname tikz@expand@last@token\endcsname
    \global\let\tikz@expand@last@token=\relax
    \tikz@expand@last@token@
  }{%
    \tikz@@expand
  }%
}

\def\tikz@@expand{%
  \expandafter\tikz@scan@next@command\pgf@let@token}%




\newif\iftikz@auto@end@path

\def\tikz@beginscope{\begingroup\tikz@auto@end@pathfalse\tikz@scan@next@command}%
\def\tikz@endscope{%
  \iftikz@auto@end@path\expandafter\tikz@finish\expandafter\egroup\else\expandafter\tikz@@endscope\fi%
}%
\def\tikz@@endscope{%
    \global\setbox\tikz@tempbox=\box\tikz@figbox%
    \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
    \global\let\tikz@tangent@temp\tikz@tangent%
    \edef\tikz@marshal{%
      \tikz@lastx=\the\tikz@lastx%
      \tikz@lasty=\the\tikz@lasty%
      \iftikz@current@point@local%
      \else%
        \tikz@lastxsaved=\the\tikz@lastxsaved%
        \tikz@lastysaved=\the\tikz@lastysaved%
        \ifx\tikz@moveto@waiting\relax%
          \let\tikz@moveto@waiting\relax%
        \else%
          \def\noexpand\tikz@moveto@waiting{\tikz@moveto@waiting}%
        \fi%
        \iftikz@shapeborder%
          \noexpand\tikz@shapebordertrue%
          \def\noexpand\tikz@shapeborder@name{\tikz@shapeborder@name}%
        \else%
          \noexpand\tikz@shapeborderfalse%
        \fi%
      \fi%
    }%
    \expandafter%
  \endgroup\tikz@marshal%
  \setbox\tikz@figbox=\box\tikz@tempbox%
  \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
  \let\tikz@tangent\tikz@tangent@temp%
  \tikz@scan@next@command}%



\def\tikz@extra{\pgfutil@ifnextchar\bgroup\tikz@@extra\relax}%
\long\def\tikz@@extra#1{#1\tikz@scan@next@command}%
\let\endpgfextra=\tikz@scan@next@command

\def\pgfextra{pgfextra}%



\def\tikz@fchar oreach{\tikz@foreach}%

\def\tikz@foreach{%
  \def\pgffor@beginhook{%
    \tikz@lastx=\tikz@foreach@save@lastx%
    \tikz@lasty=\tikz@foreach@save@lasty%
    \tikz@lastxsaved=\tikz@foreach@save@lastxsaved%
    \tikz@lastysaved=\tikz@foreach@save@lastysaved%
    \setbox\tikz@figbox=\box\tikz@tempbox%
    \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
    \expandafter\tikz@scan@next@command\pgfutil@firstofone}%
  \def\pgffor@endhook{\pgfextra{%
      \xdef\tikz@foreach@save@lastx{\the\tikz@lastx}%
      \xdef\tikz@foreach@save@lasty{\the\tikz@lasty}%
      \xdef\tikz@foreach@save@lastxsaved{\the\tikz@lastxsaved}%
      \xdef\tikz@foreach@save@lastysaved{\the\tikz@lastysaved}%
      \global\setbox\tikz@tempbox=\box\tikz@figbox%
      \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
      \pgfutil@gobble}}%
  \def\pgffor@afterhook{%
    \tikz@lastx=\tikz@foreach@save@lastx%
    \tikz@lasty=\tikz@foreach@save@lasty%
    \tikz@lastxsaved=\tikz@foreach@save@lastxsaved%
    \tikz@lastysaved=\tikz@foreach@save@lastysaved%
    \let\pgffor@beginhook\relax%
    \let\pgffor@endhook\relax%
    \let\pgffor@afterhook\relax%
    \setbox\tikz@figbox=\box\tikz@tempbox%
    \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
    \tikz@scan@next@command}%
  \global\setbox\tikz@tempbox=\box\tikz@figbox%
  \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  \xdef\tikz@foreach@save@lastx{\the\tikz@lastx}%
  \xdef\tikz@foreach@save@lasty{\the\tikz@lasty}%
  \xdef\tikz@foreach@save@lastxsaved{\the\tikz@lastxsaved}%
  \xdef\tikz@foreach@save@lastysaved{\the\tikz@lastysaved}%
  \foreach}%



\def\tikz@command@againpath#1{%
  \pgfextra{%
    \pgfsyssoftpath@getcurrentpath\tikz@temp%
    \expandafter\pgfutil@g@addto@macro\expandafter\tikz@temp\expandafter{#1}%
    \pgfsyssoftpath@setcurrentpath\tikz@temp%
  }%
}%



\def\tikz@colon@char#1=#2{%
  \tikz@scan@next@command{[animate={myself:{#1}={#2}}]}%
}%




\newif\iftikz@shapeborder


\def\tikz@movetoabs{\tikz@moveto(}%
\def\tikz@movetorel{\tikz@moveto+}%
\def\tikz@moveto{%
  \tikz@scan@one@point{\tikz@@moveto}}%
\def\tikz@@moveto#1{%
    \tikz@make@last@position{#1}%
  \iftikz@shapeborder%
    \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
  \else%
    \tikz@@movetosave{\tikz@last@position}%
    \let\tikz@moveto@waiting=\relax%
  \fi%
  \tikz@scan@next@command%
}%

\def\tikz@@movetosave#1{%
  {\pgftransformreset
    \pgf@process{#1}%
    \xdef\tikz@marshal{%
      \tikz@lastmovetox=\the\pgf@x\relax%
      \tikz@lastmovetoy=\the\pgf@y\relax%
    }%
  }%
  \tikz@marshal
  \pgfpathmoveto{#1}%
}%

  
\let\tikz@moveto@waiting=\relax %

\def\tikz@flush@moveto{%
  \ifx\tikz@moveto@waiting\relax%
  \else%
    \tikz@@movetosave{\tikz@last@position}%
  \fi%
  \let\tikz@moveto@waiting=\relax%
}%


\def\tikz@flush@moveto@toward#1#2#3{%
  \ifx\tikz@moveto@waiting\relax%
  \else%
    \pgf@process{\pgfpointshapeborder{\tikz@moveto@waiting}{#1}}%
    #2=\pgf@x%
    #3=\pgf@y%
    \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
    \tikz@@movetosave{\pgfqpoint{\pgf@x}{\pgf@y}}%
  \fi%
  \let\tikz@moveto@waiting=\relax%
}%



\def\tikz@collect@coordinate@onpath#1c{%
  \pgfutil@ifnextchar y{\tikz@cycle@expander@add#1}{\tikz@collect@coordinate@onpath@{#1}}}%
\def\tikz@collect@coordinate@onpath@#1oordinate{%
  \pgfutil@ifnextchar[{\tikz@@collect@coordinate@opt#1}{\tikz@@collect@coordinate@opt#1[]}}%
\def\tikz@@collect@coordinate@opt#1[#2]{%
  \pgfutil@ifnextchar({\tikz@@collect@coordinate#1[#2]}{%
  \tikz@collect@label@onpath#1node[shape=coordinate,#2]{}}}%
\def\tikz@@collect@coordinate#1[#2](#3){%
  \tikz@collect@label@onpath#1node[shape=coordinate,#2](#3){}}%

\newif\iftikz@collect@pic

\def\tikz@collect@label@onpath#1node{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath node}%
  \let\tikz@collect@cont#1%
  \tikz@collect@picfalse%
  \tikz@collect@label@scan}%

\def\tikz@collect@pic@onpath#1pic{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath pic}%
  \let\tikz@collect@cont#1
  \tikz@collect@pictrue%
  \tikz@collect@label@scan}%

\def\tikz@collect@label@scan{%
  \pgfutil@ifnextchar f{\tikz@collect@nodes}{%
    \pgfutil@ifnextchar({\tikz@collect@paran}%
    {\pgfutil@ifnextchar[{\tikz@collect@options}%
      {\pgfutil@ifnextchar:{\tikz@collect@animation}%
        {\pgfutil@ifnextchar\bgroup{\tikz@collect@arg}%
          {\tikz@collect@cont}}}}}%
}%

\def\tikz@collect@nodes foreach#1in{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath foreach#1in}%
  \pgfutil@ifnextchar\bgroup\tikz@collect@nodes@group\tikz@collect@nodes@one%
}%
\def\tikz@collect@nodes@one#1{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath #1}%
  \tikz@collect@label@scan%
}%
\def\tikz@collect@nodes@group#1{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{#1}}%
  \tikz@collect@label@scan%
}%

\def\tikz@collect@animation#1=#2{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath#1={#2}}%
  \tikz@collect@label@scan%
}%
\def\tikz@collect@paran#1){%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath#1)}%
  \tikz@collect@label@scan%
}%
\def\tikz@collect@options#1]{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath#1]}%
  \tikz@collect@label@scan%
}%
\def\tikz@collect@arg#1{%
  \iftikz@handle@active@nodes%
    \iftikz@collect@pic%
      \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{#1}}%
    \else%
      \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{\scantokens{#1}}}%
    \fi%
  \else%
    \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{#1}}%
  \fi%
  \tikz@collect@cont%
}%

\def\tikz@invoke@collected@onpath{%
  \tikz@node@is@a@labeltrue%
  \let\tikz@temp=\tikz@collected@onpath%
  \let\tikz@collected@onpath=\pgfutil@empty%
  \expandafter\tikz@scan@next@command\tikz@temp\pgf@stop%
  \tikz@node@is@a@labelfalse%
}%



\def\tikz@cycle@expander#1{\pgfutil@ifnextchar c{\tikz@cycle@expander@{#1}}{#1}}%
\def\tikz@cycle@expander@#1c{\pgfutil@ifnextchar y{\tikz@cycle@expander@add{#1}}{#1c}}%
\def\tikz@cycle@expander@add#1ycle{#1(current subpath start)--cycle}%





\def\tikz@lineto{%
  \pgfutil@ifnextchar |%
  {\expandafter\tikz@hv@lineto\pgfutil@gobble}%
  {\expandafter\pgfutil@ifnextchar\tikz@activebar{\expandafter\tikz@hv@lineto\pgfutil@gobble}%
    {\expandafter\tikz@lineto@mid\pgfutil@gobble}}}%
\def\tikz@lineto@mid{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@lineto@mid}%
  {%
    \pgfutil@ifnextchar c{\tikz@close}{%
      \pgfutil@ifnextchar p{\tikz@lineto@plot@or@pic}{\tikz@scan@one@point{\tikz@@lineto}}}}}%
\def\tikz@lineto@plot@or@pic p{%
  \pgfutil@ifnextchar i{\tikz@collect@pic@onpath\tikz@lineto@mid p}{%
    \pgfsetlinetofirstplotpoint\tikz@plot}%
}%
\def\tikz@@lineto#1{%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}
  \iftikz@shapeborder%
    \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\tikz@last@position}}%
    \tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
    \tikz@flush@moveto@toward{\tikz@last@position}\pgf@x\pgf@y%
    \tikz@path@lineto{\tikz@last@position}%
    \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
    \tikz@make@last@position{#1}%
    \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
  \else%
    \tikz@make@last@position{#1}%
    \tikz@flush@moveto@toward{\tikz@last@position}\pgf@x\pgf@y%
    \tikz@path@lineto{\tikz@last@position}%
    \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \fi%
  \let\tikz@timer=\tikz@timer@line%
  \let\tikz@tangent\tikz@timer@start%
  \tikz@scan@next@command%
}%

\def\tikz@path@lineto#1{%
  \iftikz@snaked%
    {
      \pgfsyssoftpathmovetorelevantfalse%
      \pgfpathsnakesto{\tikz@presnake,{\tikz@snake}{\tikz@mainsnakelength}{\noexpand\tikz@snake@install@trans}{},\tikz@postsnake}{#1}%
    }
  \else%
    \pgfpathlineto{#1}%
  \fi%
}%

\def\tikz@path@close#1{%
  \iftikz@snaked%
    {%
      \pgftransformreset%
      \pgfpathsnakesto{\tikz@presnake,{\tikz@snake}{\tikz@mainsnakelength}{\noexpand\tikz@snake@install@trans}{},\tikz@postsnake}{#1}%
    }%
  \fi%
  \pgfpathclose%
}%



\def\tikz@hv@lineto{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@hv@lineto}{%
  \pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@hv@lineto}%
  {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@hv@lineto}%
    {\tikz@scan@one@point{\tikz@@hv@lineto}}}}}%
\def\tikz@@hv@lineto#1{%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \pgf@yc=\tikz@lasty%
  \tikz@make@last@position{#1}%
  \edef\tikz@tangent{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\pgf@yc}}%
  \tikz@flush@moveto@toward{\pgfqpoint{\tikz@lastx}{\pgf@yc}}\pgf@x\pgf@yc%
  \iftikz@shapeborder%
    {%
      \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\tikz@lastx}{\pgf@yc}}}%
      \tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
      \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@yc}}%
      \tikz@path@lineto{\tikz@last@position}%
      \xdef\tikz@timer@end@temp{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
    }%
    \let\tikz@timer@end=\tikz@timer@end@temp%
    \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
  \else%
    \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@yc}}%
    \tikz@path@lineto{\tikz@last@position}%
    \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \fi%
  \let\tikz@timer=\tikz@timer@hvline%
  \tikz@scan@next@command%
}%


\def\tikz@vh@lineto-{\tikz@vh@lineto@next}%
\def\tikz@vh@lineto@next{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@vh@lineto@next}{%
  \pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@vh@lineto@next}%
  {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@vh@lineto@next}%
    {\tikz@scan@one@point\tikz@@vh@lineto}}}}%
\def\tikz@@vh@lineto#1{%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \pgf@xc=\tikz@lastx%
  \tikz@make@last@position{#1}%
  \edef\tikz@tangent{\noexpand\pgfqpoint{\the\pgf@xc}{\the\tikz@lasty}}%
  \tikz@flush@moveto@toward{\pgfqpoint{\pgf@xc}{\tikz@lasty}}\pgf@xc\pgf@y%
  \iftikz@shapeborder%
    {%
      \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\pgf@xc}{\tikz@lasty}}}%
      \tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
      \tikz@path@lineto{\pgfqpoint{\pgf@xc}{\tikz@lasty}}%
      \tikz@path@lineto{\tikz@last@position}%
      \xdef\tikz@timer@end@temp{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
    }%
    \let\tikz@timer@end=\tikz@timer@end@temp%
    \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
  \else%
    \tikz@path@lineto{\pgfqpoint{\pgf@xc}{\tikz@lasty}}%
    \tikz@path@lineto{\tikz@last@position}%
    \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \fi%
  \let\tikz@timer=\tikz@timer@vhline%
  \tikz@scan@next@command%
}%

\def\tikz@close c{%
  \pgfutil@ifnextchar o{\tikz@collect@coordinate@onpath\tikz@lineto@mid c}%
  {\tikz@@close c}}%
\def\tikz@@close cycle{%
  \tikz@flush@moveto%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}
  \tikz@make@last@position{\expandafter\pgfpoint\pgfsyssoftpath@lastmoveto}%
  \tikz@path@close{\expandafter\pgfpoint\pgfsyssoftpath@lastmoveto}%
  \def\pgfstrokehook{}%
  \edef\tikz@timer@end{%
      \noexpand\pgfqpoint{\the\tikz@lastmovetox}{\the\tikz@lastmovetoy}}%
  \let\tikz@timer=\tikz@timer@line%
  \let\tikz@tangent\tikz@timer@start%
  \tikz@scan@next@command%
}%


\def\tikz@parse@options#1]{%
  \tikzset{#1}%
  \tikz@scan@next@command%
}%

\def\tikz@edge@plain{%
  \begingroup%
    \ifx\tikz@to@use@whom\pgfutil@undefined\else\tikz@to@use@whom\fi
    \let\tikz@to@or@edge@function=\tikz@do@edge%
    \let\tikz@@to@local@options\pgfutil@empty%
    \let\tikz@collected@onpath=\pgfutil@empty%
    \tikz@to@or@edge}%

\def\tikz@to o{%
  \tikz@to@use@last@coordinate%
  \let\tikz@to@or@edge@function=\tikz@do@to%
  \let\tikz@@to@local@options\pgfutil@empty%
  \let\tikz@collected@onpath=\pgfutil@empty%
  \tikz@to@or@edge}%

\def\tikz@to@or@edge{%
  \pgfutil@ifnextchar[{\tikz@to@or@edge@option}{%
    \pgfutil@ifnextchar:{\tikz@to@or@edge@animation}{%
      \tikz@@to@collect}}%
}%
\def\tikz@to@or@edge@option[#1]{%
  \expandafter\def\expandafter\tikz@@to@local@options\expandafter{\tikz@@to@local@options,#1}%
  \tikz@to@or@edge%
}%
\def\tikz@to@or@edge@animation:#1=#2{%
  \expandafter\def\expandafter\tikz@@to@local@options\expandafter{\tikz@@to@local@options,%
    animate={myself:{#1}={#2}}}%
  \tikz@to@or@edge%
}%
\def\tikz@@to@collect{%
  \pgfutil@ifnextchar(\tikz@@to@or@edge@coordinate%
  {\pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@@to@collect}%
    {\pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@@to@collect}%
      {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@@to@collect}%
        {\pgfutil@ifnextchar +{\tikz@scan@one@point\tikz@@to@or@edge@math}%
          {\tikzerror{(, +, coordinate, pic, or node expected}%
            \tikz@@to@or@edge@coordinate()}}}}}%
}%

\def\tikz@@to@or@edge@coordinate({%
  \pgfutil@ifnextchar${%
    \tikz@scan@one@point\tikz@@to@or@edge@math(%
  }{%
    \pgfutil@ifnextchar[{%
      \tikz@scan@one@point\tikz@@to@or@edge@math(%
    }{%
      \tikz@@to@or@edge@@coordinate(%
    }%
  }%
}%
\def\tikz@@to@or@edge@math#1{%
  \pgf@process{#1}%
  \iftikz@updatecurrent\else
    \tikz@updatenextfalse
  \fi
  \edef\tikztotarget{\the\pgf@x,\the\pgf@y}%
  \tikz@to@or@edge@function%
}%

\def\tikz@@to@or@edge@@coordinate(#1){%
  \def\tikztotarget{#1}%
  \tikz@to@or@edge@function%
}%

\def\tikz@do@edge{%
  \ifx\tikz@edge@macro\pgfutil@empty%
    \setbox\tikz@whichbox=\hbox\bgroup%
      \unhbox\tikz@whichbox%
      \hbox\bgroup
        \bgroup%
          \pgfinterruptpath%
            \pgfscope%
              \let\tikz@transform=\pgfutil@empty%
              \let\tikz@options=\pgfutil@empty%
              \tikz@clear@rdf@options%
              \let\tikz@tonodes=\tikz@collected@onpath%
              \def\tikztonodes{{\pgfextra{\tikz@node@is@a@labeltrue}\tikz@tonodes}}%
              \let\tikz@collected@onpath=\pgfutil@empty%
              \tikz@options%
              \tikz@do@rdf@pre@options%
              \pgfidscope%
              \tikz@do@rdf@post@options%
              \tikz@transform%
              \let\tikz@transform=\relax%
              \let\tikz@after@path\pgfutil@empty%
              \tikz@atbegin@to%
                \tikz@enable@edge@quotes%
                \path[style=every edge]\expandafter[\tikz@@to@local@options](\tikztostart)\tikz@to@path
                \pgfextra{\global\let\tikz@after@path@smuggle=\tikz@after@path};%
              \tikz@atend@to%
              \endpgfidscope%
            \endpgfscope%
          \endpgfinterruptpath%
        \egroup
      \egroup%
    \egroup%
    \global\setbox\tikz@tempbox=\box\tikz@whichbox%
    \expandafter\endgroup%
    \expandafter\setbox\tikz@whichbox=\box\tikz@tempbox%
  \else%
      \expandafter\expandafter\expandafter\tikz@edge@macro%
      \expandafter\expandafter\expandafter{\expandafter\tikz@@to@local@options\expandafter}\expandafter{\tikz@collected@onpath}%
    \endgroup%
    \let\tikz@after@path@smuggle=\pgfutil@empty%
  \fi%
  \expandafter\tikz@scan@next@command\tikz@after@path@smuggle%
}%

\def\tikz@do@to{%
  \let\tikz@tonodes=\tikz@collected@onpath%
  \def\tikztonodes{{\pgfextra{\tikz@node@is@a@labeltrue}\tikz@tonodes}}%
  \let\tikz@collected@onpath=\pgfutil@empty%
  \tikz@scan@next@command%
  {%
    \pgfextra{\let\tikz@after@path\pgfutil@empty}%
    \pgfextra{\tikz@atbegin@to}%
    \pgfextra{\tikz@enable@edge@quotes}%
    [style=every to]\expandafter[\tikz@@to@local@options]\tikz@to@path%
    \pgfextra{\tikz@atend@to}%
    \pgf@stop%
    \expandafter\tikz@scan@next@command\expandafter%
  }\tikz@after@path%
  \pgfextra{\tikz@updatenexttrue\tikz@updatecurrenttrue}%
}%


\def\tikz@to@use@last@coordinate{%
  \iftikz@shapeborder%
    \edef\tikztostart{\tikz@shapeborder@name}%
  \else%
    \edef\tikztostart{\the\tikz@lastx,\the\tikz@lasty}%
  \fi%
}%
\def\tikz@to@use@last@fig@name{%
  \edef\tikztostart{\tikz@to@last@fig@name}%
}%




\def\tikz@graph aph{\tikz@lib@graph@parser}%

\def\tikz@lib@graph@parser{\pgfutil@ifnextchar[\tikz@graph@error{\tikz@graph@error[]}}%
\def\tikz@graph@error[#1]#2{%
  \tikzerror{You need to say \string\usetikzlibrary{graphs} in order to use the graph syntax}%
  \tikz@lib@graph@parser@done%
}%

\def\tikz@lib@graph@parser@done{%
  \tikz@scan@next@command%
}%




\def\tikz@edgetoparent from parent{\pgfutil@ifnextchar[\tikz@@edgetoparent{\tikz@@edgetoparent[]}}%
\def\tikz@@edgetoparent[#1]{%
  \let\tikz@edge@to@parent@needed=\pgfutil@empty%
  \def\tikz@edgetoparent@options{#1}%
  \begingroup%
    \let\tikz@collected@onpath=\pgfutil@empty%
    \tikz@edgetoparentcollect%
}%
\def\tikz@edgetoparentcollect{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@edgetoparentcollect}%
  {%
      \expandafter%
    \endgroup%
    \expandafter\tikz@edgetoparent@rollout\expandafter{\tikz@collected@onpath}%
  }%
}%

\def\tikz@edgetoparent@rollout#1{%
  \pgfkeysgetvalue{/tikz/edge from parent macro}\tikz@etop@temp
  \expandafter\tikz@scan@next@command\expandafter\tikz@etop@temp\expandafter{\tikz@edgetoparent@options}{#1}%
}%



\def\tikz@dot.{\tikz@@dot}%
\def\tikz@@dot{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@@dot}{%
  \pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@@dot}%
  {\pgfutil@ifnextchar c{\tikz@curveto@double}{\tikz@curveto@auto}}}%
}%

\def\tikz@curveto@double co{%
  \pgfutil@ifnextchar o{\tikz@collect@coordinate@onpath\tikz@@dot co}
  {\tikz@cureveto@@double}}%
\def\tikz@cureveto@@double ntrols#1{%
  \tikz@scan@one@point\tikz@curveA#1%
}%
\def\tikz@curveA#1{%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  {%
    \tikz@lastxsaved=\tikz@lastx%
    \tikz@lastysaved=\tikz@lasty%
    \tikz@make@last@position{#1}%
    \xdef\tikz@curve@first{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  }%
  \pgfutil@ifnextchar a
  {\tikz@curveBand}%
  {\let\tikz@curve@second\tikz@curve@first\tikz@curveCdots}%
}%
\def\tikz@curveBand and{%
  \tikz@scan@one@point\tikz@curveB%
}%
\def\tikz@curveB#1{%
  \def\tikz@curve@second{#1}%
  \tikz@curveCdots}
\def\tikz@curveCdots{%
  \afterassignment\tikz@curveCdot\let\pgfutil@next=}%
\def\tikz@curveCdot.{%
  \ifx\pgfutil@next.%
  \else%
    \tikzerror{Dot expected}%
  \fi%
  \iftikz@updatenext
    \tikz@updatecurrenttrue%
  \fi
  \tikz@curveCcheck%
}%
\def\tikz@curveCcheck{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@curveCcheck}{%
  \pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@curveCcheck}%
  {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@curveCcheck}
    {\tikz@scan@one@point\tikz@curveC}}}%
}%
\def\tikz@curveC#1{%
  \tikz@make@last@position{#1}%
  \edef\tikz@curve@third{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  {%
    \tikz@lastxsaved=\tikz@lastx%
    \tikz@lastysaved=\tikz@lasty%
    \tikz@make@last@position{\tikz@curve@second}%
    \xdef\tikz@curve@second{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  }%
  \ifx\tikz@moveto@waiting\relax%
  \else%
    \pgf@process{\pgfpointshapeborder{\tikz@moveto@waiting}{\tikz@curve@first}}%
    \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \tikz@@movetosave{\pgfqpoint{\pgf@x}{\pgf@y}}%
  \fi%
  \let\tikz@timer@cont@one=\tikz@curve@first%
  \let\tikz@timer@cont@two=\tikz@curve@second%
  \iftikz@shapeborder%
    {%
      \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\tikz@curve@second}}%
      \tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
      \edef\tikz@curve@third{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
      \pgfpathcurveto{\tikz@curve@first}{\tikz@curve@second}{\tikz@curve@third}%
      \global\let\tikz@timer@end@temp=\tikz@curve@third%
    }%
    \let\tikz@timer@end=\tikz@timer@end@temp%
    \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
  \else%
    \pgfpathcurveto{\tikz@curve@first}{\tikz@curve@second}{\tikz@curve@third}%
    \let\tikz@timer@end=\tikz@curve@third
    \let\tikz@moveto@waiting=\relax%
  \fi%
  \let\tikz@timer=\tikz@timer@curve%
  \let\tikz@tangent=\tikz@curve@second%
  \tikz@scan@next@command%
}%


\def\tikz@rect ectangle{%
  \tikz@flush@moveto%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \tikz@@rect}%
\def\tikz@@rect{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@@rect}{%
  \pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@@rect}%
  {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@@rect}%
    {
      \pgf@xa=\tikz@lastx\relax%
      \pgf@ya=\tikz@lasty\relax%
      \tikz@scan@one@point\tikz@rectB}}}}%
\def\tikz@rectB#1{%
  \tikz@make@last@position{#1}%
  \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \let\tikz@timer=\tikz@timer@line%
          \tikz@@movetosave{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \tikz@path@lineto{\pgfqpoint{\pgf@xa}{\tikz@lasty}}%
  \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
  \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@ya}}%
  \iftikz@snaked%
    \tikz@path@lineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \fi%
  \pgfpathclose%
          \tikz@@movetosave{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
  \def\pgfstrokehook{}%
  \let\tikz@tangent\relax%
  \tikz@scan@next@command%
}%



\def\tikz@grid id{%
  \tikz@flush@moveto%
  \pgf@xa=\tikz@lastx\relax%
  \pgf@ya=\tikz@lasty\relax%
  \pgfutil@ifnextchar[{\tikz@gridA}{\tikz@gridA[]}}%
\def\tikz@gridA[#1]{%
  \def\tikz@grid@options{#1}%
  \tikz@cycle@expander{\tikz@scan@one@point\tikz@gridB}}%
\def\tikz@gridB#1{%
  \tikz@make@last@position{#1}%
  \let\tikz@tangent\relax%
  {%
    \let\tikz@after@path\pgfutil@empty%
    \expandafter\tikzset\expandafter{\tikz@grid@options}
    \tikz@checkunit{\tikz@grid@x}%
    \iftikz@isdimension%
      \pgf@process{\pgfpoint{\tikz@grid@x}{0pt}}%
    \else%
      \pgf@process{\pgfpointxy{\tikz@grid@x}{0}}%
    \fi%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \tikz@checkunit{\tikz@grid@y}%
    \iftikz@isdimension%
      \pgf@process{\pgfpoint{0pt}{\tikz@grid@y}}%
    \else%
      \pgf@process{\pgfpointxy{0}{\tikz@grid@y}}%
    \fi%
    \advance\pgf@xb by\pgf@x%
    \advance\pgf@yb by\pgf@y%
    \pgfpathgrid[stepx=\pgf@xb,stepy=\pgf@yb]%
      {\pgfqpoint{\pgf@xa}{\pgf@ya}}{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
  \expandafter}%
  \expandafter\tikz@scan@next@command\tikz@after@path%
}%



\def\tikz@plot lot{%
  \tikz@flush@moveto%
  \pgfutil@ifnextchar[{\tikz@@plot}{\tikz@@plot[]}}%
\def\tikz@@plot[#1]{%
  \let\tikz@tangent\tikz@tangent@lookup%
  \begingroup%
    \let\tikz@after@path\pgfutil@empty%
    \let\tikz@options=\pgfutil@empty%
    \tikzset{every plot/.try}%
    \tikzset{#1}%
    \pgfutil@ifnextchar f{\tikz@plot@f}%
    {\pgfutil@ifnextchar c{\tikz@plot@scan@points}%
      {\pgfutil@ifnextchar ({\tikz@plot@expression}{%
      \tikzerror{Cannot parse this plotting data}%
       \endgroup}}}}%
\def\tikz@plot@f f{\pgfutil@ifnextchar i{\tikz@plot@file}{\tikz@plot@function}}%

\def\tikz@plot@file ile#1{\def\tikz@plot@data{\pgfplotxyfile{#1}}\tikz@@@plot}%
\def\tikz@plot@scan@points coordinates#1{%
  \pgfplothandlerrecord\tikz@plot@data%
  \pgfplotstreamstart%
  \pgfutil@ifnextchar\pgf@stop{\pgfplotstreamend\expandafter\tikz@@@plot\pgfutil@gobble}
  {\tikz@scan@one@point\tikz@plot@next@point}%
  #1\pgf@stop%
}%
\def\tikz@plot@next@point#1{%
  \pgfplotstreampoint{#1}%
  \pgfutil@ifnextchar\pgf@stop{\pgfplotstreamend\expandafter\tikz@@@plot\pgfutil@gobble}%
  {\tikz@scan@one@point\tikz@plot@next@point}%
}%
\def\tikz@plot@function unction#1{%
  \def\tikz@plot@filename{\tikz@plot@prefix\tikz@plot@id}%
  \iftikz@plot@raw@gnuplot%
    \def\tikz@plot@data{\pgfplotgnuplot[\tikz@plot@filename]{#1}}%
  \else%
    \iftikz@plot@parametric%
      \def\tikz@plot@data{\pgfplotgnuplot[\tikz@plot@filename]{%
          set samples \tikz@plot@samples;
          set parametric;
          plot [t=\tikz@plot@domain]
          [\tikz@plot@xrange]
          [\tikz@plot@range]
          #1}}%
    \else%
      \def\tikz@plot@data{\pgfplotgnuplot[\tikz@plot@filename]{%
          set samples \tikz@plot@samples;
          plot [x=\tikz@plot@domain]
          \ifx\tikz@plot@range\pgfutil@empty\else[\tikz@plot@range]\fi
          #1}}%
    \fi%
  \fi%
  \tikz@@@plot%
}%

\def\tikz@plot@no@resample{%
  \pgfutil@IfFileExists{\tikz@plot@filename.table}%
  {\def\tikz@plot@data{\pgfplotxyfile{\tikz@plot@filename.table}}}%
  {}%
}%

\def\tikz@plot@expression(#1){%
  \edef\tikz@plot@data{\noexpand\pgfplotfunction{\expandafter\noexpand\tikz@plot@var}{\tikz@plot@samplesat}}%
  \expandafter\def\expandafter\tikz@plot@data\expandafter{\tikz@plot@data{\tikz@scan@one@point\pgfutil@firstofone(#1)}}%
  \tikz@@@plot%
}%

\def\tikz@@@plot{%
    \def\pgfplotlastpoint{\pgfpointorigin}%
    \tikz@plot@handler%
    \tikz@plot@data%
    \global\let\tikz@@@temp=\pgfplotlastpoint%
    \ifx\tikz@plot@mark\pgfutil@empty%
    \else%
      \setbox\tikz@whichbox=\hbox{%
        \unhbox\tikz@whichbox%
        \hbox{{%
          \pgfinterruptpath%
            \pgfscope%
              \let\tikz@options=\pgfutil@empty%
              \let\tikz@transform=\pgfutil@empty%
              \tikzset{every mark}%
              \tikz@options%
              \ifx\tikz@mark@list\pgfutil@empty%
                \pgfplothandlermark{\tikz@transform\pgfuseplotmark{\tikz@plot@mark}}%
              \else
                \pgfplothandlermarklisted{\tikz@transform\pgfuseplotmark{\tikz@plot@mark}}{\tikz@mark@list}%
              \fi
              \tikz@plot@data%
            \endpgfscope
          \endpgfinterruptpath%
        }}%
      }%
    \fi%
    \global\setbox\tikz@tempbox=\box\tikz@whichbox%
    \global\let\tikz@after@path@smuggle=\tikz@after@path
  \expandafter\endgroup%
  \expandafter\setbox\tikz@whichbox=\box\tikz@tempbox%
  \tikz@make@last@position{\tikz@@@temp}%
  \expandafter\tikz@scan@next@command\tikz@after@path@smuggle%
}%


\pgfdeclareplotmark{ball}
{%
  \def\tikz@shading{ball}%
  \shade (0pt,0pt) circle (\pgfplotmarksize);%
}%




\def\tikz@cosine s{\tikz@cycle@expander{\tikz@scan@one@point\tikz@@cosine}}
\def\tikz@@cosine#1{%
  \let\tikz@tangent\tikz@tangent@lookup%
  \tikz@flush@moveto%
  \pgf@process{#1}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \advance\pgf@xc by-\tikz@lastx%
  \advance\pgf@yc by-\tikz@lasty%
  \advance\tikz@lastx by\pgf@xc%
  \advance\tikz@lasty by\pgf@yc%
  \tikz@lastxsaved=\tikz@lastx%
  \tikz@lastysaved=\tikz@lasty%
  \tikz@updatecurrenttrue%
  \pgfpathcosine{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
  \tikz@scan@next@command%
}%

\def\tikz@sine in{\tikz@cycle@expander{\tikz@scan@one@point\tikz@@sine}}
\def\tikz@@sine#1{%
  \let\tikz@tangent\tikz@tangent@lookup%
  \tikz@flush@moveto%
  \pgf@process{#1}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \advance\pgf@xc by-\tikz@lastx%
  \advance\pgf@yc by-\tikz@lasty%
  \advance\tikz@lastx by\pgf@xc%
  \advance\tikz@lasty by\pgf@yc%
  \tikz@lastxsaved=\tikz@lastx%
  \tikz@lastysaved=\tikz@lasty%
  \tikz@updatecurrenttrue%
  \pgfpathsine{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
  \tikz@scan@next@command%
}%

\def\tikz@parabola arabola{%
  \let\tikz@tangent\tikz@tangent@lookup%
  \pgfutil@ifnextchar[{\tikz@parabola@options}{\tikz@parabola@options[]}}%

\def\tikz@parabola@options[#1]{%
  \def\tikz@parabola@option{#1}%
  \pgfutil@ifnextchar b{\tikz@parabola@scan@bend}{\tikz@cycle@expander{\tikz@scan@one@point\tikz@parabola@semifinal}}}%
\def\tikz@parabola@scan@bend bend{\tikz@scan@one@point\tikz@parabola@scan@bendB}%
\def\tikz@parabola@scan@bendB#1{%
  \def\tikz@parabola@bend{#1}%
  \tikz@cycle@expander{\tikz@scan@one@point\tikz@parabola@semifinal}%
}%
\def\tikz@parabola@semifinal#1{%
  \tikz@flush@moveto%
  \pgf@xb=\tikz@lastx%
  \pgf@yb=\tikz@lasty%
  \tikz@make@last@position{#1}%
  \pgf@xc=\tikz@lastx%
  \pgf@yc=\tikz@lasty%
  \begingroup%
    \let\tikz@after@path\pgfutil@empty%
    \expandafter\tikzset\expandafter{\tikz@parabola@option}%
    \tikz@lastxsaved=\tikz@parabola@bend@factor\tikz@lastx%
    \tikz@lastysaved=\tikz@parabola@bend@factor\tikz@lasty%
    \advance\tikz@lastxsaved by\pgf@xb%
    \advance\tikz@lastysaved by\pgf@yb%
    \advance\tikz@lastxsaved by-\tikz@parabola@bend@factor\pgf@xb%
    \advance\tikz@lastysaved by-\tikz@parabola@bend@factor\pgf@yb%
    \expandafter\tikz@make@last@position\expandafter{\tikz@parabola@bend}%
    \advance\pgf@xc by-\tikz@lastx%
    \advance\pgf@yc by-\tikz@lasty%
    \advance\tikz@lastx by-\pgf@xb%
    \advance\tikz@lasty by-\pgf@yb%
    \xdef\tikz@parabola@b{{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}}%
  \expandafter\endgroup%
  \expandafter\expandafter\expandafter\pgfpathparabola\expandafter\tikz@parabola@b%
  \expandafter\tikz@scan@next@command\tikz@after@path%
}%


\def\tikz@circle ircle{\tikz@flush@moveto\tikz@@circle}%
\def\tikz@ellipse llipse{\tikz@flush@moveto\tikz@@circle}%
\def\tikz@@circle{%
  \let\tikz@tangent\relax%
  \pgfutil@ifnextchar(\tikz@@@circle
  {\pgfutil@ifnextchar[\tikz@circle@opt{%
    \advance\tikz@expandcount by -10\relax%
    \ifnum\tikz@expandcount<0\relax%
      \let\pgfutil@next=\tikz@@circle@normal%
    \else%
      \let\pgfutil@next=\tikz@@circle@scanexpand%
    \fi%
    \pgfutil@next%
  }}%
}%
\def\tikz@@circle@scanexpand{\expandafter\tikz@@circle}%
\def\tikz@@circle@normal{\tikz@circle@opt[]}%

\def\tikz@circle@opt[#1]{%
  {%
    \def\tikz@node@at{\tikz@last@position}%
    \let\tikz@transform=\pgfutil@empty%
    \tikzset{every circle/.try,#1}%
    \pgftransformshift{\tikz@node@at}%
    \tikz@transform%
    \tikz@do@ellipse{\pgfkeysvalueof{/tikz/x radius}}{\pgfkeysvalueof{/tikz/y radius}}
  }%
  \tikz@scan@next@command%
}%

\def\tikz@@@circle(#1){%
  {%
    \pgftransformshift{\tikz@last@position}%
    \pgfutil@in@{ and }{#1}%
    \ifpgfutil@in@%
      \tikz@@ellipseB(#1)%
    \else%
      \tikz@do@circle{#1}%
    \fi%
  }%
  \tikz@scan@next@command%
}%
\def\tikz@@ellipseB(#1 and #2){%
  \tikz@do@ellipse{#1}{#2}%
}%
\def\tikz@do@circle#1{%
  \pgfmathparse{#1}%
  \let\tikz@ellipse@x=\pgfmathresult
  \ifpgfmathunitsdeclared
    \pgfpathellipse{\pgfpointorigin}%
      {\pgfqpoint{\tikz@ellipse@x pt}{0pt}}%
      {\pgfpoint{0pt}{\tikz@ellipse@x pt}}%
  \else
    \pgfpathellipse{\pgfpointorigin}%
      {\pgfpointxy{\tikz@ellipse@x}{0}}%
      {\pgfpointxy{0}{\tikz@ellipse@x}}%
  \fi
}
\def\tikz@do@ellipse#1#2{
  \pgfmathparse{#1}%
  \let\tikz@ellipse@x=\pgfmathresult%
  \ifpgfmathunitsdeclared%
    \pgfmathparse{#2}%
    \let\tikz@ellipse@y=\pgfmathresult%
    \ifpgfmathunitsdeclared%
      \pgfpathellipse{\pgfpointorigin}{%
        \pgfqpoint{\tikz@ellipse@x pt}{0pt}}{\pgfpoint{0pt}{\tikz@ellipse@y pt}}%
    \else%
      \tikzerror{You cannot mix dimensions and dimensionless values in an ellipse}%
    \fi%
  \else%
    \pgfmathparse{#2}%
    \let\tikz@ellipse@y=\pgfmathresult%
    \ifpgfmathunitsdeclared%
      \tikzerror{You cannot mix dimensions and dimensionless values in an ellipse}%
    \else%
      \pgfpathellipse{\pgfpointorigin}{%
        \pgfpointxy{\tikz@ellipse@x}{0}}{\pgfpointxy{0}{\tikz@ellipse@y}}%
    \fi%
  \fi%
}%

\def\tikz@arcA rc{\tikz@flush@moveto\tikz@arc@cont}%
\def\tikz@arc@cont{%
  \pgfutil@ifnextchar(%
  {\tikz@@arcto}{%
    \pgfutil@ifnextchar[%
    {\tikz@arc@opt}%
    {%
      \advance\tikz@expandcount by -10\relax%
      \ifnum\tikz@expandcount<0\relax%
        \let\pgfutil@next=\tikz@@arc@normal%
      \else%
        \let\pgfutil@next=\tikz@@arc@scanexpand%
      \fi%
      \pgfutil@next%
    }%
  }%
}%
\def\tikz@@arc@scanexpand{\expandafter\tikz@arc@cont}%
\def\tikz@@arc@normal{\tikz@arc@opt[]}%


\def\tikz@arc@opt[#1]{%
  {%
    \tikzset{every arc/.try,#1}%
    \pgfkeysgetvalue{/tikz/start angle}\tikz@s
    \pgfkeysgetvalue{/tikz/end angle}\tikz@e
    \pgfkeysgetvalue{/tikz/delta angle}\tikz@d
    \ifx\tikz@s\pgfutil@empty%
      \pgfmathsetmacro\tikz@s{\tikz@e-\tikz@d}
    \else
      \ifx\tikz@e\pgfutil@empty%
        \pgfmathsetmacro\tikz@e{\tikz@s+\tikz@d}
      \fi%
    \fi%
    \xdef\pgf@marshal{\noexpand%
    \tikz@do@arc{\tikz@s}{\tikz@e}
      {\pgfkeysvalueof{/tikz/x radius}}
      {\pgfkeysvalueof{/tikz/y radius}}}%
  }%
  \pgf@marshal%
  \tikz@arcfinal%
}%

\def\tikz@@arcto(#1){%
  \edef\tikz@temp{(#1)}%
  \expandafter\tikz@@@arcto@check@slashand\tikz@temp%
}%

\def\tikz@@@arcto@check@slashand(#1:#2:#3){%
  \pgfutil@in@{ and }{#3}%
  \ifpgfutil@in@%
    \tikz@parse@arc@and(#1:#2:#3)%
  \else%
    \tikz@parse@arc@and(#1:#2:{#3} and {#3})%
  \fi%
  \tikz@arcfinal%
}%

\def\tikz@parse@arc@and(#1:#2:#3 and #4){%
  \tikz@do@arc{#1}{#2}{#3}{#4}%
}%
\def\tikz@do@arc#1#2#3#4{%
  \let\tikz@tangent\tikz@tangent@lookup%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \pgfmathsetmacro\tikz@timer@start@angle{#1}%
  \pgfmathsetmacro\tikz@timer@end@angle{#2}%
  \pgfmathparse{#3}%
  \let\tikz@arc@x=\pgfmathresult%
  \ifpgfmathunitsdeclared%
    \pgfmathparse{#4}%
    \let\tikz@arc@y=\pgfmathresult%
    \ifpgfmathunitsdeclared%
      \tikz@@@arcfinal{\pgfpatharc{\tikz@timer@start@angle}{\tikz@timer@end@angle}{\tikz@arc@x pt and \tikz@arc@y pt}}
      {\pgfpointpolar{\tikz@timer@start@angle}{\tikz@arc@x pt and \tikz@arc@y pt}}
      {\pgfpointpolar{\tikz@timer@end@angle}{\tikz@arc@x pt and \tikz@arc@y pt}}%
      \edef\tikz@timer@zero@axis{\noexpand\pgfqpoint{\tikz@arc@x pt}{0pt}}
      \edef\tikz@timer@ninety@axis{\noexpand\pgfqpoint{0pt}{\tikz@arc@y pt}}
    \else%
      \tikzerror{You cannot mix dimensions and dimensionless values in an arc}%
    \fi%
  \else%
    \pgfmathparse{#4}%
    \let\tikz@arc@y=\pgfmathresult%
    \ifpgfmathunitsdeclared%
      \tikzerror{You cannot mix dimensions and dimensionless values in an arc}%
    \else%
      \tikz@@@arcfinal{\pgfpatharcaxes{\tikz@timer@start@angle}{\tikz@timer@end@angle}{\pgfpointxy{\tikz@arc@x}{0}}{\pgfpointxy{0}{\tikz@arc@y}}}
      {\pgfpointpolarxy{\tikz@timer@start@angle}{\tikz@arc@x and \tikz@arc@y}}{\pgfpointpolarxy{\tikz@timer@end@angle}{\tikz@arc@x and \tikz@arc@y}}%
      \pgf@process{\pgfpointxy{\tikz@arc@x}{0}}
      \edef\tikz@timer@zero@axis{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
      \pgf@process{\pgfpointxy{0}{\tikz@arc@y}}
      \edef\tikz@timer@ninety@axis{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
     \fi%
  \fi%
}%

\def\tikz@@@arcfinal#1#2#3{%
  #1%
  \pgf@process{#2}
  \xdef\tikz@arc@save@first{\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgf@process{#3}
  \xdef\tikz@arc@save@second{\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
}%

\def\tikz@arcfinal{%
  \pgf@process{\tikz@arc@save@first}%
  \advance\tikz@lastx by-\pgf@x%
  \advance\tikz@lasty by-\pgf@y%
  \pgf@process{\tikz@arc@save@second}%
  \advance\tikz@lastx by\pgf@x%
  \advance\tikz@lasty by\pgf@y%
  \tikz@lastxsaved=\tikz@lastx%
  \tikz@lastysaved=\tikz@lasty%
  \let\tikz@timer=\tikz@timer@arc%
  \tikz@scan@next@command%
}%


\def\tikz@coordinate ordinate{%
  \pgfutil@ifnextchar[{\tikz@@coordinate@opt}{\tikz@@coordinate@opt[]}}%
\def\tikz@@coordinate@opt[#1]{%
  \pgfutil@ifnextchar({\tikz@@coordinate[#1]}
  {\tikz@fig ode[shape=coordinate,#1]{}}}%
\def\tikz@@coordinate[#1](#2){%
  \pgfutil@ifnextchar a{\tikz@@coordinate@at[#1](#2)}
  {\tikz@fig ode[shape=coordinate,#1](#2){}}}%
\def\tikz@@coordinate@at[#1](#2)a{%
  \pgfutil@ifnextchar t{\tikz@@coordinate@@at[#1](#2)a}%
  {\tikz@fig ode[shape=coordinate,#1](#2){}a}%
}%
\def\tikz@@coordinate@@at[#1](#2)at#3({%
  \def\tikz@coordinate@caller{\tikz@fig ode[shape=coordinate,#1](#2)at}%
  \tikz@scan@one@point\tikz@@coordinate@at@math(%
}%
\def\tikz@@coordinate@at@math#1{%
  \pgf@process{#1}%
  \edef\tikz@temp{(\the\pgf@x,\the\pgf@y)}%
  \expandafter\tikz@coordinate@caller\tikz@temp{}%
}%



\def\tikz@fig ode{%
  \pgfutil@ifnextchar a\tikz@test@also{%
    \pgfutil@ifnextchar f{\tikz@nodes@start}\tikz@normal@fig}}%
\def\tikz@test@also a{\pgfutil@ifnextchar l\tikz@node@also{\tikz@normal@fig a}}%
\def\tikz@normal@fig{%
  \edef\tikz@save@line@width{\the\pgflinewidth}%
  \begingroup%
  \let\tikz@fig@name=\pgfutil@empty%
    \begingroup%
      \tikz@is@matrixfalse%
      \let\nodepart=\tikz@nodepart%
      \let\tikz@atbegin@scope=\pgfutil@empty%
      \let\tikz@atend@scope=\pgfutil@empty%
      \let\tikz@do@after@node=\tikz@scan@next@command%
      \let\tikz@options=\pgfutil@empty%
      \tikz@clear@rdf@options%
      \let\tikz@id@name=\pgfutil@empty%
      \let\tikz@after@path=\pgfutil@empty%
      \let\tikz@transform=\pgfutil@empty%
      \let\tikz@mode=\pgfutil@empty%
      \tikz@decoratepathfalse%
      \let\tikz@preactions=\pgfutil@empty%
      \let\tikz@postactions=\pgfutil@empty%
      \let\tikz@alias=\pgfutil@empty%
      \def\tikz@node@at{\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
      \let\tikz@time@for@matrix\tikz@time%
      \let\tikz@node@content\relax%
      \pgfgetpath\tikzpathuptonow%
      \iftikz@node@is@a@label%
      \else%
        \let\tikz@time\pgfutil@empty%
      \fi%
      \tikz@node@reset@hook%
      \tikzset{every node/.try}%
      \tikz@@scan@fig}%
\def\tikz@@scan@fig{%
  \pgfutil@ifnextchar a{\tikz@fig@scan@at}
  {\pgfutil@ifnextchar({\tikz@fig@scan@name}
    {\pgfutil@ifnextchar[{\tikz@fig@scan@options}%
      {\pgfutil@ifnextchar:{\tikz@fig@scan@animation}%
        {\pgfutil@ifnextchar\bgroup{\tikz@fig@main}%
          {\tikzerror{A node must have a (possibly empty) label text}%
            \tikz@fig@main{}}}}}}}%
\def\tikz@fig@scan@at at{%
  \tikz@scan@one@point\tikz@@fig@scan@at}%
\def\tikz@@fig@scan@at#1{%
  \def\tikz@node@at{#1}\tikz@@scan@fig}%
\def\tikz@fig@scan@name(#1){%
    \pgfkeysvalueof{/tikz/name/.@cmd}#1\pgfeov%
    \tikz@@scan@fig}%
\long\def\tikz@fig@scan@options[#1]{\iftikz@node@is@pic\tikz@enable@pic@quotes\else\tikz@enable@node@quotes\fi\tikzset{#1}\ifx\tikz@node@content\relax\expandafter\tikz@@scan@fig\else\tikz@expand@node@contents\fi}%
\def\tikz@fig@scan@animation:#1=#2{\tikzset{animate={myself:{#1}={#2}}}\tikz@@scan@fig}%
\def\tikz@expand@node@contents{%
  \expandafter\tikz@@scan@fig\expandafter{\tikz@node@content}%
}%
\let\tikz@node@reset@hook=\pgfutil@empty%
\let\tikz@node@begin@hook=\pgfutil@empty%
\def\tikz@fig@main{%
  \iftikz@node@is@pic%
    \tikz@node@is@picfalse%
    \expandafter\tikz@subpicture@handle%
  \else%
    \afterassignment\tikz@@fig@main\expandafter\let\expandafter\next\expandafter=%
  \fi}%
\def\tikz@@fig@main{%
    \pgfutil@ifundefined{pgf@sh@s@\tikz@shape}%
    {\tikzerror{Unknown shape ``\tikz@shape.'' Using ``rectangle'' instead}%
      \def\tikz@shape{rectangle}}%
    {}%
    \expandafter\xdef\csname tikz@dcl@coord@\tikz@fig@name\endcsname{%
      \csname tikz@scan@point@coordinate\endcsname}%
    \tikzset{every \tikz@shape\space node/.try}%
    \tikz@node@textfont%
    \tikz@node@begin@hook%
    \iftikz@is@matrix%
      \let\tikz@next=\tikz@do@matrix%
    \else%
      \let\tikz@next=\tikz@do@fig%
    \fi%
    \tikz@next%
}%
\let\tikz@nodepart@list\pgfutil@empty
\def\tikz@do@fig{%
    \pgfutil@for\tikz@temp:=\tikz@nodepart@list\do{%
      \expandafter\setbox\csname pgfnodepart\tikz@temp box\endcsname=\box\pgfutil@voidb@x%
    }%
    \setbox\pgfnodeparttextbox=\hbox%
      \bgroup%
        \pgfinterruptpicture%
        \pgfsys@begin@text%
          \pgfsys@text@to@black@hook%
          \tikzset{every text node part/.try}%
          \ifx\tikz@textopacity\pgfutil@empty%
          \else%
            \pgfsetfillopacity{\tikz@textopacity}%
            \pgfsetstrokeopacity{\tikz@textopacity}%
          \fi%
          \ifx\tikz@text@width\pgfutil@empty%
            \tikz@textfont%
          \else%
            \begingroup%
                \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
              \pgfutil@minipage[t]{\pgf@x}\leavevmode\hbox{}%
                \tikz@textfont%
                \tikz@text@action%
          \fi%
          \tikz@atbegin@node%
          \bgroup%
            \aftergroup\unskip%
            \ifx\tikz@textcolor\pgfutil@empty%
            \else%
              \pgfutil@colorlet{.}{\tikz@textcolor}%
              \pgfutil@color{\tikz@textcolor}%
            \fi%
            \setbox\tikz@figbox=\box\pgfutil@voidb@x%
            \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
            \tikz@uninstallcommands%
            \iftikz@handle@active@code%
              \tikz@orig@shorthands%
              \let\tikz@orig@shorthands\pgfutil@empty%
            \fi%
            \ifnum\the\catcode`\;=\active\relax\expandafter\let\tikz@activesemicolon=\tikz@origsemi\fi%
            \ifnum\the\catcode`\:=\active\relax\expandafter\let\tikz@activecolon=\tikz@origcolon\fi%
            \ifnum\the\catcode`\|=\active\relax\expandafter\let\tikz@activebar=\tikz@origbar\fi%
            \aftergroup\tikz@fig@collectresetcolor%
            \tikz@signal@halign@check%
            \tikz@text@reset%
            \tikz@halign@check%
            \ignorespaces%
}%
\def\tikz@fig@collectresetcolor{%
  \pgfutil@ifnextchar\reset@color%
  {\reset@color\afterassignment\tikz@fig@collectresetcolor\let\tikz@temp=}\tikz@fig@boxdone%
}%
\def\tikz@fig@boxdone{%
            \tikz@atend@node%
          \ifx\tikz@text@width\pgfutil@empty%
          \else%
              \pgfutil@endminipage%
            \endgroup%
          \fi%
        \pgfsys@end@text%
        \endpgfinterruptpicture%
      \egroup%
    \pgfutil@ifnextchar c{\tikz@fig@mustbenamed\tikz@fig@continue}%
    {\pgfutil@ifnextchar[{\tikz@fig@mustbenamed\tikz@fig@continue}%
      {\pgfutil@ifnextchar t{\tikz@fig@mustbenamed\tikz@fig@continue}
        {\pgfutil@ifnextchar e{\tikz@fig@mustbenamed\tikz@fig@continue}
          {\ifx\tikz@after@path\pgfutil@empty\expandafter\tikz@fig@continue\else\expandafter\tikz@fig@mustbenamed\expandafter\tikz@fig@continue\fi}}}}}%

\tikzset{
  matrix/inner style/every cell/.code={%
    \tikzset{every cell/.try={\the\pgfmatrixcurrentrow}{\the\pgfmatrixcurrentcolumn}}%
  },
  matrix/inner style/column/.code={%
    \tikzset{column \the\pgfmatrixcurrentcolumn/.try}%
  },
  matrix/inner style/even odd column/.code={
    \ifodd\pgfmatrixcurrentcolumn%
      \tikzset{every odd column/.try}%
    \else%
      \tikzset{every even column/.try}%
    \fi
  },
  matrix/inner style/row/.code={%
    \tikzset{row \the\pgfmatrixcurrentrow/.try}%
  },
  matrix/inner style/even odd row/.code={%
    \ifodd\pgfmatrixcurrentrow%
      \tikzset{every odd row/.try}%
    \else%
      \tikzset{every even row/.try}%
    \fi
  },
  matrix/inner style/cell/.code={%
    \tikzset{row \the\pgfmatrixcurrentrow\space column \the\pgfmatrixcurrentcolumn/.try}%
  },
  matrix/inner style order/.store in=\tikz@common@matrix@code@styleorder,
  matrix/inner style order={
    every cell,
    column,
    even odd column,
    row,
    even odd row,
    cell
  },
}%

\def\tikz@do@matrix{%
    \tikzset{every matrix/.try}%
    \tikz@node@transformations%
    \tikz@fig@mustbenamed%
    \setbox\tikz@whichbox=\hbox\bgroup%
      \unhbox\tikz@whichbox%
      \hbox\bgroup\bgroup%
          \pgfinterruptpath%
            \pgfscope%
              \ifx\tikz@time\pgfutil@empty\let\tikz@time\tikz@time@for@matrix\fi%
              \tikz@options%
              \tikz@do@rdf@pre@options%
              \tikz@is@nodefalse%
              \tikz@call@id@hook%
              \pgfidscope%
                \tikz@do@rdf@post@options%
                \begingroup%
                \let\tikz@id@name\pgfutil@empty%
                \pgfclearid%
                \setbox\tikz@figbox=\box\pgfutil@voidb@x%
                \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
                \let\tikzmatrixname=\tikz@fig@name%
                \edef\tikz@m@anchor{\ifx\tikz@matrix@anchor\pgfutil@empty\tikz@anchor\else\tikz@matrix@anchor\fi}%
                \expandafter\pgfutil@in@\expandafter{\expandafter.\expandafter}\expandafter{\tikz@m@anchor}%
                \ifpgfutil@in@%
                  \expandafter\tikz@matrix@split\tikz@m@anchor\relax%
                \else%
                  \def\tikz@matrix@shift{\pgfpointorigin}%
                \fi%
                \let\tikz@transform=\relax%
                \pgfmatrixbeforeassemblenode{\tikzset{every outer matrix/.try}}%
                \pgfmatrix%
                {\tikz@shape}%
                {\tikz@m@anchor}%
                {\tikz@fig@name}%
                {%
                  \pgfutil@tempdima=\pgflinewidth%
                  {\begingroup\tikz@finish}%
                  \global\pgflinewidth=\pgfutil@tempdima%
                }%
                {\tikz@matrix@shift}%
                {%
                  \tikz@matrix@make@active@ampersand%
                  \def\pgfmatrixbegincode{%
                    \pgfsys@beginscope%
                    \tikz@common@matrix@code%
                    \tikz@atbegin@cell%
                  }%
                  \def\tikz@common@matrix@code{%
                    \let\tikz@options=\pgfutil@empty%
                    \let\tikz@mode=\pgfutil@empty%
                    \pgfutil@for\pgf@temp:=\tikz@common@matrix@code@styleorder\do{%
                      \toks0=\expandafter{\romannumeral-`0\expandafter\pgfutil@trimspaces\expandafter{\pgf@temp}}%
                      \def\pgf@marshal{}%
                      \pgfutil@ifxempty\pgf@temp{}{%
                        \edef\pgf@marshal{\noexpand\tikzset{matrix/inner style/.cd,\the\toks0}}%
                      }%
                      \pgf@marshal
                    }%
                    \tikz@options%
                  }%
                  \def\pgfmatrixendcode{%
                    \tikz@atend@cell%
                    \pgfsys@endscope%
                  }%
                  \def\pgfmatrixemptycode{%
                    \pgfsys@beginscope%
                    \tikz@common@matrix@code%
                    \tikz@at@emptycell%
                    \pgfsys@endscope%
                  }%
                  \tikz@atbegin@matrix%
                  \aftergroup\tikz@do@matrix@cont}%
                \bgroup%
}%
\def\tikz@do@matrix@cont{%
                \tikz@atend@matrix%
              \endgroup%
              \endpgfidscope%
            \endpgfscope
          \endpgfinterruptpath%
      \egroup\egroup%
    \egroup%
    \tikz@node@finish%
}%
{%
  \catcode`\&=13
  \gdef\tikz@matrix@make@active@ampersand{%
    \ifx\tikz@ampersand@replacement\pgfutil@empty%
      \catcode`\&=13%
      \let&=\pgfmatrixnextcell%
    \else%
      \expandafter\let\tikz@ampersand@replacement=\pgfmatrixnextcell%
    \fi%
  }%
}%


\def\tikz@matrix@split#1.#2\relax{%
  \def\tikz@m@anchor{text}%
  \def\tikz@matrix@shift{\pgfpointanchor{#1}{#2}}%
}%

\def\tikz@fig@continue{%
    \ifx\tikz@text@width\pgfutil@empty%
    \else%
      \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
      \wd\pgfnodeparttextbox=\pgf@x%
    \fi%
    \ifx\tikz@text@height\pgfutil@empty%
    \else%
      \pgfmathsetlength{\pgf@x}{\tikz@text@height}%
      \ht\pgfnodeparttextbox=\pgf@x%
    \fi%
    \ifx\tikz@text@depth\pgfutil@empty%
    \else%
      \pgfmathsetlength{\pgf@x}{\tikz@text@depth}%
      \dp\pgfnodeparttextbox=\pgf@x%
    \fi%
    \tikz@node@transformations%
    \tikz@nlt%
    \setbox\tikz@whichbox=\hbox{%
      \unhbox\tikz@whichbox%
      \hbox{{%
          \pgfinterruptpath%
            \pgfscope%
              \tikz@options%
              \tikz@do@rdf@pre@options%
              \tikz@is@nodetrue%
              \tikz@call@id@hook%
              \pgfidscope%
                \tikz@do@rdf@post@options%
                \let\tikz@id@name\pgfutil@empty%
                \setbox\tikz@figbox=\box\pgfutil@voidb@x%
                \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
                \setbox\pgfnodeparttextbox=\hbox{{%
                    \pgfsys@begin@text%
                    \ifx\tikz@textcolor\pgfutil@empty%
                    \else%
                      \pgfutil@colorlet{.}{\tikz@textcolor}%
                    \fi%
                    \pgfsetcolor{.}%
                    \pgfusetype{.text}%
                    \pgfidscope%
                      \box\pgfnodeparttextbox%
                    \endpgfidscope%
                    \pgfsys@end@text%
                  }}%
                \pgfmultipartnode{\tikz@shape}{\tikz@anchor}{\tikz@fig@name}{%
                  \pgfutil@tempdima=\pgflinewidth%
                  {\begingroup\tikz@finish}%
                  \global\pgflinewidth=\pgfutil@tempdima%
                }%
              \endpgfidscope%
            \endpgfscope%
          \endpgfinterruptpath%
      }}%
    }%
    \tikz@alias%
    \tikz@node@finish%
}%


\def\tikz@fig@mustbenamed{%
  \ifx\tikz@fig@name\pgfutil@empty%
    \global\advance\tikz@fig@count by1\relax
    \edef\tikz@fig@name{tikz@f@\the\tikz@fig@count}%
    \let\tikz@id@name\tikz@fig@name%
  \fi%
}%

\def\tikz@node@transformations{%
  \ifx\tikz@time\pgfutil@empty%
    \pgftransformshift{\tikz@node@at}%
    \iftikz@fullytransformed%
    \else%
      \pgftransformresetnontranslations%
    \fi%
  \else%
    \tikz@do@auto@anchor%
    \tikz@timer%
  \fi%
  \tikz@transform%
}%

\def\tikz@node@finish{%
    \global\let\tikz@last@fig@name=\tikz@fig@name%
    \global\let\tikz@after@path@smuggle=\tikz@after@path%
    \global\setbox\tikz@tempbox=\box\tikz@figbox%
    \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  \endgroup\endgroup%
  \setbox\tikz@figbox=\box\tikz@tempbox%
  \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
  \global\pgflinewidth=\tikz@save@line@width%
  \tikz@do@after@path@smuggle%
  \tikz@node@is@picfalse
  \tikz@do@after@node%
}%
\let\tikz@fig@continue@orig=\tikz@fig@continue

\def\tikz@do@after@node{\tikz@scan@next@command}%

\def\tikz@do@after@path@smuggle{%
  \let\tikz@to@last@fig@name=\tikz@last@fig@name%
  \let\tikz@to@use@whom=\tikz@to@use@last@fig@name%
  \let\tikzlastnode=\tikz@last@fig@name%
  \ifx\tikz@after@path@smuggle\pgfutil@empty%
  \else%
    \ifpgflatenodepositioning%
      \expandafter\expandafter\expandafter\tikz@call@late%
      \expandafter\expandafter\expandafter{\expandafter\tikz@last@fig@name\expandafter}\expandafter{\tikz@after@path@smuggle}%
    \else%
      \tikz@scan@next@command{\tikz@after@path@smuggle}\pgf@stop%
    \fi%
  \fi%
}%

\def\tikz@call@late#1#2{\pgfnodepostsetupcode{#1}{\path[late options={name={#1},append after command={#2}}];}}%

\newif\iftikz@do@align

\def\tikz@signal@halign@check{%
  \tikz@do@alignfalse
  \ifx\tikz@text@width\pgfutil@empty%
    \pgfkeysgetvalue{/tikz/node halign header}\tikz@align@header%
    \ifx\tikz@align@header\pgfutil@empty%
    \else%
      \tikz@do@aligntrue%
    \fi%
  \fi%
}
\def\tikz@halign@check{%
  \iftikz@do@align%
    \setbox\tikz@align@aligned@box=\box\pgfutil@voidb@x%
    \let\\=\tikz@align@newline%
    \expandafter\tikz@start@align%
  \fi%
}%
\def\tikz@align@newline{\pgfutil@protect\tikz@align@newline@}%
\def\tikz@align@newline@{\unskip\pgfutil@ifnextchar[\tikz@@align@newline{\tikz@@align@newline[0pt]}}%
\def\tikz@@align@newline[#1]{\egroup\tikz@align@continue\pgfmathparse{#1}\let\tikz@align@temp=\pgfmathresult\tikz@start@align}%
\let\tikz@align@aligned@box=\pgfnodeparttextbox
\let\tikz@align@line@box=\tikz@figbox

\def\tikz@start@align{%
  \setbox\tikz@align@line@box=\hbox\bgroup\bgroup%
    \aftergroup\tikz@align@collectresetcolor\ignorespaces%
}%
\def\tikz@align@collectresetcolor{%
  \pgfutil@ifnextchar\reset@color%
  {\reset@color\afterassignment\tikz@align@collectresetcolor\let\tikz@temp=}%
  {\tikz@align@end@check}%
}%
\def\tikz@align@end@check{%
  \egroup%
  \ifvoid\tikz@align@aligned@box%
    \setbox\tikz@align@aligned@box=\box\tikz@align@line@box%
  \else%
    \setbox\tikz@align@aligned@box=\vbox{%
      \expandafter\expandafter\expandafter\halign\expandafter\expandafter\expandafter{\tikz@align@header%
        \box\tikz@align@aligned@box\cr%
        \noalign{\vskip\tikz@align@temp pt}%
        \unhbox\tikz@align@line@box\unskip\cr}}%
  \fi%
  \pgfutil@ifnextchar\tikz@align@continue{}
  {%
      \box\tikz@align@aligned@box%
    \egroup%
  }%
}%
\def\tikz@align@continue{\tikz@@align@continue}%
\let\tikz@@align@continue=\pgfutil@empty


\def\tikz@node@also lso{\pgfutil@ifnextchar[\tikz@node@also@opt{\tikz@node@also@opt[]}}%
\def\tikz@node@also@opt[#1]{
  \pgfutil@ifnextchar(%
  {\tikz@node@also@opt@cont[#1]}%
  {\tikzerror{Syntax error in node also: ``('' expected.}%
    \tikz@scan@next@command}%
}%
\def\tikz@node@also@opt@cont[#1](#2){\tikzset{late options={name=#2,#1}}\tikz@scan@next@command}%




\def\tikz@nodepart{\pgfutil@ifnextchar[\tikz@@nodepart{\tikz@@nodepart[]}}%
\def\tikz@@nodepart[#1]#2{%
  \tikz@atend@node%
  \unskip%
  \gdef\tikz@nodepart@options{#1}%
  \gdef\tikz@nodepart@name{#2}%
  \global\let\tikz@fig@continue=\tikz@nodepart@continue%
  \pgfutil@ifnextchar x{\egroup\relax}{\egroup\relax}%
}%
\def\tikz@nodepart@continue{%
  \global\let\tikz@fig@continue=\tikz@fig@continue@orig%
  \ifx\tikz@nodepart@list\pgfutil@empty%
    \let\tikz@nodepart@list\tikz@nodepart@name%
  \else%
    \edef\tikz@nodepart@list{\tikz@nodepart@list,\tikz@nodepart@name}%
  \fi%
   \expandafter\setbox\csname pgfnodepart\tikz@nodepart@name box\endcsname=\hbox%
      \bgroup%
        \pgfinterruptpicture%
        \pgfsys@begin@text%
        \pgfsys@text@to@black@hook%
        \tikzset{every \tikz@nodepart@name\space node part/.try}%
        \expandafter\tikzset\expandafter{\tikz@nodepart@options}%
        \ifx\tikz@textopacity\pgfutil@empty%
        \else%
          \pgfsetfillopacity{\tikz@textopacity}%
          \pgfsetstrokeopacity{\tikz@textopacity}%
        \fi%
        \ifx\tikz@textcolor\pgfutil@empty%
        \else%
          \pgfutil@colorlet{.}{\tikz@textcolor}%
        \fi%
        \pgfsetcolor{.}%
          \ifx\tikz@text@width\pgfutil@empty%
            \tikz@textfont%
          \else%
            \begingroup%
              \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
              \pgfutil@minipage[t]{\pgf@x}\leavevmode\hbox{}%
                \tikz@textfont%
                \tikz@text@action%
          \fi%
          \bgroup%
            \aftergroup\unskip%
            \setbox\tikz@figbox=\box\pgfutil@voidb@x%
            \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
            \tikz@uninstallcommands%
            \iftikz@handle@active@code%
              \tikz@orig@shorthands%
              \let\tikz@orig@shorthands\pgfutil@empty%
            \fi%
            \ifnum\the\catcode`\;=\active\relax\expandafter\let\tikz@activesemicolon=\tikz@origsemi\fi%
            \ifnum\the\catcode`\:=\active\relax\expandafter\let\tikz@activecolon=\tikz@origcolon\fi%
            \ifnum\the\catcode`\|=\active\relax\expandafter\let\tikz@activebar=\tikz@origbar\fi%
            \tikz@atbegin@node%
            \aftergroup\tikz@fig@collectresetcolor%
            \tikz@signal@halign@check%
            \tikz@text@reset%
            \tikz@halign@check%
            \ignorespaces%
}%



\def\tikz@nodes@start{%
  \let\tikz@nodes@list\pgfutil@empty%
  \iftikz@node@is@pic%
    \def\tikz@nodes@collect{pic }%
  \else%
    \def\tikz@nodes@collect{node }%
  \fi%
  \tikz@nodes%
}%
\def\tikz@nodes foreach{\pgfutil@ifnextchar x\tikz@nodes@\tikz@nodes@}%
\def\tikz@nodes@#1in{%
  \expandafter\def\expandafter\tikz@nodes@list\expandafter{\tikz@nodes@list\foreach#1in}%
  \pgfutil@ifnextchar\bgroup\tikz@nodes@group\tikz@nodes@one%
}%
\def\tikz@nodes@one#1{%
  \expandafter\def\expandafter\tikz@nodes@list\expandafter{\tikz@nodes@list#1}%
  \pgfutil@ifnextchar f\tikz@nodes\tikz@nodes@scan%
}%
\def\tikz@nodes@group#1{%
  \expandafter\def\expandafter\tikz@nodes@list\expandafter{\tikz@nodes@list{#1}}%
  \pgfutil@ifnextchar f\tikz@nodes\tikz@nodes@scan%
}%
\def\tikz@nodes@scan{%
  \pgfutil@ifnextchar a{\tikz@nodes@at}%
  {\pgfutil@ifnextchar({\tikz@nodes@name}%
    {\pgfutil@ifnextchar[{\tikz@nodes@opt}%
      {\pgfutil@ifnextchar\bgroup{\tikz@nodes@main}%
      {\tikzerror{Nodes must have a (possibly empty) label text}%
        \tikz@fig@main{}}}}}}%

\def\tikz@nodes@at at{\pgfutil@ifnextchar({\tikz@nodes@at@}{\tikz@nodes@at@@}}%
\def\tikz@nodes@at@#1){%
  \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect at#1)}%
  \tikz@nodes@scan}%
\def\tikz@nodes@at@@#1{%
  \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect at#1}%
  \tikz@nodes@scan}%

\def\tikz@nodes@name#1){%
  \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect#1)}%
  \tikz@nodes@scan}%
\def\tikz@nodes@opt#1]{%
  \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect#1]}%
  \tikz@nodes@scan}%
\def\tikz@nodes@main#1{%
  \iftikz@handle@active@nodes%
    \iftikz@node@is@pic%
      \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect{#1}}%
    \else%
      \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect{\scantokens{#1}}}%
    \fi%
  \else%
    \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect{#1}}%
  \fi%
  \global\setbox\tikz@tempbox=\box\tikz@figbox%
  \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  \tikz@nodes@list{%
    \setbox\tikz@figbox=\box\tikz@tempbox%
    \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
    \expandafter\tikz@scan@next@command\tikz@nodes@collect\pgfextra\relax%
    \global\setbox\tikz@tempbox=\box\tikz@figbox%
    \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  }%
  \setbox\tikz@figbox=\box\tikz@tempbox%
  \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
  \tikz@scan@next@command%
}%



\tikzset{late options/.code=\tikz@late@options{#1}}%
\def\tikz@late@options#1{%
  \begingroup%
    \iftikz@shapeborder%
      \let\tikz@fig@name=\tikz@shapeborder@name%
    \else%
      \let\tikz@fig@name=\pgfutil@empty%
    \fi%
    \tikz@is@matrixfalse%
    \let\tikz@options=\pgfutil@empty%
    \tikz@clear@rdf@options%
    \let\tikz@after@path=\pgfutil@empty%
    \let\tikz@afternodepathoptions=\pgfutil@empty%
    \let\tikz@alias=\pgfutil@empty%
    \let\tikz@transform=\pgfutil@empty%
    \tikz@decoratepathfalse%
    \tikz@node@reset@hook%
    \tikz@enable@node@quotes%
    \tikzset{every node/.try,#1}%
    \ifx\tikz@fig@name\pgfutil@empty%
      \tikzerror{Late options must reference some existing node}%
    \fi%
    \tikz@node@begin@hook%
    \tikz@alias%
    \tikzgdlatenodeoptionacallback{\tikz@fig@name}%
    \global\let\tikz@last@fig@name=\tikz@fig@name%
    \global\let\tikz@after@path@smuggle=\tikz@after@path%
  \endgroup%
  \tikz@do@after@path@smuggle%
}%



\def\tikz@auto@pre{%
  \begingroup
    \pgfresetnontranslationattimefalse
    \ifpgfslopedattime
      \pgfslopedattimefalse%
    \else
      \pgfslopedattimetrue%
    \fi
    \pgfallowupsidedownattimetrue%
    \tikz@timer%
    \pgf@x=\pgf@pt@aa pt%
    \pgf@y=\pgf@pt@ab pt%
    \pgfpointnormalised{}%
}%

\def\tikz@auto@post{%
    \global\let\tikz@anchor@smuggle=\tikz@anchor%
  \endgroup%
  \let\tikz@anchor=\tikz@anchor@smuggle%
}%

\def\tikz@auto@anchor{%
    \ifdim\pgf@x>0.05pt%
      \ifdim\pgf@y>0.05pt%
        \def\tikz@anchor{south east}%
      \else\ifdim\pgf@y<-0.05pt%
        \def\tikz@anchor{south west}%
      \else
        \def\tikz@anchor{south}%
      \fi\fi%
    \else\ifdim\pgf@x<-0.05pt%
      \ifdim\pgf@y>0.05pt%
        \def\tikz@anchor{north east}%
      \else\ifdim\pgf@y<-0.05pt%
        \def\tikz@anchor{north west}%
      \else
        \def\tikz@anchor{north}%
      \fi\fi%
    \else%
      \ifdim\pgf@y>0pt%
        \def\tikz@anchor{east}%
      \else%
        \def\tikz@anchor{west}%
      \fi%
    \fi\fi%
}%

\def\tikz@auto@anchor@prime{%
    \ifdim\pgf@x>0.05pt%
      \ifdim\pgf@y>0.05pt%
        \def\tikz@anchor{north west}%
      \else\ifdim\pgf@y<-0.05pt%
        \def\tikz@anchor{north east}%
      \else
        \def\tikz@anchor{north}%
      \fi\fi%
    \else\ifdim\pgf@x<-0.05pt%
      \ifdim\pgf@y>0.05pt%
        \def\tikz@anchor{south west}%
      \else\ifdim\pgf@y<-0.05pt%
        \def\tikz@anchor{south east}%
      \else
        \def\tikz@anchor{south}%
      \fi\fi%
    \else%
      \ifdim\pgf@y>0pt%
        \def\tikz@anchor{west}%
      \else%
        \def\tikz@anchor{east}%
      \fi%
    \fi\fi%
}%


\def\tikzgdeventcallback#1#2{}%
\def\tikzgdeventgroupcallback#1{}%
\def\tikzgdlatenodeoptionacallback#1{}%


\def\tikz@children{%
  \let\tikz@children@list=\pgfutil@empty%
  \tikznumberofchildren=0\relax%
  \tikz@collect@children c}%

\def\tikz@collect@children{\pgfutil@ifnextchar c{\tikz@collect@children@cchar}{\tikz@children@collected}}%
\def\tikz@collect@children@cchar c{\pgfutil@ifnextchar h{\tikz@collect@child}{\tikz@children@collected c}}%
\def\tikz@collect@child hild{\pgfutil@ifnextchar[{\tikz@collect@childA}{\tikz@collect@childA[]}}%
\def\tikz@collect@childA[#1]{\pgfutil@ifnextchar f{\tikz@collect@children@foreach[#1]}{\tikz@collect@childB[#1]}}%
\def\tikz@collect@childB[#1]{%
  \advance\tikznumberofchildren by1\relax
  \expandafter\def\expandafter\tikz@children@list\expandafter{\tikz@children@list \tikz@childnode[#1]}%
  \pgfutil@ifnextchar\bgroup{\tikz@collect@child@code}{\tikz@collect@child@code{}}}%
\def\tikz@collect@child@code#1{%
  \expandafter\def\expandafter\tikz@children@list\expandafter{\tikz@children@list{#1}}%
  \tikz@collect@children%
}%
\def\tikz@collect@children@foreach[#1]foreach#2in#3{%
  \pgfutil@ifnextchar\bgroup{\tikz@collect@children@foreachA{#1}{#2}{#3}}{\tikz@collect@children@foreachA{#1}{#2}{#3}{}}}%
\def\tikz@collect@children@foreachA#1#2#3#4{%
  \expandafter\def\expandafter\tikz@children@list\expandafter
    {\tikz@children@list\tikz@childrennodes[#1]{#2}{#3}{#4}}%
  \c@pgf@counta=\tikznumberofchildren%
  \foreach#2in{#3}%
  {%
    \global\advance\c@pgf@counta by1\relax%
  }%
  \tikznumberofchildren=\c@pgf@counta%
  \tikz@collect@children%
}%
\long\def\tikz@children@collected{%
  \begingroup%
    \advance\tikztreelevel by 1\relax%
    \tikzgdeventgroupcallback{descendants}%
    \let\tikz@options=\pgfutil@empty%
    \tikz@clear@rdf@options%
    \let\tikz@transform=\pgfutil@empty%
    \tikzset{level/.try=\the\tikztreelevel,level \the\tikztreelevel/.try}%
    \tikz@transform%
    \let\tikz@transform=\relax%
    \let\tikzparentnode=\tikz@last@fig@name%
    \ifx\tikz@grow\relax\else%
      \pgftransformshift{\pgfpointanchor{\tikzparentnode}{\tikz@growth@anchor}}%
    \fi%
    \tikznumberofcurrentchild=0\relax%
    \tikz@children@list%
    \global\setbox\tikz@tempbox=\box\tikz@figbox%
    \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  \endgroup%
  \setbox\tikz@figbox=\box\tikz@tempbox%
  \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
  \tikz@scan@next@command%
}%

\def\tikz@childrennodes[#1]#2#3#4{%
  \c@pgf@counta=\tikznumberofcurrentchild\relax%
  \setbox\tikz@tempbox=\box\tikz@figbox%
  \setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  \foreach#2in{#3}{%
    \tikznumberofcurrentchild=\c@pgf@counta\relax%
    \setbox\tikz@figbox=\box\tikz@tempbox%
    \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
    \tikz@childnode[#1]{#4}%
    \global\c@pgf@counta=\tikznumberofcurrentchild\relax%
    \global\setbox\tikz@tempbox=\box\tikz@figbox%
    \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  }%
  \tikznumberofcurrentchild=\c@pgf@counta\relax%
  \setbox\tikz@figbox=\box\tikz@tempbox%
  \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
}%



\def\tikz@childnode[#1]#2{%
  \advance\tikznumberofcurrentchild by1\relax%
  {\tikzset{every child/.try,#1}\expandafter}%
  \iftikz@child@missing%
    \tikzgdeventcallback{node}{}%
  \else%
  \setbox\tikz@whichbox=\hbox\bgroup%
    \unhbox\tikz@whichbox%
    \hbox\bgroup\bgroup%
        \pgfinterruptpath%
          \pgfscope%
            \let\tikz@transform=\pgfutil@empty%
            \tikzset{every child/.try,#1}%
            \tikz@options%
            \tikz@transform%
            \let\tikz@transform=\relax%
            \tikz@grow%
            \edef\tikz@parent@node@name{[name=\tikzparentnode-\the\tikznumberofcurrentchild,style=every child node]}%
            \def\tikz@child@node@text{[shape=coordinate]{}}
            \tikz@parse@child@node#2\pgf@stop%
            \expandafter\expandafter\expandafter\node
            \expandafter\tikz@parent@node@name
              \tikz@child@node@text
              \pgfextra{\global\let\tikz@childnode@name=\tikz@last@fig@name};%
            \let\tikzchildnode=\tikz@childnode@name%
            {%
              \def\tikz@edge@to@parent@needed{edge from parent}
              \ifx\tikz@child@node@rest\pgfutil@empty%
                \path edge from parent;%
              \else%
                \path \tikz@child@node@rest \tikz@edge@to@parent@needed;%
              \fi%
            }%
        \endpgfscope%
      \endpgfinterruptpath%
    \egroup\egroup%
  \egroup%
  \fi%
}%

\def\tikz@parse@child@node{%
  \pgfutil@ifnextchar n{\tikz@parse@child@node@n}%
  {\pgfutil@ifnextchar c{\tikz@parse@child@node@c}%
    {\pgfutil@ifnextchar\pgf@stop\tikz@parse@child@node@rest\tikz@parse@child@node@expand}}}%
\def\tikz@parse@child@node@expand{%
  \advance\tikz@expandcount by-1\relax%
  \ifnum\tikz@expandcount<0\relax%
    \expandafter\tikz@parse@child@node@rest%
  \else%
    \expandafter\expandafter\expandafter\tikz@parse@child@node%
  \fi%
}%
\def\tikz@parse@child@node@rest#1\pgf@stop{\tikz@resetexpandcount\def\tikz@child@node@rest{#1}}%
\def\tikz@parse@child@node@c c{\tikz@resetexpandcount\pgfutil@ifnextchar o{\tikz@parse@child@node@co}{\tikz@parse@child@node@rest c}}%
\def\tikz@parse@child@node@co o{\pgfutil@ifnextchar o{\tikz@parse@child@node@coordinate}{\tikz@parse@child@node@rest co}}%
\def\tikz@parse@child@node@coordinate ordinate{%
  \pgfutil@ifnextchar ({\tikz@@parse@child@node@coordinate}{%
    \def\tikz@child@node@text{[shape=coordinate]{}}%
    \tikz@parse@child@node@rest}}%
\def\tikz@@parse@child@node@coordinate(#1){%
  \pgfutil@ifnextchar a{\tikz@p@c@n@c@at(#1)}{%
    \def\tikz@child@node@text{[shape=coordinate,name=#1]{}}%
    \tikz@parse@child@node@rest}}%
\def\tikz@p@c@n@c@at(#1)at#2({%
  \def\tikz@child@node@text@pre{[shape=coordinate,name=#1]at}%
  \tikz@scan@one@point\tikz@p@c@n@c@at@math(%
}%
\def\tikz@p@c@n@c@at@math#1{%
  \pgf@process{#1}%
  \edef\tikz@marshal{(\the\pgf@x,\the\pgf@y){}}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\tikz@child@node@text%
  \expandafter\expandafter\expandafter{\expandafter\tikz@child@node@text@pre\tikz@marshal}%
  \tikz@parse@child@node@rest%
}%
\def\tikz@parse@child@node@n node{\tikz@resetexpandcount%
  \let\tikz@child@node@text=\pgfutil@empty%
  \tikz@p@c@s}%
\def\tikz@p@c@s{%
  \pgfutil@ifnextchar a{\tikz@p@c@s@at}
  {\pgfutil@ifnextchar ({\tikz@p@c@s@paran}
    {\pgfutil@ifnextchar [{\tikz@p@c@s@bra}
      {\pgfutil@ifnextchar \bgroup{\tikz@p@c@s@group}
        {\tikzerror{Cannot parse this node}}}}}}%
\def\tikz@p@c@s@at at#1({%
  \tikz@scan@one@point\tikz@p@c@s@at@math(%
}%
\def\tikz@p@c@s@at@math#1{%
  \pgf@process{#1}%
  \edef\tikz@marshal{ at(\the\pgf@x,\the\pgf@y)}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\tikz@child@node@text%
  \expandafter\expandafter\expandafter{\expandafter\tikz@child@node@text\tikz@marshal}
  \tikz@p@c@s}%
\def\tikz@p@c@s@paran(#1){%
  \expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text(#1)}
  \tikz@p@c@s}%
\def\tikz@p@c@s@bra[#1]{%
  \expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text[#1]}
  \tikz@p@c@s}%
\def\tikz@p@c@s@group#1{%
  \iftikz@handle@active@nodes%
    \expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text{\scantokens{#1}}}%
  \else%
    \expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text{#1}}
  \fi%
  \tikz@parse@child@node@rest%
}%



\def\tikz@decoration ecorate{%
  \pgfutil@ifnextchar[{\tikz@lib@decoration}{\tikz@lib@decoration[]}%
}%

\def\tikz@lib@decoration[#1]#2{\tikzerror{You need to load a decoration library}}%

\def\tikz@lib@dec@decorate@path{\tikzerror{You need to load a decoration library}}%



\def\tikz@let@command et#1in{%
  \tikzerror{You need to say \string\usetikzlibrary{calc} to use the let command}%
  \tikz@scan@next@command%
}%


\newif\iftikz@node@is@pic
\def\tikz@subpicture ic{\tikz@node@is@pictrue\tikz@scan@next@command node}%
\def\tikz@subpicture@handle#1{%
  \pgfkeys@spdef\tikz@temp{#1}%
  \expandafter\tikz@subpicture@handle@\expandafter{\tikz@temp}%
}%
\def\tikz@subpicture@handle@#1{
  \pgfkeys{/tikz/pics/.cd,#1}%
  \tikz@node@transformations%
  \let\tikz@transform=\relax%
  \let\tikz@picmode\tikz@mode%
  \tikzset{name prefix ../.style/.expanded={/tikz/name prefix=\pgfkeysvalueof{/tikz/name prefix}}}%
  \ifx\tikz@fig@name\pgfutil@empty\else%
    \tikzset{name prefix/.expanded=\tikz@fig@name}%
  \fi%
  \pgfkeysvalueof{/tikz/pics/setup code}%
  \pgfkeysgetvalue{/tikz/pics/code}{\tikz@pic@code}
  \ifx\tikz@pic@code\pgfutil@empty\else%
  \setbox\tikz@whichbox=\hbox\bgroup%
    \unhbox\tikz@whichbox%
      \hbox\bgroup
        \bgroup%
          \pgfinterruptpath%
            \pgfscope%
              \tikz@options%
              \setbox\tikz@figbox=\box\pgfutil@voidb@x%
              \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
              \tikz@atbegin@scope%
              \scope[every pic/.try]%
                \tikz@pic@code%
              \endscope%
              \tikz@atend@scope%
            \endpgfscope%
          \endpgfinterruptpath%
        \egroup
      \egroup%
    \egroup%
  \fi%
  \pgfkeysgetvalue{/tikz/pics/foreground code}{\tikz@pic@code}
  \ifx\tikz@pic@code\pgfutil@empty\else%
  \setbox\tikz@figbox=\hbox\bgroup%
    \unhbox\tikz@figbox%
      \hbox\bgroup
        \bgroup%
          \pgfinterruptpath%
            \pgfscope%
              \tikz@options%
              \setbox\tikz@figbox=\box\pgfutil@voidb@x%
              \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
              \tikz@atbegin@scope%
              \scope[every front pic/.try]%
                \tikz@pic@code%
              \endscope%
              \tikz@atend@scope%
            \endpgfscope%
          \endpgfinterruptpath%
        \egroup
      \egroup%
    \egroup%
  \fi%
  \pgfkeysgetvalue{/tikz/pics/background code}{\tikz@pic@code}
  \ifx\tikz@pic@code\pgfutil@empty\else%
  \setbox\tikz@figbox@bg=\hbox\bgroup%
    \unhbox\tikz@figbox@bg%
      \hbox\bgroup
        \bgroup%
          \pgfinterruptpath%
            \pgfscope%
              \tikz@options%
              \setbox\tikz@figbox=\box\pgfutil@voidb@x%
              \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
              \tikz@atbegin@scope%
              \scope[every behind pic/.try]%
                \tikz@pic@code%
              \endscope%
              \tikz@atend@scope%
            \endpgfscope%
          \endpgfinterruptpath%
        \egroup
      \egroup%
    \egroup%
  \fi%
  \tikz@node@finish%
}%
\tikzset{
  pic actions/.code=\tikz@addmode{\tikz@picmode}
}%

\tikzset{
  pics/setup code/.initial=,
  pics/code/.initial=,
  pics/background code/.initial=,
  pics/foreground code/.initial=
}%


\def\tikzdeclarepic#1#2{\pgfkeys{/tikz/#1/.cd,#2}}%

\pgfkeysdef{/handlers/.pic}{%
  \edef\pgf@temp{\pgfkeyscurrentpath}%
  \edef\pgf@temp{\expandafter\tikz@smuggle@pics@in\pgf@temp\pgf@stop}%
  \expandafter\pgfkeys\expandafter{\pgf@temp/.style={code={#1}}}%
}%
\def\tikz@smuggle@pics@in/tikz/#1\pgf@stop{/tikz/pics/#1}%


\def\tikz@timer@line{%
  \pgftransformlineattime{\tikz@time}{\tikz@timer@start}{\tikz@timer@end}%
}%

\def\tikz@timer@vhline{%
  \ifdim\tikz@time pt<0.5pt%
    \pgf@process{\tikz@timer@start}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\tikz@timer@end}%
    \pgf@xb=\tikz@time pt%
    \pgf@xb=2\pgf@xb%
    \edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}{\noexpand\tikz@timer@start}{%
        \noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@y}}}%
    \tikz@marshal%
  \else%
    \pgf@process{\tikz@timer@start}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\tikz@timer@end}%
    \pgf@xb=\tikz@time pt%
    \pgf@xb=2\pgf@xb%
    \advance\pgf@xb by-1pt%
    \edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}%
      {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@y}}{\noexpand\tikz@timer@end}}%
    \tikz@marshal%
  \fi%
}%

\def\tikz@timer@hvline{%
  \ifdim\tikz@time pt<0.5pt%
    \pgf@process{\tikz@timer@start}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\tikz@timer@end}%
    \pgf@xb=\tikz@time pt%
    \pgf@xb=2\pgf@xb%
    \edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}{\noexpand\tikz@timer@start}{%
        \noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@ya}}}%
    \tikz@marshal%
  \else%
    \pgf@process{\tikz@timer@start}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\tikz@timer@end}%
    \pgf@xb=\tikz@time pt%
    \pgf@xb=2\pgf@xb%
    \advance\pgf@xb by-1pt%
    \edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}%
      {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@ya}}{\noexpand\tikz@timer@end}}%
    \tikz@marshal%
  \fi%
}%

\def\tikz@timer@curve{%
  \pgftransformcurveattime{\tikz@time}{\tikz@timer@start}{\tikz@timer@cont@one}{\tikz@timer@cont@two}{\tikz@timer@end}%
}%


\def\tikz@timer@arc{%
  \pgfmathcos@{\tikz@timer@start@angle}%
  \let\tikz@angle@cos\pgfmathresult%
  \pgfmathsin@{\tikz@timer@start@angle}%
  \let\tikz@angle@sin\pgfmathresult%
  \pgftransformarcaxesattime{\tikz@time}{%
    \pgfpointdiff{%
      \pgfpointadd{%
        \pgfpointscale{\tikz@angle@cos}{\tikz@timer@zero@axis}%
      }{%
        \pgfpointscale{\tikz@angle@sin}{\tikz@timer@ninety@axis}%
      }%
    }%
    {\tikz@timer@start}%
  }%
  {\tikz@timer@zero@axis}%
  {\tikz@timer@ninety@axis}%
  {\tikz@timer@start@angle}{\tikz@timer@end@angle}%
}%




\def\tikzdeclarecoordinatesystem#1#2{%
  \expandafter\def\csname tikz@parse@cs@#1\endcsname(##1){%
    \pgf@process{%
      #2%
      \global\let\tikz@smubble@b=\tikz@shapeborder@name%
    }%
    \let\tikz@shapeborder@name=\tikz@smubble@b%
    \edef\tikz@return@coordinate{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
}%
\def\tikzaliascoordinatesystem#1#2{%
  \edef\pgf@marshal{\noexpand\let\expandafter\noexpand\csname
    tikz@parse@cs@#1\endcsname=\expandafter\noexpand\csname
    tikz@parse@cs@#2\endcsname}%
  \pgf@marshal%
}%



\tikzdeclarecoordinatesystem{canvas}
{%
  \tikzset{cs/.cd,x=0pt,y=0pt,#1}%
  \pgfpoint{\tikz@cs@x}{\tikz@cs@y}%
}%

\tikzdeclarecoordinatesystem{canvas polar}
{%
  \tikzset{cs/.cd,angle=0,radius=0cm,#1}%
  \pgfpointpolar{\tikz@cs@angle}{\tikz@cs@xradius and \tikz@cs@yradius}%
}%

\tikzdeclarecoordinatesystem{xyz}
{%
  \tikzset{cs/.cd,x=0,y=0,z=0,#1}%
  \pgfpointxyz{\tikz@cs@x}{\tikz@cs@y}{\tikz@cs@z}%
}%

\tikzdeclarecoordinatesystem{xyz polar}
{%
  \tikzset{cs/.cd,angle=0,radius=0,#1}%
  \pgfpointpolarxy{\tikz@cs@angle}{\tikz@cs@xradius and \tikz@cs@yradius}%
}%
\tikzaliascoordinatesystem{xy polar}{xyz polar}%


\tikzdeclarecoordinatesystem{node}
{%
  \tikzset{cs/.cd,name=,anchor=none,angle=none,#1}%
  \ifx\tikz@cs@anchor\tikz@nonetext%
    \ifx\tikz@cs@angle\tikz@nonetext%
      \expandafter\ifx\csname pgf@sh@ns@\tikz@cs@node\endcsname\tikz@coordinate@text%
      \else
        \aftergroup\tikz@shapebordertrue%
        \edef\tikz@shapeborder@name{\tikz@pp@name{\tikz@cs@node}}%
      \fi%
      \pgfpointanchor{\tikz@pp@name{\tikz@cs@node}}{center}%
    \else%
      \pgfpointanchor{\tikz@pp@name{\tikz@cs@node}}{\tikz@cs@angle}%
    \fi%
  \else%
    \pgfpointanchor{\tikz@pp@name{\tikz@cs@node}}{\tikz@cs@anchor}%
  \fi%
}%

\tikzset{cs/first line/.code=\def\tikz@cs@line@a{#1}\def\tikz@cs@type@a{line}}%
\tikzset{cs/second line/.code=\def\tikz@cs@line@b{#1}\def\tikz@cs@type@b{line}}%

\tikzset{cs/first node/.code=\tikz@cs@unpack{\tikz@cs@node@a}{\tikz@cs@type@a}{#1}}%
\tikzset{cs/second node/.code=\tikz@cs@unpack{\tikz@cs@node@b}{\tikz@cs@type@b}{#1}}%

\def\tikz@cs@unpack#1#2#3{%
  \expandafter\ifx\csname pgf@sh@ns@#3\endcsname\relax%
    \tikzerror{Undefined node ``#3''}%
  \else%
    \def#1{#3}%
    \edef#2{\csname pgf@sh@ns@#3\endcsname}%
  \fi%
}%

\tikzset{cs/solution/.initial=1}%

\tikzset{cs/horizontal line through/.store in=\tikz@cs@hori@line}%
\tikzset{cs/vertical line through/.store in=\tikz@cs@vert@line}%

\tikzdeclarecoordinatesystem{intersection}
{%
  \tikzset{cs/.cd,#1}%
  \expandafter\ifx\csname tikz@intersect@\tikz@cs@type@a @and@\tikz@cs@type@b\endcsname\relax%
    \tikzerror{I do not know how to compute the intersection
    of a \tikz@cs@type@a and a \tikz@cs@type@b. Try saying
    \string\usetikzlibrary{calc}}%
    \pgfpointorigin%
  \else%
    \csname tikz@intersect@\tikz@cs@type@a @and@\tikz@cs@type@b\endcsname%
  \fi%
}%

\def\tikz@intersect@line@and@line{%
  \expandafter\tikz@scan@one@point\expandafter\tikz@parse@line\tikz@cs@line@a%
  \pgf@xa=\pgf@xc%
  \pgf@ya=\pgf@yc%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \expandafter\tikz@scan@one@point\expandafter\tikz@parse@line\tikz@cs@line@b%
  \edef\pgf@marshal{%
    {\noexpand\pgfpointintersectionoflines%
      {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
      {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
      {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
      {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}}%
  \pgf@marshal%
}%

\def\tikz@parse@line#1--{%
  \pgf@process{#1}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \tikz@scan@one@point\pgf@process%
}%


\tikzdeclarecoordinatesystem{perpendicular}
{%
  \tikzset{cs/.cd,#1}%
  \expandafter\tikz@scan@one@point\expandafter\tikz@parse@intersection@a\tikz@cs@hori@line%
  \expandafter\tikz@scan@one@point\expandafter\tikz@parse@intersection@b\tikz@cs@vert@line%
  \pgfqpoint{\the\pgf@xb}{\the\pgf@ya}
}%

\tikzdeclarecoordinatesystem{barycentric}
{%
  {%
    \pgf@xa=0pt%
    \pgf@ya=0pt%
    \pgf@xb=0pt%
    \tikz@bary@dolist#1,=,%
    \pgfmathparse{1/\the\pgf@xb}%
    \global\pgf@x=\pgfmathresult\pgf@xa%
    \global\pgf@y=\pgfmathresult\pgf@ya%
  }%
}%

\def\tikz@bary@dolist#1=#2,{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
  \else
    \pgf@process{\pgfpointanchor{#1}{center}}%
    \pgfmathparse{#2}%
    \advance\pgf@xa by\pgfmathresult\pgf@x%
    \advance\pgf@ya by\pgfmathresult\pgf@y%
    \advance\pgf@xb by\pgfmathresult pt%
    \expandafter\tikz@bary@dolist%
  \fi%
}%

\tikzset{cs/x/.store in=\tikz@cs@x}%
\tikzset{cs/y/.store in=\tikz@cs@y}%
\tikzset{cs/z/.store in=\tikz@cs@z}%
\tikzset{cs/angle/.store in=\tikz@cs@angle}%
\tikzset{cs/x radius/.store in=\tikz@cs@xradius}%
\tikzset{cs/y radius/.store in=\tikz@cs@yradius}%
\tikzset{cs/radius/.style={/tikz/cs/x radius={#1},/tikz/cs/y radius={#1}}}%
\tikzset{cs/name/.store in=\tikz@cs@node}%
\tikzset{cs/anchor/.store in=\tikz@cs@anchor}%





\def\tikz@last@position{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
\def\tikz@last@position@saved{\pgfqpoint{\tikz@lastxsaved}{\tikz@lastysaved}}%

\def\tikz@make@last@position#1{%
  \pgf@process{#1}%
  \tikz@lastx=\pgf@x\relax%
  \tikz@lasty=\pgf@y\relax%
  \iftikz@updatecurrent%
    \tikz@lastxsaved=\pgf@x\relax%
    \tikz@lastysaved=\pgf@y\relax%
  \fi%
  \iftikz@updatenext
    \tikz@updatecurrenttrue%
  \fi
}%

\newif\iftikz@updatecurrent
\tikz@updatecurrenttrue
\newif\iftikz@updatenext
\tikz@updatenexttrue




\def\tikz@scan@one@point#1{%
  \let\tikz@to@use@whom=\tikz@to@use@last@coordinate%
  \tikz@shapeborderfalse%
  \pgfutil@ifnextchar+{\tikz@scan@relative#1}{\tikz@scan@absolute#1}}%
\def\tikz@scan@absolute#1{%
  \pgfutil@ifnextchar({\tikz@scan@@absolute#1}%
  {%
    \advance\tikz@expandcount by -1
    \ifnum\tikz@expandcount<0\relax%
      \let\pgfutil@next=\tikz@@scangiveup%
    \else%
      \let\pgfutil@next=\tikz@@scanexpand%
    \fi%
    \pgfutil@next{#1}%
  }%
}%
\def\tikz@@scanexpand#1{\expandafter\tikz@scan@one@point\expandafter#1}%
\def\tikz@@scangiveup#1{\tikzerror{Cannot parse this coordinate}#1{\pgfpointorigin}}%
\def\tikz@scan@@absolute#1({%
  \pgfutil@ifnextchar[%
  {\def\tikz@scan@point@recall{#1}\tikz@scan@options}%
  {\tikz@@@scan@@absolute#1(}%
}%

\def\tikz@scan@options[#1]#2{%
  \def\tikz@scan@point@options{#1}%
  \tikz@@@scan@@absolute\tikz@scan@handle@options(#2%
}%

\def\tikz@scan@handle@options#1{%
  {%
    \pgftransformreset%
    \let\tikz@transform=\pgfutil@empty%
    \expandafter\tikzset\expandafter{\tikz@scan@point@options}%
    \tikz@transform%
    \pgf@process{\pgfpointtransformed{#1}}%
    \xdef\tikz@marshal{\expandafter\noexpand\tikz@scan@point@recall{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
  }%
  \tikz@marshal%
}%

\def\tikz@@@scan@@absolute#1({%
  \pgfutil@ifnextchar{$}%
  {\tikz@parse@calculator#1(}
  {\tikz@scan@no@calculator#1(}%
}%
\def\tikz@scan@no@calculator#1(#2){%
  \edef\tikz@scan@point@coordinate{(#2)}%
  \expandafter\tikz@@scan@@no@calculator\expandafter#1\tikz@scan@point@coordinate%
}%
\def\tikz@@scan@@no@calculator#1(#2){%
  \pgfutil@in@{cs:}{#2}%
  \ifpgfutil@in@%
    \let\pgfutil@next\tikz@parse@coordinatesystem%
  \else%
    \pgfutil@in@{intersection }{#2}%
    \ifpgfutil@in@%
      \let\pgfutil@next\tikz@parse@intersection%
    \else%
      \pgfutil@in@|{#2}%
      \ifpgfutil@in@
        \pgfutil@in@{-|}{#2}%
        \ifpgfutil@in@
          \let\pgfutil@next\tikz@parse@hv%
        \else%
          \let\pgfutil@next\tikz@parse@vh%
        \fi%
      \else%
        \pgfutil@in@:{#2}%
        \ifpgfutil@in@
          \let\pgfutil@next\tikz@parse@polar%
        \else%
          \pgfutil@in@,{#2}%
          \ifpgfutil@in@%
            \let\pgfutil@next\tikz@parse@regular%
          \else%
            \let\pgfutil@next\tikz@parse@node%
          \fi%
        \fi%
      \fi%
    \fi%
  \fi%
  \pgfutil@next#1(#2)%
}%

\def\tikz@parse@calculator#1($#2$){%
  \tikzerror{You need to say \string\usetikzlibrary{calc} for coordinate calculation}%
  #1{\pgfpointorigin}%
}%

\def\tikz@parse@coordinatesystem#1(#2 cs:#3){%
  \let\tikz@return@coordinate=\pgfpointorigin%
  \pgfutil@ifundefined{tikz@parse@cs@#2}
  {\tikzerror{Unknown coordinate system '#2'}}
  {\csname tikz@parse@cs@#2\endcsname(#3)}%
  \expandafter#1\expandafter{\tikz@return@coordinate}%
}%


\newif\iftikz@isdimension
\def\tikz@checkunit#1{%
  \pgfmathparse{#1}%
  \let\iftikz@isdimension=\ifpgfmathunitsdeclared%
}%

\def\tikz@parse@polar#1(#2:#3){%
  \pgfutil@ifundefined{tikz@polar@dir@#2}
  {\tikz@@parse@polar#1({#2}:{#3})}
  {\tikz@@parse@polar#1(\csname tikz@polar@dir@#2\endcsname:{#3})}%
}%
\def\tikz@@parse@polar#1(#2:#3){%
  \pgfutil@in@{ and }{#3}%
  \ifpgfutil@in@%
    \edef\tikz@args{({#2}:#3)}%
  \else%
    \edef\tikz@args{({#2}:{#3} and {#3})}%
  \fi%
  \expandafter\tikz@@@parse@polar\expandafter#1\tikz@args%
}%
\def\tikz@@@parse@polar#1(#2:#3 and #4){%
  \tikz@checkunit{#3}%
  \iftikz@isdimension%
    \tikz@checkunit{#4}%
    \iftikz@isdimension%
      \def\tikz@next{#1{\pgfpointpolar{#2}{#3 and #4}}}%
    \else%
      \tikzerror{You cannot mix dimension and dimensionless values for polar coordinates}
      \def\tikz@next{#1{\pgfpointorigin}}%
    \fi%
  \else%
    \tikz@checkunit{#4}%
    \iftikz@isdimension%
      \tikzerror{You cannot mix dimension and dimensionless values for polar coordinates}
      \def\tikz@next{#1{\pgfpointorigin}}%
    \else%
      \def\tikz@next{#1{\pgfpointpolarxy{#2}{#3 and #4}}}%
    \fi%
  \fi%
  \tikz@next%
}%
\def\tikz@polar@dir@up{90}%
\def\tikz@polar@dir@down{-90}%
\def\tikz@polar@dir@left{180}%
\def\tikz@polar@dir@right{0}%
\def\tikz@polar@dir@north{90}%
\def\tikz@polar@dir@south{-90}%
\def\tikz@polar@dir@east{0}%
\def\tikz@polar@dir@west{180}%
\expandafter\def\csname tikz@polar@dir@north east\endcsname{45}%
\expandafter\def\csname tikz@polar@dir@north west\endcsname{135}%
\expandafter\def\csname tikz@polar@dir@south east\endcsname{-45}%
\expandafter\def\csname tikz@polar@dir@south west\endcsname{-135}%


\def\tikz@parse@regular#1(#2,{%
    \pgfutil@ifnextchar\bgroup{\tikz@@parse@regular#1{#2}}{\tikz@@@parse@regular#1{#2}}%
}%
\def\tikz@@parse@regular#1#2#3{%
    \pgfutil@ifnextchar[{%
        \tikz@@@parse@regular#1{#2}{#3}}%
      {\tikz@@@parse@regular#1{#2}{{#3}}}}%

\def\tikz@@@parse@regular#1#2#3){%
  \pgfutil@in@,{#3}%
  \ifpgfutil@in@%
    \tikz@parse@splitxyz{#1}{#2}#3,%
  \else%
    \tikz@checkunit{#2}%
    \iftikz@isdimension%
      \tikz@checkunit{#3}%
      \iftikz@isdimension%
        \def\pgfutil@next{#1{\pgfpoint{#2}{#3}}}%
      \else%
        \def\pgfutil@next{#1{\pgfpointadd{\pgfpoint{#2}{0pt}}{\pgfpointxy{0}{#3}}}}%
      \fi%
    \else%
      \tikz@checkunit{#3}%
      \iftikz@isdimension%
        \def\pgfutil@next{#1{\pgfpointadd{\pgfpoint{0pt}{#3}}{\pgfpointxy{#2}{0}}}}%
      \else%
        \def\pgfutil@next{#1{\pgfpointxy{#2}{#3}}}%
      \fi%
    \fi%
  \fi%
  \pgfutil@next%
}%

\def\tikz@parse@splitxyz#1#2#3,#4,{%
  \def\pgfutil@next{#1{\pgfpointxyz{#2}{#3}{#4}}}%
}%

\def\tikz@coordinate@text{coordinate}%

\def\tikz@parse@node#1(#2){%
  \pgfutil@in@.{#2}%
  \ifpgfutil@in@
    \tikz@calc@anchor#2\tikz@stop%
  \else%
    \tikz@calc@anchor#2.center\tikz@stop%
    \ifcsname pgf@sh@ns@\tikz@pp@name{#2}\endcsname
      \expandafter\ifx\csname pgf@sh@ns@\tikz@pp@name{#2}\endcsname\tikz@coordinate@text%
      \else
        \tikz@shapebordertrue%
        \def\tikz@shapeborder@name{\tikz@pp@name{#2}}%
      \fi%
    \else\ifcsname pgf@sh@ns@#2\endcsname
      \expandafter\ifx\csname pgf@sh@ns@#2\endcsname\tikz@coordinate@text%
      \else
        \tikz@shapebordertrue%
        \def\tikz@shapeborder@name{#2}%
      \fi%
    \fi\fi
  \fi%
  \edef\tikz@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
  \tikz@marshal%
}%

\def\tikz@calc@anchor#1.#2\tikz@stop{%
  \ifcsname pgf@sh@ns@\tikz@pp@name{#1}\endcsname%
    \pgfpointanchor{\tikz@pp@name{#1}}{#2}%
  \else
    \pgfpointanchor{#1}{#2}%
  \fi
}%


\def\tikz@parse@hv#1(#2){%
  \pgfutil@in@{ -| }{#2}%
  \ifpgfutil@in@%
    \let\tikz@next=\tikz@parse@hvboth%
  \else%
    \pgfutil@in@{ -|}{#2}%
    \ifpgfutil@in@%
      \let\tikz@next=\tikz@parse@hvleft%
    \else%
      \pgfutil@in@{-| }{#2}%
      \ifpgfutil@in@%
        \let\tikz@next=\tikz@parse@hvright%
      \else%
        \let\tikz@next=\tikz@parse@hvdone%
      \fi%
    \fi%
  \fi%
  \tikz@next#1(#2)}%
\def\tikz@parse@hvboth#1(#2 -| #3){\tikz@parse@vhdone#1({#3}|-{#2})}%
\def\tikz@parse@hvleft#1(#2 -|#3){\tikz@parse@vhdone#1({#3}|-{#2})}%
\def\tikz@parse@hvright#1(#2-| #3){\tikz@parse@vhdone#1({#3}|-{#2})}%
\def\tikz@parse@hvdone#1(#2-|#3){\tikz@parse@vhdone#1({#3}|-{#2})}%

\def\tikz@parse@vh#1(#2){%
  \pgfutil@in@{ |- }{#2}%
  \ifpgfutil@in@%
    \let\tikz@next=\tikz@parse@vhboth%
  \else%
    \pgfutil@in@{ |-}{#2}%
    \ifpgfutil@in@%
      \let\tikz@next=\tikz@parse@vhleft%
    \else%
      \pgfutil@in@{|- }{#2}%
      \ifpgfutil@in@%
        \let\tikz@next=\tikz@parse@vhright%
      \else%
        \let\tikz@next=\tikz@parse@vhdone%
      \fi%
    \fi%
  \fi%
  \tikz@next#1(#2)}%
\def\tikz@parse@vhboth#1(#2 |- #3){\tikz@parse@vhdone#1({#2}|-{#3})}%
\def\tikz@parse@vhleft#1(#2 |-#3){\tikz@parse@vhdone#1({#2}|-{#3})}%
\def\tikz@parse@vhright#1(#2|- #3){\tikz@parse@vhdone#1({#2}|-{#3})}%
\def\tikz@parse@vhdone#1(#2|-#3){%
  {%
    \tikz@@@scan@@absolute\tikz@parse@vh@mid(#2)%
    \tikz@@@scan@@absolute\tikz@parse@vh@end(#3)%
    \xdef\tikz@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}}%
  }%
  \tikz@marshal%
}%
\def\tikz@parse@vh@mid#1{\pgf@process{#1}\pgf@xa=\pgf@x}%
\def\tikz@parse@vh@end#1{\pgf@process{#1}\pgf@ya=\pgf@y}%

\def\tikz@parse@intersection#1(intersection{%
  \pgfutil@ifnextchar o{%
    \tikz@parse@main@intersection#1 1%
  }{%
    \tikz@parse@main@intersection#1%
  }%
}%
\def\tikz@parse@main@intersection#1#2of #3 and #4){%
  \tikzset{cs/solution={#2}}%
  \pgfutil@in@{--}{#3}%
  \ifpgfutil@in@%
    \tikz@reparse@line{first}#3\pgf@stop%
  \else%
    \tikzset{cs/first node={#3}}%
  \fi%
  \pgfutil@in@{--}{#4}%
  \ifpgfutil@in@%
    \tikz@reparse@line{second}#4\pgf@stop%
  \else%
    \tikzset{cs/second node={#4}}%
  \fi%
  \tikz@parse@cs@intersection()%
  \edef\pgf@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
  \pgf@marshal%
}%
\def\tikz@reparse@line#1#2--#3\pgf@stop{%
  \tikzset{cs/#1 line={(#2)--(#3)}}%
}%


\def\tikz@parse@intersection@a#1{\pgf@process{#1}\pgf@xa=\pgf@x\pgf@ya=\pgf@y}%
\def\tikz@parse@intersection@b#1{\pgf@process{#1}\pgf@xb=\pgf@x\pgf@yb=\pgf@y}%

\def\tikz@scan@relative#1+{%
  \pgfutil@ifnextchar+{\tikz@scan@plusplus#1}{\tikz@scan@oneplus#1}}%

\def\tikz@scan@plusplus#1+{%
  \def\tikz@doafter{#1}%
  \tikz@scan@absolute\tikz@add%
}%
\def\tikz@add#1{%
  \tikz@doafter{\pgfpointadd{#1}{\tikz@last@position@saved}}%
}%
\def\tikz@scan@oneplus#1{%
  \def\tikz@doafter{#1}%
  \tikz@updatecurrentfalse%
  \tikz@scan@absolute\tikz@add%
}%




\let\tikz@enable@node@quotes\relax
\let\tikz@enable@edge@quotes\relax
\let\tikz@enable@pic@quotes\relax





\def\usetikzlibrary{\pgfutil@ifnextchar[{\use@tikzlibrary}{\use@@tikzlibrary}}%
\def\use@tikzlibrary[#1]{\use@@tikzlibrary{#1}}%
\def\use@@tikzlibrary#1{%
  \edef\pgf@list{#1}%
  \pgfutil@for\pgf@temp:=\pgf@list\do{%
    \expandafter\pgfkeys@spdef\expandafter\pgf@temp\expandafter{\pgf@temp}%
    \ifx\pgf@temp\pgfutil@empty
    \else
      \expandafter\ifx\csname tikz@library@\pgf@temp @loaded\endcsname\relax%
      \expandafter\global\expandafter\let\csname tikz@library@\pgf@temp @loaded\endcsname=\pgfutil@empty%
      \expandafter\edef\csname tikz@library@#1@atcode\endcsname{\the\catcode`\@}
      \expandafter\edef\csname tikz@library@#1@barcode\endcsname{\the\catcode`\|}
      \expandafter\edef\csname tikz@library@#1@dollarcode\endcsname{\the\catcode`\$}
      \catcode`\@=11
      \catcode`\|=12
      \catcode`\$=3
      \pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{
        \pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{%
          \expandafter\usepgflibrary\expandafter{\pgf@temp}%
        }{%
          \tikzerror{I did not find the tikz library
            '\pgf@temp'. I looked for files named
            tikzlibrary\pgf@temp.code.tex and
            pgflibrary\pgf@temp.code.tex, but neither
            could be found in the current texmf trees.}
        }}%
      \catcode`\@=\csname tikz@library@#1@atcode\endcsname
      \catcode`\|=\csname tikz@library@#1@barcode\endcsname
      \catcode`\$=\csname tikz@library@#1@dollarcode\endcsname
      \fi%
    \fi
  }%
}%



\usetikzlibrary{topaths}%




\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/experimental/tikzlibrarygraphdrawing.evolving.code.tex ====

\usepgflibrary{graphdrawing}

\usegdlibrary{evolving}

\newcount\mycount
\tikzgraphsset{
  nodes = {supernode/.expanded=\tikzgraphnodename},
  when/.code = {\pgfparsetime{#1}\mycount=\pgftimeresult pt\tikzgraphsset{name/.expanded=\the\mycount,snapshot/.expanded=\the\mycount}}
}


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/experimental/tikzlibrarygraphdrawing.evolving.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.circular.code.tex ====

\ProvidesFileRCS{pgflibrarygraphdrawing.circular.code.tex}


\usegdlibrary{circular}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.circular.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.code.tex ====

\ProvidesFileRCS{pgflibrarygraphdrawing.code.tex}




\ifx\directlua\relax%
  \pgferror{You need to run LuaTeX to use the graph drawing library}
  \expandafter\endinput
\fi
\ifx\directlua\undefined%
  \pgferror{You need to run LuaTeX to use the graph drawing library}
  \expandafter\endinput
\fi





\def\pgfgdset{\pgfqkeys{/graph drawing}}%



\def\pgfgd@callbackkey#1{%
  \pgf@gd@setup@forwards{#1}%
  \pgfutil@g@addto@macro\pgf@gd@forwards@list{\pgf@gd@setup@forwards{#1}}%
}%
\def\pgf@gd@setup@forwards#1{%
  \let\pgf@temp\pgfutil@empty
  \foreach \pgf@gd@path in \pgf@gd@forwarding@list {%
    \ifx\pgf@gd@path\pgfutil@empty\else%
      \expandafter\pgfutil@g@addto@macro%
      \expandafter\pgf@temp\expandafter{%
        \expandafter\pgfkeys\expandafter{\pgf@gd@path#1/.forward to=/graph drawing/#1}}%
    \fi%
  }%
  \pgf@temp
}%

\let\pgf@gd@forwards@list\pgfutil@empty



\def\pgfgdappendtoforwardinglist#1{%
  \let\pgf@gd@forwarding@list@orig\pgf@gd@forwarding@list
  \def\pgf@gd@forwarding@list{#1}%
  \pgf@gd@forwards@list%
  \expandafter\def\expandafter\pgf@gd@forwarding@list\expandafter{\pgf@gd@forwarding@list@orig,#1}%
}%
\let\pgf@gd@forwarding@list\pgfutil@empty






\def\pgfgdcallbackdeclareparameter#1#2{%
  \pgfkeysdef{/graph drawing/#1}{\pgf@gd@handle@parameter{#1}{#2}{##1}}%
  \pgfgd@callbackkey{#1}%
}%
\def\pgf@gd@handle@parameter#1#2#3{%
  \def\pgf@temp{#3}%
  \ifx\pgf@temp\pgfkeysnovalue@text%
    \let\pgfgdresult\pgfgd@niltext%
  \else%
    \pgfkeys{/graph drawing/conversions/#2={#3}}%
  \fi%
  \advance\pgf@gd@parameter@stack@height by1\relax%
  \pgf@gd@parameter@stack@height\directlua{%
    local new, main = pgf.gd.interface.InterfaceToDisplay.pushOption('\pgfutil@luaescapestring{#1}',\pgfgdresult,\the\pgf@gd@parameter@stack@height)
    tex.print(new..'\pgfutil@luaescapestring{\relax}')
    if main then
      tex.print('\pgfutil@luaescapestring{\noexpand\pgfgdtriggerrequest}')
    end}%
}%
\newcount\pgf@gd@parameter@stack@height

\def\pgfgdtriggerrequest{\pgfgdset{@request scope and layout}}%



\pgfgdset{
  conversions/string/.code=\def\pgfgdresult{'\pgfutil@luaescapestring{\detokenize{#1}}'},
  conversions/raw/.code=\def\pgfgdresult{#1},
  conversions/nil/.code=\let\pgfgdresult\pgfgd@niltext,
  conversions/boolean/.code=\def\pgf@test{#1}\ifx\pgf@test\pgf@truetext\def\pgfgdresult{true}\else\ifx\pgf@test\pgfkeysnovalue@text\def\pgfgdresult{true}\else\def\pgfgdresult{false}\fi\fi,
  conversions/number/.code=\pgfmathparse{#1}\let\pgfgdresult\pgfmathresult,
  conversions/length/.code=\pgfmathparse{#1}\let\pgfgdresult\pgfmathresult,
  conversions/time/.code=\pgfparsetime{#1}\let\pgfgdresult\pgftimeresult,
  conversions/direction/.code=\pgf@lib@gd@grow@dir{#1}\let\pgfgdresult\pgfmathresult,
  conversions/canvas coordinate/.code args={(#1pt,#2pt)}{\edef\pgfgdresult{pgf.gd.model.Coordinate.new(#1,#2)}},
  conversions/coordinate/.code args={(#1pt,#2pt)}{\edef\pgfgdresult{{#1,#2}}}
}%
\def\pgf@truetext{true}%
\def\pgfgd@niltext{nil}%

\def\pgf@lib@gd@grow@dir#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgf@gd@lib@active@bar%
    \def\pgfmathresult{-90}
  \else%
    \ifcsname pgf@orient@direction@#1\endcsname%
      \expandafter\let\expandafter\pgfmathresult\csname pgf@orient@direction@#1\endcsname%
    \else
      \pgfmathparse{#1}%
    \fi
  \fi
}%

\def\pgf@orient@direction@down{-90}%
\def\pgf@orient@direction@up{90}%
\def\pgf@orient@direction@left{180}%
\def\pgf@orient@direction@right{0}%

\def\pgf@orient@direction@south{-90}%
\def\pgf@orient@direction@north{90}%
\def\pgf@orient@direction@west{180}%
\def\pgf@orient@direction@east{0}%

\expandafter\def\csname pgf@orient@direction@north east\endcsname{45}%
\expandafter\def\csname pgf@orient@direction@north west\endcsname{135}%
\expandafter\def\csname pgf@orient@direction@south east\endcsname{-45}%
\expandafter\def\csname pgf@orient@direction@south west\endcsname{-135}%

\expandafter\def\csname pgf@orient@direction@-\endcsname{0}%
\expandafter\def\csname pgf@orient@direction@|\endcsname{-90}%

{%
  \catcode`\|=13
  \gdef\pgf@gd@lib@active@bar{|}%
}%






\def\pgfgdcallbackrendercollectionkindstart#1#2{%
  \ifnum#2<0\relax
    \setbox\pgf@gd@prekind@box=\hbox\bgroup%
    \unhbox\pgf@gd@prekind@box%
  \else%
    \setbox\pgf@gd@postkind@box=\hbox\bgroup%
    \unhbox\pgf@gd@postkind@box%
  \fi%
  \pgfgdset{/graph drawing/#1/begin rendering/.try}%
}%


\def\pgfgdcallbackrendercollectionkindstop#1#2{%
  \pgfgdset{/graph drawing/#1/end rendering/.try}%
  \egroup %
}%




\def\pgfgdcallbackrendercollection#1#2{
  \pgfgdset{/graph drawing/#1/render/.try={#2}}
}%









\def\pgfgdevent#1#2{%
  \directlua{pgf.gd.interface.InterfaceToDisplay.createEvent('\pgfutil@luaescapestring{#1}', '\pgfutil@luaescapestring{#2}')}%
}%



\def\pgfgdbegineventgroup#1{%
  \pgfgdevent{begin}{#1}%
}%


\def\pgfgdendeventgroup{%
  \pgfgdevent{end}{}%
}%



\def\pgfgdeventgroup#1{%
  \pgfgdbegineventgroup{#1}%
  \aftergroup\pgfgdendeventgroup%
}%








\def\pgf@gd@positionnode@callback{%
  {%
    \pgfmathsetmacro{\pgf@gd@node@minx}{\pgfpositionnodelaterminx}%
    \pgfmathsetmacro{\pgf@gd@node@miny}{\pgfpositionnodelaterminy}%
    \pgfmathsetmacro{\pgf@gd@node@maxx}{\pgfpositionnodelatermaxx}%
    \pgfmathsetmacro{\pgf@gd@node@maxy}{\pgfpositionnodelatermaxy}%
    \directlua{pgf.temp = require 'pgf.gd.model.Path'.new ()}%
    \let\pgfsyssoftpath@movetotoken\pgf@gd@movetotoken%
    \let\pgfsyssoftpath@linetotoken\pgf@gd@linetotoken%
    \let\pgfsyssoftpath@rectcornertoken\pgf@gd@rectcornertoken%
    \let\pgfsyssoftpath@curvetosupportatoken\pgf@gd@curvetosupportatoken%
    \let\pgfsyssoftpath@closepathtoken\pgf@gd@closepathtoken%
    \pgfpositionnodelaterpath%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    {%
      \pgf@process{\pgfpointanchor{\pgfpositionnodelatername}{center}}
      \pgfsettransform{\csname pgf@sh@nt@\pgfpositionnodelatername\endcsname}%
      \pgf@pos@transform{\pgf@x}{\pgf@y}%
      \global\pgf@x=\pgf@x%
      \global\pgf@y=\pgf@y%
    }%
    \directlua{
      pgf.gd.interface.InterfaceToDisplay.createVertex(
        string.sub('\pgfutil@luaescapestring{\pgfpositionnodelatername}',30), %
        '\pgfutil@luaescapestring{\csname pgf@sh@ns@\pgfpositionnodelatername\endcsname}',
        pgf.temp:pad((\pgf@sys@tonumber\pgf@xa+\pgf@sys@tonumber\pgf@ya)/2), %
        \the\pgf@gd@parameter@stack@height, %
        {%
          x_min = \pgf@gd@node@minx,
          y_min = \pgf@gd@node@miny,
          x_max = \pgf@gd@node@maxx,
          y_max = \pgf@gd@node@maxy,
          tex_box_number = \pgfpositionnodelaterbox
        },
        {%
          center = require 'pgf.gd.model.Coordinate'.new(\pgf@sys@tonumber\pgf@x,\pgf@sys@tonumber\pgf@y)
        }
      )
      pgf.temp = nil
    }
  }%
}%


\def\pgf@gd@movetotoken#1#2{\directlua{pgf.temp:appendMoveto(\Pgf@geT#1,\Pgf@geT#2)}}%
\def\pgf@gd@linetotoken#1#2{\directlua{pgf.temp:appendLineto(\Pgf@geT#1,\Pgf@geT#2)}}%
\def\pgf@gd@rectcornertoken#1#2#3#4#5{%
  \directlua{%
    local x,y,dx,dy=\Pgf@geT#1,\Pgf@geT#2,\Pgf@geT#4,\Pgf@geT#5
    pgf.temp:appendMoveto(x,y)
    pgf.temp:appendLineto(x,y+dy)
    pgf.temp:appendLineto(x+dx,y+dy)
    pgf.temp:appendLineto(x+dx,y)
    pgf.temp:appendClosepath()%
  }%
}%
\def\pgf@gd@curvetosupportatoken#1#2#3#4#5#6#7#8{\directlua{pgf.temp:appendCurveto(\Pgf@geT#1,\Pgf@geT#2,\Pgf@geT#4,\Pgf@geT#5,\Pgf@geT#7,\Pgf@geT#8)}}%
\def\pgf@gd@closepathtoken#1#2{\directlua{pgf.temp:appendClosepath()}}%



\def\pgfgdsetlatenodeoption#1{%
  \directlua{
    pgf.gd.interface.InterfaceToDisplay.addToVertexOptions('\pgfutil@luaescapestring{#1}',\the\pgf@gd@parameter@stack@height)
  }
}%




\def\pgfgdcallbackrendernode#1#2#3#4#5#6#7#8#9{%
  {%
    \def\pgfpositionnodelatername{#1}
    \def\pgfpositionnodelaterminx{#2}
    \def\pgfpositionnodelatermaxx{#3}
    \def\pgfpositionnodelaterminy{#4}
    \def\pgfpositionnodelatermaxy{#5}
    \directlua{pgf.gd.interface.InterfaceCore.binding:retrieveBox(#8,\pgfpositionnodelaterbox)}
    \def\pgf@temp{#9}%
    \ifx\pgf@temp\pgfutil@empty%
      \pgfpositionnodenow{\pgfqpoint{#6}{#7}}%
    \else%
      \pgfset{every graphdrawing animation/.try}%
      \pgfset{every graphdrawing node animation/.try}%
      #9%
      \pgfuseid{pgf@gd}%
      \pgfidscope%
        \pgfpositionnodenow{\pgfqpoint{#6}{#7}}%
      \endpgfidscope%
    \fi%
  }%
}%

\ifx\pgfanimateattribute\pgfutil@undefined
  \def\pgfanimateattribute#1#2{\tikzerror{You need to say \string\usetikzlibrary{animations} for animated graphs}}%
\fi


\def\pgfgdedge#1#2#3#4#5{%
  \begingroup%
    \setbox0=\hbox{{%
        \pgfinterruptpath%
          \pgfgdprepareedge%
          \pgfkeys{#4}%
          \toks0={#4}%
          \toks1={#5}%
          \directlua{
            pgf.gd.interface.InterfaceToDisplay.createEdge(
            '\pgfutil@luaescapestring{#1}','\pgfutil@luaescapestring{#2}','\pgfutil@luaescapestring{#3}',
            \the\pgf@gd@parameter@stack@height,
            { pgf_options = '\pgfutil@luaescapestring{\the\toks0}',
              pgf_edge_nodes = '\pgfutil@luaescapestring{\the\toks1}',
            })
          }%
        \endpgfinterruptpath%
      }}%
  \endgroup%
}%

\let\pgfgdprepareedge=\pgfutil@empty
\def\pgfgdaddprepareedgehook#1{\expandafter\def\expandafter\pgfgdprepareedge\expandafter{\pgfgdprepareedge#1}}%


\newif\ifpgf@gd@nodes@behind@edges




\def\pgfgdsetedgecallback#1{\let\pgfgdcallbackedge=#1}%

\def\pgfgddefaultedgecallback#1#2#3#4#5#6#7#8{%
  {%
    \def\pgf@temp{#8}%
    \ifx\pgf@temp\pgfutil@empty%
    \else%
      \pgfset{every graphdrawing animation/.try}%
      \pgfset{every graphdrawing edge animation/.try}%
      #8%
      \pgfuseid{pgf@gd}%
      \pgfidscope%
    \fi%
    \pgfscope
      \pgfpathmoveto{
        \pgfutil@in@.{#1}%
        \ifpgfutil@in@
          \pgf@gd@unravel#1\relax%
        \else
          \pgfpointshapeborder{#1}{\pgfpointanchor{#2}{center}}
        \fi
      }
      \pgfpathlineto{
        \pgfutil@in@.{#2}%
        \ifpgfutil@in@
          \pgf@gd@unravel#2\relax%
        \else
          \pgfpointshapeborder{#2}{\pgfpointanchor{#1}{center}}
        \fi
      }
      \pgfusepath{stroke}
    \endpgfscope
    \ifx\pgf@temp\pgfutil@empty%
    \else%
      \endpgfidscope%
    \fi%
  }
}%

\pgfgdsetedgecallback{\pgfgddefaultedgecallback}%

\def\pgf@gd@unravel#1.#2\relax{%
  \pgfpointanchor{#1}{#2}%
}%





\def\pgfgdcallbackbeginshipout{%
  \pgfscope%
    \catcode`\@=11\relax%
    \setbox\pgf@gd@prekind@box=\box\pgfutil@voidb@x%
    \setbox\pgf@gd@postkind@box=\box\pgfutil@voidb@x%
}%
\def\pgfgdcallbackendshipout{%
    \box\pgf@gd@prekind@box%
    \ifpgf@gd@nodes@behind@edges%
      \box\pgf@gd@node@box%
      \box\pgf@gd@edge@box%
    \else%
      \box\pgf@gd@edge@box%
      \box\pgf@gd@node@box%
    \fi%
    \box\pgf@gd@postkind@box%
  \endpgfscope
}%

\newbox\pgf@gd@node@box
\newbox\pgf@gd@edge@box
\newbox\pgf@gd@prekind@box
\newbox\pgf@gd@postkind@box

\def\pgfgdcallbackbeginnodeshipout{%
  \setbox\pgf@gd@node@box=\hbox\bgroup%
}%
\def\pgfgdcallbackendnodeshipout{%
  \egroup%
}%

\def\pgfgdcallbackbeginedgeshipout{%
  \setbox\pgf@gd@edge@box=\hbox\bgroup%
}%

\def\pgfgdcallbackendedgeshipout{%
  \egroup
}%





\def\pgfgdcallbackcreatevertex#1#2#3#4{%
  {
    \pgfkeys{#3}
    \pgfnode{#2}{\pgfkeysvalueof{/graph drawing/generated
        node/anchor}}{#4}{#1}{\pgfkeysvalueof{/graph drawing/generated
        node/use path}}
  }
}%

\pgfkeys{
  /graph drawing/generated node/anchor/.initial=center,
  /graph drawing/generated node/use path/.initial=\pgfusepath{}
}%




\def\pgfgdbeginlayout{
  \begingroup
    \pgfgdlayoutscopeactivetrue
    \advance\pgf@gd@parameter@stack@height by1\relax%
    \directlua{pgf.gd.interface.InterfaceToDisplay.pushLayout(\the\pgf@gd@parameter@stack@height)}
}%

\def\pgfgdendlayout{
  \endgroup%
}%





\def\pgfgdsubgraphnode#1#2#3{%
  \advance\pgf@gd@parameter@stack@height by1\relax%
  {%
    \toks0={#2}%
    \toks1={#3}%
    \directlua{pgf.gd.interface.InterfaceToDisplay.pushSubgraphVertex%
      ('\pgfutil@luaescapestring{#1}',\the\pgf@gd@parameter@stack@height,
      {
        shape = 'rectangle', %
        pgf_options = '\pgfutil@luaescapestring{\the\toks0}',
        text = '\pgfutil@luaescapestring{\the\toks1}',
      })
    }%
  }
}%

\def\pgfgdsubgraphnodecontents#1{%
  \hbox to \pgfkeysvalueof{/graph drawing/subgraph bounding box width}{%
    \vrule width0pt height\pgfkeysvalueof{/graph drawing/subgraph bounding box height}\hfil}%
}%

\pgfgdset{
  subgraph point cloud/.initial=,
  subgraph bounding box width/.initial=,
  subgraph bounding box height/.initial=,
}%



\pgfgdset{@request scope and layout/.code=\pgfgd@requestcallback{\pgfgdbeginrequest}{\pgfgdendrequest}}%

\def\pgfgd@requestcallback#1#2{%
  #1\def\pgf@gd@after@request{#2\egroup}\bgroup\aftergroup\pgf@gd@after@request%
}%

\def\pgfgdbeginrequest{%
  \ifpgfgdlayoutscopeactive%
  \else%
    \expandafter\pgfgdbeginscope%
  \fi%
      \pgfgdbeginlayout%
}%
\def\pgfgdendrequest{%
      \pgfgdendlayout%
  \ifpgfgdlayoutscopeactive%
  \else%
    \expandafter\pgfgdendscope%
  \fi%
}%
\newif\ifpgfgdlayoutscopeactive



\def\pgfgdsetrequestcallback#1{\let\pgfgd@requestcallback#1}%





\newif\ifpgfgdgraphdrawingscopeactive



\def\pgfgdbeginscope{%
  \begingroup %
    \directlua{
      pgf.gd.interface.InterfaceToDisplay.beginGraphDrawingScope(\the\pgf@gd@parameter@stack@height)
    }%
    \begingroup %
      \pgfgdgraphdrawingscopeactivetrue
      \pgfpositionnodelater{\pgf@gd@positionnode@callback}
      \pgfgd@latecallback%
      \pgftransformreset
}%



\newif\ifpgfgdresumecoroutine



\def\pgfgdendscope{%
      \pgfgdresumecoroutinefalse%
      \directlua{
        pgf.gd.interface.InterfaceToDisplay.runGraphDrawingAlgorithm()
      }%
      \pgfutil@loop%
      \ifpgfgdresumecoroutine%
        \pgfgdresumecoroutinefalse%
        \directlua{
          pgf.gd.interface.InterfaceToDisplay.resumeGraphDrawingCoroutine()
        }%
      \pgfutil@repeat%
    \endgroup%
    \directlua{pgf.gd.interface.InterfaceToDisplay.renderGraph()}%
    \directlua{pgf.gd.interface.InterfaceToDisplay.endGraphDrawingScope()}%
  \endgroup%
}%







\def\pgfgdaddspecificationhook#1{
  \expandafter\def\expandafter\pgfgd@latecallback\expandafter{\pgfgd@latecallback#1}
}%
\let\pgfgd@latecallback\pgfutil@empty










\def\usegdlibrary{\pgfutil@ifnextchar[{\use@gdlibrary}{\use@@gdlibrary}}%
\def\use@gdlibrary[#1]{\use@@gdlibrary{#1}}%
\def\use@@gdlibrary#1{%
  \edef\pgf@list{#1}%
  \pgfutil@for\pgf@temp:=\pgf@list\do{%
    \expandafter\pgfkeys@spdef\expandafter\pgf@temp\expandafter{\pgf@temp}%
    \ifx\pgf@temp\pgfutil@empty
    \else
      \directlua{if not pgf_lookup_and_require('\pgf@temp') then
        tex.print('\pgfutil@luaescapestring{\noexpand\pgferror{Graph drawing library '\pgf@temp' not found}}')
      end}
    \fi
  }
}%

{%
\catcode`\%=11
\directlua{
    function pgf_lookup_and_require(name)
        local sep = package.config:sub(1,1)
        local function lookup(name)
            local sub = name:gsub('%.',sep)
            local find_file = context and
                resolvers.findfile or
                kpse.find_file
            if find_file(sub, 'lua') then
                require(name)
            elseif find_file(sub, 'clua') then
                collectgarbage('stop')
                require(name)
                collectgarbage('restart')
            else
                return false
            end
            return true
        end
        return
            lookup('pgf.gd.' .. name .. '.library') or
            lookup('pgf.gd.' .. name) or
            lookup(name .. '.library') or
            lookup(name)
    end
}
}%


\directlua{
  require 'pgf.gd.interface.InterfaceToDisplay'
  pgf.gd.interface.InterfaceToDisplay.bind(require 'pgf.gd.bindings.BindingToPGF')
}%




\pgfkeys{/graph drawing/nodes behind edges/.append code=\csname pgf@gd@nodes@behind@edges#1\endcsname}%
\pgfkeys{/graph drawing/nodes behind edges/.default=true}%




\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.examples.code.tex ====

\ProvidesFileRCS{pgflibrarygraphdrawing.examples.code.tex}

\usepgflibrary{graphdrawing}%

\usegdlibrary{examples}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.examples.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.force.code.tex ====

\ProvidesFileRCS{pgflibrarygraphdrawing.force.code.tex}



\usepgflibrary{graphdrawing}%

\usegdlibrary{force}%

\endinput




\pgfgdset{
  force based/.cd,
  iterations/.graph parameter=number,
  iterations/.parameter initial=500,
  cooling factor/.graph parameter=number,
  cooling factor/.parameter initial=0.95,
  initial step dimension/.graph parameter=number,
  initial step dimension/.parameter initial=0,
  convergence tolerance/.graph parameter=number,
  convergence tolerance/.parameter initial=0.01,
  spring constant/.graph parameter=number,
  spring constant/.parameter initial=0.01,
  approximate electric forces/.graph parameter=boolean,
  approximate electric forces/.parameter initial=false,
  approximate electric forces/.default=true,
  electric force order/.graph parameter=number,
  electric force order/.parameter initial=1,
  coarsen/.graph parameter=boolean,
  coarsen/.parameter initial=true,
  coarsen/.default=true,
  coarsening/.code=\pgfkeys{
    /graph drawing/force based/coarsening/.cd,
    #1
  },
  coarsening/downsize ratio/.graph parameter=number,
  coarsening/downsize ratio/.parameter initial=0.25,
  coarsening/minimum graph size/.graph parameter=number,
  coarsening/minimum graph size/.parameter initial=2,
  coarsening/collapse independent edges/.graph parameter=boolean,
  coarsening/collapse independent edges/.parameter initial=true,
  coarsening/collapse independent edges/.default=true,
  coarsening/connect independent nodes/.graph parameter=boolean,
  coarsening/connect independent nodes/.parameter initial=false,
  coarsening/connect independent nodes/.default=true,
}%

\pgfgddeclareforwardedkeys{/graph drawing}{
  electric charge/.node parameter=number,
  electric charge/.parameter initial=1,
}


\pgfgddeclarealgorithmkey
  {spring layout}
  {force based}
  {
    algorithm=pgf.gd.force.SpringHu2006
  }


\pgfgddeclarealgorithmkey
  {spring electrical layout}
  {force based}
  {
    algorithm=pgf.gd.force.SpringElectricalHu2006,
    force based/spring constant=0.2,
  }



\pgfgddeclarealgorithmkey
  {spring electrical layout'}
  {force based}
  {
    algorithm=pgf.gd.force.SpringElectricalWalshaw2000,
    force based/spring constant=0.01,
    force based/convergence tolerance=0.001,
  }
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.force.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.layered.code.tex ====

\ProvidesFileRCS{pgflibrarygraphdrawing.layered.code.tex}

\usepgflibrary{graphdrawing}%

\usegdlibrary{layered}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.layered.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.trees.code.tex ====

\ProvidesFileRCS{pgflibrarygraphdrawing.trees.code.tex}


\usepgflibrary{graphdrawing}%
\usepgflibrary{graphdrawing.layered}%

\usegdlibrary{trees}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/pgflibrarygraphdrawing.trees.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/tikzlibrarygraphdrawing.code.tex ====

\ProvidesFileRCS{tikzlibrarygraphdrawing.code.tex}

\usepgflibrary{graphdrawing}%

\def\tikz@lib@ensure@gd@loaded{}%


\tikzset{level distance=1cm, sibling distance=1cm}%


\pgfkeysgetvalue{/graph drawing/node distance/.@cmd}\tikz@lib@gd@node@dist@path
\pgfkeyslet{/graph drawing/node distance/orig/.@cmd}\tikz@lib@gd@node@dist@path

\pgfkeysdef{/graph drawing/node distance}{
  \pgfutil@in@{ and }{#1}%
  \ifpgfutil@in@%
    \tikz@gd@convert@and#1\pgf@stop%
  \else%
    \tikz@gd@convert@and#1 and #1\pgf@stop%
  \fi%
}%
\def\tikz@gd@convert@and#1 and #2\pgf@stop{\pgfkeys{/graph drawing/node distance/orig={#1}}}%





\def\tikz@gd@request@callback#1#2{%
  \tikzset{
    execute at begin scope={
      \tikzset{
        --/.style={arrows=-},
        -!-/.style={draw=none,fill=none},
      }
      \pgfgdsetedgecallback{\pgfgdtikzedgecallback}%
      \pgfgdaddspecificationhook{\tikz@lib@gd@spec@hook}%
      #1
      \let\tikzgdeventcallback\pgfgdevent%
      \let\tikzgdeventgroupcallback\pgfgdeventgroup%
      \let\tikzgdlatenodeoptionacallback\pgfgdsetlatenodeoption%
    },
    execute at end scope={%
      #2%
    }
  }%
}%

\pgfgdsetrequestcallback\tikz@gd@request@callback



\pgfgdappendtoforwardinglist{/tikz/,/tikz/graphs/}%

\def\tikz@lib@gd@spec@hook{%
  \tikzset{
    edge macro=\tikz@gd@plain@edge@macro,
    /tikz/at/.style={/graph drawing/desired at={##1}},
    /tikz/growth function=\relax,
    /tikz/edge from parent macro=\tikz@gd@edge@from@parent@macro,
    /tikz/graphs/new ->/.code n args={4}{\tikz@lib@gd@edge{##1}{##2}{->}{/tikz,##3}{##4}},
    /tikz/graphs/new <-/.code n args={4}{\tikz@lib@gd@edge{##1}{##2}{<-}{/tikz,##3}{##4}},
    /tikz/graphs/new --/.code n args={4}{\tikz@lib@gd@edge{##1}{##2}{--}{/tikz,##3}{##4}},
    /tikz/graphs/new <->/.code n args={4}{\tikz@lib@gd@edge{##1}{##2}{<->}{/tikz,##3}{##4}},
    /tikz/graphs/new -!-/.code n args={4}{\tikz@lib@gd@edge{##1}{##2}{-!-}{/tikz,##3}{##4}},
    /tikz/graphs/placement/compute position/.code=,%
  }
}%

\def\tikz@lib@gd@edge#1#2{%
  \pgfgdedge{\tikz@pp@name{#1}}{\tikz@pp@name{#2}}%
}

\pgfgdaddprepareedgehook{
  \tikz@enable@edge@quotes%
  \let\tikz@transform=\pgfutil@empty%
  \let\tikz@options=\pgfutil@empty%
  \let\tikz@tonodes=\pgfutil@empty%
}%


\tikzset{
  parent anchor/.forward to=/graph drawing/tail anchor,
  child anchor/.forward to=/graph drawing/head anchor
}%

\def\pgfgdtikzedgecallback#1#2#3#4#5#6#7#8{%
  \def\pgf@temp{#8}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \pgfscope%
    \pgfset{every graphdrawing animation/.try}%
    \pgfset{every graphdrawing edge animation/.try}%
    #8%
    \pgfuseid{pgf@gd}%
    \pgfidscope%
  \fi%
  \begingroup
    \draw (#1)
      edge [to path={#7 \tikztonodes},#3,#4,/graph drawing/.cd,#6,/tikz/.cd]
      #5
      (#2);
  \endgroup
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \endpgfidscope%
    \endpgfscope%
  \fi%
}%

\def\tikz@gd@edge@from@parent@macro#1#2{
  [/utils/exec=\tikz@lib@gd@edge{\tikzparentnode}{\tikzchildnode}{--}{/tikz,#1}{#2}]
}%

\def\tikz@gd@plain@edge@macro#1#2{
  \tikz@lib@gd@edge{\tikztostart}{\tikztotarget}{--}{/tikz,#1}{#2}
}%




\pgfgdset{
  conversions/canvas coordinate/.code={%
    \tikz@scan@one@point\pgf@process#1%
    \pgfmathsetmacro{\tikz@gd@temp@x}{\pgf@x}
    \pgfmathsetmacro{\tikz@gd@temp@y}{\pgf@y}
    \edef\pgfgdresult{pgf.gd.model.Coordinate.new(\tikz@gd@temp@x,\tikz@gd@temp@y)}
  },
  conversions/coordinate/.code={%
    \tikz@scan@one@point\pgf@process#1%
    \pgfmathsetmacro{\tikz@gd@temp@x}{\pgf@x}
    \pgfmathsetmacro{\tikz@gd@temp@y}{\pgf@y}
    \edef\pgfgdresult{pgf.gd.model.Coordinate.new(\tikz@gd@temp@x,\tikz@gd@temp@y)}
  }
}%




\def\pgfgdcallbackcreatevertex#1#2#3#4{%
  \node[every generated node/.try,name={#1},shape={#2},/graph drawing/.cd,#3]{#4};%
}%




\tikzset{
  subgraph text top/.code=\tikz@lg@simple@contents@top{#1},%
  subgraph text top/.default=text ragged,
  subgraph text bottom/.code=\tikz@lg@simple@contents@bottom{#1},%
  subgraph text bottom/.default=text ragged,
  subgraph text sep/.initial=.1em,
  subgraph text none/.code={
    \def\pgfgdsubgraphnodecontents##1{%
      \pgf@y=\pgfkeysvalueof{/graph drawing/subgraph bounding box height}\relax%
      \hbox to \pgfkeysvalueof{/graph drawing/subgraph bounding box width}{%
        \vrule width0pt height.5\pgf@y depth.5\pgf@y\hfil}%
    }%
  },
}%

\def\tikz@lg@simple@contents@top#1{%
  \def\pgfgdsubgraphnodecontents##1{%
    \vbox{%
      \def\pgf@temp{##1}%
      \ifx\pgf@temp\pgfutil@empty%
      \else%
        \ifx\pgf@temp\pgfutil@sptoken%
        \else%
            \hbox to \pgfkeysvalueof{/graph drawing/subgraph bounding box width}{%
              \hsize=\pgfkeysvalueof{/graph drawing/subgraph bounding box width}\relax%
              \vbox{\noindent\strut\tikzset{#1}\tikz@text@action\pgf@temp}%
            }%
        \fi%
      \fi%
      \pgfmathparse{\pgfkeysvalueof{/tikz/subgraph text sep}}%
      \kern\pgfmathresult pt\relax%
      \pgf@y=\pgfkeysvalueof{/graph drawing/subgraph bounding box height}\relax%
      \hbox to \pgfkeysvalueof{/graph drawing/subgraph bounding box width}{%
      \vrule width0pt height.5\pgf@y depth.5\pgf@y\hfil}%
    }%
  }%
}%

\def\tikz@lg@simple@contents@bottom#1{%
  \def\pgfgdsubgraphnodecontents##1{%
    {%
      \pgf@y=\pgfkeysvalueof{/graph drawing/subgraph bounding box height}\relax%
      \setbox0=\vbox{%
        \hbox to \pgfkeysvalueof{/graph drawing/subgraph bounding box width}{\vrule width0pt height\pgf@y\hfil}%
        \pgfmathparse{\pgfkeysvalueof{/tikz/subgraph text sep}}%
        \kern\pgfmathresult pt\relax%
        \def\pgf@temp{##1}%
        \ifx\pgf@temp\pgfutil@empty%
        \else%
          \ifx\pgf@temp\pgfutil@sptoken%
          \else%
            \hbox to \pgfkeysvalueof{/graph drawing/subgraph bounding box width}{%
              \hsize=\pgfkeysvalueof{/graph drawing/subgraph bounding box width}\relax%
              \vbox{\noindent\strut\tikzset{#1}\tikz@text@action\pgf@temp}%
            }%
          \fi%
        \fi%
      }%
      \pgf@ya=\ht0\relax%
      \advance\pgf@ya by-.5\pgf@y\relax%
      \ht0=.5\pgf@y\relax%
      \dp0=\pgf@ya\relax%
      \box0\relax%
    }%
  }%
}%

\tikzset{subgraph text top}%

\tikzset{
  subgraph nodes/.style={/tikz/every subgraph node/.style={#1}},
  graphs/subgraph nodes/.style={/tikz/every subgraph node/.style={#1}},
  graphs/@graph drawing setup/.style={/graph drawing/anchor at={(\tikz@lastx,\tikz@lasty)}}
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/graphdrawing/tex/tikzlibrarygraphdrawing.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/datavisualization/pgflibrarydatavisualization.barcharts.code.tex ====

\ProvidesFileRCS{pgflibrarydatavisualization.barcharts.code.tex}

\usepgfmodule{datavisualization}%




\pgfooclass{candle stick visualizer}
{%
  \attribute attribute;%
  \attribute offset;%
  \attribute use path rise=\pgfsetfillcolor{white}\pgfusepath{fill,stroke};%
  \attribute use path fall=\pgfsetfillcolor{black}\pgfusepath{fill,stroke};%
  \attribute use path wick=\pgfusepath{stroke};%

  \method candle stick visualizer(#1) {
    \pgfooeset{attribute}{#1}
    \pgfoothis.set stick width(4pt)
  }%

  \method default connects() {
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,visualize,visualize datapoint signal)
  }%

  \method set stick width(#1) {
    \pgfmathparse{#1}
    \pgfmathdivide{\pgfmathresult}{2}
    \let\pgf@dv@lib@w=\pgfmathresult
    \pgfkeyssetvalue{/data point/\pgfoovalueof{attribute}}{1}
    \pgfcanvaspositionofdatapoint%
    \pgfsettocanvasposition\pgf@dv@lib@lower%
    \pgfkeyssetvalue{/data point/\pgfoovalueof{attribute}}{10}
    \pgfcanvaspositionofdatapoint%
    \pgfsettocanvasposition\pgf@dv@lib@upper%
    \pgf@process{\pgfpointnormalised{\pgfpointdiff{\pgf@dv@lib@upper}{\pgf@dv@lib@lower}}}%
    \pgf@xa=\pgf@x%
    \pgf@x=-\pgf@dv@lib@w\pgf@y%
    \pgf@y=\pgf@dv@lib@w\pgf@xa%
    \edef\pgf@dv@lib@temp{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
    \pgfoolet{offset}\pgf@dv@lib@temp
  }%

  \method set use path rise(#1) {
    \pgfooset{use path rise}{#1}
  }%

  \method set use path fall(#1) {
    \pgfooset{use path fall}{#1}
  }%

  \method visualize() {
    {
      \pgfooget{attribute}\pgf@lib@attribute%
      \pgfkeysgetvalue{/data point/\pgf@lib@attribute/low}\pgf@lib@low
      \pgfkeysgetvalue{/data point/\pgf@lib@attribute/high}\pgf@lib@high
      \pgfkeysgetvalue{/data point/\pgf@lib@attribute/entry}\pgf@lib@entry
      \pgfkeysgetvalue{/data point/\pgf@lib@attribute/exit}\pgf@lib@exit
      \ifx\pgf@lib@low\pgfutil@empty\pgf@dv@lib@cs@skiptrue\fi
      \ifx\pgf@lib@low\relax\pgf@dv@lib@cs@skiptrue\fi
      \ifx\pgf@lib@high\pgfutil@empty\pgf@dv@lib@cs@skiptrue\fi
      \ifx\pgf@lib@high\relax\pgf@dv@lib@cs@skiptrue\fi
      \ifx\pgf@lib@entry\pgfutil@empty\pgf@dv@lib@cs@skiptrue\fi
      \ifx\pgf@lib@entry\relax\pgf@dv@lib@cs@skiptrue\fi
      \ifx\pgf@lib@exit\pgfutil@empty\pgf@dv@lib@cs@skiptrue\fi
      \ifx\pgf@lib@exit\relax\pgf@dv@lib@cs@skiptrue\fi
      \ifpgf@dv@lib@cs@skip%
      \else%
        \begin{pgfscope}
          \pgfkeyssetvalue{/data point/\pgf@lib@attribute}\pgf@lib@low
          \pgfcanvaspositionofdatapoint%
          \pgfsettocanvasposition\pgf@dv@lib@lowpoint%
          \pgfkeyssetvalue{/data point/\pgf@lib@attribute}\pgf@lib@high
          \pgfcanvaspositionofdatapoint%
          \pgfsettocanvasposition\pgf@dv@lib@highpoint%
          \pgfkeyssetvalue{/data point/\pgf@lib@attribute}\pgf@lib@entry
          \pgfcanvaspositionofdatapoint%
          \pgfsettocanvasposition\pgf@dv@lib@entrypoint%
          \pgfkeyssetvalue{/data point/\pgf@lib@attribute}\pgf@lib@exit
          \pgfcanvaspositionofdatapoint%
          \pgfsettocanvasposition\pgf@dv@lib@exitpoint%
          \ifdim\pgf@lib@entry pt<\pgf@lib@exit pt\relax%
            \pgf@dv@lib@risetrue%
          \fi%
          \ifpgf@dv@lib@rise
            \let\pgf@dv@lib@a=\pgf@dv@lib@entrypoint
            \let\pgf@dv@lib@b=\pgf@dv@lib@exitpoint
          \else
            \let\pgf@dv@lib@a=\pgf@dv@lib@exitpoint
            \let\pgf@dv@lib@b=\pgf@dv@lib@entrypoint
          \fi
          \pgfpathmoveto{\pgf@dv@lib@lowpoint}
          \pgfpathlineto{\pgf@dv@lib@a}
          \pgfpathmoveto{\pgf@dv@lib@highpoint}
          \pgfpathlineto{\pgf@dv@lib@b}
          \pgfoovalueof{use path wick}
          \pgfpathmoveto{\pgfpointadd{\pgf@dv@lib@a}{\pgfoovalueof{offset}}}
          \pgfpathlineto{\pgfpointadd{\pgf@dv@lib@b}{\pgfoovalueof{offset}}}
          \pgfpathlineto{\pgfpointadd{\pgf@dv@lib@b}{\pgfpointscale{-1}{\pgfoovalueof{offset}}}}
          \pgfpathlineto{\pgfpointadd{\pgf@dv@lib@a}{\pgfpointscale{-1}{\pgfoovalueof{offset}}}}
          \pgfpathclose
          \ifpgf@dv@lib@rise
            \pgfoovalueof{use path rise}
          \else
            \pgfoovalueof{use path fall}
          \fi
        \end{pgfscope}%
      \fi
    }
  }%

  \newif\ifpgf@dv@lib@cs@skip
  \newif\ifpgf@dv@lib@rise
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/datavisualization/pgflibrarydatavisualization.barcharts.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/datavisualization/pgflibrarydatavisualization.formats.functions.code.tex ====

\ProvidesFileRCS{pgflibrarydatavisualization.formats.functions.code.tex}

\usepgfmodule{datavisualization}%





\pgfdeclaredataformat{function}
{ %
}
{ %
  \let\value=\relax%
  \pgfkeysgetvalue{/pgf/data/vars}\pgf@lib@dv@collector
}
{%
  #1%
}
{ %
  \edef\pgf@lib@dv@collector{\pgf@lib@dv@collector\space #1}%
}
{%
}
{%
  \edef\pgf@lib@dv@collector{\pgf@lib@dv@collector\space \pgfkeysvalueof{/pgf/data/funcs}}%
  \let\pgf@lib@dv@parsed\pgfutil@empty%
  \expandafter\pgf@lib@dv@func@parse \pgf@lib@dv@collector\pgf@stop%
  \let\value\pgf@lib@dv@getval
  \pgf@lib@dv@parsed\pgfdatapoint\pgfutil@gobble\pgf@stop%
}%

\pgfkeys{
  /pgf/data/vars/.initial=,
  /pgf/data/funcs/.initial=,
  /pgf/data/evaluator/.initial=\pgfmathparse,
  /pgf/data/samples/.initial=25}%

\def\pgf@lib@dv@getval#1{\pgfkeysvalueof{/data point/#1}}%

\def\pgf@lib@dv@func@parse{%
  \pgfutil@ifnextchar\pgf@stop{%
    \pgfutil@gobble%
  }
  {%
    \pgfutil@ifnextchar v{%
      \pgf@lib@dv@var%
    }{%
      \pgf@lib@dv@func%
    }%
  }%
}%

\def\pgf@lib@dv@func func #1 =#2;{%
  \expandafter\def\expandafter\pgf@lib@dv@parsed\expandafter{\pgf@lib@dv@parsed\pgf@lib@dv@eval@func{#1}{#2}}
  \pgf@lib@dv@func@parse%
}%
\def\pgf@lib@dv@var var #1 :{\pgfutil@ifnextchar\bgroup{\pgf@lib@dv@var@group{#1}}{\pgf@lib@dv@var@int{#1}}}%
\def\pgf@lib@dv@var@group#1#2;{%
  \expandafter\def\expandafter\pgf@lib@dv@parsed\expandafter{\pgf@lib@dv@parsed\pgf@lib@dv@group@var{#1}{#2}}%
  \pgf@lib@dv@func@parse%
}%
\def\pgf@lib@dv@var@int#1#2[#3:#4]{%
  \pgfutil@ifnextchar s{%
    \pgf@lib@dv@samplesorsteps{#1}{#3}{#4}%
  }{%
    \expandafter\def\expandafter\pgf@lib@dv@parsed\expandafter{%
      \pgf@lib@dv@parsed\pgf@lib@dv@samples@var{#1}{#3}{#4}{\pgfkeysvalueof{/pgf/data/samples}}}%
    \expandafter\pgf@lib@dv@func@parse\pgfutil@gobble%
  }
}%
\def\pgf@lib@dv@samplesorsteps#1#2#3s{%
  \pgfutil@ifnextchar t{%
    \pgf@lib@dv@step{#1}{#2}{#3}%
  }{%
    \pgf@lib@dv@samples{#1}{#2}{#3}%
  }%
}%
\def\pgf@lib@dv@step#1#2#3tep#4;{%
  \expandafter\def\expandafter\pgf@lib@dv@parsed\expandafter{\pgf@lib@dv@parsed\pgf@lib@dv@step@var{#1}{#2}{#3}{#4}}%
  \pgf@lib@dv@func@parse%
}%
\def\pgf@lib@dv@samples#1#2#3amples#4;{%
  \expandafter\def\expandafter\pgf@lib@dv@parsed\expandafter{\pgf@lib@dv@parsed\pgf@lib@dv@samples@var{#1}{#2}{#3}{#4}}%
  \pgf@lib@dv@func@parse%
}%

\def\pgf@lib@dv@samples@var#1#2#3#4{%
  \pgfmathparse{#3}%
  \let\pgf@lib@dv@temp=\pgfmathresult%
  \pgfmathparse{#2}%
  \pgfmathparse{\pgf@lib@dv@temp-\pgfmathresult}%
  \pgfmathparse{\pgfmathresult/(#4-1)}%
  \let\pgf@lib@dv@temp=\pgfmathresult%
  \pgf@lib@dv@step@var{#1}{#2}{#3}{\pgf@lib@dv@temp}%
}%

\def\pgf@lib@dv@step@var#1#2#3#4#5\pgf@stop{%
  {%
    \def\pgf@loop@body{#5}%
    \pgfmathparse{#2}%
    \pgfkeyslet{/data point/#1}{\pgfmathresult}%
    \pgfmathparse{#3}%
    \let\pgf@loop@end\pgfmathresult%
    \pgfmathparse{#4}%
    \let\pgf@loop@step\pgfmathresult%
    \pgfmathloop%
      \pgfmathlessthan{\pgf@loop@end}{\pgfkeysvalueof{/data point/#1}}
    \ifdim\pgfmathresult pt<1pt\relax%
      \pgf@loop@body\pgf@stop%
      \pgfmathparse{\pgfkeysvalueof{/data point/#1}+\pgf@loop@step}%
      \pgfkeyslet{/data point/#1}{\pgfmathresult}%
    \repeatpgfmathloop%
  }%
}%

\def\pgf@lib@dv@group@var#1#2#3\pgf@stop{%
  \foreach \pgf@lib@dv@iterator in {#2} {%
    \pgfkeyslet{/data point/#1}{\pgf@lib@dv@iterator}%
    #3\pgf@stop%
  }%
}%

\def\pgf@lib@dv@eval@func#1#2{%
  \pgfkeysvalueof{/pgf/data/evaluator}{#2}%
  \pgfkeyslet{/data point/#1}{\pgfmathresult}%
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/datavisualization/pgflibrarydatavisualization.formats.functions.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/datavisualization/pgflibrarydatavisualization.polar.code.tex ====

\ProvidesFileRCS{pgflibrarydatavisualization.polar.code.tex}

\usepgfmodule{datavisualization}%




\pgfooclass{polar transformer}
{%

  \attribute angle;%

  \attribute radius;%

  \attribute unit vector 0 degrees;%

  \attribute unit vector 90 degrees;%



  \method polar transformer(#1,#2,#3,#4) {
    \pgfooset{angle}{#1}
    \pgfooset{radius}{#2}
    \pgfooset{unit vector 0 degrees}{#3}
    \pgfooset{unit vector 90 degrees}{#4}
  }%

  \method default connects() {
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,transform,transform datapoint signal)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,path,path signal)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,direction,direction signal)
  }%

  \method get angle attribute(#1) {
    \pgfooget{angle}{#1}
  }%

  \method get radius attribute(#1) {
    \pgfooget{radius}{#1}
  }%


  \method transform() {
    \pgfkeysgetvalue{/data point/\pgfoovalueof{angle}/const}\pgf@dv@angle%
    \ifx\pgf@dv@angle\relax
      \pgfkeysgetvalue{/data point/\pgfoovalueof{angle}}\pgf@dv@angle%
    \fi
    \ifx\pgf@dv@angle\relax\else%
      \ifx\pgf@dv@angle\pgfutil@empty\else%
        \pgfkeysgetvalue{/data point/\pgfoovalueof{radius}/const}\pgf@dv@radius%
        \ifx\pgf@dv@radius\relax
          \pgfkeysgetvalue{/data point/\pgfoovalueof{radius}}\pgf@dv@radius%
        \fi
        \ifx\pgf@dv@radius\pgfutil@empty\else%
          \ifx\pgf@dv@radius\relax\else%
            \pgfdvmathenter{\pgf@dv@val}{\pgf@dv@angle}%
            \pgfdvmathexitbyscientificformat{\pgf@dv@angle}{\pgf@dv@val}%
            \pgfdvmathenter{\pgf@dv@val}{\pgf@dv@radius}%
            \pgfdvmathexitbyscientificformat{\pgf@dv@radius}{\pgf@dv@val}%
            \pgfmathsincos{\pgf@dv@angle}%
            \pgfmathmultiply{\pgfmathresultx}{\pgf@dv@radius}%
            \let\pgf@dv@polar@temp=\pgfmathresult
            \pgftransformshift{\pgfpointscale{\pgf@dv@polar@temp}{\pgfoovalueof{unit vector 0 degrees}}}%
            \pgfmathmultiply{\pgfmathresulty}{\pgf@dv@radius}%
            \let\pgf@dv@polar@temp=\pgfmathresult
            \pgftransformshift{\pgfpointscale{\pgf@dv@polar@temp}{\pgfoovalueof{unit vector 90 degrees}}}%
          \fi%
        \fi%
      \fi%
    \fi%
  }%




  \attribute prev angle;%
  \attribute prev radius;%

  \method path(#1) {%
    \ifpgfdvhandled%
    \else%
      \ifx#1\pgfdvpathlinetotoken
        \pgfooget{prev radius}\pgf@dv@prev@rad
        \pgfkeysgetvalue{/data point/\pgfoovalueof{radius}}\pgf@dv@current@rad
        \ifx\pgf@dv@current@rad\relax
        \else
          \ifx\pgf@dv@current@rad\pgf@dv@prev@rad%
            \pgfooget{prev angle}\pgf@dv@prev@angle
            \pgfkeysgetvalue{/data point/\pgfoovalueof{angle}}\pgf@dv@current@angle
            \ifx\pgf@dv@current@angle\relax
            \else
              \ifx\pgf@dv@current@angle\pgf@dv@prev@angle%
              \else%
                \pgfdvmathenter{\pgf@dv@val}{\pgf@dv@prev@angle}%
                \pgfdvmathexitbyscientificformat{\pgf@dv@prev@angle}{\pgf@dv@val}%
                \pgfdvmathenter{\pgf@dv@val}{\pgf@dv@prev@rad}%
                \pgfdvmathexitbyscientificformat{\pgf@dv@prev@rad}{\pgf@dv@val}%
                \pgfdvmathenter{\pgf@dv@val}{\pgf@dv@current@angle}%
                \pgfdvmathexitbyscientificformat{\pgf@dv@current@angle}{\pgf@dv@val}%
                \pgfdvmathenter{\pgf@dv@val}{\pgf@dv@current@rad}%
                \pgfdvmathexitbyscientificformat{\pgf@dv@current@rad}{\pgf@dv@val}%
                \pgfpatharcaxes{\pgf@dv@prev@angle}{\pgf@dv@current@angle}
                  {\pgfpointscale{\pgf@dv@current@rad}{\pgfoovalueof{unit vector 0 degrees}}}
                  {\pgfpointscale{\pgf@dv@current@rad}{\pgfoovalueof{unit vector 90 degrees}}}%
                \pgfdvhandledtrue%
              \fi%
            \fi%
          \fi%
        \fi%
      \fi%
    \fi%
    \pgfooeset{prev angle}{\pgfkeysvalueof{/data point/\pgfoovalueof{angle}}}
    \pgfooeset{prev radius}{\pgfkeysvalueof{/data point/\pgfoovalueof{radius}}}
  }%

  \method direction(#1) {%
    \ifx#1\pgfdvdirectionfromtoken
      \xdef\pgf@dv@polar@from@angle{\pgfkeysvalueof{/data point/\pgfoovalueof{angle}}}
      \xdef\pgf@dv@polar@from@radius{\pgfkeysvalueof{/data point/\pgfoovalueof{radius}}}
    \else\ifx#1\pgfdvdirectiontotoken%
      \xdef\pgf@dv@polar@to@angle{\pgfkeysvalueof{/data point/\pgfoovalueof{angle}}}
      \xdef\pgf@dv@polar@to@radius{\pgfkeysvalueof{/data point/\pgfoovalueof{radius}}}
    \else%
      \ifx\pgf@dv@polar@from@radius\pgf@dv@polar@to@radius%
        \pgfdvmathenter{\pgf@dv@a}{\pgf@dv@polar@from@angle}%
        \pgfdvmathenter{\pgf@dv@b}{\pgf@dv@polar@to@angle}%
        \pgfdvmathifless{\pgf@dv@a}{\pgf@dv@b}{\def\pgf@dv@temp@sign{+}}{\def\pgf@dv@temp@sign{-}}%
        \pgfkeysgetvalue{/data point/\pgfoovalueof{angle}}\pgf@temp%
        \ifx\pgf@temp\relax%
        \else%
          \pgfdvmathenter{\pgf@dv@val}{\pgf@temp}%
          \pgfdvmathexitbyscientificformat{\pgf@dv@polar@angle}{\pgf@dv@val}%
          \pgf@process{\pgfpointpolar{\pgf@dv@polar@angle\pgf@dv@temp@sign90}{1pt}}%
          \pgfdvhandledtrue%
        \fi%
      \fi%
    \fi\fi%
  }%
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/datavisualization/pgflibrarydatavisualization.polar.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.footprints.code.tex ====

\usepgfmodule{decorations}%


\pgfset{
  /pgf/decoration/foot length/.initial=10pt,
  /pgf/decoration/stride length/.initial=30pt,
  /pgf/decoration/foot sep/.initial=4pt,
  /pgf/decoration/foot angle/.initial=10,
  /pgf/decoration/foot of/.initial=human,
}%



\pgfdeclaredecoration{footprints}{left}
{%
  \state{left}[width=\pgfkeysvalueof{/pgf/decoration/stride length}/2,next state=right]
  {
    \pgftransformyshift{\pgfkeysvalueof{/pgf/decoration/foot sep}/2}
    \pgfmathparse{\pgfkeysvalueof{/pgf/decoration/foot length}}
    \pgftransformscale{\pgfmathresult}
    \pgftransformrotate{\pgfkeysvalueof{/pgf/decoration/foot angle}}
    \csname pgf@lib@foot@of@\pgfkeysvalueof{/pgf/decoration/foot of}\endcsname
  }%
  \state{right}[width=\pgfkeysvalueof{/pgf/decoration/stride length}/2,next state=left]
  {
    \pgftransformyscale{-1}
    \pgftransformyshift{\pgfkeysvalueof{/pgf/decoration/foot sep}/2}
    \pgfmathparse{\pgfkeysvalueof{/pgf/decoration/foot length}}
    \pgftransformscale{\pgfmathresult}
    \pgftransformrotate{\pgfkeysvalueof{/pgf/decoration/foot angle}}
    \csname pgf@lib@foot@of@\pgfkeysvalueof{/pgf/decoration/foot of}\endcsname
  }%
}%





\def\pgf@lib@foot@of@gnome{
  \pgftransformcm{0}{-1}{-1}{0}{\pgfqpoint{1pt}{0.8pt}}
  \pgftransformscale{0.83333}
  \pgfpathmoveto{\pgfqpoint{.86068pt}{0pt}}
  \pgfpathcurveto{\pgfqpoint{.61466pt}{0pt}}{\pgfqpoint{.56851pt}{.35041pt}}{\pgfqpoint{.70691pt}{.35041pt}}
  \pgfpathcurveto{\pgfqpoint{.84529pt}{.35041pt}}{\pgfqpoint{1.10671pt}{0pt}}{\pgfqpoint{.86068pt}{0pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{.45217pt}{.30699pt}}
  \pgfpathcurveto{\pgfqpoint{.52586pt}{.31149pt}}{\pgfqpoint{.60671pt}{.02577pt}}{\pgfqpoint{.46821pt}{.04374pt}}
  \pgfpathcurveto{\pgfqpoint{.32976pt}{.06171pt}}{\pgfqpoint{.37845pt}{.30249pt}}{\pgfqpoint{.45217pt}{.30699pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{.11445pt}{.48453pt}}
  \pgfpathcurveto{\pgfqpoint{.16686pt}{.46146pt}}{\pgfqpoint{.1212pt}{.23581pt}}{\pgfqpoint{.03208pt}{.29735pt}}
  \pgfpathcurveto{\pgfqpoint{-.057pt}{.3589pt}}{\pgfqpoint{.06204pt}{.50759pt}}{\pgfqpoint{.11445pt}{.48453pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{.26212pt}{.36642pt}}
  \pgfpathcurveto{\pgfqpoint{.32451pt}{.3537pt}}{\pgfqpoint{.32793pt}{.09778pt}}{\pgfqpoint{.21667pt}{.14369pt}}
  \pgfpathcurveto{\pgfqpoint{.10539pt}{.18961pt}}{\pgfqpoint{.19978pt}{.37916pt}}{\pgfqpoint{.26212pt}{.36642pt}}
  \pgfpathlineto{\pgfqpoint{.26212pt}{.36642pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{.58791pt}{.93913pt}}
  \pgfpathcurveto{\pgfqpoint{.59898pt}{1.02367pt}}{\pgfqpoint{.52589pt}{1.06542pt}}{\pgfqpoint{.45431pt}{1.01092pt}}
  \pgfpathcurveto{\pgfqpoint{.22644pt}{.83743pt}}{\pgfqpoint{.8316pt}{.75088pt}}{\pgfqpoint{.79171pt}{.51386pt}}
  \pgfpathcurveto{\pgfqpoint{.7586pt}{.31712pt}}{\pgfqpoint{.15495pt}{.37769pt}}{\pgfqpoint{.08621pt}{.68553pt}}
  \pgfpathcurveto{\pgfqpoint{.03968pt}{.89374pt}}{\pgfqpoint{.27774pt}{1.1826pt}}{\pgfqpoint{.52614pt}{1.1826pt}}
  \pgfpathcurveto{\pgfqpoint{.64834pt}{1.1826pt}}{\pgfqpoint{.78929pt}{1.07226pt}}{\pgfqpoint{.81566pt}{.93248pt}}
  \pgfpathcurveto{\pgfqpoint{.8358pt}{.82589pt}}{\pgfqpoint{.57867pt}{.8686pt}}{\pgfqpoint{.58791pt}{.93913pt}}
  \pgfpathlineto{\pgfqpoint{.58791pt}{.93913pt}}
  \pgfpathclose
}%



\def\pgf@lib@foot@of@bird{
  \pgftransformcm{0}{.11}{.11}{0}{\pgfqpoint{.37pt}{.52pt}}
  \pgfpathmoveto{\pgfqpoint{-.886pt}{1.652pt}}
  \pgfpathcurveto{\pgfqpoint{-.4632pt}{2.669pt}}{\pgfqpoint{-.5092pt}{4.3712pt}}{\pgfqpoint{-.4512pt}{5.6734pt}}
  \pgfpathcurveto{\pgfqpoint{-.4374pt}{5.9842pt}}{\pgfqpoint{-.3182pt}{6.0686pt}}{\pgfqpoint{-.2484pt}{5.644pt}}
  \pgfpathcurveto{\pgfqpoint{-.0534pt}{4.459pt}}{\pgfqpoint{.087pt}{3.0132pt}}{\pgfqpoint{.5206pt}{1.8464pt}}
  \pgfpathcurveto{\pgfqpoint{.714pt}{1.326pt}}{\pgfqpoint{.692pt}{1.416pt}}{\pgfqpoint{1.0864pt}{1.759pt}}
  \pgfpathcurveto{\pgfqpoint{1.7662pt}{2.3504pt}}{\pgfqpoint{2.665pt}{3.1756pt}}{\pgfqpoint{3.2028pt}{4.02pt}}
  \pgfpathcurveto{\pgfqpoint{3.4708pt}{4.4408pt}}{\pgfqpoint{3.4258pt}{4.0814pt}}{\pgfqpoint{3.3366pt}{3.8708pt}}
  \pgfpathcurveto{\pgfqpoint{2.9068pt}{2.8562pt}}{\pgfqpoint{.8502pt}{.645pt}}{\pgfqpoint{.4808pt}{-.0864pt}}
  \pgfpathcurveto{\pgfqpoint{.0808pt}{-.8788pt}}{\pgfqpoint{.1664pt}{-2.1246pt}}{\pgfqpoint{.0024pt}{-2.7868pt}}
  \pgfpathcurveto{\pgfqpoint{-.172pt}{-3.4908pt}}{\pgfqpoint{-.2726pt}{-3.704pt}}{\pgfqpoint{-.3812pt}{-2.9558pt}}
  \pgfpathcurveto{\pgfqpoint{-.5316pt}{-1.9202pt}}{\pgfqpoint{-.88pt}{-.256pt}}{\pgfqpoint{-1.332pt}{.128pt}}
  \pgfpathcurveto{\pgfqpoint{-1.716pt}{.4542pt}}{\pgfqpoint{-3.7928pt}{2.3136pt}}{\pgfqpoint{-4.5044pt}{3.3524pt}}
  \pgfpathcurveto{\pgfqpoint{-4.7618pt}{3.728pt}}{\pgfqpoint{-4.709pt}{3.7864pt}}{\pgfqpoint{-4.4212pt}{3.5818pt}}
  \pgfpathcurveto{\pgfqpoint{-3.4844pt}{2.9162pt}}{\pgfqpoint{-2.6164pt}{1.654pt}}{\pgfqpoint{-1.454pt}{1.3886pt}}
  \pgfpathcurveto{\pgfqpoint{-1.0876pt}{1.305pt}}{\pgfqpoint{-1.0296pt}{1.3066pt}}{\pgfqpoint{-.886pt}{1.652pt}}
  \pgfpathclose
}%


\expandafter\def\csname pgf@lib@foot@of@felis silvestris\endcsname{
  \pgftransformcm{0}{.1}{.1}{0}{\pgfqpoint{.48pt}{.5pt}}
  \pgfpathmoveto{\pgfqpoint{2.7312pt}{-1.992pt}}
  \pgfpathcurveto{\pgfqpoint{1.8716pt}{-1.4226pt}}{\pgfqpoint{2.1404pt}{.0436pt}}{\pgfqpoint{.9202pt}{.0436pt}}
  \pgfpathcurveto{\pgfqpoint{-.1146pt}{.0436pt}}{\pgfqpoint{-.7386pt}{.0178pt}}{\pgfqpoint{-1.319pt}{-1.0288pt}}
  \pgfpathcurveto{\pgfqpoint{-1.7922pt}{-1.8822pt}}{\pgfqpoint{-2.072pt}{-1.5488pt}}{\pgfqpoint{-2.9638pt}{-1.968pt}}
  \pgfpathcurveto{\pgfqpoint{-3.9244pt}{-2.4198pt}}{\pgfqpoint{-4.4394pt}{-3.348pt}}{\pgfqpoint{-4.1136pt}{-4.041pt}}
  \pgfpathcurveto{\pgfqpoint{-3.3862pt}{-5.5882pt}}{\pgfqpoint{-1.6156pt}{-3.83pt}}{\pgfqpoint{-1.1684pt}{-4.312pt}}
  \pgfpathcurveto{\pgfqpoint{-.5806pt}{-4.9454pt}}{\pgfqpoint{.5032pt}{-4.8822pt}}{\pgfqpoint{1.1748pt}{-4.2878pt}}
  \pgfpathcurveto{\pgfqpoint{1.5822pt}{-3.9272pt}}{\pgfqpoint{2.6524pt}{-5.0652pt}}{\pgfqpoint{3.3506pt}{-4.1066pt}}
  \pgfpathcurveto{\pgfqpoint{3.839pt}{-3.4356pt}}{\pgfqpoint{3.1192pt}{-2.249pt}}{\pgfqpoint{2.7312pt}{-1.992pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{5.0576pt}{.4996pt}}
  \pgfpathcurveto{\pgfqpoint{4.6056pt}{.6536pt}}{\pgfqpoint{4.0596pt}{.2516pt}}{\pgfqpoint{3.8382pt}{-.398pt}}
  \pgfpathcurveto{\pgfqpoint{3.6168pt}{-1.0478pt}}{\pgfqpoint{3.8038pt}{-1.6996pt}}{\pgfqpoint{4.2558pt}{-1.8536pt}}
  \pgfpathcurveto{\pgfqpoint{4.7078pt}{-2.0076pt}}{\pgfqpoint{5.2538pt}{-1.6056pt}}{\pgfqpoint{5.4752pt}{-.9558pt}}
  \pgfpathcurveto{\pgfqpoint{5.6966pt}{-.3062pt}}{\pgfqpoint{5.5096pt}{.3456pt}}{\pgfqpoint{5.0576pt}{.4996pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{3.1212pt}{3.5542pt}}
  \pgfpathcurveto{\pgfqpoint{2.5874pt}{3.6726pt}}{\pgfqpoint{1.975pt}{3.1756pt}}{\pgfqpoint{1.7538pt}{2.4442pt}}
  \pgfpathcurveto{\pgfqpoint{1.5324pt}{1.7128pt}}{\pgfqpoint{1.7858pt}{1.0238pt}}{\pgfqpoint{2.3196pt}{.9052pt}}
  \pgfpathcurveto{\pgfqpoint{2.8534pt}{.7868pt}}{\pgfqpoint{3.4658pt}{1.2838pt}}{\pgfqpoint{3.6872pt}{2.0152pt}}
  \pgfpathcurveto{\pgfqpoint{3.9084pt}{2.7466pt}}{\pgfqpoint{3.655pt}{3.4358pt}}{\pgfqpoint{3.1212pt}{3.5542pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{-.6182pt}{5.0456pt}}
  \pgfpathcurveto{\pgfqpoint{-1.2132pt}{5.0456pt}}{\pgfqpoint{-1.6956pt}{4.3104pt}}{\pgfqpoint{-1.6956pt}{3.4038pt}}
  \pgfpathcurveto{\pgfqpoint{-1.6956pt}{2.4972pt}}{\pgfqpoint{-1.2132pt}{1.7618pt}}{\pgfqpoint{-.6182pt}{1.7618pt}}
  \pgfpathcurveto{\pgfqpoint{-.0232pt}{1.7618pt}}{\pgfqpoint{.4592pt}{2.4972pt}}{\pgfqpoint{.4592pt}{3.4038pt}}
  \pgfpathcurveto{\pgfqpoint{.4592pt}{4.3104pt}}{\pgfqpoint{-.0232pt}{5.0456pt}}{\pgfqpoint{-.6182pt}{5.0456pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{-4.1176pt}{1.8248pt}}
  \pgfpathcurveto{\pgfqpoint{-4.6334pt}{1.7534pt}}{\pgfqpoint{-4.9806pt}{1.0312pt}}{\pgfqpoint{-4.8928pt}{.212pt}}
  \pgfpathcurveto{\pgfqpoint{-4.8052pt}{-.6072pt}}{\pgfqpoint{-4.3158pt}{-1.2136pt}}{\pgfqpoint{-3.8pt}{-1.1422pt}}
  \pgfpathcurveto{\pgfqpoint{-3.2842pt}{-1.0708pt}}{\pgfqpoint{-2.9372pt}{-.3486pt}}{\pgfqpoint{-3.0248pt}{.4706pt}}
  \pgfpathcurveto{\pgfqpoint{-3.1126pt}{1.2898pt}}{\pgfqpoint{-3.6018pt}{1.8962pt}}{\pgfqpoint{-4.1176pt}{1.8248pt}}
  \pgfpathclose
}%



\def\pgf@lib@foot@of@human{%
  \pgftransformcm{0}{.5}{.5}{0}{\pgfqpoint{.48pt}{.2pt}}
  \pgfpathmoveto{\pgfqpoint{.20175pt}{-.72633pt}}
  \pgfpathcurveto{\pgfqpoint{.16314pt}{-.88194pt}}{\pgfqpoint{.07386pt}{-1.0167pt}}{\pgfqpoint{-.08385pt}{-1.0167pt}}
  \pgfpathcurveto{\pgfqpoint{-.24153pt}{-1.0167pt}}{\pgfqpoint{-.36942pt}{-.84897pt}}{\pgfqpoint{-.36942pt}{-.72633pt}}
  \pgfpathcurveto{\pgfqpoint{-.36942pt}{-.60372pt}}{\pgfqpoint{-.32505pt}{-.54825pt}}{\pgfqpoint{-.27633pt}{-.51192pt}}
  \pgfpathcurveto{\pgfqpoint{-.23937pt}{-.48435pt}}{\pgfqpoint{-.17031pt}{-.46539pt}}{\pgfqpoint{-.10611pt}{-.40323pt}}
  \pgfpathcurveto{\pgfqpoint{-.04191pt}{-.3411pt}}{\pgfqpoint{.00495pt}{-.27783pt}}{\pgfqpoint{.00495pt}{-.14787pt}}
  \pgfpathcurveto{\pgfqpoint{.00495pt}{-.01794pt}}{\pgfqpoint{-.08526pt}{.12648pt}}{\pgfqpoint{-.22194pt}{.22467pt}}
  \pgfpathcurveto{\pgfqpoint{-.35862pt}{.32286pt}}{\pgfqpoint{-.40863pt}{.50226pt}}{\pgfqpoint{-.32703pt}{.5979pt}}
  \pgfpathcurveto{\pgfqpoint{-.24543pt}{.69354pt}}{\pgfqpoint{-.00564pt}{.66543pt}}{\pgfqpoint{.17172pt}{.53484pt}}
  \pgfpathcurveto{\pgfqpoint{.34908pt}{.40422pt}}{\pgfqpoint{.39363pt}{.27192pt}}{\pgfqpoint{.37416pt}{.10971pt}}
  \pgfpathcurveto{\pgfqpoint{.35472pt}{-.0525pt}}{\pgfqpoint{.26736pt}{-.46203pt}}{\pgfqpoint{.20175pt}{-.72633pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{-.27138pt}{1.01451pt}}
  \pgfpathcurveto{\pgfqpoint{-.21198pt}{1.01451pt}}{\pgfqpoint{-.1638pt}{.94509pt}}{\pgfqpoint{-.1638pt}{.8595pt}}
  \pgfpathcurveto{\pgfqpoint{-.1638pt}{.77388pt}}{\pgfqpoint{-.21198pt}{.70446pt}}{\pgfqpoint{-.27138pt}{.70446pt}}
  \pgfpathcurveto{\pgfqpoint{-.33078pt}{.70446pt}}{\pgfqpoint{-.37896pt}{.77388pt}}{\pgfqpoint{-.37896pt}{.8595pt}}
  \pgfpathcurveto{\pgfqpoint{-.37896pt}{.94509pt}}{\pgfqpoint{-.33078pt}{1.01451pt}}{\pgfqpoint{-.27138pt}{1.01451pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{-.05769pt}{.90573pt}}
  \pgfpathcurveto{\pgfqpoint{-.01659pt}{.90573pt}}{\pgfqpoint{.01674pt}{.86445pt}}{\pgfqpoint{.01674pt}{.81354pt}}
  \pgfpathcurveto{\pgfqpoint{.01674pt}{.7626pt}}{\pgfqpoint{-.01659pt}{.72132pt}}{\pgfqpoint{-.05769pt}{.72132pt}}
  \pgfpathcurveto{\pgfqpoint{-.09879pt}{.72132pt}}{\pgfqpoint{-.13209pt}{.7626pt}}{\pgfqpoint{-.13209pt}{.81354pt}}
  \pgfpathcurveto{\pgfqpoint{-.13209pt}{.86445pt}}{\pgfqpoint{-.09879pt}{.90573pt}}{\pgfqpoint{-.05769pt}{.90573pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{.10497pt}{.81636pt}}
  \pgfpathcurveto{\pgfqpoint{.14214pt}{.81096pt}}{\pgfqpoint{.16722pt}{.77193pt}}{\pgfqpoint{.16104pt}{.72918pt}}
  \pgfpathcurveto{\pgfqpoint{.15483pt}{.68646pt}}{\pgfqpoint{.11964pt}{.65619pt}}{\pgfqpoint{.08247pt}{.66159pt}}
  \pgfpathcurveto{\pgfqpoint{.0453pt}{.66699pt}}{\pgfqpoint{.02019pt}{.70602pt}}{\pgfqpoint{.0264pt}{.74874pt}}
  \pgfpathcurveto{\pgfqpoint{.03261pt}{.79149pt}}{\pgfqpoint{.0678pt}{.82176pt}}{\pgfqpoint{.10497pt}{.81636pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{.24054pt}{.70842pt}}
  \pgfpathcurveto{\pgfqpoint{.27513pt}{.70842pt}}{\pgfqpoint{.30318pt}{.67686pt}}{\pgfqpoint{.30318pt}{.63795pt}}
  \pgfpathcurveto{\pgfqpoint{.30318pt}{.59904pt}}{\pgfqpoint{.27513pt}{.56751pt}}{\pgfqpoint{.24054pt}{.56751pt}}
  \pgfpathcurveto{\pgfqpoint{.20598pt}{.56751pt}}{\pgfqpoint{.17793pt}{.59904pt}}{\pgfqpoint{.17793pt}{.63795pt}}
  \pgfpathcurveto{\pgfqpoint{.17793pt}{.67686pt}}{\pgfqpoint{.20598pt}{.70842pt}}{\pgfqpoint{.24054pt}{.70842pt}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{.35973pt}{.57501pt}}
  \pgfpathcurveto{\pgfqpoint{.3918pt}{.57501pt}}{\pgfqpoint{.41781pt}{.54852pt}}{\pgfqpoint{.41781pt}{.51585pt}}
  \pgfpathcurveto{\pgfqpoint{.41781pt}{.48318pt}}{\pgfqpoint{.3918pt}{.45669pt}}{\pgfqpoint{.35973pt}{.45669pt}}
  \pgfpathcurveto{\pgfqpoint{.32769pt}{.45669pt}}{\pgfqpoint{.30168pt}{.48318pt}}{\pgfqpoint{.30168pt}{.51585pt}}
  \pgfpathcurveto{\pgfqpoint{.30168pt}{.54852pt}}{\pgfqpoint{.32769pt}{.57501pt}}{\pgfqpoint{.35973pt}{.57501pt}}
  \pgfpathclose
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.footprints.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.fractals.code.tex ====

\usepgfmodule{decorations}%



\pgfdeclaredecoration{Koch curve type 1}{init}
{%
  \state{init}[width=\pgfdecoratedinputsegmentremainingdistance]
  {
    \pgfpathlineto{\pgfpoint{.33333\pgfdecoratedinputsegmentremainingdistance}{0pt}}
    \pgfpathlineto{\pgfpoint{.33333\pgfdecoratedinputsegmentremainingdistance}{.33333\pgfdecoratedinputsegmentremainingdistance}}
    \pgfpathlineto{\pgfpoint{.66666\pgfdecoratedinputsegmentremainingdistance}{.33333\pgfdecoratedinputsegmentremainingdistance}}
    \pgfpathlineto{\pgfpoint{.66666\pgfdecoratedinputsegmentremainingdistance}{0pt}}
    \pgfpathlineto{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}}
  }%
}%

\pgfdeclaredecoration{Koch curve type 2}{init}
{%
  \state{init}[width=\pgfdecoratedinputsegmentremainingdistance]
  {
    \pgfpathlineto{\pgfpoint{.25\pgfdecoratedinputsegmentremainingdistance}{0pt}}
    \pgfpathlineto{\pgfpoint{.25\pgfdecoratedinputsegmentremainingdistance}{.25\pgfdecoratedinputsegmentremainingdistance}}
    \pgfpathlineto{\pgfpoint{.5\pgfdecoratedinputsegmentremainingdistance}{.25\pgfdecoratedinputsegmentremainingdistance}}
    \pgfpathlineto{\pgfpoint{.5\pgfdecoratedinputsegmentremainingdistance}{0pt}}
    \pgfpathlineto{\pgfpoint{.5\pgfdecoratedinputsegmentremainingdistance}{-.25\pgfdecoratedinputsegmentremainingdistance}}
    \pgfpathlineto{\pgfpoint{.75\pgfdecoratedinputsegmentremainingdistance}{-.25\pgfdecoratedinputsegmentremainingdistance}}
    \pgfpathlineto{\pgfpoint{.75\pgfdecoratedinputsegmentremainingdistance}{0pt}}
    \pgfpathlineto{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}}
  }%
}%

\pgfdeclaredecoration{Koch snowflake}{init}
{%
  \state{init}[width=\pgfdecoratedinputsegmentremainingdistance]
  {
    \pgfpathlineto{\pgfpoint{.3333\pgfdecoratedinputsegmentremainingdistance}{0pt}}
    \pgfpathlineto{\pgfpoint{.5\pgfdecoratedinputsegmentremainingdistance}{0.2886751347\pgfdecoratedinputsegmentremainingdistance}}
    \pgfpathlineto{\pgfpoint{.6666\pgfdecoratedinputsegmentremainingdistance}{0pt}}
    \pgfpathlineto{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}}
  }%
}%


\pgfdeclaredecoration{Cantor set}{init}
{%
  \state{init}[width=\pgfdecoratedinputsegmentremainingdistance]
  {
    \pgfpathlineto{\pgfpoint{.3333\pgfdecoratedinputsegmentremainingdistance}{0pt}}
    \pgfpathmoveto{\pgfpoint{.6666\pgfdecoratedinputsegmentremainingdistance}{0pt}}
    \pgfpathlineto{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}}
  }%
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.fractals.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.markings.code.tex ====

\usepgfmodule{decorations}%



\pgfkeys{
  /pgf/decoration/reset marks/.code=\let\pgf@lib@dec@mark@marks\pgfutil@empty,
  /pgf/decoration/mark/.code=\pgf@lib@dec@parsemark#1\pgf@lib@dec@stop,
}%

\let\pgf@lib@dec@mark@marks=\pgfutil@empty

\def\pgf@lib@dec@parsemark{\pgfutil@ifnextchar b{\pgf@lib@dec@parsebetween}{\pgf@lib@dec@parseat}}%
\def\pgf@lib@dec@parseat at position#1with#2\pgf@lib@dec@stop{%
  \expandafter\def\expandafter\pgf@lib@dec@mark@marks\expandafter{\pgf@lib@dec@mark@marks%
    \pgf@lib@dec@domark{#1}{#2}%
  }%
}%
\def\pgf@lib@dec@parsebetween between positions#1and#2step#3with#4\pgf@lib@dec@stop{%
  \expandafter\def\expandafter\pgf@lib@dec@mark@marks\expandafter{\pgf@lib@dec@mark@marks%
    \pgf@lib@dec@dobetweenmark{#1}{#2}{#3}{#4}%
  }%
}%

\def\pgf@lib@dec@arrowhead#1#2{%
  \pgftransformxscale{#1}
  \pgfarrowdraw{#2}%
}%

\def\pgf@lib@dec@doarrowhead#1{%
  \pgf@lib@dec@arrowhead{1}{#1}%
}%
\def\pgf@lib@dec@doarrowheadrev#1{%
  \pgf@lib@dec@arrowhead{-1}{#1}%
}%


\pgfdeclaredecoration{markings}{init}
{%
  \state{init}
  [
    width=0pt,
    persistent precomputation={%
      \pgfkeys{/pgf/decoration/mark info/sequence number/.initial=0}%
      \pgfkeys{/pgf/decoration/mark info/distance from start/.initial=}%
    },
    next state=pre
  ]
  {}%

  \state{pre}
  [
    width=0pt,
    persistent precomputation={%
      \def\pgf@lib@dec@computed@width{0pt}%
      \pgf@lib@dec@mark@marks\pgf@lib@dec@mark@last%
      \let\arrow=\pgf@lib@dec@doarrowhead%
      \let\arrowreversed=\pgf@lib@dec@doarrowheadrev%
    },
    next state=skipper
  ]
  {}%

  \state{skipper}[width=\pgf@lib@dec@computed@width-\pgfdecoratedcompleteddistance-1sp,
                  next state=\pgf@lib@dec@next@state]{}%

  \state{main}
  [
    width=1sp,
    next state=pre,
    persistent precomputation={%
      \pgfutil@tempcnta=\pgfkeysvalueof{/pgf/decoration/mark info/sequence number}\relax%
      \advance\pgfutil@tempcnta by1\relax%
      \pgfkeys{/pgf/decoration/mark info/sequence number/.expanded=\the\pgfutil@tempcnta}%
      \pgfkeys{/pgf/decoration/mark info/distance from start/.expanded=\pgf@lib@dec@computed@width}%
    }%
  ]
  {%
    \pgfinterruptpath%
      \pgfscope%
        \let\pgf@lib@dec@mark@marks=\pgfutil@empty%
        \pgfslopedattimefalse
        \pgf@lib@dec@computed@action%
      \endpgfscope%
    \endpgfinterruptpath%
    \ifx\pgf@lib@mark@node\pgfutil@empty%
    \else%
      \pgf@lib@mark@connect@node%
    \fi%
  }%

  \state{final}[width=\pgfdecoratedremainingdistance]{
    \ifx\pgf@lib@mark@node\pgfutil@empty%
      \pgfpathmoveto{\pgfpointdecoratedpathlast}
    \else%
      \pgfpathlineto{\pgfpointdecoratedpathlast}
    \fi%
  }%
}%

\def\pgf@lib@dec@domark#1#2#3\pgf@lib@dec@mark@last{%
  \def\pgf@lib@dec@mark@marks{#3}%
  \pgf@lib@dec@parsenum{#1}%
  \def\pgf@lib@dec@computed@action{#2}%
  \def\pgf@lib@dec@next@state{main}%
}%


\def\pgf@lib@dec@dobetweenmark#1#2#3#4#5\pgf@lib@dec@mark@last{%
  \pgf@lib@dec@parsenum{#1}%
  \let\pgf@lib@dec@mark@start=\pgf@lib@dec@computed@width%
  \pgf@lib@dec@parsenum{#2}%
  \let\pgf@lib@dec@mark@end=\pgf@lib@dec@computed@width%
  \ifdim\pgf@lib@dec@mark@end<\pgf@lib@dec@mark@start\relax%
    #5\pgf@lib@dec@mark@last%
  \else%
    \pgf@lib@dec@parsenum{#3}%
    \pgfmathparse{\pgf@lib@dec@mark@start+\pgf@lib@dec@computed@width}%
    \edef\pgf@temp{\noexpand\pgf@lib@dec@dobetweenmark{\pgfmathresult pt}{\pgf@lib@dec@mark@end}{\pgf@lib@dec@computed@width}}%
    \expandafter\def\expandafter\pgf@lib@dec@mark@marks\expandafter{\pgf@temp{#4}#5}%
    \let\pgf@lib@dec@computed@width\pgf@lib@dec@mark@start%
    \def\pgf@lib@dec@computed@action{#4}%
    \def\pgf@lib@dec@next@state{main}%
  \fi%
}%


\def\pgf@lib@dec@parsenum#1{%
  \pgfmathparse{#1}%
  \ifpgfmathunitsdeclared%
    \ifdim\pgfmathresult pt<0pt\relax%
      \pgfmathparse{\pgfdecoratedpathlength\pgfmathresult pt}%
    \else%
      \pgfmathparse{\pgfmathresult pt}%
    \fi%
  \else%
    \ifdim\pgfmathresult pt<0pt\relax%
      \pgfmathparse{\pgfdecoratedpathlength\pgfmathresult*\pgfdecoratedpathlength}%
    \else%
      \pgfmathparse{\pgfmathresult*\pgfdecoratedpathlength}%
    \fi%
  \fi%
  \edef\pgf@lib@dec@computed@width{\pgfmathresult pt}%
}%

\def\pgf@lib@dec@mark@last{%
  \def\pgf@lib@dec@next@state{final}%
}%



\pgfkeys{/pgf/decoration/mark connection node/.store in=\pgf@lib@mark@node,
  /pgf/decoration/mark connection node=}%
\def\pgf@lib@mark@connect@node{%
  \pgfpathlineto{\pgfpointshapeborder{\pgf@lib@mark@node}{\pgfqpoint{-1pt}{0pt}}}
  \pgfpathmoveto{\pgfpointshapeborder{\pgf@lib@mark@node}{\pgfqpoint{1pt}{0pt}}}
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.markings.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathmorphing.code.tex ====

\usepgfmodule{decorations}%






\pgfdeclaredecoration{zigzag}{up from center}{%
  \state{up from center}[width=+.5\pgfdecorationsegmentlength, next state=big down]
  {
    \pgfpathlineto{\pgfqpoint{.25\pgfdecorationsegmentlength}{\pgfdecorationsegmentamplitude}}
  }%
  \state{big down}[switch if less than=+.5\pgfdecorationsegmentlength to center finish,
                   width=+.5\pgfdecorationsegmentlength,
                   next state=big up]
  {
    \pgfpathlineto{\pgfqpoint{.25\pgfdecorationsegmentlength}{-\pgfdecorationsegmentamplitude}}
  }%
  \state{big up}[switch if less than=+.5\pgfdecorationsegmentlength to center finish,
                 width=+.5\pgfdecorationsegmentlength,
                 next state=big down]
  {
    \pgfpathlineto{\pgfqpoint{.25\pgfdecorationsegmentlength}{\pgfdecorationsegmentamplitude}}
  }%
  \state{center finish}[width=0pt, next state=final]{
    \pgfpathlineto{\pgfpointorigin}
  }%
  \state{final}
  {
    \pgfpathlineto{\pgfpointdecoratedpathlast}
  }%
}%





\pgfdeclaredecoration{saw}{initial}
{%
  \state{initial}[auto end on length=+\pgfdecorationsegmentlength,
                  auto corner on length=+\pgfdecorationsegmentlength,
                  width=+\pgfdecorationsegmentlength]
  {
    \pgfpathlineto{\pgfqpoint{\pgfdecorationsegmentlength}{\pgfdecorationsegmentamplitude}}
    \pgfpathlineto{\pgfqpoint{\pgfdecorationsegmentlength}{0pt}}
  }%
  \state{final}
  {}%
}%





\pgfdeclaredecoration{random steps}{start}
{%
  \state{start}[width=+0pt,next state=step,persistent precomputation=\pgfdecoratepathhascornerstrue]{}%
  \state{step}[auto end on length=1.5\pgfdecorationsegmentlength,
               auto corner on length=1.5\pgfdecorationsegmentlength,
               width=+\pgfdecorationsegmentlength]
  {
    \pgfpathlineto{
      \pgfpointadd
      {\pgfpoint{\pgfdecorationsegmentlength}{0pt}}
      {\pgfpoint{rand*\pgfdecorationsegmentamplitude}{rand*\pgfdecorationsegmentamplitude}}
    }
  }%
  \state{final}
  {}%
}%




\pgfdeclaremetadecoration{straight zigzag}{line to}{%
  \state{line to}[width=\pgfmetadecorationsegmentlength, next state=zigzag]
  {
    \decoration{curveto}
  }%
  \state{zigzag}[width=\pgfmetadecorationsegmentlength, next state=line to]
  {
    \decoration{zigzag}
  }%
  \state{final}
  {
    \decoration{curveto}
  }%
}%









\pgfdeclaredecoration{bent}{bent}
{%
  \state{bent}[width=+\pgfdecoratedinputsegmentremainingdistance]
  {
    \pgfpathcurveto
    {\pgfqpoint{\pgfdecorationsegmentaspect\pgfdecoratedinputsegmentremainingdistance}{\pgfdecorationsegmentamplitude}}
    {\pgfpointadd{\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}}
       {\pgfqpoint{-\pgfdecorationsegmentaspect\pgfdecoratedinputsegmentremainingdistance}{\pgfdecorationsegmentamplitude}}}
    {\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}}
  }%
  \state{final}
  {}%
}%




\pgfdeclaredecoration{snake}{initial}
{%
  \state{initial}[switch if less than=+.625\pgfdecorationsegmentlength to final,
                  width=+.3125\pgfdecorationsegmentlength,
                  next state=down]
  {
    \pgfpathcurveto
    {\pgfqpoint{.125\pgfdecorationsegmentlength}{0pt}}
    {\pgfqpoint{.1875\pgfdecorationsegmentlength}{\pgfdecorationsegmentamplitude}}
    {\pgfqpoint{.3125\pgfdecorationsegmentlength}{\pgfdecorationsegmentamplitude}}
  }%
  \state{down}[switch if less than=+.8125\pgfdecorationsegmentlength to end down,
               width=+.5\pgfdecorationsegmentlength,
               next state=up]
  {
    \pgfpathcosine{\pgfqpoint{.25\pgfdecorationsegmentlength}{-1\pgfdecorationsegmentamplitude}}
    \pgfpathsine{\pgfqpoint{.25\pgfdecorationsegmentlength}{-1\pgfdecorationsegmentamplitude}}
  }%
  \state{up}[switch if less than=+.8125\pgfdecorationsegmentlength to end up,
             width=+.5\pgfdecorationsegmentlength,
             next state=down]
  {
    \pgfpathcosine{\pgfqpoint{.25\pgfdecorationsegmentlength}{\pgfdecorationsegmentamplitude}}
    \pgfpathsine{\pgfqpoint{.25\pgfdecorationsegmentlength}{\pgfdecorationsegmentamplitude}}
  }%
  \state{end down}[width=+.3125\pgfdecorationsegmentlength,
                   next state=final]
  {
    \pgfpathcurveto
    {\pgfqpoint{.125\pgfdecorationsegmentlength}{\pgfdecorationsegmentamplitude}}
    {\pgfqpoint{.1875\pgfdecorationsegmentlength}{0pt}}
    {\pgfqpoint{.3125\pgfdecorationsegmentlength}{0pt}}
  }%
  \state{end up}[width=+.3125\pgfdecorationsegmentlength,
                 next state=final]
  {
    \pgfpathcurveto
    {\pgfqpoint{.125\pgfdecorationsegmentlength}{-\pgfdecorationsegmentamplitude}}
    {\pgfqpoint{.1875\pgfdecorationsegmentlength}{0pt}}
    {\pgfqpoint{.3125\pgfdecorationsegmentlength}{0pt}}
  }%
  \state{final}
  {
    \pgfpathlineto{\pgfpointdecoratedpathlast}
  }%
}%



\pgfdeclaredecoration{coil}{coil}
{%
  \state{coil}[switch if less than=%
    1.5\pgfdecorationsegmentlength+%
    \pgfdecorationsegmentaspect\pgfdecorationsegmentamplitude+%
    \pgfdecorationsegmentaspect\pgfdecorationsegmentamplitude to last,
               width=+\pgfdecorationsegmentlength]
  {
    \pgfpathcurveto
    {\pgfpoint@oncoil{0    }{ 0.555}{1}}
    {\pgfpoint@oncoil{0.445}{ 1    }{2}}
    {\pgfpoint@oncoil{1    }{ 1    }{3}}
    \pgfpathcurveto
    {\pgfpoint@oncoil{1.555}{ 1    }{4}}
    {\pgfpoint@oncoil{2    }{ 0.555}{5}}
    {\pgfpoint@oncoil{2    }{ 0    }{6}}
    \pgfpathcurveto
    {\pgfpoint@oncoil{2    }{-0.555}{7}}
    {\pgfpoint@oncoil{1.555}{-1    }{8}}
    {\pgfpoint@oncoil{1    }{-1    }{9}}
    \pgfpathcurveto
    {\pgfpoint@oncoil{0.445}{-1    }{10}}
    {\pgfpoint@oncoil{0    }{-0.555}{11}}
    {\pgfpoint@oncoil{0    }{ 0    }{12}}
  }%
  \state{last}[width=.5\pgfdecorationsegmentlength+%
    \pgfdecorationsegmentaspect\pgfdecorationsegmentamplitude+%
    \pgfdecorationsegmentaspect\pgfdecorationsegmentamplitude,next state=final]
  {
    \pgfpathcurveto
    {\pgfpoint@oncoil{0    }{ 0.555}{1}}
    {\pgfpoint@oncoil{0.445}{ 1    }{2}}
    {\pgfpoint@oncoil{1    }{ 1    }{3}}
    \pgfpathcurveto
    {\pgfpoint@oncoil{1.555}{ 1    }{4}}
    {\pgfpoint@oncoil{2    }{ 0.555}{5}}
    {\pgfpoint@oncoil{2    }{ 0    }{6}}
  }%
  \state{final}
  {
    \pgfpathlineto{\pgfpointdecoratedpathlast}
  }%
}%

\def\pgfpoint@oncoil#1#2#3{%
  \pgf@x=#1\pgfdecorationsegmentamplitude%
  \pgf@x=\pgfdecorationsegmentaspect\pgf@x%
  \pgf@y=#2\pgfdecorationsegmentamplitude%
  \pgf@xa=0.083333333333\pgfdecorationsegmentlength%
  \advance\pgf@x by#3\pgf@xa%
}%



\pgfdeclaredecoration{bumps}{initial}
{%
  \state{initial}[auto end on length=+.51\pgfdecorationsegmentlength,
                  auto corner on length=+.51\pgfdecorationsegmentlength,
                  width=+.5\pgfdecorationsegmentlength]
  {
    \pgfpathcurveto
    {\pgfqpoint{0pt}{.555\pgfdecorationsegmentamplitude}}
    {\pgfqpoint{0.11125\pgfdecorationsegmentlength}{\pgfdecorationsegmentamplitude}}
    {\pgfqpoint{.25\pgfdecorationsegmentlength}{\pgfdecorationsegmentamplitude}}
    \pgfpathcurveto
    {\pgfqpoint{.38875\pgfdecorationsegmentlength}{\pgfdecorationsegmentamplitude}}
    {\pgfqpoint{.5\pgfdecorationsegmentlength}{.5\pgfdecorationsegmentamplitude}}
    {\pgfqpoint{.5\pgfdecorationsegmentlength}{0\pgfdecorationsegmentamplitude}}
  }%
  \state{final}
  {
    \pgfpathlineto{\pgfpointdecoratedpathlast}
  }%
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathmorphing.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex ====

\usepgfmodule{decorations}%








\pgfdeclaredecoration{ticks}{ticks}
{%
  \state{ticks}[width=+\pgfdecorationsegmentlength]
  {
    \pgfpathmoveto{\pgfqpoint{0pt}{\pgfdecorationsegmentamplitude}}
    \pgfpathlineto{\pgfqpoint{0pt}{-\pgfdecorationsegmentamplitude}}
  }%
  \state{final}
  {
    \pgfpathmoveto{\pgfqpoint{0pt}{\pgfdecorationsegmentamplitude}}
    \pgfpathlineto{\pgfqpoint{0pt}{-\pgfdecorationsegmentamplitude}}
    \pgfpathmoveto{\pgfpointdecoratedpathlast}
  }%
}%




\pgfdeclaredecoration{expanding waves}{initial}
{%
  \state{initial}[width=+\pgfdecorationsegmentlength,next state=wave]
  {}%

  \state{wave}[switch if less than=+\pgfdecorationsegmentlength to last,
               width=+\pgfdecorationsegmentlength]
  {
    \pgfpathmoveto{
      \pgfpointadd
      {\pgfqpoint{-\pgfdecoratedcompleteddistance}{0pt}}%
      {\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}}}%
    \pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}%
  }%
  \state{last}[width=+0pt,next state=final]
  {
    \pgfpathmoveto{
      \pgfpointadd
      {\pgfqpoint{-\pgfdecoratedcompleteddistance}{0pt}}%
      {\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}}}%
    \pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}%
  }%
  \state{final}
  {
    \pgfpathmoveto{\pgfpointdecoratedpathlast}
  }%
}%




\pgfdeclaredecoration{waves}{wave}
{%
  \state{wave}[width=\pgfdecorationsegmentlength]
  {
    \pgftransformxshift{+\pgfdecorationsegmentlength}
    \pgfpathmoveto{
      \pgfpointadd
      {\pgfqpoint{-\pgfkeysvalueof{/pgf/decoration/start radius}}{0pt}}%
      {\pgfpointpolar{\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}}}%
    \pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}%
  }%
  \state{final}
  {
    \pgfpathmoveto{\pgfpointdecoratedpathlast}
  }%
}%




\pgfdeclaredecoration{border}{tick}
{%
  \state{tick}[switch if less than=+\pgfdecorationsegmentlength to last,
               width=+\pgfdecorationsegmentlength]
  {
    \pgfpathmoveto{\pgfpointorigin}
    \pgfpathlineto{\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecorationsegmentamplitude}}
  }%
  \state{last}[width=+\pgfdecorationsegmentamplitude,next state=final]
  {
    \pgfpathmoveto{\pgfpointorigin}
    \pgfpathlineto{\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecorationsegmentamplitude}}
  }%
  \state{final}
  {
    \pgfpathmoveto{\pgfpointdecoratedpathlast}
  }%
}%







\pgfdeclaredecoration{brace}{brace}
{%
  \state{brace}[width=+\pgfdecoratedremainingdistance,next state=final]
  {
    \pgf@yc=\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance
    \ifdim2\pgfdecorationsegmentamplitude>\pgf@yc
      \pgf@yc=0.5\pgf@yc
    \else
      \pgf@yc=\pgfdecorationsegmentamplitude
    \fi
    \pgf@xc=\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance
    \advance\pgf@xc-\pgfdecoratedremainingdistance
    \ifdim-2\pgfdecorationsegmentamplitude<\pgf@xc
      \pgf@xc=-0.5\pgf@xc
    \else
      \pgf@xc=\pgfdecorationsegmentamplitude
    \fi
    \pgfpathmoveto{\pgfpointorigin}
    \pgfpathcurveto
    {\pgfqpoint{.15\pgf@yc}{.3\pgfdecorationsegmentamplitude}}
    {\pgfqpoint{.5\pgf@yc}{.5\pgfdecorationsegmentamplitude}}
    {\pgfqpoint{\pgf@yc}{.5\pgfdecorationsegmentamplitude}}
    {
      \pgftransformxshift{+\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance}
      \pgfpathlineto{\pgfqpoint{-\pgf@yc}{.5\pgfdecorationsegmentamplitude}}
      \pgfpathcurveto
      {\pgfqpoint{-.5\pgf@yc}{.5\pgfdecorationsegmentamplitude}}
      {\pgfqpoint{-.15\pgf@yc}{.7\pgfdecorationsegmentamplitude}}
      {\pgfqpoint{0\pgf@yc}{1\pgfdecorationsegmentamplitude}}
      \pgfpathcurveto
      {\pgfqpoint{.15\pgf@xc}{.7\pgfdecorationsegmentamplitude}}
      {\pgfqpoint{.5\pgf@xc}{.5\pgfdecorationsegmentamplitude}}
      {\pgfqpoint{\pgf@xc}{.5\pgfdecorationsegmentamplitude}}
    }
    {
      \pgftransformxshift{+\pgfdecoratedremainingdistance}
      \pgfpathlineto{\pgfqpoint{-\pgf@xc}{.5\pgfdecorationsegmentamplitude}}
      \pgfpathcurveto
      {\pgfqpoint{-.5\pgf@xc}{.5\pgfdecorationsegmentamplitude}}
      {\pgfqpoint{-.15\pgf@xc}{.3\pgfdecorationsegmentamplitude}}
      {\pgfqpoint{0pt}{0pt}}
    }
  }%
  \state{final}
  {}%
}%




\pgfdeclaredecoration{show path construction}{check for moveto}{%
    \state{check for moveto}[width=0pt, next state=segment,
      persistent precomputation={%
        \begingroup%
            \pgf@lib@decoraions@installinputsegmentpoints%
              \ifx\pgfdecorationpreviousinputsegment\pgfdecorationinputsegmentmoveto%
                  \pgfdecoratedinputsegmentmovetocode%
              \fi%
            \endgroup%
        }]{}%
    \state{segment}[width=\pgfdecoratedinputsegmentremainingdistance, next state=check for moveto,
      persistent precomputation={%
        \begingroup%
            \pgf@lib@decoraions@installinputsegmentpoints%
                \csname pgfdecoratedinputsegment\pgfdecorationcurrentinputsegment code\endcsname%
            \endgroup%
        }]{}%
    \state{final}{%
        \egroup%
        \begingroup%
        \pgf@lib@decoraions@installinputsegmentpoints%
            \csname pgfdecoratedinputsegment\pgfdecorationcurrentinputsegment code\endcsname%
        \endgroup%
        \bgroup%
    }%
}%

\pgfkeys{
    /pgf/decoration/.cd,
        moveto code/.code=\def\pgfdecoratedinputsegmentmovetocode{#1},
        lineto code/.code=\def\pgfdecoratedinputsegmentlinetocode{#1},
        curveto code/.code=\def\pgfdecoratedinputsegmentcurvetocode{#1},
      closepath code/.code=\def\pgfdecoratedinputsegmentclosepathcode{#1}
}%

\let\pgfdecoratedinputsegmentmovetocode\pgfutil@empty%
\let\pgfdecoratedinputsegmentlinetocode\pgfutil@empty%
\let\pgfdecoratedinputsegmentcurvetocode\pgfutil@empty%
\let\pgfdecoratedinputsegmentclosepathcode\pgfutil@empty%

\def\pgf@lib@decoraions@installinputsegmentpoints{%
    \let\pgfpointdecoratedinputsegmentfirst\pgf@decorate@inputsegment@first%
    \let\pgfpointdecoratedinputsegmentlast\pgf@decorate@inputsegment@last%
    \let\pgfpointdecoratedinputsegmentsupporta\pgf@decorate@inputsegment@supporta%
    \let\pgfpointdecoratedinputsegmentsupportb\pgf@decorate@inputsegment@supportb%
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.shapes.code.tex ====

\usepgfmodule{decorations}%



\pgfkeys{
  /pgf/decoration/.cd,
  shape/.initial=circle,
  anchor/.initial=center,
  shape start width/.initial=2.5pt,
  shape start height/.initial=2.5pt,
  shape end width/.initial=2.5pt,
  shape end height/.initial=2.5pt,
  shape sep/.store in=\pgf@lib@shapedecoration@sep,
  shape sloped/.is if=pgfshapedecorationsloped,
  shape scaled/.is if=pgfshapedecorationscaled,
  shape evenly spread/.store in=\pgf@lib@shapedecoration@spread,
  shape start size/.style={%
    shape start width={#1},
    shape start height={#1}%
  },%
  shape end size/.style={%
    shape end width={#1},
    shape end height={#1}%
  },%
  shape size/.style={%
    shape start size={#1},
    shape end size={#1}%
  },%
  shape width/.style={%
    shape start width={#1},
    shape end width={#1}
  },
  shape height/.style={%
    shape start height={#1},
    shape end height={#1}
  }
}%

\def\pgf@lib@shapedecoration@sep{.25cm, between centers}%
\newif\ifpgfshapedecorationsloped
\pgfshapedecorationslopedtrue
\newif\ifpgfshapedecorationscaled
\let\pgf@lib@shapedecoration@spread\pgfutil@empty%




\pgfdeclaredecoration{triangles}{init}
{%
  \state{init}[width=+0pt,next state=triangle,persistent precomputation={
    \pgfmathparse{\pgfkeysvalueof{/pgf/decoration/shape start width}}
    \edef\pgf@lib@dec@ssw{\pgfmathresult pt}
    \pgfmathparse{\pgfkeysvalueof{/pgf/decoration/shape start height}/2}
    \edef\pgf@lib@dec@ssh{\pgfmathresult pt}
  }]{}%
  \state{triangle}[switch if less than=+\pgfdecorationsegmentlength to last,
                   width=+\pgfdecorationsegmentlength]
  {
    \pgfpathmoveto{\pgfqpoint{0pt}{\pgf@lib@dec@ssh}}
    \pgfpathlineto{\pgfqpoint{\pgf@lib@dec@ssw}{0pt}}
    \pgfpathlineto{\pgfqpoint{0pt}{-\pgf@lib@dec@ssh}}
    \pgfpathclose
  }%
  \state{last}[switch if less than=\pgf@lib@dec@ssw to skip,
               width=\pgfdecoratedremainingdistance,next state=final]
  {
    \pgfpathmoveto{\pgfqpoint{0pt}{\pgf@lib@dec@ssh}}
    \pgfpathlineto{\pgfqpoint{\pgf@lib@dec@ssw}{0pt}}
    \pgfpathlineto{\pgfqpoint{0pt}{-\pgf@lib@dec@ssh}}
    \pgfpathclose
  }%
  \state{skip}[width=\pgfdecoratedremainingdistance]
  {}%
  \state{final}
  {
    \pgfpathmoveto{\pgfpointdecoratedpathlast}
  }%
}%





\pgfdeclaredecoration{crosses}{init}
{%
  \state{init}[width=+0pt,next state=crosses,persistent precomputation={
    \pgfmathparse{\pgfkeysvalueof{/pgf/decoration/shape start width}/2}
    \edef\pgf@lib@dec@ssw{\pgfmathresult pt}
    \pgfmathparse{\pgfkeysvalueof{/pgf/decoration/shape start height}/2}
    \edef\pgf@lib@dec@ssh{\pgfmathresult pt}
  }]{}%
  \state{crosses}[switch if less than=+\pgfdecorationsegmentlength to last,
                  width=+\pgfdecorationsegmentlength]
  {
    \pgfpathmoveto{\pgfqpoint{-\pgf@lib@dec@ssw}{\pgf@lib@dec@ssh}}
    \pgfpathlineto{\pgfqpoint{\pgf@lib@dec@ssw}{-\pgf@lib@dec@ssh}}
    \pgfpathmoveto{\pgfqpoint{-\pgf@lib@dec@ssw}{-\pgf@lib@dec@ssh}}
    \pgfpathlineto{\pgfqpoint{\pgf@lib@dec@ssw}{\pgf@lib@dec@ssh}}
  }%
  \state{last}[width=+\pgfdecoratedremainingdistance]
  {
    \pgfpathmoveto{\pgfqpoint{-\pgf@lib@dec@ssw}{\pgf@lib@dec@ssh}}
    \pgfpathlineto{\pgfqpoint{\pgf@lib@dec@ssw}{-\pgf@lib@dec@ssh}}
    \pgfpathmoveto{\pgfqpoint{-\pgf@lib@dec@ssw}{-\pgf@lib@dec@ssh}}
    \pgfpathlineto{\pgfqpoint{\pgf@lib@dec@ssw}{\pgf@lib@dec@ssh}}
  }%
  \state{final}{
    \pgfpathmoveto{\pgfpointdecoratedpathlast}
  }%
}%







\newif\ifpgf@lib@shapedecoration@betweenborders

\edef\pgf@lib@shapedecoration@initialise{0pt}%

\pgfdeclaredecoration{shape backgrounds}{initialise}
{%
  \state{initialise}
  [
    width=+\pgf@lib@shapedecoration@initialise,
    next state=shape,
    persistent precomputation=
    {
      \pgfutil@ifundefined{pgf@sh@bg@\pgfkeysvalueof{/pgf/decoration/shape}}{%
        \pgferror{I do not know the shape `\pgfkeysvalueof{/pgf/decoration/shape}',
          so I cannot use it in a decoration. Check if its library been loaded or if you
          simply mistyped the name}}{}%
      \pgfinterruptpath%
        \pgfinterruptboundingbox%
          \pgftransformreset%
          \pgf@relevantforpicturesizetrue%
          \pgfkeys{/pgf/inner sep=50pt, /pgf/minimum size=1pt}%
          \setbox\pgfnodeparttextbox\hbox{}%
          \let\pgf@sh@savedmacros\pgfutil@empty%
          \let\pgf@sh@savedpoints\pgfutil@empty%
          \csname pgf@sh@s@\pgfkeysvalueof{/pgf/decoration/shape}\endcsname%
          \pgf@sh@savedpoints%
          \pgf@sh@savedmacros%
          \expandafter\gdef\expandafter\pgf@lib@shapedecoration@points\expandafter{\pgf@sh@savedpoints}%
          \expandafter\gdef\expandafter\pgf@lib@shapedecoration@macros\expandafter{\pgf@sh@savedmacros}%
          \csname pgf@sh@bg@\pgfkeysvalueof{/pgf/decoration/shape}\endcsname%
          \pgf@x\pgf@picmaxx%
          \pgf@y\pgf@picmaxy%
          \advance\pgf@x-\pgf@picminx%
          \advance\pgf@y-\pgf@picminy%
          \xdef\pgf@lib@shapedecoration@shapepathsize{%
            \noexpand\pgf@x\the\pgf@x%
            \noexpand\pgf@y\the\pgf@y%
          }%
        \endpgfinterruptboundingbox%
      \endpgfinterruptpath%
      \edef\pgf@lib@shapedecoration@beforeshape{0pt}%
      \edef\pgf@lib@shapedecoration@aftershape{0pt}%
      \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/decoration/shape start width}}%
      \edef\pgf@lib@shapedecoration@startwidth{\the\pgf@x}%
      \edef\pgf@lib@shapedecoration@width{\the\pgf@x}%
      \pgf@x-\pgf@x%
      \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/decoration/shape end width}}%
      \edef\pgf@lib@shapedecoration@widthchange{\the\pgf@x}%
      \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/decoration/shape start height}}%
      \edef\pgf@lib@shapedecoration@initialheight{\the\pgf@y}%
      \edef\pgf@lib@shapedecoration@height{\the\pgf@y}%
      \pgf@y-\pgf@y%
      \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/decoration/shape end height}}%
      \edef\pgf@lib@shapedecoration@heightchange{\the\pgf@y}%
      \ifx\pgf@lib@shapedecoration@spread\pgfutil@empty%
        \def\pgf@lib@shapedecoration@borderstext{between borders}%
        \afterassignment\pgf@lib@shapedecoration@setkeyword%
        \expandafter\pgf@x\pgf@lib@shapedecoration@sep,\pgf@stop%
        \edef\pgf@lib@shapedecoration@sep{\the\pgf@x}%
      \else%
        \def\pgf@lib@shapedecoration@borderstext{by borders}%
        \afterassignment\pgf@lib@shapedecoration@setkeyword%
        \expandafter\c@pgf@counta\pgf@lib@shapedecoration@spread,\pgf@stop%
        \ifpgf@lib@shapedecoration@betweenborders%
          \ifnum\c@pgf@counta>1\relax%
            \advance\c@pgf@counta-1\relax%
            \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/decoration/shape start width}}%
            \ifpgfshapedecorationscaled%
              \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/decoration/shape end width}}%
            \else%
              \advance\pgf@x\pgf@x%
            \fi%
            \pgf@x.5\pgf@x%
            \multiply\pgf@x-\c@pgf@counta%
            \advance\pgf@x\pgfdecoratedremainingdistance%
            \divide\pgf@x\c@pgf@counta%
            \pgf@x.9999\pgf@x%
            \ifpgfshapedecorationscaled%
              \pgf@xa\pgf@lib@shapedecoration@widthchange\relax%
              \divide\pgf@xa\c@pgf@counta%
              \edef\pgf@lib@shapedecoration@specialwidth{\the\pgf@xa}%
            \fi%
          \else%
            \pgf@lib@shapedecoration@betweenbordersfalse%
            \pgf@x\pgfdecoratedremainingdistance%
            \ifnum\c@pgf@counta=1\relax%
              \pgf@y.5\pgf@x%
              \edef\pgf@lib@shapedecoration@initialise{\the\pgf@y}%
            \else%
              \advance\pgf@x5pt\relax%
              \edef\pgf@lib@shapedecoration@initialise{\the\pgf@x}%
            \fi%
          \fi%
        \else%
          \pgf@x\pgfdecoratedremainingdistance%
          \ifnum\c@pgf@counta>1\relax%
            \advance\c@pgf@counta-1\relax%
            \divide\pgf@x\c@pgf@counta\relax%
          \else%
            \ifnum\c@pgf@counta=1\relax%
              \pgf@y.5\pgf@x%
              \edef\pgf@lib@shapedecoration@initialise{\the\pgf@y}%
            \else%
              \advance\pgf@x5pt\relax%
              \edef\pgf@lib@shapedecoration@initialise{\the\pgf@x}%
            \fi%
          \fi%
        \fi%
        \edef\pgf@lib@shapedecoration@sep{\the\pgf@x}%
      \fi%
    }]
  {}%
  \state{before shape}
  [
    width=\pgf@lib@shapedecoration@beforeshape-1sp,
    next state=shape,
    persistent precomputation=
    {
      \ifpgfshapedecorationscaled%
        \ifpgf@lib@shapedecoration@betweenborders%
          \ifx\pgf@lib@shapedecoration@spread\pgfutil@empty%
            \pgf@x\pgfdecoratedcompleteddistance%
            \advance\pgf@x\pgfdecoratedremainingdistance%
            \pgf@xa\pgf@lib@shapedecoration@startwidth\relax%
            \pgf@xa.5\pgf@xa%
            \advance\pgf@xa\pgfdecoratedcompleteddistance%
            \pgf@xb\pgf@lib@shapedecoration@widthchange\relax%
            \pgf@xb-.5\pgf@xb%
            \advance\pgf@xb\pgf@x%
            \pgfmathdivide@{\pgfmath@tonumber{\pgf@xa}}{\pgfmath@tonumber{\pgf@xb}}%
          \fi%
        \else%
          \pgf@y\pgfdecoratedcompleteddistance%
          \advance\pgf@y\pgfdecoratedremainingdistance%
          \pgfmathdivide@{\pgfmath@tonumber{\pgfdecoratedcompleteddistance}}{\pgfmath@tonumber{\pgf@y}}%
        \fi%
        \ifx\pgf@lib@shapedecoration@spread\pgfutil@empty%
          \pgf@x\pgf@lib@shapedecoration@widthchange\relax%
          \pgf@x\pgfmathresult\pgf@x%
          \advance\pgf@x\pgf@lib@shapedecoration@startwidth\relax%
        \else%
          \ifpgf@lib@shapedecoration@betweenborders%
            \pgf@x\pgf@lib@shapedecoration@width\relax%
            \advance\pgf@x\pgf@lib@shapedecoration@specialwidth\relax%
            \pgf@xa\pgf@x%
            \advance\pgf@xa-\pgf@lib@shapedecoration@startwidth\relax%
            \pgf@xb\pgf@lib@shapedecoration@widthchange\relax%
            \pgfmathdivide@{\pgfmath@tonumber{\pgf@xa}}{\pgfmath@tonumber{\pgf@xb}}%
          \else%
            \pgf@x\pgf@lib@shapedecoration@widthchange\relax%
            \pgf@x\pgfmathresult\pgf@x%
            \advance\pgf@x\pgf@lib@shapedecoration@startwidth\relax%
          \fi%
        \fi%
        \edef\pgf@lib@shapedecoration@width{\the\pgf@x}%
        \pgf@y\pgf@lib@shapedecoration@heightchange\relax%
        \pgf@y\pgfmathresult\pgf@y%
        \advance\pgf@y\pgf@lib@shapedecoration@initialheight\relax%
        \edef\pgf@lib@shapedecoration@height{\the\pgf@y}%
      \fi%
      \ifpgf@lib@shapedecoration@betweenborders%
        \pgf@x\pgf@lib@shapedecoration@width\relax%
        \pgf@x.5\pgf@x%
        \edef\pgf@lib@shapedecoration@beforeshape{\the\pgf@x}%
      \else%
        \def\pgf@lib@shapedecoration@beforeshape{0pt}%
      \fi%
    }]
  {}%
  \state{shape}[width=+0sp,next state=after shape]
  {
    \ifpgfshapedecorationsloped%
    \else%
      \pgftransformrotate{-\pgfdecoratedangle}%
    \fi%
    \pgf@lib@shapedecoration@shapepathsize%
    \pgfutil@tempdima\pgf@x%
    \pgfutil@tempdimb\pgf@y%
    \pgf@xa\pgf@lib@shapedecoration@width\relax%
    \pgf@xb\pgfutil@tempdima%
    \pgfmathdivide@{\pgfmath@tonumber{\pgf@xa}}{\pgfmath@tonumber{\pgf@xb}}%
    \expandafter\pgftransformxscale\expandafter{\pgfmathresult}%
    \pgf@ya\pgf@lib@shapedecoration@height\relax%
    \pgf@yb\pgfutil@tempdimb%
    \pgfmathdivide@{\pgfmath@tonumber{\pgf@ya}}{\pgfmath@tonumber{\pgf@yb}}%
    \expandafter\pgftransformyscale\expandafter{\pgfmathresult}%
    \pgf@lib@shapedecoration@points%
    \pgf@lib@shapedecoration@macros%
    \pgftransformshift{%
      \pgf@sh@reanchor{\pgfkeysvalueof{/pgf/decoration/shape}}{\pgfkeysvalueof{/pgf/decoration/anchor}}%
      \pgf@x-\pgf@x%
      \pgf@y-\pgf@y%
    }%
    \csname pgf@sh@bg@\pgfkeysvalueof{/pgf/decoration/shape}\endcsname%
  }%
  \state{after shape}
  [
    width=\pgf@lib@shapedecoration@aftershape-1sp,
    next state=sep,
    persistent precomputation=
    {
      \ifpgf@lib@shapedecoration@betweenborders%
        \pgf@x\pgf@lib@shapedecoration@width\relax%
        \pgf@x.5\pgf@x%
        \edef\pgf@lib@shapedecoration@aftershape{\the\pgf@x}%
      \else%
        \edef\pgf@lib@shapedecoration@aftershape{0pt}%
      \fi%
    }
  ]
  {}%
  \state{sep}[width=\pgf@lib@shapedecoration@sep,next state=before shape,
              persistent precomputation=\def\pgf@lib@shapedecoration@beforeshape{0pt}]
  {}%
  \state{final}
  {
    \pgfpathmoveto{\pgfpointdecoratedpathlast}%
  }%
}%

\def\pgf@lib@shapedecoration@setkeyword,{%
  \pgfutil@ifnextchar\pgf@stop{\def\pgf@temp{}\pgf@lib@@@shapedecoration@setkeyword}{\pgf@lib@@shapedecoration@setkeyword}%
}%
\def\pgf@lib@@shapedecoration@setkeyword#1,{\def\pgf@temp{#1}\pgf@lib@@@shapedecoration@setkeyword}%
\def\pgf@lib@@@shapedecoration@setkeyword\pgf@stop{%
  \ifx\pgf@temp\pgf@lib@shapedecoration@borderstext%
    \pgf@lib@shapedecoration@betweenborderstrue%
  \else%
    \pgf@lib@shapedecoration@betweenbordersfalse%
  \fi%
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.shapes.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.text.code.tex ====

\usepgfmodule{decorations}%



\pgfkeys{
    /pgf/decoration/.cd,
    text/.store in=\pgfdecorationtext,%
    text color/.store in=\pgf@lib@decorationtextcolor,%
    text format delimiters/.code={\expandafter\pgfsetdecoratetextformatdelimiters#1},
    text align/.code={\pgfkeys{/pgf/decoration/text align/.cd,#1}},
        text align/.cd,
        align/.initial=left,
        left/.style={/pgf/decoration/text align/align=left},
        right/.style={/pgf/decoration/text align/align=right},
        center/.style={/pgf/decoration/text align/align=center},
        left indent/.initial=0pt,
        right indent/.initial=0pt,
        fit to path/.is if=pgf@lib@dec@text@fit,
        fit to path stretching spaces/.default=true,
        fit to path stretching spaces/.code={%
            \csname pgf@lib@dec@text@fit#1\endcsname%
            \csname pgf@lib@dec@text@stretch@spaces#1\endcsname%
        }%
}%

\newif\ifpgf@lib@dec@text@scan@space
\newif\ifpgf@lib@dec@text@stretch@spaces
\newif\ifpgf@lib@dec@text@fit

\def\pgf@lib@decorationtextcolor{black}%

\def\pgf@lib@dec@text@left@text{left}%
\def\pgf@lib@dec@text@right@text{right}%
\def\pgf@lib@dec@text@right@center{center}%


\pgfdeclaredecoration{text along path}{initial}{%
    \state{initial}[
        width=+0pt, next state=left indent,
        persistent precomputation={%
            \edef\pgf@lib@dec@text@indent@left{\pgfkeysvalueof{/pgf/decoration/text align/left indent}}%
            \edef\pgf@lib@dec@text@indent@right{\pgfkeysvalueof{/pgf/decoration/text align/right indent}}%
            \edef\pgf@lib@dec@text@align{\pgfkeysvalueof{/pgf/decoration/text align/align}}%
            \pgfdecoratedremainingdistance=\pgfdecoratedpathlength%
        \advance\pgfdecoratedremainingdistance by-\pgf@lib@dec@text@indent@right\relax%
        \edef\pgfdecoratedpathlength{\the\pgfdecoratedremainingdistance}%
        \pgf@lib@dec@text@getwidth%
        \pgf@x=\pgf@lib@dec@text@width\relax%
        \pgf@y=\pgfdecoratedremainingdistance%
        \ifpgf@lib@dec@text@fit%
            \advance\pgf@y by-\pgf@lib@dec@text@indent@left\relax%
            \advance\pgf@y by-\pgf@x%
            \ifpgf@lib@dec@text@stretch@spaces%
                \def\pgf@lib@dec@text@character@shift{0pt}%
                \divide\pgf@y by\pgf@lib@dec@space@count\relax%
                \edef\pgf@lib@dec@text@space@shift{\the\pgf@y}%
            \else%
                \c@pgf@counta=\pgf@lib@dec@character@count\relax%
                \advance\c@pgf@counta by-1\relax%
                \divide\pgf@y by\c@pgf@counta\relax%
                \edef\pgf@lib@dec@text@character@shift{\the\pgf@y}%
                \def\pgf@lib@dec@text@space@shift{0pt}%
            \fi%
            \ifdim\pgf@y<0pt\relax%
                \pgf@lib@dec@text@fitfalse%
                \pgf@lib@dec@text@stretch@spacesfalse%
                \def\pgf@lib@dec@text@character@shift{0pt}%
                \def\pgf@lib@dec@text@space@shift{0pt}%
            \fi%
        \else%
            \def\pgf@lib@dec@text@character@shift{0pt}%
            \def\pgf@lib@dec@text@space@shift{0pt}%
                \ifx\pgf@lib@dec@text@align\pgf@lib@dec@text@left@text%
                \else%
                    \ifx\pgf@lib@dec@text@align\pgf@lib@dec@text@right@text%
                        \advance\pgf@y by-\pgf@x%
                        \edef\pgf@lib@dec@text@indent@left{\the\pgf@y}%
                    \else%
                        \advance\pgf@y by-\pgf@x%
                        \advance\pgf@y by-\pgf@lib@dec@text@indent@left\relax%
                        \pgf@y=0.5\pgf@y%
                        \advance\pgf@y by\pgf@lib@dec@text@indent@left\relax%
                        \edef\pgf@lib@dec@text@indent@left{\the\pgf@y}%
                    \fi%
                \fi%
        \fi%
        \let\pgfdecorationrestoftext=\pgfdecorationtext%
    }]{}%
\state{left indent}[width=+\pgf@lib@dec@text@indent@left, next state=scan]{}%
\state{scan}[
    width=+0pt,
    next state=before typeset,
    persistent precomputation={
        \pgf@lib@dec@text@scanchar%
        \ifvoid\pgf@lib@dec@text@box%
            \setbox\pgf@lib@dec@text@box\hbox{}%
            \wd\pgf@lib@dec@text@box16383pt\relax%
        \fi%
}]{}%
\state{before typeset}[width=+.5\wd\pgf@lib@dec@text@box, next state=typeset]{}%
\state{typeset}[width=+0pt, next state=after typeset]
{%
  \pgftransformxshift{+-.5\wd\pgf@lib@dec@text@box}%
  \setbox\pgf@hbox\hbox{\copy\pgf@lib@dec@text@box}%
  \pgfqboxsynced\pgf@hbox%
}%
\state{after typeset}[width=+.5\wd\pgf@lib@dec@text@box, next state=shift,
    persistent precomputation={%
    \ifpgf@lib@dec@text@fit%
        \ifpgf@lib@dec@text@stretch@spaces%
            \ifpgf@lib@dec@text@scan@space%
                \let\pgf@lib@dec@text@shift=\pgf@lib@dec@text@space@shift%
            \else%
                \def\pgf@lib@dec@text@shift{0pt}%
            \fi%
        \else%
            \let\pgf@lib@dec@text@shift=\pgf@lib@dec@text@character@shift%
          \fi%
        \else%
            \def\pgf@lib@dec@text@shift{0pt}%
      \fi%
  }]{}%
\state{shift}[width=+\pgf@lib@dec@text@shift, next state=scan]{}%
\state{final}{}%
}%


\def\pgfsetdecoratetextformatdelimiters#1#2{%
    \def\pgf@lib@dec@text@formatchar{#1}%
    \def\pgf@test{#2}%
    \ifx\pgf@test\pgfutil@empty%
        \def\pgf@lib@dec@text@collectformat##1#1{%
        \pgf@lib@dec@text@@collectformat##1\pgf@stop}%
    \else%
        \def\pgf@lib@dec@text@collectformat##1#2{%
            \pgf@lib@dec@text@@collectformat##1\pgf@stop}%
    \fi%
}%

\pgfsetdecoratetextformatdelimiters{|}{}%

\newbox\pgf@lib@dec@text@box
\newif\ifpgf@lib@decorate@textmathmode

\let\pgfdecorationtext=\pgfutil@empty
\let\pgfdecorationrestoftext=\pgfutil@empty%
\let\pgf@lib@dec@text@format=\pgfutil@empty

\def\pgf@lib@dec@text@scanchar{%
    \pgf@lib@dec@text@scan@spacefalse%
    \ifx\pgfdecorationrestoftext\pgfutil@empty%
        \let\pgf@lib@dec@text@char\pgfutil@empty%
        \setbox\pgf@lib@dec@text@box\box\pgfutil@voidb@x%
        \let\pgf@next\relax%
    \else\ifx\pgfdecorationrestoftext\pgf@lib@dec@mathshift%
        \ifpgf@lib@decorate@textmathmode%
          \pgf@lib@decorate@textmathmodefalse%
        \fi%
        \let\pgf@lib@dec@text@char\pgfutil@empty%
        \setbox\pgf@lib@dec@text@box\box\pgfutil@voidb@x%
        \let\pgf@next\relax%
    \else
        \let\pgf@next\pgf@lib@dec@text@@scanchar%
    \fi\fi%
    \pgf@next}%

\def\pgf@lib@dec@text@@scanchar{%
    \expandafter\pgf@lib@dec@text@@@scanchar\pgfdecorationrestoftext\pgf@stop}%

\def\pgf@lib@dec@text@@@scanchar{%
    \futurelet\pgf@lib@dec@lettoken%
    \pgf@lib@dec@text@@@@scanchar}%

\def\pgf@lib@dec@text@@@@scanchar{%
    \ifx\pgf@lib@dec@lettoken\pgfutil@sptoken%
        \let\pgf@next\pgf@lib@dec@text@insertspace%
    \else%
        \let\pgf@next\pgf@lib@dec@text@@@@@scanchar%
    \fi%
    \pgf@next}%

\def\pgf@lib@dec@text@@@@@scanchar{%
    \pgfutil@ifnextchar\bgroup{\pgf@lib@dec@text@collectgroup}%
        {\pgf@lib@dec@text@@@@@@scanchar}}%

\def\pgf@lib@dec@text@collectgroup#1{%
    \def\pgf@lib@dec@text@char{#1}%
    \pgf@lib@dec@text@collectrestoftext}%

\def\pgf@lib@dec@text@@@@@@scanchar#1{%
    \ifx#1\pgf@stop%
        \pgf@lib@dec@text@box\box\pgfutil@voidb@x%
        \let\pgf@next\pgf@lib@dec@text@endoftext%
    \else%
        \def\pgf@lib@dec@text@char{#1}%
        \ifx#1\space%
            \let\pgf@next\pgf@lib@dec@text@collectrestoftext%
        \else%
            \ifx#1\ %
                \let\pgf@next\pgf@lib@dec@text@collectrestoftext%
            \else%
                \ifx\pgf@lib@dec@text@char\pgf@lib@dec@text@formatchar%
                    \let\pgf@next\pgf@lib@dec@text@collectformat%
                \else%
                    \expandafter\ifcat\noexpand#1\relax%
                        \let\pgf@next\pgf@lib@dec@text@expandcs%
                    \else%
                        \ifnum\catcode`#1=3\relax%
                            \ifpgf@lib@decorate@textmathmode%
                                \pgf@lib@decorate@textmathmodefalse%
                            \else%
                                \pgf@lib@decorate@textmathmodetrue%
                            \fi%
                            \let\pgf@next\pgf@lib@dec@text@@@scanchar%
                        \else%
                            \let\pgf@next\pgf@lib@dec@text@collectrestoftext%
                        \fi%
                    \fi%
                \fi%
            \fi%
        \fi%
    \fi%
    \pgf@next%
}%

\def\pgf@lib@dec@text@@collectformat{%
    \pgfutil@ifnextchar+{\pgf@lib@dec@text@addtoformat}{\pgf@lib@dec@text@setformat}}%

\def\pgf@lib@dec@text@setformat#1\pgf@stop{%
    \def\pgf@lib@dec@text@format{#1}%
    \pgf@lib@dec@text@@@scanchar%
}%

\def\pgf@lib@dec@text@addtoformat+#1\pgf@stop{%
    \expandafter\def\expandafter\pgf@lib@dec@text@format\expandafter{\pgf@lib@dec@text@format#1}%
    \pgf@lib@dec@text@@@scanchar%
}%

\def\pgf@lib@dec@text@insertspace{%
    \pgf@lib@dec@text@scan@spacetrue%
    \pgfutil@ifnextchar\bgroup{\pgf@lib@dec@text@@insertspacegrp}%
        {\pgf@lib@dec@text@@insertspace}}%

\def\pgf@lib@dec@text@@insertspacegrp#1{%
    \pgf@lib@dec@text@@@@@@scanchar\space{#1}}%

\def\pgf@lib@dec@text@@insertspace#1{%
    \pgf@lib@dec@text@@@@@@scanchar\space#1}%

\def\pgf@lib@dec@text@expandcs{%
    \expandafter\expandafter\expandafter\pgf@lib@dec@text@@@@@scanchar%
        \pgf@lib@dec@text@char}%

\def\pgf@lib@dec@text@endoftext{%
    \let\pgfdecorationrestoftext\pgfutil@empty%
    \let\pgf@lib@dec@text@char\pgfutil@empty%
}%
\def\pgf@lib@dec@text@collectrestoftext{%
    \pgf@lib@dec@text@dobox%
    \futurelet\pgf@lib@dec@text@lettoken%
    \pgf@lib@dec@text@@collectrestoftext}%

\def\pgf@lib@dec@text@@collectrestoftext{%
    \ifx\bgroup\pgf@lib@dec@text@lettoken%
        \let\pgf@next\pgf@lib@dec@text@@@collectrestoftextgrp%
    \else%
        \let\pgf@next\pgf@lib@dec@text@@@collectrestoftext%
    \fi%
    \pgf@next}%

\def\pgf@lib@dec@text@@@collectrestoftextgrp#1#2\pgf@stop{\def\pgfdecorationrestoftext{{#1}#2}%
}%

\def\pgf@lib@dec@text@@@collectrestoftext#1\pgf@stop{\def\pgfdecorationrestoftext{#1}}%

{%
    \catcode`\$3 %
    \gdef\pgf@lib@dec@mathshift{$}%
    \catcode`\$9 $%
}%

\def\pgf@lib@dec@text@dobox{%
    \setbox\pgf@lib@dec@text@box\hbox{%
        \pgfinterruptpicture%
        \begingroup%
            \pgfsetcolor{\pgf@lib@decorationtextcolor}%
            \ifpgf@lib@decorate@textmathmode\pgf@lib@dec@mathshift\fi%
                \pgf@lib@dec@text@format\relax%
                \pgf@lib@dec@text@char%
            \ifpgf@lib@decorate@textmathmode\pgf@lib@dec@mathshift\fi%
        \endgroup%
        \endpgfinterruptpicture%
    }%
}%

\def\pgf@lib@dec@text@getwidth{%
    \begingroup%
        \let\c@pgf@lib@dec@characters=\c@pgf@counta%
        \let\c@pgf@lib@dec@spaces=\c@pgf@countb%
        \let\pgfdecorationrestoftext=\pgfdecorationtext%
        \c@pgf@lib@dec@spaces=0\relax%
        \c@pgf@lib@dec@characters=0\relax%
        \pgfmathloop%
            \pgf@lib@dec@text@scanchar%
            \ifvoid\pgf@lib@dec@text@box%
            \else%
                \setbox\pgf@hbox=\hbox{{%
                    \unhbox\pgf@hbox%
                    \unhbox\pgf@lib@dec@text@box%
                }}%
                \advance\c@pgf@lib@dec@characters by1\relax%
                \ifpgf@lib@dec@text@scan@space%
                    \advance\c@pgf@lib@dec@spaces by1\relax%
                \fi%
        \repeatpgfmathloop%
        \global\pgf@x=\the\wd\pgf@hbox%
        \xdef\pgf@lib@dec@temp{\the\c@pgf@lib@dec@characters}%
        \xdef\pgf@lib@dec@@temp{\the\c@pgf@lib@dec@spaces}%
    \endgroup%
    \edef\pgf@lib@dec@text@width{\the\pgf@x}%
    \let\pgf@lib@dec@character@count=\pgf@lib@dec@temp%
    \let\pgf@lib@dec@space@count=\pgf@lib@dec@@temp%
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.text.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/luamath/pgflibraryluamath.code.tex ====


\edef\pgfliblua@oldcatcodedoublequote{\the\catcode`\"}%
\catcode`\"=12

\let\pgfutil@ifluatex\iffalse
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname directlua\endcsname\relax
\else
  \expandafter\let\csname pgfutil@ifluatex\expandafter\endcsname
    \csname iftrue\endcsname
\fi

\pgfutil@ifluatex
  \let\pgfutil@directlua\directlua
  \pgfutil@directlua{%
    tex.enableprimitives('pgfutil@',{'luaescapestring'})}%
\else
  \def\pgfutil@directlua#1{}%
  \def\pgfutil@luaescapestring#1{}%
\fi

\pgfutil@directlua{%
  pgfluamathfunctions = require("pgf.luamath.functions")
  pgfluamathparser = require("pgf.luamath.parser")}%


\pgfkeys{
    /pgf/trig format/deg/.add code={}{\directlua{pgfluamathfunctions.setTrigFormat("deg")}\aftergroup\pgfmath@settrigformat},
    /pgf/trig format/rad/.add code={}{\directlua{pgfluamathfunctions.setTrigFormat("rad")}\aftergroup\pgfmath@settrigformat},
}%
\pgfmathiftrigonometricusesdeg{%
    \pgfkeys{/pgf/trig format/deg}%
}{%
    \pgfkeys{/pgf/trig format/rad}%
}%

\def\pgfmath@settrigformat{%
    \pgfmathiftrigonometricusesdeg{%
        \directlua{pgfluamathfunctions.setTrigFormat("deg")}%
    }{%
        \directlua{pgfluamathfunctions.setTrigFormat("rad")}%
    }%
}%

\let\pgfmathsetseed@pgfbasic = \pgfmathsetseed
\def\pgfmathsetseed#1{%
    \pgfmathsetseed@pgfbasic{#1}%
    \directlua{pgfluamathfunctions.setRandomSeed(pgfluamathfunctions.tonumber("\pgfmathresult"))}%
}%

\let\pgfmathnotifynewdeclarefunction@orig=\pgfmathnotifynewdeclarefunction
\def\pgfmathnotifynewdeclarefunction#1#2#3{%
    \pgfmathnotifynewdeclarefunction@orig{#1}{#2}{#3}%
    \begingroup
        \toks0={#3}%
        \xdef\pgf@marshal@glob{\the\toks0 }%
    \endgroup
    \pgfutil@command@to@string\pgf@marshal@glob\pgf@marshal
    \expandafter\pgfutilifcontainsmacro\expandafter{\pgf@marshal}{%
        \def\pgf@temp{1}%
    }{%
        \def\pgf@temp{0}%
    }%
    \if1\pgf@temp
        \directlua{pgfluamathparser.pushLocalExpressionFunction(%
            "\pgfutil@luaescapestring{#1}",%
            #2,%
            "functionMustBeEvaluatedInTeX")}%
    \else
        \directlua{pgfluamathparser.pushLocalExpressionFunction(%
            "\pgfutil@luaescapestring{#1}",%
            #2,%
            "\pgfutil@luaescapestring{#3}")}%
    \fi
    \aftergroup\pgfluamathparse@pop@local@function
}%

\def\pgfluamathparse@pop@local@function{%
    \directlua{pgfluamathparser.popLocalExpressionFunction()}%
}%




\newif\ifpgfluamathshowerrormessage

\newif\ifpgfluamathenableTeXfallback

\newif\ifpgfluamathcomputationactive
\newif\ifpgfluamathparseractive

\def\pgfluamath@makecomputationactive{%
  \ifpgfluamathcomputationactive
  \else
    \pgfluamath@checkuninstallcmd%
    \pgfluamath@install%
    \pgfluamathcomputationactivetrue
  \fi}%

\def\pgfluamath@makecomputationinactive{%
  \ifpgfluamathcomputationactive
    \pgfluamath@uninstall%
    \pgfluamathcomputationactivefalse
  \fi}%

\let\pgfluamath@pgfmathparse\pgfmathparse
\def\pgfluamath@makeparseractive{%
  \ifpgfluamathparseractive
  \else
    \let\pgfluamath@pgfmathparse\pgfmathparse
    \let\pgfmathparse\pgfluamathparse
    \let\pgfmath@iftrue=\pgfmathluamath@iftrue
    \pgfluamathparseractivetrue
  \fi}%

\let\pgfmath@iftrue@basic=\pgfmath@iftrue

\def\pgfluamath@makeparserinactive{%
  \ifpgfluamathparseractive
    \let\pgfmathparse\pgfluamath@pgfmathparse
    \let\pgfmath@iftrue=\pgfmath@iftrue@basic
    \pgfluamathparseractivefalse
  \fi}%

\pgfqkeys{/pgf}{%
  luamath/.is choice,
  luamath/only computation/.code={%
    \pgfutil@ifluatex
      \pgfluamath@makecomputationactive
      \pgfluamath@makeparserinactive
    \else
      \pgfmath@error{Sorry, you need the luaTeX engine to use the
        luamath library}{}%
    \fi},
  luamath/parser and computation/.code={%
    \pgfutil@ifluatex
      \pgfluamath@makecomputationactive
      \pgfluamath@makeparseractive
    \else
      \pgfmath@error{Sorry, you need the luaTeX engine to use the
        luamath library}{}%
    \fi},
  luamath/off/.code={%
    \pgfluamath@makecomputationinactive
    \pgfluamath@makeparserinactive},
  luamath/.default=only computation,
  luamath/parser/.code={%
    \pgfutil@ifluatex
      \pgfluamath@makeparseractive
    \else
      \pgfmath@error{Sorry, you need the luaTeX engine to use the
        luamath library}{}%
    \fi
  },
    luamath/output format/.is choice,
    luamath/output format/fixed/.code=    {\def\pgfluamath@outputformat@choice{0}},
    luamath/output format/float/.code=    {\def\pgfluamath@outputformat@choice{1}},
    luamath/output format/fixed,
    luamath/show error message/.is if=pgfluamathshowerrormessage,
    luamath/enable TeX fallback/.is choice,
    luamath/enable TeX fallback/true/.code={\pgfluamathenableTeXfallbacktrue\pgfluamathshowerrormessagefalse},
    luamath/enable TeX fallback/false/.code={\pgfluamathenableTeXfallbackfalse\pgfluamathshowerrormessagetrue},
    luamath/enable TeX fallback/.default=true,
    luamath/enable TeX fallback=true,
}%

\def\pgfluamath@uninstall@appendcmd#1{%
  \expandafter\gdef\expandafter\pgfluamath@uninstall\expandafter{%
    \pgfluamath@uninstall #1}}%

\def\pgfluamath@checkuninstallcmd{%
  \pgfutil@ifundefined{pgfluamath@uninstall}{%
    \global\let\pgfluamath@uninstall=\pgfutil@empty
  }{%
    \def\pgfluamath@uninstall@appendcmd##1{}%
    \def\pgfluamath@prepareuninstallcmd##1{}%
  }%
}%

\def\pgfluamath@prepareuninstallcmd#1{%
  \expandafter\global\expandafter\let
    \csname pgfluamath@backup@\string#1\endcsname=#1%
  \expandafter\gdef\expandafter\pgfluamath@uninstall\expandafter{%
    \pgfluamath@uninstall
    \expandafter\let\expandafter#1\csname pgfluamath@backup@\string#1\endcsname}%
}%

\def\pgfluamath@install@function#1=#2{%
  \pgfluamath@prepareuninstallcmd{#1}%
  \let#1=#2%
}%

\def\pgfluamath@install{%
  \pgfluamath@install@function\pgfmathadd@=\pgfluamathadd@%
  \pgfluamath@install@function\pgfmathsubtract@=\pgfluamathsubtract@%
  \pgfluamath@install@function\pgfmathneg@=\pgfluamathneg@%
  \pgfluamath@install@function\pgfmathmultiply@=\pgfluamathmultiply@%
  \pgfluamath@install@function\pgfmath@iftrue=\pgfmathluamath@iftrue%
  \pgfluamath@install@function\pgfmathdivide@=\pgfluamathdivide@%
  \pgfluamath@install@function\pgfmathfactorial@=\pgfluamathfactorial@%
  \pgfluamath@install@function\pgfmathsqrt@=\pgfluamathsqrt@%
  \pgfluamath@install@function\pgfmathe@=\pgfluamathe@%
  \pgfluamath@install@function\pgfmathexp@=\pgfluamathexp@%
  \pgfluamath@install@function\pgfmathln@=\pgfluamathln@%
  \pgfluamath@install@function\pgfmathlogten@=\pgfluamathlogten@%
  \pgfluamath@install@function\pgfmathabs@=\pgfluamathabs@%
  \pgfluamath@install@function\pgfmathmod@=\pgfluamathmod@%
  \pgfluamath@install@function\pgfmathMod@=\pgfluamathMod@%
  \pgfluamath@install@function\pgfmathround@=\pgfluamathround@%
  \pgfluamath@install@function\pgfmathfloor@=\pgfluamathfloor@%
  \pgfluamath@install@function\pgfmathceil@=\pgfluamathceil@%
  \pgfluamath@install@function\pgfmathgcd@=\pgfluamathgcd@%
  \pgfluamath@install@function\pgfmathisprime@=\pgfluamathisprime@%
  \pgfluamath@install@function\pgfmathpi@=\pgfluamathpi@%
  \pgfluamath@install@function\pgfmathrad@=\pgfluamathrad@%
  \pgfluamath@install@function\pgfmathdeg@=\pgfluamathdeg@%
  \pgfluamath@install@function\pgfmathsin@=\pgfluamathsin@%
  \pgfluamath@install@function\pgfmathcos@=\pgfluamathcos@%
  \pgfluamath@install@function\pgfmathtan@=\pgfluamathtan@%
  \pgfluamath@install@function\pgfmathsec@=\pgfluamathsec@%
  \pgfluamath@install@function\pgfmathcosec@=\pgfluamathcosec@%
  \pgfluamath@install@function\pgfmathcot@=\pgfluamathcot@%
  \pgfluamath@install@function\pgfmathasin@=\pgfluamathasin@%
  \pgfluamath@install@function\pgfmathacos@=\pgfluamathacos@%
  \pgfluamath@install@function\pgfmathatan@=\pgfluamathatan@%
  \pgfluamath@install@function\pgfmathatantwo@=\pgfluamathatantwo@%
  \pgfluamath@install@function\pgfmathmax@=\pgfluamathmax@%
  \pgfluamath@install@function\pgfmathmin@=\pgfluamathmin@%
  \pgfluamath@install@function\pgfmathrand@=\pgfluamathrand@
  \pgfluamath@install@function\pgfmathrand=\pgfluamathrand@
  \pgfluamath@install@function\pgfmathrnd@=\pgfluamathrnd@
  \pgfluamath@install@function\pgfmathrnd=\pgfluamathrnd@
  \pgfluamath@install@function\pgfmathreciprocal=\pgfluamathreciprocal%
  \pgfluamath@install@function\pgfpointnormalised=\pgfluamathpointnormalised
}%

\def\pgfluamathgetresult#1{%
  \edef\pgfmathresult{\pgfutil@directlua{tex.print(-1,#1)}}}%

\def\pgfmathluamath@iftrue{%
    \if 0\pgfluamath@outputformat@choice
        \let\pgfmathluamath@@iftrue@v=\pgfluamathone
    \else
        \let\pgfmathluamath@@iftrue@v=\pgfluamathfloatone
    \fi
    \pgfmathluamath@iftrue@
}%
\def\pgfluamathone{1.0}%
\def\pgfluamathfloatone{1Y1.0e+00]}%
\def\pgfmathluamath@iftrue@#1#2{%
    \ifx\pgfmathresult\pgfmathluamath@@iftrue@v
        \def\pgfmath@next{#1}%
    \else
        \def\pgfmath@next{#2}%
    \fi
    \pgfmath@next
}%

\def\pgfluamathpi@{%
  \pgfluamathgetresult{pgfluamathfunctions.pi()}}%
\def\pgfluamathe@{%
  \pgfluamathgetresult{pgfluamathfunctions.e()}}%
\def\pgfluamathadd@#1#2{%
  \pgfluamathgetresult{pgfluamathfunctions.add(#1,#2)}}%
\def\pgfluamathsubtract@#1#2{%
  \pgfluamathgetresult{pgfluamathfunctions.subtract(#1,#2)}}%
\def\pgfluamathneg@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.neg(#1)}}%
\def\pgfluamathmultiply@#1#2{%
  \pgfluamathgetresult{pgfluamathfunctions.multiply(#1,#2)}}%
\def\pgfluamathdivide@#1#2{%
  \pgfluamathgetresult{pgfluamathfunctions.divide(#1,#2)}}%
\def\pgfluamathabs@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.abs(#1)}}%
\def\pgfluamathround@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.round(#1)}}%
\def\pgfluamathfloor@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.floor(#1)}}%
\def\pgfluamathceil@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.ceil(#1)}}%
\def\pgfluamathgcd@#1#2{%
  \pgfluamathgetresult{pgfluamathfunctions.gcd(#1,#2)}}%
\def\pgfluamathisprime@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.isprime(#1)}}%
\def\pgfluamathmax@#1{%
  \pgfluamathgetresult{%
    math.max(pgfluamathfunctions.split_braces_to_explist("#1"))}}%
\def\pgfluamathmin@#1{%
  \pgfluamathgetresult{%
    math.min(pgfluamathfunctions.split_braces_to_explist("#1"))}}%
\def\pgfluamathsin@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.Sin(#1)}}%
\def\pgfluamathcos@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.Cos(#1)}}%
\def\pgfluamathtan@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.Tan(#1)}}%
\def\pgfluamathmod@#1#2{%
  \pgfluamathgetresult{pgfluamathfunctions.mod(#1,#2)}}%
\def\pgfluamathMod@#1#2{%
  \pgfluamathgetresult{pgfluamathfunctions.Mod(#1,#2)}}%
\def\pgfluamathrad@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.rad(#1)}}%
\def\pgfluamathdeg@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.deg(#1)}}%
\def\pgfluamathatan@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.aTan(#1)}}%
\def\pgfluamathatantwo@#1#2{%
  \pgfluamathgetresult{pgfluamathfunctions.aTan2(#1,#2)}}%
\def\pgfluamathasin@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.aSin(#1)}}%
\def\pgfluamathacos@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.aCos(#1)}}%
\def\pgfluamathcot@#1{%
  \pgfluamathgetresult{1/pgfluamathfunctions.Tan(#1)}}%
\def\pgfluamathsec@#1{%
  \pgfluamathgetresult{1/pgfluamathfunctions.Cos(#1)}}%
\def\pgfluamathcosec@#1{%
  \pgfluamathgetresult{1/pgfluamathfunctions.Sin(#1)}}%
\def\pgfluamathexp@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.exp(#1)}}%
\def\pgfluamathln@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.log(#1)}}%
\def\pgfluamathlogten@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.log10(#1)}}%
\def\pgfluamathsqrt@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.sqrt(#1)}}%
\def\pgfluamathrnd@{%
  \pgfluamathgetresult{pgfluamathfunctions.rnd()}}%
\def\pgfluamathrand@{%
  \pgfluamathgetresult{pgfluamathfunctions.rand(-1,1)}}%
\def\pgfluamathfactorial@#1{%
  \pgfluamathgetresult{pgfluamathfunctions.factorial(#1)}}%
\def\pgfluamathreciprocal#1{%
  \pgfluamathgetresult{1/#1}}%

\def\pgfluamathpointnormalised#1{%
  \pgf@process{#1}%
  \pgfutil@directlua{%
    pgfluamathfunctions.pointnormalised(%
      \pgf@sys@tonumber{\pgf@x},\pgf@sys@tonumber{\pgf@y})}%
  \ignorespaces}%


\newif\ifpgfluamathunitsdeclared

\newif\ifpgfluamathusedTeXfallback

\def\pgfluamathparse#1{%
  \pgfluamathusedTeXfallbackfalse
  \pgfutil@directlua{pgfluamathparser.texCallParser(
    "\pgfutil@luaescapestring{#1}",
    \pgfluamath@outputformat@choice,
    \ifpgfluamathshowerrormessage true\else false\fi)%
  }%
  \ifx\pgfmathresult\pgfutil@empty
      \ifpgfluamathenableTeXfallback
         \pgfluamathusedTeXfallbacktrue
         \pgfluamath@pgfmathparse{#1}%
      \fi
  \fi
}%

\catcode`\"=\pgfliblua@oldcatcodedoublequote
\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/luamath/pgflibraryluamath.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryarrows.code.tex ====

\ProvidesFileRCS{pgflibraryarrows.code.tex}



\pgfarrowsdeclare{square bracket}{square bracket}
{
  \pgfutil@tempdima=1pt%
  \advance\pgfutil@tempdima by1.25\pgflinewidth%
  \pgfarrowsleftextend{+-\pgfutil@tempdima}
  \pgfarrowsrightextend{+.5\pgflinewidth}
}
{
  \pgfutil@tempdima=2pt%
  \advance\pgfutil@tempdima by1.5\pgflinewidth%
  \pgfutil@tempdimb=\pgfutil@tempdima%
  \advance\pgfutil@tempdimb by\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetmiterjoin
  \pgfsetbuttcap
  \pgfpathmoveto{\pgfqpoint{-.5\pgfutil@tempdimb}{-1\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0pt}{-1\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0pt}{\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{-.5\pgfutil@tempdimb}{\pgfutil@tempdima}}
  \pgfusepathqstroke
}%
\pgfdeclarearrow{name=[-], means=square bracket}%

\pgfarrowsdeclarereversed{]}{[}{[}{]}%



\pgfarrowsdeclare{(}{)}
{
  \pgfutil@tempdima=2pt%
  \advance\pgfutil@tempdima by1.5\pgflinewidth%
  \pgfutil@tempdimb=0.0625\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
  \pgfutil@tempdimb=0.5\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{+-\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=2pt%
  \advance\pgfutil@tempdima by1.5\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfpathmoveto{\pgfqpoint{-.5\pgfutil@tempdima}{-1\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{.25\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
  {\pgfqpoint{.25\pgfutil@tempdima}{.5\pgfutil@tempdima}}
  {\pgfqpoint{-.5\pgfutil@tempdima}{\pgfutil@tempdima}}
  \pgfusepathqstroke
}%

\pgfarrowsdeclarereversed{)}{(}{(}{)}%





\pgfarrowsdeclare{angle 90}{angle 90}
{
  \pgfutil@tempdima=0.3pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfutil@tempdimb=5.5\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{+-\pgfutil@tempdimb}
  \pgfutil@tempdimb=.5\pgfutil@tempdima\advance\pgfutil@tempdimb by0.707\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.3pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfqpoint{-5.5\pgfutil@tempdima}{-6\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0.5\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{-5.5\pgfutil@tempdima}{6\pgfutil@tempdima}}
  \pgfusepathqstroke
}%

\pgfarrowsdeclarereversed{angle 90 reversed}{angle 90 reversed}{angle 90}{angle 90}%


\pgfarrowsdeclare{angle 60}{angle 60}
{
  \pgfutil@tempdima=0.3pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfutil@tempdimb=7.29\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{+-\pgfutil@tempdimb}
  \pgfutil@tempdimb=.5\pgfutil@tempdima\advance\pgfutil@tempdimb by\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.3pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointadd{\pgfqpoint{0.5\pgfutil@tempdima}{0pt}}{\pgfqpointpolar{150}{9\pgfutil@tempdima}}}
  \pgfpathlineto{\pgfqpoint{0.5\pgfutil@tempdima}{0pt}}
  \pgfpathlineto{\pgfpointadd{\pgfqpoint{0.5\pgfutil@tempdima}{0pt}}{\pgfqpointpolar{-150}{9\pgfutil@tempdima}}}
  \pgfusepathqstroke
}%

\pgfarrowsdeclarereversed{angle 60 reversed}{angle 60 reversed}{angle 60}{angle 60}%



\pgfarrowsdeclare{angle 45}{angle 45}
{
  \pgfutil@tempdima=0.3pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfutil@tempdimb=8.705\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{+-\pgfutil@tempdimb}
  \pgfutil@tempdimb=.5\pgfutil@tempdima\advance\pgfutil@tempdimb by1.28\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.3pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointadd{\pgfqpoint{0.5\pgfutil@tempdima}{0pt}}{\pgfqpointpolar{157}{10\pgfutil@tempdima}}}
  \pgfpathlineto{\pgfqpoint{0.5\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfpointadd{\pgfqpoint{0.5\pgfutil@tempdima}{0pt}}{\pgfqpointpolar{-157}{10\pgfutil@tempdima}}}
  \pgfusepathqstroke
}%

\pgfarrowsdeclarereversed{angle 45 reversed}{angle 45 reversed}{angle 45}{angle 45}%




\pgfarrowsdeclare{*}{*}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.2\pgflinewidth%
  \pgfutil@tempdimb=7.5\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth
  \pgfarrowsleftextend{+-\pgfutil@tempdimb}
  \pgfutil@tempdimb=1.5\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.2\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfpathcircle{\pgfqpoint{-3\pgfutil@tempdima}{0pt}}{+4.5\pgfutil@tempdima}
  \pgfusepathqfillstroke
}%



\pgfarrowsdeclare{o}{o}
{
  \pgfarrowsleftextend{+-.5\pgflinewidth}
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.2\pgflinewidth%
  \pgfutil@tempdimb=9\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.2\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfpathcircle{\pgfqpoint{4.5\pgfutil@tempdima}{0bp}}{4.5\pgfutil@tempdima}
  \pgfusepathqstroke
}%




\pgfarrowsdeclare{diamond}{diamond}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.275\pgflinewidth%
  \pgfutil@tempdimb=13\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth
  \pgfarrowsleftextend{+-\pgfutil@tempdimb}
  \pgfutil@tempdimb=1\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.275\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfqpoint{1\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{-6\pgfutil@tempdima}{4\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{-13\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{-6\pgfutil@tempdima}{-4\pgfutil@tempdima}}
  \pgfpathclose
  \pgfusepathqfillstroke
}%

\pgfarrowsdeclare{open diamond}{open diamond}%
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.275\pgflinewidth%
  \pgfarrowsleftextend{+-.5\pgflinewidth}
  \pgfutil@tempdimb=14\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.275\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfqpoint{14\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{7\pgfutil@tempdima}{4\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{7\pgfutil@tempdima}{-4\pgfutil@tempdima}}
  \pgfpathclose
  \pgfusepathqstroke
}%


\newdimen\arrowsize
\pgfarrowsdeclare{square}{square}
{
 \arrowsize=0.4pt
 \advance\arrowsize by.275\pgflinewidth%
 \pgfarrowsleftextend{-7\arrowsize-.5\pgflinewidth}
 \advance\arrowsize by.5\pgflinewidth
 \pgfarrowsrightextend{+\arrowsize}
}
{
 \arrowsize=0.4pt
 \advance\arrowsize by.275\pgflinewidth%
 \pgfsetdash{}{+0pt}
 \pgfsetroundjoin
 \pgfpathmoveto{\pgfqpoint{1\arrowsize}{4\arrowsize}}
 \pgfpathlineto{\pgfqpoint{-7\arrowsize}{4\arrowsize}}
 \pgfpathlineto{\pgfqpoint{-7\arrowsize}{-4\arrowsize}}
 \pgfpathlineto{\pgfqpoint{1\arrowsize}{-4\arrowsize}}
 \pgfpathclose
 \pgfusepathqfillstroke
}%

\pgfarrowsdeclare{open square}{open square}%
{
 \arrowsize=0.4pt
 \advance\arrowsize by.275\pgflinewidth%
 \pgfarrowsleftextend{+-.5\pgflinewidth}
 \advance\arrowsize by7\arrowsize
 \advance\arrowsize by.5\pgflinewidth
 \pgfarrowsrightextend{+\arrowsize}
}
{
 \arrowsize=0.4pt
 \advance\arrowsize by.275\pgflinewidth%
 \pgfsetdash{}{+0pt}
 \pgfsetroundjoin
 \pgfpathmoveto{\pgfqpoint{8\arrowsize}{4\arrowsize}}
 \pgfpathlineto{\pgfqpoint{0\arrowsize}{4\arrowsize}}
 \pgfpathlineto{\pgfqpoint{0\arrowsize}{-4\arrowsize}}
 \pgfpathlineto{\pgfqpoint{8\arrowsize}{-4\arrowsize}}
 \pgfpathclose
 \pgfusepathqstroke
}%




\pgfarrowsdeclare{triangle 90}{triangle 90}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfutil@tempdimb=5.5\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{+-\pgfutil@tempdimb}
  \pgfutil@tempdimb=.5\pgfutil@tempdima\advance\pgfutil@tempdimb by0.707\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfqpoint{-5.5\pgfutil@tempdima}{-6\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0.5\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{-5.5\pgfutil@tempdima}{6\pgfutil@tempdima}}
  \pgfpathclose
  \pgfusepathqfillstroke
}%

\pgfarrowsdeclarereversed{triangle 90 reversed}{triangle 90 reversed}{triangle 90}{triangle 90}%


\pgfarrowsdeclare{triangle 60}{triangle 60}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfutil@tempdimb=7.29\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{+-\pgfutil@tempdimb}
  \pgfutil@tempdimb=.5\pgfutil@tempdima\advance\pgfutil@tempdimb by\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointadd{\pgfqpoint{0.5\pgfutil@tempdima}{0pt}}{\pgfqpointpolar{150}{9\pgfutil@tempdima}}}
  \pgfpathlineto{\pgfqpoint{0.5\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfpointadd{\pgfqpoint{0.5\pgfutil@tempdima}{0pt}}{\pgfqpointpolar{-150}{9\pgfutil@tempdima}}}
  \pgfpathclose
  \pgfusepathqfillstroke
}%

\pgfarrowsdeclarereversed{triangle 60 reversed}{triangle 60 reversed}{triangle 60}{triangle 60}%




\pgfarrowsdeclare{triangle 45}{triangle 45}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfutil@tempdimb=8.705\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{+-\pgfutil@tempdimb}
  \pgfutil@tempdimb=.5\pgfutil@tempdima\advance\pgfutil@tempdimb by1.28\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointadd{\pgfqpoint{0.5\pgfutil@tempdima}{0pt}}{\pgfqpointpolar{157}{10\pgfutil@tempdima}}}
  \pgfpathlineto{\pgfqpoint{0.5\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfpointadd{\pgfqpoint{0.5\pgfutil@tempdima}{0pt}}{\pgfqpointpolar{-157}{10\pgfutil@tempdima}}}
  \pgfpathclose
  \pgfusepathqfillstroke
}%

\pgfarrowsdeclarereversed{triangle 45 reversed}{triangle 45 reversed}{triangle 45}{triangle 45}%




\pgfarrowsdeclare{open triangle 90}{open triangle 90}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfarrowsleftextend{+-.5\pgflinewidth}
  \pgfutil@tempdimb=6\pgfutil@tempdima\advance\pgfutil@tempdimb by0.707\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfqpoint{0\pgfutil@tempdima}{-6\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0\pgfutil@tempdima}{6\pgfutil@tempdima}}
  \pgfpathclose
  \pgfusepathqstroke
}%

\pgfarrowsdeclare{open triangle 90 reversed}{open triangle 90 reversed}%
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfarrowsleftextend{+-.707\pgflinewidth}
  \pgfutil@tempdimb=6\pgfutil@tempdima\advance\pgfutil@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfqpoint{6\pgfutil@tempdima}{-6\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{6\pgfutil@tempdima}{6\pgfutil@tempdima}}
  \pgfpathclose
  \pgfusepathqstroke
}%



\pgfarrowsdeclare{open triangle 60}{open triangle 60}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfarrowsleftextend{+-.5\pgflinewidth}
  \pgfutil@tempdimb=7.794\pgfutil@tempdima\advance\pgfutil@tempdimb by\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointadd{\pgfqpoint{7.794\pgfutil@tempdima}{0pt}}{\pgfqpointpolar{150}{9\pgfutil@tempdima}}}
  \pgfpathlineto{\pgfqpoint{7.794\pgfutil@tempdima}{0pt}}
  \pgfpathlineto{\pgfpointadd{\pgfqpoint{7.794\pgfutil@tempdima}{0pt}}{\pgfqpointpolar{-150}{9\pgfutil@tempdima}}}
  \pgfpathclose
  \pgfusepathqstroke
}%



\pgfarrowsdeclare{open triangle 60 reversed}{open triangle 60 reversed}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfarrowsleftextend{+-\pgflinewidth}
  \pgfutil@tempdimb=7.794\pgfutil@tempdima\advance\pgfutil@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfqpointpolar{30}{9\pgfutil@tempdima}}
  \pgfpathlineto{\pgfpointorigin}
  \pgfpathlineto{\pgfqpointpolar{-30}{9\pgfutil@tempdima}}
  \pgfpathclose
  \pgfusepathqstroke
}%



\pgfarrowsdeclare{open triangle 45}{open triangle 45}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfarrowsleftextend{+-.5\pgflinewidth}
  \pgfutil@tempdimb=9.205\pgfutil@tempdima\advance\pgfutil@tempdimb by1.28\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointadd{\pgfqpoint{9.205\pgfutil@tempdima}{0pt}}{\pgfqpointpolar{157}{10\pgfutil@tempdima}}}
  \pgfpathlineto{\pgfqpoint{9.205\pgfutil@tempdima}{0pt}}
  \pgfpathlineto{\pgfpointadd{\pgfqpoint{9.205\pgfutil@tempdima}{0pt}}{\pgfqpointpolar{-157}{10\pgfutil@tempdima}}}
  \pgfpathclose
  \pgfusepathqstroke
}%



\pgfarrowsdeclare{open triangle 45 reversed}{open triangle 45 reversed}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfarrowsleftextend{+-1.28\pgflinewidth}
  \pgfutil@tempdimb=9.205\pgfutil@tempdima\advance\pgfutil@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.5pt%
  \advance\pgfutil@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfqpointpolar{23}{10\pgfutil@tempdima}}
  \pgfpathlineto{\pgfpointorigin}
  \pgfpathlineto{\pgfqpointpolar{-23}{10\pgfutil@tempdima}}
  \pgfpathclose
  \pgfusepathqstroke
}%




\pgfarrowsdeclare{latex'}{latex'}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfarrowsleftextend{+-4\pgfutil@tempdima}
  \pgfarrowsrightextend{+6\pgfutil@tempdima}
}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfpathmoveto{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{3.5\pgfutil@tempdima}{.5\pgfutil@tempdima}}
  {\pgfqpoint{-1\pgfutil@tempdima}{1.5\pgfutil@tempdima}}
  {\pgfqpoint{-4\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{-1.5\pgfutil@tempdima}{1\pgfutil@tempdima}}
  {\pgfqpoint{-1.5\pgfutil@tempdima}{-1\pgfutil@tempdima}}
  {\pgfqpoint{-4\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{-1\pgfutil@tempdima}{-1.5\pgfutil@tempdima}}
  {\pgfqpoint{3.5\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
  {\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathclose
  \pgfusepathqfill
}%

\pgfarrowsdeclarereversed{latex' reversed}{latex' reversed}{latex'}{latex'}%



\pgfarrowsdeclare{stealth'}{stealth'}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfutil@tempdimb=6\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{+-\pgfutil@tempdimb}
  \pgfutil@tempdimb=2\pgfutil@tempdima\advance\pgfutil@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfqpoint{2\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{-.5\pgfutil@tempdima}{.5\pgfutil@tempdima}}
  {\pgfqpoint{-3\pgfutil@tempdima}{1.5\pgfutil@tempdima}}
  {\pgfqpoint{-6\pgfutil@tempdima}{3.25\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{-3\pgfutil@tempdima}{1\pgfutil@tempdima}}
  {\pgfqpoint{-3\pgfutil@tempdima}{-1\pgfutil@tempdima}}
  {\pgfqpoint{-6\pgfutil@tempdima}{-3.25\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{-3\pgfutil@tempdima}{-1.5\pgfutil@tempdima}}
  {\pgfqpoint{-.5\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
  {\pgfqpoint{2\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathclose
  \pgfusepathqfillstroke
}%

\pgfarrowsdeclarereversed{stealth' reversed}{stealth' reversed}{stealth'}{stealth'}%




\pgfarrowsdeclare{left to}{left to}
{
  \pgfutil@tempdima=-0.84pt%
  \advance\pgfutil@tempdima by-1.3\pgflinewidth%
  \pgfutil@tempdimb=0.21pt%
  \advance\pgfutil@tempdimb by.625\pgflinewidth%
  \pgfarrowsleftextend{+\pgfutil@tempdima}
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfsetlinewidth{0.8\pgflinewidth}
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfqpoint{-3\pgfutil@tempdima}{4\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{-2.75\pgfutil@tempdima}{2.5\pgfutil@tempdima}}
  {\pgfqpoint{0pt}{0.25\pgfutil@tempdima}}
  {\pgfqpoint{0.75\pgfutil@tempdima}{0pt}}
  \pgfpathcurveto
  {\pgfqpoint{0.55\pgfutil@tempdima}{-0.125\pgflinewidth}}
  {\pgfqpoint{0.5\pgfutil@tempdima}{-0.125\pgflinewidth}}
  {\pgfqpoint{0.5\pgfutil@tempdima}{-0.125\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{0pt}{-0.125\pgflinewidth}}
  \pgfusepathqstroke
}%


\pgfarrowsdeclare{right to}{right to}
{
  \pgfutil@tempdima=-0.84pt%
  \advance\pgfutil@tempdima by-1.3\pgflinewidth%
  \pgfutil@tempdimb=0.21pt%
  \advance\pgfutil@tempdimb by.625\pgflinewidth%
  \pgfarrowsleftextend{+\pgfutil@tempdima}
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfsetlinewidth{0.8\pgflinewidth}
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfqpoint{-3\pgfutil@tempdima}{-4\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{-2.75\pgfutil@tempdima}{-2.5\pgfutil@tempdima}}
  {\pgfqpoint{0pt}{-0.25\pgfutil@tempdima}}
  {\pgfqpoint{0.75\pgfutil@tempdima}{0pt}}
  \pgfpathcurveto
  {\pgfqpoint{0.55\pgfutil@tempdima}{0.125\pgflinewidth}}
  {\pgfqpoint{0.5\pgfutil@tempdima}{0.125\pgflinewidth}}
  {\pgfqpoint{0.5\pgfutil@tempdima}{0.125\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{0pt}{0.125\pgflinewidth}}
  \pgfusepathqstroke
}%




\pgfarrowsdeclare{left to reversed}{left to reversed}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfarrowsleftextend{+-.1\pgflinewidth}
  \pgfutil@tempdimb=3.75\pgfutil@tempdima\advance\pgfutil@tempdimb by0.9\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetroundjoin
  \pgfsetbuttcap
  \pgfpathmoveto{\pgfqpoint{0.5\pgflinewidth}{0pt}}
  \pgfpathlineto{\pgfqpoint{-0.1\pgflinewidth}{0pt}}
  \pgfusepathqstroke
  \pgfsetroundcap
  \pgfsetlinewidth{.8\pgflinewidth}
  {\pgftransformxshift{0.625\pgflinewidth}
    \pgfpathmoveto{\pgfqpoint{3.75\pgfutil@tempdima}{4\pgfutil@tempdima}}
    \pgfpathcurveto{\pgfqpoint{3.5\pgfutil@tempdima}{2.5\pgfutil@tempdima}}{\pgfqpoint{0.75\pgfutil@tempdima}{0.25\pgfutil@tempdima}}{\pgfqpoint{0pt}{0.125\pgflinewidth}}
    \pgfpathmoveto{\pgfqpoint{3.75\pgfutil@tempdima}{4\pgfutil@tempdima}}
    \pgfpathcurveto{\pgfqpoint{3.5\pgfutil@tempdima}{2.5\pgfutil@tempdima}}{\pgfqpoint{0.75\pgfutil@tempdima}{0.25\pgfutil@tempdima}}{\pgfqpoint{0pt}{-0.125\pgflinewidth}}
  }
  \pgfusepathqstroke%
}%

\pgfarrowsdeclare{right to reversed}{right to reversed}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfarrowsleftextend{+-.1\pgflinewidth}
  \pgfutil@tempdimb=3.75\pgfutil@tempdima\advance\pgfutil@tempdimb by0.9\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetroundjoin
  \pgfsetbuttcap
  \pgfpathmoveto{\pgfqpoint{0.5\pgflinewidth}{0pt}}
  \pgfpathlineto{\pgfqpoint{-0.1\pgflinewidth}{0pt}}
  \pgfusepathqstroke
  \pgfsetroundcap
  \pgfsetlinewidth{.8\pgflinewidth}
  {\pgftransformxshift{0.625\pgflinewidth}
    \pgfpathmoveto{\pgfqpoint{3.75\pgfutil@tempdima}{-4\pgfutil@tempdima}}
    \pgfpathcurveto{\pgfqpoint{3.5\pgfutil@tempdima}{-2.5\pgfutil@tempdima}}{\pgfqpoint{0.75\pgfutil@tempdima}{-0.25\pgfutil@tempdima}}{\pgfqpoint{0pt}{-0.125\pgflinewidth}}
    \pgfpathmoveto{\pgfqpoint{3.75\pgfutil@tempdima}{-4\pgfutil@tempdima}}
    \pgfpathcurveto{\pgfqpoint{3.5\pgfutil@tempdima}{-2.5\pgfutil@tempdima}}{\pgfqpoint{0.75\pgfutil@tempdima}{-0.25\pgfutil@tempdima}}{\pgfqpoint{0pt}{0.125\pgflinewidth}}
  }
  \pgfusepathqstroke%
}%




\pgfarrowsdeclare{left hook}{left hook}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.2\pgflinewidth%
  \pgfarrowsleftextend{+-.5\pgflinewidth}
  \pgfutil@tempdimb=3.75\pgfutil@tempdima\advance\pgfutil@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.2\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfpathmoveto{\pgfqpoint{0\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0.75\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathcurveto{\pgfqpoint{2.415\pgfutil@tempdima}{0\pgfutil@tempdima}}{\pgfqpoint{3.75\pgfutil@tempdima}{1.665\pgfutil@tempdima}}{\pgfqpoint{3.75\pgfutil@tempdima}{3\pgfutil@tempdima}}
  \pgfpathcurveto{\pgfqpoint{3.75\pgfutil@tempdima}{4.665\pgfutil@tempdima}}{\pgfqpoint{2.415\pgfutil@tempdima}{6\pgfutil@tempdima}}{\pgfqpoint{0.75\pgfutil@tempdima}{6\pgfutil@tempdima}}
  \pgfusepathqstroke%
}%

\pgfarrowsdeclarereversed{left hook reversed}{left hook reversed}{left hook}{left hook}%




\pgfarrowsdeclare{right hook}{right hook}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.2\pgflinewidth%
  \pgfarrowsleftextend{+-.5\pgflinewidth}
  \pgfutil@tempdimb=3.75\pgfutil@tempdima\advance\pgfutil@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.2\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfpathmoveto{\pgfqpoint{0\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0.75\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathcurveto{\pgfqpoint{2.415\pgfutil@tempdima}{0\pgfutil@tempdima}}{\pgfqpoint{3.75\pgfutil@tempdima}{-1.665\pgfutil@tempdima}}{\pgfqpoint{3.75\pgfutil@tempdima}{-3\pgfutil@tempdima}}
  \pgfpathcurveto{\pgfqpoint{3.75\pgfutil@tempdima}{-4.665\pgfutil@tempdima}}{\pgfqpoint{2.415\pgfutil@tempdima}{-6\pgfutil@tempdima}}{\pgfqpoint{0.75\pgfutil@tempdima}{-6\pgfutil@tempdima}}
  \pgfusepathqstroke%
}%

\pgfarrowsdeclarereversed{right hook reversed}{right hook reversed}{right hook}{right hook}%



\pgfarrowsdeclare{hooks}{hooks}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.2\pgflinewidth%
  \pgfarrowsleftextend{+-.5\pgflinewidth}
  \pgfutil@tempdimb=3.75\pgfutil@tempdima\advance\pgfutil@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.2\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfpathmoveto{\pgfqpoint{0\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0.75\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathcurveto{\pgfqpoint{2.415\pgfutil@tempdima}{0\pgfutil@tempdima}}{\pgfqpoint{3.75\pgfutil@tempdima}{1.665\pgfutil@tempdima}}{\pgfqpoint{3.75\pgfutil@tempdima}{3\pgfutil@tempdima}}
  \pgfpathcurveto{\pgfqpoint{3.75\pgfutil@tempdima}{4.665\pgfutil@tempdima}}{\pgfqpoint{2.415\pgfutil@tempdima}{6\pgfutil@tempdima}}{\pgfqpoint{0.75\pgfutil@tempdima}{6\pgfutil@tempdima}}
  \pgfpathmoveto{\pgfqpoint{0.75\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathcurveto{\pgfqpoint{2.415\pgfutil@tempdima}{0\pgfutil@tempdima}}{\pgfqpoint{3.75\pgfutil@tempdima}{-1.665\pgfutil@tempdima}}{\pgfqpoint{3.75\pgfutil@tempdima}{-3\pgfutil@tempdima}}
  \pgfpathcurveto{\pgfqpoint{3.75\pgfutil@tempdima}{-4.665\pgfutil@tempdima}}{\pgfqpoint{2.415\pgfutil@tempdima}{-6\pgfutil@tempdima}}{\pgfqpoint{0.75\pgfutil@tempdima}{-6\pgfutil@tempdima}}
  \pgfusepathqstroke%
}%

\pgfarrowsdeclarereversed{hooks reversed}{hooks reversed}{hooks}{hooks}%



\pgfarrowsdeclare{serif cm}{serif cm}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.45\pgflinewidth%
  \pgfarrowsleftextend{+-.75\pgfutil@tempdima}
  \pgfarrowsrightextend{+.04\pgflinewidth}
}
{
  \pgfutil@tempdima=0.4pt%
  \advance\pgfutil@tempdima by.45\pgflinewidth%
  \pgftransformxshift{.04\pgflinewidth}
  \pgfpathmoveto{\pgfqpoint{-.75\pgfutil@tempdima}{.5\pgflinewidth}}
  \pgfpathcurveto
    {\pgfqpoint{-.375\pgfutil@tempdima}{.5\pgflinewidth}}
    {\pgfqpoint{-.375\pgfutil@tempdima}{.7\pgflinewidth}}
    {\pgfqpoint{-.375\pgfutil@tempdima}{1.95\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0pt}{1.95\pgfutil@tempdima}}
  \pgfpathcurveto
    {\pgfqpoint{-.04\pgflinewidth}{.5\pgfutil@tempdima}}
    {\pgfqpoint{-.04\pgflinewidth}{-.5\pgfutil@tempdima}}
    {\pgfqpoint{0pt}{-1.95\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{-.375\pgfutil@tempdima}{-1.95\pgfutil@tempdima}}
  \pgfpathcurveto
    {\pgfqpoint{-.375\pgfutil@tempdima}{-.7\pgflinewidth}}
    {\pgfqpoint{-.375\pgfutil@tempdima}{-.5\pgflinewidth}}
    {\pgfqpoint{-.75\pgfutil@tempdima}{-.5\pgflinewidth}}
  \pgfpathclose
  \pgfusepathqfill
}%




\pgfarrowsdeclare{round cap}{round cap}
{\pgfarrowsleftextend{+0pt}\pgfarrowsrightextend{+\pgflinewidth}}
{
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfpathmoveto{\pgfpointorigin}
  \pgfpathlineto{\pgfqpoint{0.5\pgflinewidth}{0pt}}
  \pgfusepathqstroke
}%



\pgfarrowsdeclare{butt cap}{butt cap}
{\pgfarrowsleftextend{+-.1\pgflinewidth}\pgfarrowsrightextend{+.5\pgflinewidth}}
{
  \pgfsetdash{}{+0pt}
  \pgfsetbuttcap
  \pgfpathmoveto{\pgfqpoint{-.1\pgflinewidth}{0pt}}
  \pgfpathlineto{\pgfqpoint{0.5\pgflinewidth}{0pt}}
  \pgfusepathqstroke
}%




\pgfarrowsdeclare{triangle 90 cap}{triangle 90 cap}
{\pgfarrowsleftextend{+-.1\pgflinewidth}\pgfarrowsrightextend{+\pgflinewidth}}
{
  \pgfpathmoveto{\pgfqpoint{-.1\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{.5\pgflinewidth}{.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{\pgflinewidth}{0pt}}
  \pgfpathlineto{\pgfqpoint{.5\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{-.1\pgflinewidth}{-0.5\pgflinewidth}}
  \pgfpathclose
  \pgfusepathqfill
}%



\pgfarrowsdeclare{triangle 90 cap reversed}{triangle 90 cap reversed}
{\pgfarrowsleftextend{+-.1\pgflinewidth}\pgfarrowsrightextend{+\pgflinewidth}}
{
  \pgfpathmoveto{\pgfqpoint{1\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{-.1\pgflinewidth}{.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{-.1\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{1\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{0.5\pgflinewidth}{0\pgflinewidth}}
  \pgfpathclose
  \pgfusepathqfill
}%




\pgfarrowsdeclare{fast cap}{fast cap}
{\pgfarrowsleftextend{+-.1\pgflinewidth}\pgfarrowsrightextend{+2\pgflinewidth}}
{
  \pgfpathmoveto{\pgfqpoint{-.1\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{.5\pgflinewidth}{.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{1\pgflinewidth}{0\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{.5\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{-.1\pgflinewidth}{-0.5\pgflinewidth}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{1\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{1.5\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{2\pgflinewidth}{0\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{1.5\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{1\pgflinewidth}{-0.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{1.5\pgflinewidth}{0\pgflinewidth}}
  \pgfpathclose
  \pgfusepathqfill
}%


\pgfarrowsdeclare{fast cap reversed}{fast cap reversed}
{\pgfarrowsleftextend{+-.1\pgflinewidth}\pgfarrowsrightextend{+2\pgflinewidth}}
{
  \pgfpathmoveto{\pgfqpoint{-.1\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{1\pgflinewidth}{.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{.5\pgflinewidth}{0\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{1\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{-.1\pgflinewidth}{-0.5\pgflinewidth}}
  \pgfpathclose
  \pgfpathmoveto{\pgfqpoint{1.5\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{2\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{1.5\pgflinewidth}{0\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{2\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{1.5\pgflinewidth}{-0.5\pgflinewidth}}
  \pgfpathlineto{\pgfqpoint{1\pgflinewidth}{0\pgflinewidth}}
  \pgfpathclose
  \pgfusepathqfill
}%








\pgfarrowsdeclare{implies}{implies}
{
  \pgfmathsetlength{\pgfutil@tempdima}{.25\pgflinewidth+.25*\pgfinnerlinewidth}%
  \pgfmathsetlength{\pgfutil@tempdimb}{.5\pgflinewidth-.5*\pgfinnerlinewidth}%
  \pgfarrowsrightextend{2.06\pgfutil@tempdima+.5\pgfutil@tempdimb}
  \pgfarrowsleftextend{-1.36\pgfutil@tempdima-.5\pgfutil@tempdimb}
}
{
  \pgfmathsetlength{\pgfutil@tempdima}{.25\pgflinewidth+.25*\pgfinnerlinewidth}%
  \pgfmathsetlength{\pgfutil@tempdimb}{.5\pgflinewidth-.5*\pgfinnerlinewidth}%
  \pgftransformxshift{.06\pgfutil@tempdima}
  \pgfsetlinewidth{\pgfutil@tempdimb}
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfpoint{-1.4\pgfutil@tempdima}{2.65\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfpoint{-0.75\pgfutil@tempdima}{1.25\pgfutil@tempdima}}
  {\pgfpoint{1\pgfutil@tempdima}{0.05\pgfutil@tempdima}}
  {\pgfpoint{2\pgfutil@tempdima}{0pt}}
  \pgfpathcurveto
  {\pgfpoint{1\pgfutil@tempdima}{-0.05\pgfutil@tempdima}}
  {\pgfpoint{-.75\pgfutil@tempdima}{-1.25\pgfutil@tempdima}}
  {\pgfpoint{-1.4\pgfutil@tempdima}{-2.65\pgfutil@tempdima}}
  \pgfusepathqstroke
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryarrows.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryarrows.meta.code.tex ====

\ProvidesFileRCS{pgflibraryarrows.meta.code.tex}





\newdimen\pgfarrowinset
\newdimen\pgfarrowlength
\newdimen\pgfarrowwidth
\newdimen\pgfarrowlinewidth
\newif\ifpgfarrowroundcap
\newif\ifpgfarrowroundjoin

\pgfarrowsaddtolengthscalelist\pgfarrowlength
\pgfarrowsaddtolengthscalelist\pgfarrowinset
\pgfarrowsaddtowidthscalelist\pgfarrowwidth


\pgfkeys{
  /pgf/arrow keys/.cd,
  length/.code={%
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowlength\pgf@x}%
  },
  inset/.code={%
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowinset\pgf@x}%
  },
  inset'/.code={
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslengthdependent\pgfarrowstheparameters\pgfarrowinset}%
  },
  line width/.code={%
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowlinewidth\pgf@x}%
  },
  line width'/.code={
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslengthdependent\pgfarrowstheparameters\pgfarrowlinewidth}%
  },
  width/.code={%
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowwidth\pgf@x}%
  },
  width'/.code={%
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslengthdependent\pgfarrowstheparameters\pgfarrowwidth}%
  },
  angle/.code={%
    \pgfarrowsfourparameters{#1}%
    \expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\pgfarrows@angle@setup\pgfarrowstheparameters}%
  },
  angle'/.code={
    \pgfarrowsaddtolateoptions{\pgfarrows@angle@setup@prime{#1}}%
  },
  line cap/.is choice,
  line cap/butt/.code=\pgfarrowsaddtooptions{\pgfarrowroundcapfalse},
  line cap/round/.code=\pgfarrowsaddtooptions{\pgfarrowroundcaptrue},
  line join/.is choice,
  line join/miter/.code=\pgfarrowsaddtooptions{\pgfarrowroundjoinfalse},
  line join/round/.code=\pgfarrowsaddtooptions{\pgfarrowroundjointrue},
  round/.style={line cap=round,line join=round},
  sharp/.style={line cap=butt,line join=miter},
}%






\pgfdeclarearrow{
  name = Straight Barb,
  defaults = {
    length = +1.5pt 2,
    width'  = +0pt 2,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgfmathdivide@{\pgf@sys@tonumber\pgfarrowlength}{\pgf@sys@tonumber\pgfarrowwidth}%
    \let\pgf@temp@quot\pgfmathresult%
    \pgf@x\pgfmathresult pt%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@x4\pgf@x%
    \advance\pgf@x by1pt%
    \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
    \pgf@xc\pgfmathresult\pgfarrowlinewidth%
    \pgf@xc.5\pgf@xc
    \pgf@xa\pgf@temp@quot\pgfarrowlinewidth%
    \ifpgfarrowroundjoin
      \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}
    \else
      \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by\pgf@xc\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi}
    \fi
    \pgfarrowssetvisualbackend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}
    \pgfarrowssetbackend{-.5\pgfarrowlinewidth}
    \ifpgfarrowreversed
      \pgfarrowssetlineend{\pgfarrowlength\ifpgfarrowharpoon\advance\pgf@x by.5\pgfarrowlinewidth\fi}
    \else
      \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
    \fi
    \ifpgfarrowroundjoin
      \pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
    \else%
      \ifpgfarrowharpoon
        \pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by\pgf@xc\advance\pgf@x by\pgf@xa}{-.5\pgfarrowlinewidth}%
      \else
        \pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by\pgf@xc\advance\pgf@x by\pgf@xa}{0pt}%
      \fi%
    \fi
    \pgfarrowsupperhullpoint{.5\pgfarrowlinewidth}{.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}%
    \pgfarrowsupperhullpoint{-.5\pgfarrowlinewidth}{.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}%
    \ifpgfarrowharpoon
      \pgfarrowshullpoint{-.5\pgfarrowlinewidth}{-.5\pgfarrowlinewidth}%
    \fi
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowwidth
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \pgfpathmoveto{\pgfqpoint{0pt}{.5\pgfarrowwidth}}
    \pgfpathlineto{\pgfqpoint{\pgfarrowlength}{0pt}}
    \ifpgfarrowharpoon
      \pgfpathlineto{\pgfqpoint{\pgfarrowlength\advance\pgf@x by\ifpgfarrowreversed\else-\fi\pgfarrowlinewidth}{0pt}}
    \else
      \pgfpathlineto{\pgfqpoint{0pt}{-.5\pgfarrowwidth}}
    \fi
    \pgfusepathqstroke
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowroundjoin j\fi%
    \ifpgfarrowroundcap c\fi%
  },
}%

\pgfkeys{
  /pgf/arrow keys/.cd,
  arc/.code={%
    \pgfmathparse{#1}%
    \expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\def\expandafter\pgfarrowarc\expandafter{\pgfmathresult}}
  }
}%

\def\pgfarrowarc{180}%

\pgfdeclarearrow{
  name = Hooks,
  defaults = {
    length = +0.75pt 1.25,
    width'  = +0pt 4 -1,
    line width = +0pt 1 1,
  },
  setup code = {
    \ifpgfarrowharpoon
      \pgfarrowshullpoint{.5\pgfarrowlength}{-.5\pgfarrowlinewidth}
      \pgfarrowshullpoint{\pgfarrowlength}{-.5\pgfarrowlinewidth\advance\pgf@y by.125\pgfarrowwidth}
    \fi
    \ifdim\pgfarrowarc pt<90.1pt
      \pgfarrowsupperhullpoint{0pt}{.25\pgfarrowwidth\ifpgfarrowroundcap\else\advance\pgf@y by-.25\pgfarrowlinewidth\fi}
      \pgfarrowsupperhullpoint{\pgfarrowlength}{.25\pgfarrowwidth\ifpgfarrowroundcap\else\advance\pgf@y by-.25\pgfarrowlinewidth\fi}
    \else%
      \pgfarrowsupperhullpoint{\pgfarrowlength}{.375\pgfarrowwidth}
      \pgfarrowsupperhullpoint{.5\pgfarrowlength}{.5\pgfarrowwidth}
      \ifdim\pgfarrowarc pt>180pt
        \pgfarrowsupperhullpoint{-.5\pgfarrowlength}{.5\pgfarrowwidth}
        \pgfarrowsupperhullpoint{-\pgfarrowlength}{.375\pgfarrowwidth}
        \pgfarrowsupperhullpoint{-\pgfarrowlength}{.25\pgfarrowwidth}
      \else
        \pgfarrowsupperhullpoint{\ifpgfarrowroundcap-.5\pgfarrowlinewidth\else0pt\fi}{.25\pgfarrowwidth}
        \pgfarrowsupperhullpoint{\ifpgfarrowroundcap-.5\pgfarrowlinewidth\else0pt\fi}{.5\pgfarrowwidth}
      \fi
    \fi
    \advance\pgfarrowlength by-.5\pgfarrowlinewidth
    \advance\pgfarrowwidth by-\pgfarrowlinewidth
    \ifpgfarrowreversed
      \ifpgfarrowroundjoin
        \pgfarrowssetbackend{-.5\pgfarrowlinewidth}
      \fi
    \fi
    \ifdim\pgfarrowarc pt<90pt%
      \pgfmathsin@{\pgfarrowarc}
      \pgfarrowssettipend{\pgfmathresult\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}%
    \else\ifdim\pgfarrowarc pt<180pt%
      \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}%
      \ifpgfarrowroundcap\pgfarrowssetbackend{-.5\pgfarrowlinewidth}\fi%
    \else\ifdim\pgfarrowarc pt<270pt%
      \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}%
      \ifdim\pgfarrowarc pt>180pt
        \pgfmathsin@{\pgfarrowarc}
        \pgfarrowssetbackend{\pgfmathresult\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}%
      \else
        \ifpgfarrowroundcap\pgfarrowssetbackend{-.5\pgfarrowlinewidth}\fi%
      \fi%
    \else%
      \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}%
      \pgfarrowssetbackend{-\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}%
    \fi\fi\fi%
    \ifpgfarrowreversed
      \pgfarrowssetlineend{.5\pgfarrowlinewidth}
    \else%
      \ifpgfarrowharpoon
        \pgfarrowssetlineend{0pt}
      \else
        \pgfarrowssetlineend{.25\pgfarrowlinewidth}
      \fi
    \fi
    \pgf@x\pgfarrowarc pt%
    \advance\pgf@x by-90pt%
    \edef\pgfarrowarc{\pgf@sys@tonumber\pgf@x}%
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowwidth
    \pgfarrowssave\pgfarrowarc
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    {%
      \pgftransformxscale{+\pgfarrowlength}
      \pgftransformyscale{+.25\pgfarrowwidth}
      \pgfpathmoveto{\pgfpointpolar{+\pgfarrowarc}{+1pt}\advance\pgf@y by1pt}
      \pgfpatharc{\pgfarrowarc}{+-90}{+1pt}
      \ifpgfarrowharpoon
      \else
        \pgfpatharc{+90}{+-\pgfarrowarc}{+1pt}
      \fi
    }
    \ifpgfarrowharpoon\ifpgfarrowreversed
    \pgfpathlineto{\pgfqpoint{\pgflinewidth}{0pt}}
    \fi\fi
    \pgfusepathqstroke
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \pgfarrowarc,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowroundjoin j\fi%
    \ifpgfarrowroundcap c\fi%
  },
}%


\pgfdeclarearrow{
  name = Arc Barb,
  defaults = {
    length = +1.5pt 2,
    width'  = +0pt 2,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgf@x\pgfarrowarc pt%
    \pgf@x.5\pgf@x%
    \edef\pgfarrowarc{\pgf@sys@tonumber\pgf@x}%
    \pgfarrowssettipend{\pgfarrowlength}
    \pgfarrowssetvisualbackend{\pgfarrowlength}
    \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
    \pgfarrowsupperhullpoint{\pgfarrowlength}{.25\pgfarrowwidth}
    \ifpgfarrowharpoon\pgfarrowshullpoint{\pgfarrowlength}{-.5\pgflinewidth}\fi
    \pgfmathsincos@{\pgfarrowarc}%
    \pgf@xa.5\pgfarrowwidth%
    \pgfarrowsupperhullpoint{\pgfmathresultx\pgfarrowlength}{\pgfmathresulty\pgf@xa}
    \ifdim\pgfarrowarc pt>60pt
      \pgfarrowsupperhullpoint{.5\pgfarrowlength}{\ifdim\pgfarrowarc pt<90pt\pgfmathresulty\pgf@xa\else.5\pgfarrowwidth\fi}
    \fi
    \ifdim\pgfarrowarc pt>90pt
      \ifdim\pgfarrowarc pt<120pt
        \pgfarrowsupperhullpoint{\pgfmathresultx\pgfarrowlength}{.5\pgfarrowwidth}
      \else
        \pgfarrowsupperhullpoint{-.5\pgfarrowlength}{.5\pgfarrowwidth}
        \ifdim\pgfarrowarc pt>150pt
          \pgfarrowsupperhullpoint{-\pgfarrowlength}{.25\pgfarrowwidth}
        \fi
      \fi
    \fi
    \pgfutil@tempswafalse
    \ifdim\pgfarrowarc pt<90pt
      \pgfutil@tempswatrue
    \fi
    \ifpgfarrowharpoon
      \pgfutil@tempswatrue
    \fi
    \ifpgfutil@tempswa
      \pgf@xa.5\pgfarrowwidth\advance\pgf@xa by-\pgfarrowlinewidth%
      \pgf@ya\pgfarrowlength\advance\pgf@ya by-\pgfarrowlinewidth%
      \pgfarrowsupperhullpoint{\pgfmathresultx\pgf@ya}{\pgfmathresulty\pgf@xa}
    \fi
    \ifpgfarrowroundcap
      \pgf@y\pgfarrowlength
      \advance\pgf@y by-.5\pgfarrowlinewidth
      \pgf@x\pgfmathresultx\pgf@y%
    \else
      \ifdim\pgfarrowarc pt<90pt
        \pgf@y\pgfarrowlength
        \advance\pgf@y by-\pgfarrowlinewidth
        \pgf@x\pgfmathresultx\pgf@y%
      \else
        \pgf@x\pgfmathresultx\pgfarrowlength%
      \fi
    \fi
    \pgfarrowssetbackend{\pgf@x\ifpgfarrowroundcap\advance\pgf@x by-.5\pgfarrowlinewidth\fi}
    \advance\pgfarrowlength by-.5\pgfarrowlinewidth
    \advance\pgfarrowwidth by-\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowwidth
    \pgfarrowssave\pgfarrowarc
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    {%
      \pgftransformxscale{+\pgfarrowlength}
      \pgftransformyscale{+.5\pgfarrowwidth}
      \pgfpathmoveto{\pgfpointpolar{+\pgfarrowarc}{+1pt}}
      \ifpgfarrowharpoon
        \pgfpatharc{+\pgfarrowarc}{0pt}{+1pt}
      \else
        \pgfpatharc{+\pgfarrowarc}{+-\pgfarrowarc}{+1pt}
      \fi
    }
    \ifpgfarrowharpoon
      \pgfpathlineto{\pgfqpoint{\pgfarrowlength\advance\pgf@x by\ifpgfarrowreversed\else-\fi.5\pgflinewidth}{0pt}}
    \fi
    \pgfusepathqstroke
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \pgfarrowarc,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowroundcap c\fi%
    \ifpgfarrowroundjoin j\fi%
  },
}%




\pgfdeclarearrow{
  name = Tee Barb,
  defaults = {
    length = +1.5pt 2,
    width = +3pt 4,
    inset' = +0pt .5,
    line width = +0pt 1 1,
  },
  bending mode=polar,
  setup code = {
    \pgfutil@tempswafalse%
    \pgfutil@tempswbfalse%
    \pgfutil@tempdima\pgfarrowlength\advance\pgfutil@tempdima by-\pgfarrowinset\ifdim\pgfutil@tempdima<.5\pgfarrowlinewidth\pgfutil@tempdima.5\pgfarrowlinewidth\pgfutil@tempswatrue\fi%
    \pgfutil@tempdimb-\pgfarrowinset\ifdim\pgfutil@tempdimb>-.5\pgfarrowlinewidth\pgfutil@tempdimb-.5\pgfarrowlinewidth\pgfutil@tempswbtrue\fi
    \pgfarrowssavethe\pgfarrowwidth
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
    \pgfarrowssettipend{\pgfutil@tempdima\ifpgfarrowroundcap\ifpgfutil@tempswa\else\advance\pgf@x by.5\pgfarrowlinewidth\fi\fi}
    \pgfarrowssetvisualbackend{.5\pgfarrowlinewidth}
    \pgfarrowssetbackend{\pgfutil@tempdimb\ifpgfarrowroundcap\ifpgfutil@tempswb\else\advance\pgf@x by-.5\pgfarrowlinewidth\fi\fi}
    \pgfarrowssetlineend{\ifpgfarrowreversed\else-\fi.25\pgfarrowlinewidth}%
    \pgfarrowsupperhullpoint{\pgfutil@tempdima\ifpgfarrowroundcap\ifpgfutil@tempswa\else\advance\pgf@x by.5\pgfarrowlinewidth\fi\fi}{.5\pgfarrowwidth}%
    \pgfarrowsupperhullpoint{\pgfutil@tempdimb\ifpgfarrowroundcap\ifpgfutil@tempswb\else\advance\pgf@x by-.5\pgfarrowlinewidth\fi\fi}{.5\pgfarrowwidth}%
    \ifpgfarrowharpoon
      \pgfarrowshullpoint{.5\pgfarrowlinewidth}{-.5\pgfarrowlinewidth}%
    \fi
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \pgf@yc\pgflinewidth%
    \ifdim\pgflinewidth=\pgfarrowlinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \pgf@x\pgfutil@tempdima\advance\pgf@x by-.5\pgfarrowlinewidth%
    \pgf@y\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth%
    \ifdim\pgf@x=\pgf@y%
      \pgfpathmoveto{\pgfqpoint{0pt}{.5\pgfarrowwidth}}
      \pgfpathlineto{\pgfqpoint{0pt}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else-.5\pgfarrowwidth\fi}}
    \else
      \ifdim\pgfutil@tempdima=.5\pgfarrowlinewidth%
        \pgfpathmoveto{\pgfqpoint{\pgfutil@tempdimb}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
        \pgfpathlineto{\pgfqpoint{0pt}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
        \ifpgfarrowharpoon%
          \pgfpathlineto{\pgfqpoint{0pt}{-.5\pgf@yc}}%
        \else%
          \pgfpathlineto{\pgfqpoint{0pt}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
          \pgfpathlineto{\pgfqpoint{\pgfutil@tempdimb}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
        \fi
      \else%
        \pgfpathmoveto{\pgfqpoint{\pgfutil@tempdimb}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
        \pgfpathlineto{\pgfqpoint{\pgfutil@tempdima}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
        \pgfpathmoveto{\pgfqpoint{0pt}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
        \ifpgfarrowharpoon%
          \pgfpathlineto{\pgfqpoint{0pt}{-.5\pgf@yc}}%
        \else%
          \pgfpathlineto{\pgfqpoint{0pt}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
          \pgfpathmoveto{\pgfqpoint{\pgfutil@tempdimb}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
          \pgfpathlineto{\pgfqpoint{\pgfutil@tempdima}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
        \fi
      \fi
    \fi
    \pgfusepathqstroke
  },
  parameters = {
    \the\pgfarrowwidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowinset,%
    \the\pgfarrowlinewidth,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowroundjoin j\fi%
    \ifpgfarrowroundcap c\fi%
  },
}%






\pgfdeclarearrow{
  name = Classical TikZ Rightarrow,
  defaults = {
    length  = +1.05pt 1.925,
    width'  = +0pt 1.9237,
    line width = 0pt 0.8 1,
    round
  },
  setup code =
  {
    \ifpgfarrowharpoon\pgfarrowroundjointrue\fi
    \pgfutil@tempdima\pgfarrowlength
    \advance\pgfutil@tempdima by-\pgfarrowlinewidth
    \pgfutil@tempdimb\pgfarrowwidth
    \advance\pgfutil@tempdimb by-\pgfarrowlinewidth
    \ifpgfarrowroundjoin%
    \else%
      \pgfmathdivide@{\pgf@sys@tonumber\pgfutil@tempdima}{\pgf@sys@tonumber\pgfutil@tempdimb}%
      \let\pgf@temp@quot\pgfmathresult%
      \pgf@x\pgfmathresult pt%
      \pgf@x\pgfmathresult\pgf@x%
      \pgf@x40.96\pgf@x%
      \advance\pgf@x by1pt%
      \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
      \pgf@xc\pgfmathresult\pgfarrowlinewidth%
      \pgf@xc.5\pgf@xc
    \fi%
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
    \pgfarrowssettipend{\pgfutil@tempdima\ifpgfarrowroundjoin\advance\pgf@x by.5\pgfarrowlinewidth\else\advance\pgf@x by\pgf@xc\fi}%
    \pgfarrowssetvisualbackend{\pgfutil@tempdima\advance\pgf@x by.5\pgfarrowlinewidth}%
    \ifpgfarrowreversed%
      \ifpgfarrowharpoon%
        \pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by.5\pgflinewidth}%
      \else%
        \pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by-.25\pgflinewidth}%
      \fi%
    \else%
      \pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by-.6\pgflinewidth}%
    \fi%
    \pgfarrowssetbackend{-.5\pgfarrowlinewidth}%
    \pgfarrowshullpoint{\pgfutil@tempdima\ifpgfarrowroundjoin\advance\pgf@x by.5\pgfarrowlinewidth\else\advance\pgf@x by\pgf@xc\fi}{.5\pgfarrowlinewidth}%
    \pgfarrowshullpoint{\pgfutil@tempdima\ifpgfarrowroundjoin\advance\pgf@x by.5\pgfarrowlinewidth\else\advance\pgf@x by\pgf@xc\fi}{-.5\pgfarrowlinewidth}%
    \pgfarrowsupperhullpoint{.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth}%
    \pgfarrowsupperhullpoint{-.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth}%
    \ifpgfarrowharpoon
      \pgfarrowshullpoint{\pgfutil@tempdima\advance\pgf@x by-\pgflinewidth}{-.5\pgflinewidth}%
      \pgfarrowshullpoint{-.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by-.5\pgflinewidth}%
    \fi
  },
  drawing code =
  {
    \pgfsetdash{}{+0pt}
    \edef\pgf@orig@linewidth{\the\pgflinewidth}
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \ifpgfarrowharpoon\pgfarrowroundjointrue\fi
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \pgfpathmoveto
          {\pgfqpoint{0pt}{.5\pgfutil@tempdimb}}
    \ifpgfarrowharpoon
      \pgf@arrows@old@tikz@harpoon
    \else
      \pgfpathcurveto
          {\pgfqpoint{0.066666\pgfutil@tempdima}{0.3125\pgfutil@tempdimb}}
          {\pgfqpoint{.8\pgfutil@tempdima}{0.03125\pgfutil@tempdimb}}
          {\pgfqpoint{\pgfutil@tempdima}{0pt}}
      \pgfpathcurveto
          {\pgfqpoint{.8\pgfutil@tempdima}{-.03125\pgfutil@tempdimb}}
          {\pgfqpoint{0.066666\pgfutil@tempdima}{-.3125\pgfutil@tempdimb}}
          {\pgfqpoint{0pt}{-.5\pgfutil@tempdimb}}
      \pgfsetlinewidth{+\pgfarrowlinewidth}
      \pgfusepathqstroke
    \fi
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowroundjoin j\fi%
    \ifpgfarrowroundcap c\fi%
  },
}%

\def\pgf@arrows@old@tikz@harpoon{
  \ifpgfarrowreversed
    \pgf@arrows@old@tikz@harpoon@reversed
  \else
    \pgfpathcurveto
      {\pgfqpoint{0.066666\pgfutil@tempdima}{0.3125\pgfutil@tempdimb}}
      {\pgfqpoint{.8\pgfutil@tempdima}{0.03125\pgfutil@tempdimb}}
      {\pgfqpoint{\pgfutil@tempdima}{0pt}}
    \pgfpathcurveto
      {\pgfqpoint{0.95\pgfutil@tempdima}{-0.125\pgflinewidth}}
      {\pgfqpoint{0.933333\pgfutil@tempdima}{-0.125\pgflinewidth}}
      {\pgfqpoint{0.933333\pgfutil@tempdima}{-0.125\pgflinewidth}}
    \pgfpathlineto
      {\pgfqpoint{0.8\pgfutil@tempdima\advance\pgf@x by-.5\pgflinewidth}{-0.125\pgflinewidth}}
    \pgfusepathqstroke
  \fi
}%
\def\pgf@arrows@old@tikz@harpoon@reversed{
    \pgfpathcurveto
      {\pgfqpoint{0.066666\pgfutil@tempdima}{0.3125\pgfutil@tempdimb}}
      {\pgfqpoint{.8\pgfutil@tempdima}{0.03125\pgfutil@tempdimb}}
      {\pgfqpoint{\pgfutil@tempdima}{0.125\pgflinewidth}}
    \pgfpathmoveto
      {\pgfqpoint{0pt}{.5\pgfutil@tempdimb}}
    \pgfpathcurveto
      {\pgfqpoint{0.066666\pgfutil@tempdima}{0.3125\pgfutil@tempdimb}}
      {\pgfqpoint{.8\pgfutil@tempdima}{0.03125\pgfutil@tempdimb}}
      {\pgfqpoint{\pgfutil@tempdima}{-0.125\pgflinewidth}}
    \pgfusepathqstroke
    \pgfsetlinewidth{+\pgf@orig@linewidth}
    \pgfsetroundcap
    \pgfpathmoveto{\pgfqpoint{\pgfutil@tempdima\advance\pgf@x by0.6\pgflinewidth}{0pt}}
    \pgfpathlineto{\pgfqpoint{\pgfutil@tempdima}{0pt}}
    \pgfusepathqstroke
}%



\pgfdeclarearrow{
  name = Computer Modern Rightarrow,
  defaults = {
    length = +1.6pt 2.2, %
    width' = +0pt 2.096774,
    line width = 0pt 1 1,
    round
  },
  setup code =
  {
    \pgfutil@tempdima\pgfarrowlength
    \advance\pgfutil@tempdima by-\pgfarrowlinewidth
    \pgfutil@tempdimb\pgfarrowwidth
    \advance\pgfutil@tempdimb by-\pgfarrowlinewidth
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
    \ifpgfarrowroundjoin%
    \else%
      \pgfmathdivide@{\pgf@sys@tonumber\pgfutil@tempdima}{\pgf@sys@tonumber\pgfutil@tempdimb}%
      \let\pgf@temp@quot\pgfmathresult%
      \pgf@x\pgfmathresult pt%
      \pgf@x\pgfmathresult\pgf@x%
      \pgf@x49.44662\pgf@x%
      \advance\pgf@x by1pt%
      \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
      \pgf@xc\pgfmathresult\pgfarrowlinewidth%
      \pgf@xc.5\pgf@xc
      \pgf@xa\pgf@temp@quot\pgfarrowlinewidth%
      \pgf@xa3.51591\pgf@xa%
    \fi%
    \pgfarrowssettipend{\ifpgfarrowroundjoin.5\pgfarrowlinewidth\else\pgf@xc\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}%
    \pgfarrowssetvisualbackend{.5\pgfarrowlinewidth}%
    \ifpgfarrowreversed%
      \ifpgfarrowharpoon%
        \pgfarrowssetlineend{.5\pgfarrowlinewidth}%
      \else%
        \pgfarrowssetlineend{-.5\pgfarrowlinewidth}%
      \fi%
    \else%
      \pgfarrowssetlineend{-.5\pgfarrowlinewidth}%
    \fi%
    \pgfarrowssetbackend{-\pgfutil@tempdima\advance\pgf@x by-.5\pgfarrowlinewidth}%
    \pgfarrowshullpoint{\ifpgfarrowroundjoin.5\pgfarrowlinewidth\else\pgf@xc\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}{.5\pgfarrowlinewidth}%
    \pgfarrowshullpoint{\ifpgfarrowroundjoin.5\pgfarrowlinewidth\else\pgf@xc\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}{-.5\pgfarrowlinewidth}%
    \pgfarrowsupperhullpoint{-\pgfutil@tempdima\advance\pgf@x by.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth}%
    \pgfarrowsupperhullpoint{-\pgfutil@tempdima\advance\pgf@x by-.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth}%
    \ifpgfarrowharpoon
      \pgfarrowshullpoint{-\pgfarrowlinewidth}{-.5\pgfarrowlinewidth}%
      \pgfarrowshullpoint{-\pgfutil@tempdima\advance\pgf@x by-.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by-.5\pgfarrowlinewidth}%
    \fi
  },
  drawing code =
  {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \pgfpathmoveto
        {\pgfqpoint{-\pgfutil@tempdima}{.5\pgfutil@tempdimb}}
    \pgfpathcurveto
        {\pgfqpoint{-0.81731\pgfutil@tempdima}{.2\pgfutil@tempdimb}}
        {\pgfqpoint{-0.41019\pgfutil@tempdima}{0.05833333\pgfutil@tempdimb}}
        {\pgfpointorigin}
    \ifpgfarrowharpoon
      \pgfpathlineto
        {\pgfqpoint{\ifpgfarrowreversed.5\else-\fi\pgfarrowlinewidth}{0pt}}
    \else
      \pgfpathcurveto
        {\pgfqpoint{-0.41019\pgfutil@tempdima}{-0.05833333\pgfutil@tempdimb}}
        {\pgfqpoint{-0.81731\pgfutil@tempdima}{-.2\pgfutil@tempdimb}}
        {\pgfqpoint{-\pgfutil@tempdima}{-.5\pgfutil@tempdimb}}
    \fi
    \pgfusepathqstroke
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \ifpgfarrowharpoon h\fi
    \ifpgfarrowharpoon r\fi
    \ifpgfarrowroundjoin j\fi%
    \ifpgfarrowroundcap c\fi%
  },
}%




\pgfdeclarearrow{
  name = Implies,
  setup code = {
    \pgf@xa\pgfinnerlinewidth
    \pgfutil@tempdima.25\pgflinewidth
    \advance\pgfutil@tempdima by.25\pgf@xa%
    \pgfutil@tempdimb.5\pgflinewidth
    \advance\pgfutil@tempdimb by-.5\pgf@xa%
    \pgfarrowssettipend{2.06\pgfutil@tempdima\advance\pgf@x by.5\pgfutil@tempdimb}
    \pgfarrowssetbackend{-1.36\pgfutil@tempdima\advance\pgf@x by.5\pgfutil@tempdimb}
    \pgfarrowsupperhullpoint{-1.4\pgfutil@tempdima}{2.8\pgfutil@tempdima}
    \pgfarrowsupperhullpoint{2\pgfutil@tempdima}{.5\pgfutil@tempdimb}
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
  },
  drawing code = {
    \pgftransformxshift{.06\pgfutil@tempdima}
    \pgfsetlinewidth{\pgfutil@tempdimb}
    \pgfsetdash{}{+0pt}
    \pgfsetroundcap
    \pgfsetroundjoin
    \pgfpathmoveto{\pgfpoint{-1.4\pgfutil@tempdima}{2.65\pgfutil@tempdima}}
    \pgfpathcurveto
    {\pgfpoint{-0.75\pgfutil@tempdima}{1.25\pgfutil@tempdima}}
    {\pgfpoint{1\pgfutil@tempdima}{0.05\pgfutil@tempdima}}
    {\pgfpoint{2\pgfutil@tempdima}{0pt}}
    \pgfpathcurveto
    {\pgfpoint{1\pgfutil@tempdima}{-0.05\pgfutil@tempdima}}
    {\pgfpoint{-.75\pgfutil@tempdima}{-1.25\pgfutil@tempdima}}
    {\pgfpoint{-1.4\pgfutil@tempdima}{-2.65\pgfutil@tempdima}}
    \pgfusepathqstroke
  },
  parameters = {\the\pgfarrowlength}
}%







\pgfdeclarearrow{
  name = Latex,
  defaults = {
    length  = +3pt 4.5 .8,%
    width' = +0pt .75,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgf@x.2\pgfarrowlength
    \ifdim\pgf@x<\pgfarrowlinewidth
      \pgfarrowlinewidth\pgf@x
    \fi
    \pgfarrowssavethe\pgfarrowlinewidth%
    \pgfmathdivide@{\pgf@sys@tonumber\pgfarrowlength}{\pgf@sys@tonumber\pgfarrowwidth}%
    \let\pgf@temp@quot\pgfmathresult%
    \pgf@x\pgfmathresult pt%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@x9\pgf@x%
    \advance\pgf@x by1pt%
    \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
    \pgf@xc\pgfmathresult\pgfarrowlinewidth%
    \pgf@xa\pgf@temp@quot\pgfarrowlinewidth
    \pgfutil@tempdima\pgfarrowlength%
    \advance\pgfutil@tempdima by-.5\pgf@xc%
    \advance\pgfutil@tempdima by-.5\pgfarrowlinewidth%
    \pgfarrowssetbackend{-.5\pgfarrowlinewidth}
    \ifpgfarrowreversed
      \ifdim\pgfinnerlinewidth>0pt
        \pgfarrowssetlineend{0pt}
      \else
        \pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by-.5\pgflinewidth}
      \fi
    \else
      \pgfarrowssetlineend{0pt}
    \fi
    \ifpgfarrowroundjoin
      \pgfarrowssettipend{\pgfutil@tempdima\advance\pgf@x by.5\pgfarrowlinewidth}
    \else
      \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth\ifpgfarrowharpoon\advance\pgf@x  by1.5\pgf@xa\fi}
    \fi
    \pgfarrowssavethe\pgfutil@tempdima
    \pgf@process{\pgfpointnormalised{\pgfqpoint{.3\pgfarrowlength}{.2333333\pgfarrowwidth}}}%
    \advance\pgf@y by1pt%
    \pgf@yc\pgf@y\pgf@xc\pgf@x%
    \pgfmathdivide@{\pgf@sys@tonumber\pgf@yc}{\pgf@sys@tonumber\pgf@xc}%
    \pgfutil@tempdimb\pgfmathresult\pgfarrowlinewidth%
    \pgfutil@tempdimb-.5\pgfutil@tempdimb%
    \advance\pgfutil@tempdimb by.5\pgfarrowwidth%
    \pgfarrowssavethe\pgfutil@tempdimb%
    \pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth\ifpgfarrowroundjoin\else\ifpgfarrowharpoon\advance\pgf@x  by1.5\pgf@xa\fi\fi}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
    \pgfarrowshullpoint{-.5\pgfarrowlinewidth}{.5\pgfarrowwidth\ifpgfarrowharpoon\advance\pgf@y by-.5\pgfarrowlinewidth\fi}%
    \pgfarrowshullpoint{-.5\pgfarrowlinewidth}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else-.5\pgfarrowwidth\fi}%
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \pgfpathmoveto    {\pgfqpoint{\pgfutil@tempdima}{0pt}}
    \pgfpathcurveto   {\pgfqpoint{.877192\pgfutil@tempdima}{.077922\pgfutil@tempdimb}}
                      {\pgfqpoint{.337381\pgfutil@tempdima}{.519480\pgfutil@tempdimb}}
                      {\pgfqpoint{0pt}{\pgfutil@tempdimb}}
    \ifpgfarrowharpoon
      \pgfpathlineto  {\pgfpointorigin}
    \else
      \pgfpathlineto  {\pgfqpoint{0pt}{-\pgfutil@tempdimb}}
      \pgfpathcurveto {\pgfqpoint{.337381\pgfutil@tempdima}{-.519480\pgfutil@tempdimb}}
                      {\pgfqpoint{.877192\pgfutil@tempdima}{-.077922\pgfutil@tempdimb}}
                      {\pgfqpoint{\pgfutil@tempdima}{0pt}}
    \fi
    \pgfpathclose
    \ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowopen o\fi%
    \ifpgfarrowroundjoin j\fi%
  },
}%




\pgfdeclarearrow{
  name = Stealth,
  defaults = {
    length  = +3pt 4.5 .8,
    width'  = +0pt .75,
    inset'  = +0pt 0.325,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgf@x\pgfarrowlength
    \advance\pgf@x by-\pgfarrowinset
    \pgf@x.25\pgf@x
    \ifdim\pgf@x<\pgfarrowlinewidth
      \pgfarrowlinewidth\pgf@x
    \fi
    \pgfmathdivide@{\pgf@sys@tonumber\pgfarrowlength}{\pgf@sys@tonumber\pgfarrowwidth}%
    \let\pgf@temp@quot\pgfmathresult%
    \pgf@x\pgfmathresult pt%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@x4\pgf@x%
    \advance\pgf@x by1pt%
    \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
    \pgf@xc\pgfmathresult\pgfarrowlinewidth%
    \pgf@xc.5\pgf@xc
    \pgf@xa\pgf@temp@quot\pgfarrowlinewidth%
    \pgf@ya.5\pgfarrowwidth%
    \csname pgfmathatan2@\endcsname{\pgfmath@tonumber\pgfarrowlength}{\pgfmath@tonumber\pgf@ya}%
    \pgf@yb\pgfmathresult pt%
    \csname pgfmathatan2@\endcsname{\pgfmath@tonumber\pgfarrowinset}{\pgfmath@tonumber\pgf@ya}%
    \pgf@ya\pgfmathresult pt%
    \advance\pgf@yb by-\pgf@ya%
    \pgf@yb.5\pgf@yb%
    \pgfmathtan@{\pgf@sys@tonumber\pgf@yb}%
    \pgfmathreciprocal@{\pgfmathresult}%
    \pgf@yc\pgfmathresult\pgfarrowlinewidth%
    \pgf@yc.5\pgf@yc%
    \advance\pgf@ya by\pgf@yb%
    \pgfmathsincos@{\pgf@sys@tonumber\pgf@ya}%
    \pgf@ya\pgfmathresulty\pgf@yc%
    \pgf@yb\pgfmathresultx\pgf@yc%
    \ifdim\pgfarrowinset=0pt%
      \pgf@ya.5\pgfarrowlinewidth%
    \fi
    \pgfmathdivide@{\pgf@sys@tonumber\pgfarrowinset}{\pgf@sys@tonumber\pgfarrowwidth}%
    \let\pgf@temp@quot\pgfmathresult%
    \pgf@x\pgfmathresult pt%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@x4\pgf@x%
    \advance\pgf@x by1pt%
    \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
    \pgf@yc\pgfmathresult\pgfarrowlinewidth%
    \pgf@yc.5\pgf@yc%
    \pgfutil@tempdima\pgfarrowlength%
    \advance\pgfutil@tempdima by-\pgf@xc%
    \advance\pgfutil@tempdima by-\pgf@ya%
    \pgfutil@tempdimb.5\pgfarrowwidth%
    \advance\pgfutil@tempdimb by-\pgf@yb%
    \ifpgfarrowroundjoin
      \pgfarrowssetbackend{\pgf@ya\advance\pgf@x by-.5\pgfarrowlinewidth}
    \else
      \pgfarrowssetbackend{0pt}
    \fi
    \ifpgfarrowharpoon
      \pgfarrowssetlineend{\pgfarrowinset\advance\pgf@x
        by\pgf@yc\advance\pgf@x by.5\pgfarrowlinewidth}
    \else
      \pgfarrowssetlineend{\pgfarrowinset\advance\pgf@x by\pgf@yc\advance\pgf@x by-.25\pgfarrowlinewidth}
      \ifpgfarrowreversed
        \ifdim\pgfinnerlinewidth>0pt
          \pgfarrowssetlineend{\pgfarrowinset}
        \else
          \pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by\pgf@ya\advance\pgf@x by-.25\pgfarrowlinewidth}
        \fi
      \fi
    \fi
    \ifpgfarrowroundjoin
      \pgfarrowssettipend{\pgfutil@tempdima\advance\pgf@x by\pgf@ya\advance\pgf@x by.5\pgfarrowlinewidth}
    \else
      \pgfarrowssettipend{\pgfarrowlength\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi}
    \fi
    \pgfarrowshullpoint{\pgfarrowlength\ifpgfarrowroundjoin\else\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
    \pgfarrowsupperhullpoint{0pt}{.5\pgfarrowwidth}%
    \pgfarrowshullpoint{\pgfarrowinset}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else 0pt\fi}%
    \pgfarrowssetvisualbackend{\pgfarrowinset}
    \advance\pgfarrowinset by\pgf@yc%
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgf@ya
    \pgfarrowssavethe\pgfarrowinset
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \pgfpathmoveto{\pgfqpoint{\pgfutil@tempdima\advance\pgf@x by\pgf@ya}{0pt}}
    \pgfpathlineto{\pgfqpoint{\pgf@ya}{\pgfutil@tempdimb}}
    \pgfpathlineto{\pgfqpoint{\pgfarrowinset}{0pt}}
    \ifpgfarrowharpoon \else
    \pgfpathlineto{\pgfqpoint{\pgf@ya}{-\pgfutil@tempdimb}}
    \fi
    \pgfpathclose
    \ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \the\pgfarrowinset,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowopen o\fi%
    \ifpgfarrowroundjoin j\fi%
  },
}%




\pgfdeclarearrow{
  name = Kite,
  defaults = {
    length  = +3.6pt +5.4,
    width'  = +0pt +0.5,
    inset'  = +0pt 0.25,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgf@x.4\pgfarrowlength
    \ifdim\pgf@x<\pgfarrowlinewidth
      \pgfarrowlinewidth\pgf@x
    \fi
    \pgf@x.4\pgfarrowwidth
    \ifdim\pgf@x<\pgfarrowlinewidth
      \pgfarrowlinewidth\pgf@x
    \fi
    \pgf@xa\pgfarrowlength%
    \advance\pgf@xa by-\pgfarrowinset%
    \pgfmathdivide@{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgfarrowwidth}%
    \let\pgf@temp@quot\pgfmathresult%
    \pgf@x\pgfmathresult pt%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@x4\pgf@x%
    \advance\pgf@x by1pt%
    \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
    \pgf@xc\pgfmathresult\pgfarrowlinewidth%
    \pgf@xc.5\pgf@xc
    \pgf@xa\pgf@temp@quot\pgfarrowlinewidth%
    \pgfmathdivide@{\pgf@sys@tonumber\pgfarrowinset}{\pgf@sys@tonumber\pgfarrowwidth}%
    \let\pgf@temp@quot\pgfmathresult%
    \pgf@x\pgfmathresult pt%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@x4\pgf@x%
    \advance\pgf@x by1pt%
    \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
    \pgf@yc\pgfmathresult\pgfarrowlinewidth%
    \pgf@yc.5\pgf@yc
    \pgf@ya\pgf@temp@quot\pgfarrowlinewidth%
    {%
      \pgfutil@tempdimb.5\pgfarrowwidth%
      \pgfutil@tempdima\pgfarrowlength\advance\pgfutil@tempdima by-\pgfarrowinset%
      \csname pgfmathatan2@\endcsname{\pgfmath@tonumber\pgfutil@tempdima}{\pgfmath@tonumber\pgfutil@tempdimb}%
      \pgf@yb\pgfmathresult pt%
      \csname pgfmathatan2@\endcsname{\pgfmath@tonumber\pgfarrowinset}{\pgfmath@tonumber\pgfutil@tempdimb}%
      \pgf@ya\pgfmathresult pt%
      \advance\pgf@yb by\pgf@ya%
      \pgf@yb.5\pgf@yb%
      \ifdim\pgf@yb=45pt%
        \def\pgfmathresult{1.414213}%
      \else%
        \pgfmathsin@{\pgf@sys@tonumber\pgf@yb}%
        \pgfmathreciprocal@{\pgfmathresult}%
      \fi%
      \pgf@yc\pgfmathresult\pgfarrowlinewidth%
      \pgf@yc.5\pgf@yc%
      \pgf@ya-\pgf@ya%
      \advance\pgf@ya by-90pt%
      \advance\pgf@ya by\pgf@yb%
      \pgfmathsincos@{\pgf@sys@tonumber\pgf@ya}%
      \pgf@xb\pgfmathresultx\pgf@yc%
      \pgf@yb\pgfmathresulty\pgf@yc%
      \expandafter\expandafter\expandafter%
    }\expandafter\expandafter\expandafter\pgf@xb\expandafter\the\expandafter\pgf@xb\expandafter\pgf@yb\the\pgf@yb%
    \pgfutil@tempdima\pgfarrowlength%
    \advance\pgfutil@tempdima by-\pgf@xc%
    \pgfutil@tempdimb.5\pgfarrowwidth%
    \advance\pgfutil@tempdimb by\pgf@yb%
    \ifpgfarrowroundjoin
      \pgfarrowssetbackend{\pgf@ya\advance\pgf@x by-.5\pgfarrowlinewidth}
    \else
      \pgfarrowssetbackend{0pt}
    \fi
    \ifpgfarrowreversed
      \pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by-\pgflinewidth\advance\pgf@x by\pgfarrowlinewidth}
    \else
      \pgfarrowssetlineend{\pgf@yc\advance\pgf@x by\pgflinewidth\advance\pgf@x by-\pgfarrowlinewidth}
    \fi
    \ifpgfarrowroundjoin
      \pgfarrowssettipend{\pgfutil@tempdima\advance\pgf@x by.5\pgfarrowlinewidth}
    \else
      \pgfarrowssettipend{\pgfarrowlength\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi}
    \fi
    \pgfarrowshullpoint{\pgfarrowlength\ifpgfarrowroundjoin\else\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
    \pgfarrowsupperhullpoint{\pgfarrowinset}{.5\pgfarrowwidth}%
    \pgfarrowshullpoint{0pt}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
    \advance\pgfarrowinset by\pgf@xb%
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgf@yc
    \pgfarrowssavethe\pgfarrowinset
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{\pgfarrowlinewidth}\fi
    \pgfpathmoveto{\pgfqpoint{\pgfutil@tempdima}{0pt}}
    \pgfpathlineto{\pgfqpoint{\pgfarrowinset}{\pgfutil@tempdimb}}
    \pgfpathlineto{\pgfqpoint{\pgf@yc}{0pt}}
    \ifpgfarrowharpoon \else
    \pgfpathlineto{\pgfqpoint{\pgfarrowinset}{-\pgfutil@tempdimb}}
    \fi
    \pgfpathclose
    \ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \the\pgfarrowinset,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowopen o\fi%
    \ifpgfarrowroundjoin j\fi%
  },
}%





\pgfdeclarearrow{
  name = Square,
  defaults = {
    length  = +2.12132pt +2.828427,
    width'  = +0pt +1,
    line width = +0pt +1 +1,
  },
  setup code = {
    \pgf@x.5\pgfarrowlength
    \ifdim\pgf@x<\pgfarrowlinewidth
      \pgfarrowlinewidth\pgf@x
    \fi
    \ifpgfarrowreversed
      \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
    \else
      \pgfarrowssetlineend{.5\pgfarrowlinewidth}
    \fi
    \pgfarrowssettipend{\pgfarrowlength}
    \pgfarrowshullpoint{\pgfarrowlength}{.5\pgfarrowwidth}
    \pgfarrowshullpoint{0pt}{.5\pgfarrowwidth}
    \pgfarrowshullpoint{\pgfarrowlength}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else-.5\pgfarrowwidth\fi}
    \pgfarrowshullpoint{0pt}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else-.5\pgfarrowwidth\fi}
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowwidth
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \pgfpathmoveto{\pgfqpoint{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
    \pgfpathlineto{\pgfqpoint{.5\pgfarrowlinewidth}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
    \pgfpathlineto{\pgfqpoint{.5\pgfarrowlinewidth}{\ifpgfarrowharpoon0pt\else-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth\fi}}
    \pgfpathlineto{\pgfqpoint{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}{\ifpgfarrowharpoon0pt\else-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth\fi}}
    \pgfpathclose
    \ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowopen o\fi%
    \ifpgfarrowroundjoin j\fi%
  },
}%



\pgfdeclarearrow{
  name = Circle,
  defaults = {
    length  = +2.39365pt +3.191538,
    width'  = +0pt 1,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgf@x.5\pgfarrowlength
    \ifdim\pgf@x<\pgfarrowlinewidth
      \pgfarrowlinewidth\pgf@x
    \fi
    \ifpgfarrowreversed
      \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
    \else
      \pgfarrowssetlineend{.5\pgfarrowlinewidth}
    \fi
    \pgfarrowssettipend{\pgfarrowlength}
    \pgfarrowsupperhullpoint{\pgfarrowlength}{.25\pgfarrowwidth}
    \pgfarrowsupperhullpoint{.75\pgfarrowlength}{.5\pgfarrowwidth}
    \pgfarrowsupperhullpoint{.25\pgfarrowlength}{.5\pgfarrowwidth}
    \pgfarrowsupperhullpoint{0pt}{.25\pgfarrowwidth}
    \ifpgfarrowharpoon%
      \pgfarrowshullpoint{0pt}{-.5\pgfarrowlinewidth}
      \pgfarrowshullpoint{\pgfarrowlength}{-.5\pgfarrowlinewidth}
    \fi%
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowwidth
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \ifpgfarrowharpoon
      \pgfpathmoveto{\pgfqpoint{\pgfarrowlength\advance\pgf@x
          by-.5\pgfarrowlinewidth}{0pt}}
      {%
        \pgf@xa.5\pgfarrowlength
        \advance\pgf@xa by-.5\pgfarrowlinewidth
        \pgftransformxscale{+\the\pgf@xa}
        \pgf@xa.5\pgfarrowwidth
        \advance\pgf@xa by-.5\pgfarrowlinewidth
        \pgftransformyscale{+\the\pgf@xa}
        \pgfpatharc{0}{180}{1pt}
      }
      \pgfpathclose
    \else%
      \pgfpathellipse{\pgfqpoint{.5\pgfarrowlength}{0pt}}{\pgfqpoint{.5\pgfarrowlength\advance\pgf@x
          by-.5\pgfarrowlinewidth}{0pt}}{\pgfqpoint{0pt}{.5\pgfarrowwidth\advance\pgf@y
          by-.5\pgfarrowlinewidth}}
    \fi
    \ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowopen o\fi%
    \ifpgfarrowroundjoin j\fi%
  },
}%


\pgfdeclarearrow{
  name = Round Cap,
  defaults = {
    length = +0pt .5
  },
  setup code = {
    \ifpgfarrowreversed
      \pgfarrowssettipend{\pgfarrowlength}
      \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by.5\pgflinewidth}
    \else
      \pgfarrowssettipend{\pgfarrowlength}
      \pgfarrowssetlineend{-.5\pgflinewidth}
    \fi
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
    \pgfarrowsupperhullpoint{\pgfarrowlength}{.5\pgflinewidth}
  },
  drawing code = {
    \ifpgfarrowreversed
      \pgftransformxscale{-1}
      \pgftransformxshift{-\pgfarrowlength}
    \fi
    \pgfutil@tempdima.5\pgflinewidth
    \pgfpathmoveto   {\pgfqpoint{-0.75\pgflinewidth}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{0pt}{\pgfutil@tempdima}}
    \ifpgfarrowreversed
      \pgfpathlineto {\pgfqpoint{\pgfarrowlength}{\pgfutil@tempdima}}
      \begingroup
      \pgftransformxshift{\pgfarrowlength}
      \pgftransformxscale{-1}
    \fi
    \pgfpathcurveto  {\pgfqpoint{0.55228475\pgfarrowlength}{\pgfutil@tempdima}}
                     {\pgfqpoint{\pgfarrowlength}{0.55228475\pgfutil@tempdima}}
                     {\pgfqpoint{\pgfarrowlength}{0pt}}
    \pgfpathcurveto  {\pgfqpoint{\pgfarrowlength}{-0.55228475\pgfutil@tempdima}}
                     {\pgfqpoint{0.55228475\pgfarrowlength}{-\pgfutil@tempdima}}
                     {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
    \ifpgfarrowreversed
      \endgroup
    \fi
    \pgfpathlineto   {\pgfqpoint{-.75\pgflinewidth}{-\pgfutil@tempdima}}
    \pgfpathclose
    \pgfusepathqfill
  },
  parameters = {\the\pgfarrowlength}
}%



\pgfdeclarearrow{
  name = Butt Cap,
  defaults = {
    length = +0pt .5
  },
  setup code = {
    \pgfarrowssettipend{\pgfarrowlength}
    \pgfarrowssetlineend{-.5\pgflinewidth}
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
    \pgfarrowsupperhullpoint{\pgfarrowlength}{.5\pgflinewidth}
  },
  drawing code = {
    \pgfutil@tempdima.5\pgflinewidth
    \pgfpathmoveto   {\pgfqpoint{-0.75\pgflinewidth}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{0pt}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowlength}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowlength}{-\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{-.75\pgflinewidth}{-\pgfutil@tempdima}}
    \pgfpathclose
    \pgfusepathqfill
  },
  parameters = {\the\pgfarrowlength}
}%



\pgfkeys{
  /pgf/arrow keys/.cd,
  cap angle/.code={%
    \pgfmathsetlength\pgf@x{#1}%
    \pgf@x.5\pgf@x
    \pgfmathtan@{\pgf@sys@tonumber\pgf@x}%
    \pgfmathreciprocal@{\pgfmathresult}%
    \pgf@x\pgfmathresult pt%
    \pgf@x.5\pgf@x%
    \edef\pgf@marshal{\noexpand\pgfarrowsaddtooptions{\noexpand\pgfarrowslinewidthdependent{+0pt}{\pgf@sys@tonumber\pgf@x}{0}\pgfarrowlength\pgf@x}}
    \pgf@marshal
  }
}%


\pgfdeclarearrow{
  name = Triangle Cap,
  defaults = {
    length = +0pt .5
  },
  setup code = {
    \ifpgfarrowreversed
      \pgfarrowssettipend{\pgfarrowlength}
      \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by.5\pgflinewidth}
    \else
      \pgfarrowssettipend{\pgfarrowlength}
      \pgfarrowssetlineend{-.5\pgflinewidth}
    \fi
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
    \pgfarrowshullpoint{\pgfarrowlength}{0pt}
  },
  drawing code = {
    \ifpgfarrowreversed
      \pgftransformxscale{-1}
      \pgftransformxshift{-\pgfarrowlength}
    \fi
    \pgfutil@tempdima.5\pgflinewidth
    \pgfpathmoveto   {\pgfqpoint{-0.75\pgflinewidth}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{0pt}{\pgfutil@tempdima}}
    \ifpgfarrowreversed
      \pgfpathlineto {\pgfqpoint{\pgfarrowlength}{\pgfutil@tempdima}}
      \begingroup
      \pgftransformxshift{\pgfarrowlength}
      \pgftransformxscale{-1}
    \fi
    \pgfpathlineto   {\pgfqpoint{\pgfarrowlength}{0pt}}
    \ifpgfarrowreversed
      \endgroup
      \pgfpathlineto {\pgfqpoint{\pgfarrowlength}{-\pgfutil@tempdima}}
    \fi
    \pgfpathlineto   {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{-.75\pgflinewidth}{-\pgfutil@tempdima}}
    \pgfpathclose
    \pgfusepathqfill
  },
  parameters = {\the\pgfarrowlength}
}%



\pgfdeclarearrow{
  name = Fast Triangle,
  defaults = {
    length = +0pt .5,
    inset = +0pt .5,
  },
  setup code = {
    \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}
    \ifpgfarrowreversed\pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}\fi
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowinset
    \pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
    \pgfarrowsupperhullpoint{\pgfarrowinset}{.5\pgflinewidth}
    \pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}{0pt}
  },
  drawing code = {
    \pgfutil@tempdima.5\pgflinewidth
    \pgfpathmoveto   {\pgfqpoint{0pt}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowinset}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowinset\advance\pgf@x by\pgfarrowlength}{0pt}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowinset}{-\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowlength}{0pt}}
    \pgfpathclose
    \pgfusepathqfill
  },
  parameters = {\the\pgfarrowlength,\the\pgfarrowinset}
}%


\pgfdeclarearrow{
  name = Fast Round,
  defaults = {
    length = +0pt .5,
    inset = +0pt .5,
  },
  setup code = {
    \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}
    \ifpgfarrowreversed\pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}\fi
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowinset
    \pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
    \pgfarrowsupperhullpoint{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}{.5\pgflinewidth}
  },
  drawing code = {
    \pgfutil@tempdima.5\pgflinewidth
    \pgfpathmoveto   {\pgfqpoint{0pt}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowinset}{\pgfutil@tempdima}}
    {
      \pgftransformxshift{\pgfarrowinset}
      \pgfpathcurveto{\pgfqpoint{0.55228475\pgfarrowlength}{\pgfutil@tempdima}}
                     {\pgfqpoint{\pgfarrowlength}{0.55228475\pgfutil@tempdima}}
                     {\pgfqpoint{\pgfarrowlength}{0pt}}
      \pgfpathcurveto{\pgfqpoint{\pgfarrowlength}{-0.55228475\pgfutil@tempdima}}
                     {\pgfqpoint{0.55228475\pgfarrowlength}{-\pgfutil@tempdima}}
                     {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
    }
    \pgfpathlineto   {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
    \pgfpathcurveto  {\pgfqpoint{0.55228475\pgfarrowlength}{-\pgfutil@tempdima}}
                     {\pgfqpoint{\pgfarrowlength}{-0.55228475\pgfutil@tempdima}}
                     {\pgfqpoint{\pgfarrowlength}{0pt}}
    \pgfpathcurveto  {\pgfqpoint{\pgfarrowlength}{0.55228475\pgfutil@tempdima}}
                     {\pgfqpoint{0.55228475\pgfarrowlength}{\pgfutil@tempdima}}
                     {\pgfqpoint{0pt}{\pgfutil@tempdima}}
    \pgfpathclose
    \pgfusepathqfill
  },
  parameters = {\the\pgfarrowlength,\the\pgfarrowinset}
}%






\pgfkeys{
  /pgf/arrow keys/.cd,
  n/.code={%
    \pgfmathparse{#1}%
    \expandafter\pgf@lib@meta@strip@dot\pgfmathresult.\relax%
  }
}%
\def\pgf@lib@meta@strip@dot#1.#2\relax{%
  \pgfarrowsaddtooptions{\def\pgfarrown{#1}}%
}%

\def\pgfarrown{4}%

\pgfdeclarearrow{
  name = Rays,
  defaults = {
    length = +3pt 4,
    width'  = +0pt 1,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgfmathdivide@{360}{\pgfarrown}%
    \let\pgfarrow@inc\pgfmathresult%
    \pgf@xa\pgfarrow@inc pt%
    \ifodd\pgfarrown\pgf@ya.25\pgf@xa\else\pgf@ya.5\pgf@xa\fi%
    \pgfmathsincos@{\pgf@sys@tonumber\pgf@ya}%
    \pgf@x.5\pgfarrowlength%
    \pgf@xa\pgfmathresultx\pgf@x%
    \ifpgfarrowroundcap
      \advance\pgf@xa by.5\pgfarrowlinewidth
    \else
      \pgf@process{\pgfpointnormalised{\pgfqpoint{\pgfmathresultx\pgfarrowlength}{\pgfmathresulty\pgfarrowwidth}}}%
      \pgf@x.5\pgfarrowlinewidth%
      \advance\pgf@xa by\pgf@sys@tonumber{\pgf@y}\pgf@x%
    \fi%
    \pgfarrowssettipend{\pgf@xa}
    \pgfarrowssetbackend{-\pgf@xa}
    \pgfarrowsupperhullpoint{\pgf@xa}{.25\pgfarrowwidth}
    \pgfarrowsupperhullpoint{.25\pgfarrowlength}{.5\pgfarrowwidth\ifpgfarrowroundcap\advance\pgf@y by.5\pgfarrowlinewidth\fi}
    \pgfarrowsupperhullpoint{-.25\pgfarrowlength}{.5\pgfarrowwidth\ifpgfarrowroundcap\advance\pgf@y by.5\pgfarrowlinewidth\fi}
    \pgfarrowsupperhullpoint{-\pgf@xa}{.25\pgfarrowwidth}
    \ifpgfarrowharpoon
      \pgfarrowshullpoint{-.5\pgfarrowlength\ifpgfarrowroundcap\advance\pgf@x by-.5\pgfarrowlinewidth\fi}{-.5\pgfarrowlinewidth}
      \pgfarrowshullpoint{.5\pgfarrowlength\ifpgfarrowroundcap\advance\pgf@x by.5\pgfarrowlinewidth\fi}{-.5\pgfarrowlinewidth}
    \fi
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowwidth
    \pgfarrowssave\pgfarrow@inc
    \pgfarrowssave\pgfarrown
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    {%
      \pgfgettransform\pgf@temp@trans
      \pgftransformxscale{+.5\pgfarrowlength}
      \pgftransformyscale{+.5\pgfarrowwidth}
      \pgf@xa\pgfarrow@inc pt%
      \ifodd\pgfarrown\pgf@ya.25\pgf@xa\else\pgf@ya.5\pgf@xa\fi%
      \ifpgfarrowharpoon\pgf@yb180pt\else\pgf@yb360pt\fi
      \pgfutil@loop%
      \ifdim\pgf@ya<\pgf@yb%
        \pgfpathmoveto{\pgfpointpolar{+\pgf@ya}{+1pt}}
        \pgfpathlineto{\pgfpointorigin}
        \ifpgfarrowharpoon\ifdim\pgf@ya>\pgf@xa\else{\pgfsettransform\pgf@temp@trans\pgfpathlineto{\pgfqpoint{-.5\pgflinewidth}{0pt}}}\fi\fi
        \advance\pgf@ya by\pgf@xa\relax%
      \pgfutil@repeat%
    }
    \pgfusepathqstroke
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \pgfarrown,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowroundcap c\fi%
  }
}%




\pgfkeys{
  LaTeX /.tip         = {Latex},
  Triangle /.tip      = {Stealth[inset=+0pt, angle=+60:+2.7pt +3.6]},
  Rectangle /.tip     = {Square[length=+3pt +4.5,width'=+0pt +.5]},
  Ellipse /.tip       = {Circle[length=+3.3pt +4.95, width'=+0pt +0.5]},
  Diamond /.tip       = {Kite[inset'=+0pt .5]},
  Turned Square /.tip = {Kite[length=+3pt 4,width'= +0pt 1,inset'= +0pt 0.5]},
  To /.tip            = {Computer Modern Rightarrow},
  Bar /.tip           = {Tee Barb[length=+0pt]},
  Bracket /.tip       = {Tee Barb[inset'=+0pt +1,length=+0.75pt +1]},
  Parenthesis /.tip   = {Arc Barb[arc=+120,length=+1.725pt +2.3]}
}%




\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryarrows.meta.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryarrows.spaced.code.tex ====

\ProvidesFileRCS{pgflibraryarrows.spaced.code.tex}


\usepgflibrary{arrows}%




\pgfarrowsdeclarecombine*{spaced to}{spaced to}{to}{to}{space}{space}%
\pgfarrowsdeclarecombine*{spaced to reversed}{spaced to reversed}{to reversed}{to reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced implies}{spaced implies}{implies}{implies}{space}{space}%
\pgfarrowsdeclarecombine*{spaced latex}{spaced latex}{latex}{latex}{space}{space}%
\pgfarrowsdeclarecombine*{spaced latex reversed}{spaced latex reversed}{latex reversed}{latex reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced latex'}{spaced latex'}{latex'}{latex'}{space}{space}%
\pgfarrowsdeclarecombine*{spaced latex' reversed}{spaced latex' reversed}{latex' reversed}{latex' reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced stealth}{spaced stealth}{stealth}{stealth}{space}{space}%
\pgfarrowsdeclarecombine*{spaced stealth reversed}{spaced stealth reversed}{stealth reversed}{stealth reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced stealth'}{spaced stealth'}{stealth'}{stealth'}{space}{space}%
\pgfarrowsdeclarecombine*{spaced stealth' reversed}{spaced stealth' reversed}{stealth' reversed}{stealth' reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced triangle 90}{spaced triangle 90}{triangle 90}{triangle 90}{space}{space}%
\pgfarrowsdeclarecombine*{spaced triangle 90 reversed}{spaced triangle 90 reversed}{triangle 90 reversed}{triangle 90 reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced triangle 60}{spaced triangle 60}{triangle 60}{triangle 60}{space}{space}%
\pgfarrowsdeclarecombine*{spaced triangle 60 reversed}{spaced triangle 60 reversed}{triangle 60 reversed}{triangle 60 reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced triangle 45}{spaced triangle 45}{triangle 45}{triangle 45}{space}{space}%
\pgfarrowsdeclarecombine*{spaced triangle 45 reversed}{spaced triangle 45 reversed}{triangle 45 reversed}{triangle 45 reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced open triangle 90}{spaced open triangle 90}{open triangle 90}{open triangle 90}{space}{space}%
\pgfarrowsdeclarecombine*{spaced open triangle 90 reversed}{spaced open triangle 90 reversed}{open triangle 90 reversed}{open triangle 90 reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced open triangle 60}{spaced open triangle 60}{open triangle 60}{open triangle 60}{space}{space}%
\pgfarrowsdeclarecombine*{spaced open triangle 60 reversed}{spaced open triangle 60 reversed}{open triangle 60 reversed}{open triangle 60 reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced open triangle 45}{spaced open triangle 45}{open triangle 45}{open triangle 45}{space}{space}%
\pgfarrowsdeclarecombine*{spaced open triangle 45 reversed}{spaced open triangle 45 reversed}{open triangle 45 reversed}{open triangle 45 reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced angle 90}{spaced angle 90}{angle 90}{angle 90}{space}{space}%
\pgfarrowsdeclarecombine*{spaced angle 90 reversed}{spaced angle 90 reversed}{angle 90 reversed}{angle 90 reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced angle 60}{spaced angle 60}{angle 60}{angle 60}{space}{space}%
\pgfarrowsdeclarecombine*{spaced angle 60 reversed}{spaced angle 60 reversed}{angle 60 reversed}{angle 60 reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced angle 45}{spaced angle 45}{angle 45}{angle 45}{space}{space}%
\pgfarrowsdeclarecombine*{spaced angle 45 reversed}{spaced angle 45 reversed}{angle 45 reversed}{angle 45 reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced hooks}{spaced hooks}{hooks}{hooks}{space}{space}%
\pgfarrowsdeclarecombine*{spaced hooks reversed}{spaced hooks reversed}{hooks reversed}{hooks reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced o}{spaced o}{o}{o}{space}{space}%
\pgfarrowsdeclarecombine*{spaced *}{spaced *}{*}{*}{space}{space}%
\pgfarrowsdeclarecombine*{spaced diamond}{spaced diamond}{diamond}{diamond}{space}{space}%
\pgfarrowsdeclarecombine*{spaced open diamond}{spaced open diamond}{open diamond}{open diamond}{space}{space}%
\pgfarrowsdeclarecombine*{spaced square}{spaced square}{square}{square}{space}{space}%
\pgfarrowsdeclarecombine*{spaced open square}{spaced open square}{open square}{open square}{space}{space}%
\pgfarrowsdeclarecombine*{spaced serif cm}{spaced serif cm}{serif cm}{serif cm}{space}{space}%
\pgfarrowsdeclarecombine*{spaced left to}{spaced left to}{left to}{left to}{space}{space}%
\pgfarrowsdeclarecombine*{spaced left to reversed}{spaced left to reversed}{left to reversed}{left to reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced right to}{spaced right to}{right to}{right to}{space}{space}%
\pgfarrowsdeclarecombine*{spaced right to reversed}{spaced right to reversed}{right to reversed}{right to reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced left hook}{spaced left hook}{left hook}{left hook}{space}{space}%
\pgfarrowsdeclarecombine*{spaced left hook reversed}{spaced left hook reversed}{left hook reversed}{left hook reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced right hook}{spaced right hook}{right hook}{right hook}{space}{space}%
\pgfarrowsdeclarecombine*{spaced right hook reversed}{spaced right hook reversed}{right hook reversed}{right hook reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced round cap}{spaced round cap}{round cap}{round cap}{space}{space}%
\pgfarrowsdeclarecombine*{spaced butt cap}{spaced butt cap}{butt cap}{butt cap}{space}{space}%
\pgfarrowsdeclarecombine*{spaced triangle 90 cap}{spaced triangle 90 cap}{triangle 90 cap}{triangle 90 cap}{space}{space}%
\pgfarrowsdeclarecombine*{spaced triangle 90 cap reversed}{spaced triangle 90 cap reversed}{triangle 90 cap reversed}{triangle 90 cap reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced fast cap}{spaced fast cap}{fast cap}{fast cap}{space}{space}%
\pgfarrowsdeclarecombine*{spaced fast cap reversed}{spaced fast cap reversed}{fast cap reversed}{fast cap reversed}{space}{space}%
\pgfarrowsdeclarecombine*{spaced (}{spaced )}{(}{)}{space}{space}%
\pgfarrowsdeclarecombine*{spaced )}{spaced (}{)}{(}{space}{space}%
\pgfarrowsdeclarecombine*{spaced |}{spaced |}{|}{|}{space}{space}%

\pgfdeclarearrow{
  name = spaced [-spaced ],
  means = square bracket[].space
}%

\pgfdeclarearrow{
  name = spaced ]-spaced [,
  means = square bracket[reversed].space
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryarrows.spaced.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarycurvilinear.code.tex ====

\ProvidesFileRCS{pgflibrarycurvilinear.code.tex}







\def\pgfsetcurvilinearbeziercurve#1#2#3#4{%
  \pgf@process{#1}%
  \edef\pgf@curvilinear@line@a{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgf@xa=-\pgf@x%
  \pgf@ya=-\pgf@y%
  \pgf@process{#2}%
  \edef\pgf@curvilinear@line@b{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgf@xb=-\pgf@x%
  \pgf@yb=-\pgf@y%
  \advance\pgf@x by\pgf@xa%
  \advance\pgf@y by\pgf@ya%
  \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
  \let\pgf@curvilinear@lenab\pgfmathresult%
  \pgf@process{#3}%
  \edef\pgf@curvilinear@line@c{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgf@xc=-\pgf@x%
  \pgf@yc=-\pgf@y%
  \advance\pgf@x by\pgf@xb%
  \advance\pgf@y by\pgf@yb%
  \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
  \let\pgf@curvilinear@lenbc\pgfmathresult%
  \pgf@process{#4}%
  \edef\pgf@curvilinear@line@d{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \advance\pgf@x by\pgf@xc%
  \advance\pgf@y by\pgf@yc%
  \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
  \let\pgf@curvilinear@lencd\pgfmathresult
  \pgf@x=\pgf@curvilinear@lenab pt%
  \advance\pgf@x by\pgf@curvilinear@lenbc pt%
  \advance\pgf@x by\pgf@curvilinear@lencd pt%
  \pgfmathreciprocal@{\pgf@sys@tonumber\pgf@x}%
  \pgf@curvilinear@time@a\pgfmathresult pt%
  \pgf@process{\pgfpointcurveattime{\pgf@curvilinear@time@a}{\pgf@curvilinear@line@a}{\pgf@curvilinear@line@b}{\pgf@curvilinear@line@c}{\pgf@curvilinear@line@d}}%
  \pgf@xb=-\pgf@x%
  \pgf@yb=-\pgf@y%
  \advance\pgf@x by\pgf@xa%
  \advance\pgf@y by\pgf@ya%
  \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
  \pgf@curvilinear@length@a\pgfmathresult pt%
  \ifdim\pgf@curvilinear@length@a>1pt\relax%
    \pgfmathdivide@{\pgf@sys@tonumber\pgf@curvilinear@time@a}{\pgf@sys@tonumber\pgf@curvilinear@length@a}%
    \pgf@curvilinear@time@a\pgfmathresult pt%
    \pgf@process{\pgfpointcurveattime{\pgf@curvilinear@time@a}{\pgf@curvilinear@line@a}{\pgf@curvilinear@line@b}{\pgf@curvilinear@line@c}{\pgf@curvilinear@line@d}}
    \pgf@xb=-\pgf@x%
    \pgf@yb=-\pgf@y%
    \advance\pgf@x by\pgf@xa%
    \advance\pgf@y by\pgf@ya%
    \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
    \pgf@curvilinear@length@a\pgfmathresult pt%
  \fi%
  \pgf@process{\pgfpointcurveattime{2\pgf@curvilinear@time@a}{\pgf@curvilinear@line@a}{\pgf@curvilinear@line@b}{\pgf@curvilinear@line@c}{\pgf@curvilinear@line@d}}
  \pgf@xa=-\pgf@x%
  \pgf@ya=-\pgf@y%
  \advance\pgf@x by\pgf@xb%
  \advance\pgf@y by\pgf@yb%
  \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
  \pgf@curvilinear@length@b\pgfmathresult pt%
  \advance\pgf@curvilinear@length@b by\pgf@curvilinear@length@a%
  \pgf@process{\pgfpointcurveattime{4\pgf@curvilinear@time@a}{\pgf@curvilinear@line@a}{\pgf@curvilinear@line@b}{\pgf@curvilinear@line@c}{\pgf@curvilinear@line@d}}
  \pgf@xb=-\pgf@x%
  \pgf@yb=-\pgf@y%
  \advance\pgf@x by\pgf@xa%
  \advance\pgf@y by\pgf@ya%
  \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
  \pgf@curvilinear@length@c\pgfmathresult pt%
  \advance\pgf@curvilinear@length@c by\pgf@curvilinear@length@b%
  \pgf@process{\pgfpointcurveattime{8\pgf@curvilinear@time@a}{\pgf@curvilinear@line@a}{\pgf@curvilinear@line@b}{\pgf@curvilinear@line@c}{\pgf@curvilinear@line@d}}
  \advance\pgf@x by\pgf@xb%
  \advance\pgf@y by\pgf@yb%
  \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
  \pgf@curvilinear@length@d\pgfmathresult pt%
  \advance\pgf@curvilinear@length@d by\pgf@curvilinear@length@c%
  \let\pgf@curvilinear@comp@a\pgf@curvilinear@comp@a@initial%
  \let\pgf@curvilinear@comp@b\pgf@curvilinear@comp@b@initial%
  \let\pgf@curvilinear@comp@c\pgf@curvilinear@comp@c@initial%
  \let\pgf@curvilinear@comp@d\pgf@curvilinear@comp@d@initial%
  \let\pgf@curvilinear@comp@e\pgf@curvilinear@comp@e@initial%
  \let\pgf@curvilinear@point\pgf@curvilinear@curve@point%
}%
\newdimen\pgf@curvilinear@time@a
\newdimen\pgf@curvilinear@length@a
\newdimen\pgf@curvilinear@length@b
\newdimen\pgf@curvilinear@length@c
\newdimen\pgf@curvilinear@length@d


\def\pgf@curvilinear@comp@a@initial{%
  \pgfmathdivide@{\pgf@sys@tonumber\pgf@curvilinear@time@a}{\pgf@sys@tonumber\pgf@curvilinear@length@a}%
  \let\pgf@curvilinear@quot@a\pgfmathresult%
  \let\pgf@curvilinear@comp@a\pgf@curvilinear@comp@a@cont%
  \pgf@curvilinear@comp@a@cont%
}%
\def\pgf@curvilinear@comp@a@cont{%
  \pgf@x\pgf@curvilinear@quot@a\pgf@x%
}%

\def\pgf@curvilinear@comp@b@initial{%
  \pgf@y=\pgf@curvilinear@length@b%
  \advance\pgf@y by-\pgf@curvilinear@length@a%
  \pgfmathdivide@{\pgf@sys@tonumber\pgf@curvilinear@time@a}{\pgf@sys@tonumber\pgf@y}%
  \let\pgf@curvilinear@quot@b\pgfmathresult%
  \pgf@y\pgfmathresult\pgf@curvilinear@length@a%
  \pgf@y-\pgf@y%
  \advance\pgf@y by\pgf@curvilinear@time@a%
  \edef\pgf@curvilinear@correct@b{\pgf@sys@tonumber\pgf@y}%
  \let\pgf@curvilinear@comp@b\pgf@curvilinear@comp@b@cont%
  \pgf@curvilinear@comp@b@cont%
}%
\def\pgf@curvilinear@comp@b@cont{%
  \pgf@x\pgf@curvilinear@quot@b\pgf@x%
  \advance\pgf@x by\pgf@curvilinear@correct@b pt%
}%

\def\pgf@curvilinear@comp@c@initial{%
  \pgf@y=\pgf@curvilinear@length@c%
  \advance\pgf@y by-\pgf@curvilinear@length@b%
  \pgf@y.5\pgf@y%
  \pgfmathdivide@{\pgf@sys@tonumber\pgf@curvilinear@time@a}{\pgf@sys@tonumber\pgf@y}%
  \let\pgf@curvilinear@quot@c\pgfmathresult%
  \pgf@y\pgf@curvilinear@quot@c\pgf@curvilinear@length@b%
  \pgf@y-\pgf@y%
  \advance\pgf@y by2\pgf@curvilinear@time@a%
  \edef\pgf@curvilinear@correct@c{\pgf@sys@tonumber\pgf@y}%
  \let\pgf@curvilinear@comp@c\pgf@curvilinear@comp@c@cont%
  \pgf@curvilinear@comp@c@cont%
}%
\def\pgf@curvilinear@comp@c@cont{%
  \pgf@x\pgf@curvilinear@quot@c\pgf@x%
  \advance\pgf@x by\pgf@curvilinear@correct@c pt%
}%

\def\pgf@curvilinear@comp@d@initial{%
  \pgf@y=\pgf@curvilinear@length@d%
  \advance\pgf@y by-\pgf@curvilinear@length@c%
  \pgf@y.25\pgf@y%
  \pgfmathdivide@{\pgf@sys@tonumber\pgf@curvilinear@time@a}{\pgf@sys@tonumber\pgf@y}%
  \let\pgf@curvilinear@quot@d\pgfmathresult%
  \pgf@y\pgf@curvilinear@quot@d\pgf@curvilinear@length@c%
  \pgf@y-\pgf@y%
  \advance\pgf@y by4\pgf@curvilinear@time@a%
  \edef\pgf@curvilinear@correct@d{\pgf@sys@tonumber\pgf@y}%
  \let\pgf@curvilinear@comp@d\pgf@curvilinear@comp@d@cont%
  \pgf@curvilinear@comp@d@cont%
}%
\def\pgf@curvilinear@comp@d@cont{%
  \pgf@x\pgf@curvilinear@quot@d\pgf@x%
  \advance\pgf@x by\pgf@curvilinear@correct@d pt%
}%

\def\pgf@curvilinear@comp@e@initial{%
  \pgfmathmultiply@{8}{\pgf@sys@tonumber\pgf@curvilinear@time@a}%
  \expandafter\pgfmathdivide@\expandafter{\pgfmathresult}{\pgf@sys@tonumber\pgf@curvilinear@length@d}%
  \let\pgf@curvilinear@quot@e\pgfmathresult%
  \let\pgf@curvilinear@comp@e\pgf@curvilinear@comp@e@cont%
  \pgf@curvilinear@comp@e@cont%
}%
\def\pgf@curvilinear@comp@e@cont{%
  \pgf@x\pgf@curvilinear@quot@e\pgf@x%
}%



\def\pgfcurvilineardistancetotime#1{%
  \pgfmathsetlength{\pgf@x}{#1}%
  \ifdim\pgf@x<\pgf@curvilinear@length@c\relax%
    \ifdim\pgf@x<\pgf@curvilinear@length@a\relax%
      \pgf@curvilinear@comp@a%
    \else\ifdim\pgf@x<\pgf@curvilinear@length@b\relax%
      \pgf@curvilinear@comp@b%
    \else%
      \pgf@curvilinear@comp@c%
    \fi\fi%
  \else\ifdim\pgf@x<\pgf@curvilinear@length@d\relax%
    \pgf@curvilinear@comp@d%
  \else%
    \pgf@curvilinear@comp@e%
  \fi\fi%
}%




\def\pgfpointcurvilinearbezierorthogonal#1#2{%
  \pgfmathsetmacro\pgf@curvilinear@yfactor{#2}%
  \pgfcurvilineardistancetotime{#1}%
  \pgfpointcurveattime{\pgf@x}{\pgf@curvilinear@line@a}{\pgf@curvilinear@line@b}{\pgf@curvilinear@line@c}{\pgf@curvilinear@line@d}
  \pgf@xc\pgf@x%
  \pgf@yc\pgf@y%
  \advance\pgf@xb by-\pgf@xa%
  \advance\pgf@yb by-\pgf@ya%
  \ifdim\pgf@xb<0.0001pt\ifdim\pgf@xb>-0.0001pt\ifdim\pgf@yb<0.0001pt\ifdim\pgf@yb>-0.0001pt\pgf@diff@curvi@ac\fi\fi\fi\fi
  \pgf@process{\pgfpointnormalised{\pgf@x=\pgf@yb\pgf@y=-\pgf@xb}}
  \pgf@x\pgf@curvilinear@yfactor\pgf@x%
  \pgf@y\pgf@curvilinear@yfactor\pgf@y%
  \advance\pgf@x by\pgf@xc%
  \advance\pgf@y by\pgf@yc%
}%

\def\pgf@diff@curvi@ac{%
  \pgf@curvilinear@line@a%
  \pgf@xa\pgf@x\pgf@ya\pgf@y%
  \pgf@curvilinear@line@c%
  \pgf@xb\pgf@x\pgf@yb\pgf@y%
  \advance\pgf@xb by-\pgf@xa%
  \advance\pgf@yb by-\pgf@ya%
  \ifdim\pgf@xb<0.0001pt\ifdim\pgf@xb>-0.0001pt\ifdim\pgf@yb<0.0001pt\ifdim\pgf@yb>-0.0001pt%
    \pgf@curvilinear@line@d%
    \pgf@xb\pgf@x\pgf@yb\pgf@y%
    \advance\pgf@xb by-\pgf@xa%
    \advance\pgf@yb by-\pgf@ya%
  \fi\fi\fi\fi%
  \pgf@xb-\pgf@xb%
  \pgf@yb-\pgf@yb%
}%




\def\pgfpointcurvilinearbezierpolar#1#2{%
  \pgfmathsetlength\pgfutil@tempdima{#1}%
  \pgfmathsetlength\pgfutil@tempdimb{#2}%
  \pgfpointnormalised{\pgfqpoint{\pgfutil@tempdima}{\pgfutil@tempdimb}}%
  \ifdim\pgfutil@tempdimb=0pt\relax\ifdim\pgfutil@tempdima=0pt\pgf@x1pt\pgf@y0pt\fi\fi%
  \ifdim\pgfutil@tempdima<0pt%
    \pgf@x-\pgf@x%
    \pgf@y-\pgf@y%
  \fi%
  \pgf@ya=-\pgf@y%
  \pgfsettransformentries%
    {\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
    {\pgf@sys@tonumber\pgf@ya}{\pgf@sys@tonumber\pgf@x}{0pt}{0pt}%
  \pgftransformshift{\pgfpointscale{-1}{\pgf@curvilinear@line@a}}%
  \pgfmathveclen@{\pgf@sys@tonumber\pgfutil@tempdima}{\pgf@sys@tonumber\pgfutil@tempdimb}%
  \ifdim\pgfutil@tempdima<0pt%
    \edef\pgfmathresult{-\pgfmathresult}%
  \fi%
  \pgfcurvilineardistancetotime{\pgfmathresult}%
  \pgf@process{%
    \pgfpointadd{%
      \pgfpointtransformed{%
        \pgfpointcurveattime%
          {\pgf@x}%
          {\pgf@curvilinear@line@a}%
          {\pgf@curvilinear@line@b}%
          {\pgf@curvilinear@line@c}%
          {\pgf@curvilinear@line@d}%
      }%
    }%
    \pgf@curvilinear@line@a%
  }%
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarycurvilinear.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryfadings.code.tex ====

\ProvidesFileRCS{pgflibraryfadings.code.tex}



\pgfdeclarehorizontalshading{pgf@lib@fade@east}{100bp}
{color(0bp)=(pgftransparent!0); color(25bp)=(pgftransparent!0);
 color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)}%

\pgfdeclarehorizontalshading{pgf@lib@fade@west}{100bp}
{color(0bp)=(pgftransparent!100); color(25bp)=(pgftransparent!100);
 color(75bp)=(pgftransparent!0); color(100bp)=(pgftransparent!0)}%

\pgfdeclareverticalshading{pgf@lib@fade@north}{100bp}
{color(0bp)=(pgftransparent!0); color(25bp)=(pgftransparent!0);
 color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)}%

\pgfdeclareverticalshading{pgf@lib@fade@south}{100bp}
{color(0bp)=(pgftransparent!100); color(25bp)=(pgftransparent!100);
 color(75bp)=(pgftransparent!0); color(100bp)=(pgftransparent!0)}%

\pgfdeclarefading{east}{\pgfuseshading{pgf@lib@fade@east}}%
\pgfdeclarefading{west}{\pgfuseshading{pgf@lib@fade@west}}%
\pgfdeclarefading{north}{\pgfuseshading{pgf@lib@fade@north}}%
\pgfdeclarefading{south}{\pgfuseshading{pgf@lib@fade@south}}%



\pgfdeclareradialshading{tikz@lib@fade@circle@10}{\pgfpointorigin}{
  color(0pt)=(pgftransparent!0); color(22.5bp)=(pgftransparent!0);
  color(25bp)=(pgftransparent!100); color(50bp)=(pgftransparent!100)}%
\pgfdeclarefading{circle with fuzzy edge 10 percent}{\pgfuseshading{tikz@lib@fade@circle@10}}%

\pgfdeclareradialshading{tikz@lib@fade@circle@15}{\pgfpointorigin}{
  color(0pt)=(pgftransparent!0); color(21.25bp)=(pgftransparent!0);
  color(25bp)=(pgftransparent!100); color(50bp)=(pgftransparent!100)}%
\pgfdeclarefading{circle with fuzzy edge 15 percent}{\pgfuseshading{tikz@lib@fade@circle@15}}%

\pgfdeclareradialshading{tikz@lib@fade@circle@20}{\pgfpointorigin}{
  color(0pt)=(pgftransparent!0); color(20bp)=(pgftransparent!0);
  color(25bp)=(pgftransparent!100); color(50bp)=(pgftransparent!100)}%
\pgfdeclarefading{circle with fuzzy edge 20 percent}{\pgfuseshading{tikz@lib@fade@circle@20}}%

\pgfdeclareradialshading{tikz@lib@fade@fuzzy@15}{\pgfpointorigin}{
  color(0pt)=(pgftransparent!100); color(21.25bp)=(pgftransparent!100); color(23.125bp)=(pgftransparent!0);
  color(25bp)=(pgftransparent!100); color(50bp)=(pgftransparent!100)}%
\pgfdeclarefading{fuzzy ring 15 percent}{\pgfuseshading{tikz@lib@fade@fuzzy@15}}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryfadings.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryfixedpointarithmetic.code.tex ====


\pgfkeys{/pgf/.cd,
    fixed point arithmetic/.code={%
        \pgfmathfp@plots@install%
        \pgfmathfp@parser@install%
        \let\pgfmathparse=\pgfmathfpparse%
        \pgfkeys{/pgf/fixed point/.cd, #1}%
    },%
    fixed point/.cd,
    scale results/.code={%
        \pgfmathfpparse{#1}%
        \let\pgfmathfpscale=\pgfmathresult%
    }%
}%

\def\pgfmathfpscale{1}%

\def\pgfmathfpparse{%
    \begingroup%
        \let\pgfmathpostparse=\relax%
        \pgfmath@catcodes%
        \pgfmath@quickparsefalse%
        \pgfmathfpparse@}%

\def\pgfmathfpparse@#1{%
    \edef\pgfmathfp@expression{#1}%
    \expandafter\pgfmathfpparse@@\pgfmathfp@expression\pgfmathfp@}%

\def\pgfmathfp@char@asterisk{*}%
\def\pgfmathfpparse@@#1#2\pgfmathfp@{%
    \def\pgfmathfp@test{#1}%
    \ifx\pgfmathfp@test\pgfmathfp@char@asterisk%
        \edef\pgfmathfp@expression{\pgfmathfpscale#1#2}%
    \else%
        \edef\pgfmathfp@expression{#1#2}%
    \fi%
    \expandafter\pgfmathparse@\expandafter{\pgfmathfp@expression}%
}%

\pgfkeys{/pgf/fixed point/.cd,
  scale file plot x/.code=\pgfmathfpparse{#1}\edef\pgfmathfpplotscalex{\pgfmathresult*},
  scale file plot y/.code=\pgfmathfpparse{#1}\edef\pgfmathfpplotscaley{\pgfmathresult*},
  scale file plot z/.code=\pgfmathfpparse{#1}\edef\pgfmathfpplotscalez{\pgfmathresult*},
}%

\def\pgfmathfp@plots@install{%
    \let\pgfmathfpplotscalex=\pgfutil@empty
    \let\pgfmathfpplotscaley=\pgfutil@empty
    \let\pgfmathfpplotscalez=\pgfutil@empty
    \let\pgf@parsexyline=\pgfmathfp@parsexyline%
    \let\pgf@parsexyzline=\pgfmathfp@parsexyzline%
}%

\def\pgfmathfp@parsexyline#1 #2 #3\pgf@stop{%
    \edef\pgfmathfp@marshal{%
        \noexpand\pgfplotstreampoint{\noexpand\pgfpointxy{\pgfmathfpplotscalex#1}{\pgfmathfpplotscaley#2}}%
    }%
    \pgfmathfp@marshal%
}%

\def\pgfmathfp@parsexyzline#1 #2 #3 #4\pgf@stop{%
    \edef\pgfmathfp@marshal{%
        \noexpand\pgfplotstreampoint{%
            \noexpand\pgfpointxyz{\pgfmathfpplotscalex#1}{\pgfmathfpplotscaley#2}{\pgfmathfpplotscalez#3}%
        }%
    }%
    \pgfmathfp@marshal%
}%

\def\pgfmathfp@parser@install{%
    \expandafter\ifx\csname FP@version\endcsname\relax%
        \pgferror{You need to say `\string\usepackage{fp}' to use %
          fixed point arithmetic}%
    \else%
        \FPmessagesfalse%
        \FPdebugfalse%
        \let\pgfmathadd@=\pgfmathfpadd@%
        \let\pgfmathsubtract@=\pgfmathfpsubtract@%
        \let\pgfmathmultiply@=\pgfmathfpmultiply@%
        \let\pgfmathdivide@=\pgfmathfpdivide@%
        \let\pgfmathabs@=\pgfmathfpabs@%
        \let\pgfmathneg@=\pgfmathfpneg@%
        \let\pgfmathround@=\pgfmathfpround@%
        \let\pgfmathfloor@=\pgfmathfpfloor@%
        \let\pgfmathceil@=\pgfmathfpceil@%
        \let\pgfmathmod@=\pgfmathfpmod@%
        \let\pgfmathmax@=\pgfmathfpmax@%
        \let\pgfmathmin@=\pgfmathfpmin@%
        \let\pgfmathsin@=\pgfmathfpsin@%
        \let\pgfmathcos@=\pgfmathfpcos@%
        \let\pgfmathtan@=\pgfmathfptan@%
        \let\pgfmathdeg@=\pgfmathfpdeg@%
        \let\pgfmathrad@=\pgfmathfprad@%
        \let\pgfmathatan@=\pgfmathfpatan@%
        \let\pgfmathasin@=\pgfmathfpasin@%
        \let\pgfmathacos@=\pgfmathfpacos@%
        \let\pgfmathcot@=\pgfmathfpcot@%
        \let\pgfmathsec@=\pgfmathfpsec@%
        \let\pgfmathcosec@=\pgfmathfpcosec@%
        \let\pgfmathpow@=\pgfmathfppow@%
        \let\pgfmathexp@=\pgfmathfpexp@%
        \let\pgfmathln@=\pgfmathfpln@%
        \let\pgfmathsqrt@=\pgfmathfpsqrt@%
        \let\pgfmath@pi=\pgfmathfppi@%
        \let\pgfmathveclen@=\pgfmathfpveclen@%
        \let\pgfmathe@=\pgfmathfpe@%
        \let\pgfmathlessthan@=\pgfmathfplessthan@%
        \let\pgfmathgreaterthan@=\pgfmathfpgreaterthan@%
        \let\pgfmathequalto@=\pgfmathfpequalto@%
        \let\pgfmathrnd=\pgfmathfprnd%
        \let\pgfmathrand=\pgfmathfprand%
        \let\pgfmathsetseed=\pgfmathfpsetseed%
        \let\pgfmathscientific=\pgfmathfpscientific%
    \fi%
}%

\def\pgfmathfpe@{let\pgfmathresult=\FPe}%
\def\pgfmathfppi@{let\pgfmathresult=\FPpi}%



\def\pgfmathfpscientific#1#2{%
    \begingroup%
        \FPpow\pgfmathresult{10}{#2}\unskip%
        \FPmul\pgfmathresult{#1}{\pgfmathresult}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%


\def\pgfmathfplessthan#1#2{%
    \pgfmathfpparse{#2}\let\pgfmath@result=\pgfmathresult%
    \pgfmathfpparse{#1}%
    \pgfmathfplessthan@{\pgfmathresult}{\pgfmath@result}%
}%
\def\pgfmathfplessthan@#1#2{%
    \begingroup%
        \FPiflt{#1}{#2}%
            \def\pgfmathresult{1.0}%
        \else%
            \def\pgfmathresult{0.0}%
        \fi%
       \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpgreaterthan#1#2{%
    \pgfmathfpparse{#2}\let\pgfmath@result=\pgfmathresult%
    \pgfmathfpparse{#1}%
    \pgfmathfpgreaterthan@{\pgfmathresult}{\pgfmath@result}%
}%
\def\pgfmathfpgreaterthan@#1#2{%
    \begingroup%
        \FPifgt{#1}{#2}%
            \def\pgfmathresult{1.0}%
        \else%
            \def\pgfmathresult{0.0}%
        \fi%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpequalto#1#2{%
    \pgfmathfpparse{#2}\let\pgfmath@result=\pgfmathresult%
    \pgfmathfpparse{#1}%
    \pgfmathfpequalto@{\pgfmathresult}{\pgfmath@result}%
}%
\def\pgfmathfpequalto@#1#2{%
    \begingroup%
        \FPifeq{#1}{#2}%
            \def\pgfmathresult{1.0}%
        \else%
            \def\pgfmathresult{0.0}%
        \fi%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%



\def\pgfmathfpadd#1#2{%
    \pgfmathfpparse{#2}\let\pgfmath@result=\pgfmathresult%
    \pgfmathfpparse{#1}%
    \pgfmathfpadd@{\pgfmathresult}{\pgfmath@result}%
}%
\def\pgfmathfpadd@#1#2{%
    \begingroup%
        \FPadd\pgfmathresult{#1}{#2}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpsubtract#1#2{%
    \pgfmathfpparse{#2}\let\pgfmath@result=\pgfmathresult%
    \pgfmathfpparse{#1}%
    \pgfmathfpsubtract@{\pgfmathresult}{\pgfmath@result}%
}%
\def\pgfmathfpsubtract@#1#2{%
    \begingroup%
        \FPsub\pgfmathresult{#1}{#2}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpmultiply#1#2{%
    \pgfmathfpparse{#2}\let\pgfmath@result=\pgfmathresult%
    \pgfmathfpparse{#1}%
    \pgfmathfpmultiply@{\pgfmathresult}{\pgfmath@result}%
}%
\def\pgfmathfpmultiply@#1#2{%
    \begingroup%
        \FPmul\pgfmathresult{#1}{#2}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpdivide#1#2{%
    \pgfmathfpparse{#2}\let\pgfmath@result=\pgfmathresult%
    \pgfmathfpparse{#1}%
    \pgfmathfpdivide@{\pgfmathresult}{\pgfmath@result}%
}%
\def\pgfmathfpdivide@#1#2{%
    \begingroup%
        \FPdiv\pgfmathresult{#1}{#2}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpabs#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpabs@{\pgfmathresult}%
}%
\def\pgfmathfpabs@#1{%
    \begingroup%
        \FPabs\pgfmathresult{#1}%
    \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpneg#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpneg@{\pgfmathresult}%
}%
\def\pgfmathfpneg@#1{%
    \begingroup%
        \FPneg\pgfmathresult{#1}%
        \pgfmath@smuggleone\pgfmathresult
    \endgroup%
}%

\def\pgfmathfpround#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpround@{\pgfmathresult}%
}%
\def\pgfmathfpround@#1{%
    \begingroup%
        \FPround\pgfmathresult{#1}{0}%
        \edef\pgfmathresult{\pgfmathresult.0}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpfloor#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpfloor@{\pgfmathresult}%
}%
\def\pgfmathfpfloor@#1{%
    \begingroup%
        \FPtrunc\pgfmathresult{#1}{0}%
        \FPifneg{#1}%
            \FPsub\pgfmathresult{\pgfmathresult}{1}%
        \fi%
        \edef\pgfmathresult{\pgfmathresult.0}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpceil#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpceil@{\pgfmathresult}%
}%
\def\pgfmathfpceil@#1{%
    \begingroup%
        \FPtrunc\pgfmathresult{#1}{0}%
        \FPifpos{#1}%
            \FPadd\pgfmathresult{\pgfmathresult}{1}%
        \fi%
        \edef\pgfmathresult{\pgfmathresult.0}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpmod#1#2{%
    \pgfmathfpparse{#2}\let\pgfmath@result=\pgfmathresult%
    \pgfmathfpparse{#1}%
    \pgfmathfpmod@{\pgfmathresult}{\pgfmath@result}%
}%
\def\pgfmathfpmod@#1#2{%
    \begingroup%
        \FPdiv\pgfmathresult{#1}{#2}%
        \FPtrunc\pgfmathresult{\pgfmathresult}{0}%
        \FPmul\pgfmathresult{\pgfmathresult}{#2}%
        \FPsub\pgfmathresult{#1}{\pgfmathresult}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpmax#1#2{%
    \pgfmathfpparse{#2}\let\pgfmath@result=\pgfmathresult%
    \pgfmathfpparse{#1}%
    \pgfmathfpmax@@{\pgfmathresult}{\pgfmath@result}%
}%
\def\pgfmathfpmax@#1{%
    \pgfmathfpmax@@#1%
}%
\def\pgfmathfpmax@@#1#2{%
    \begingroup%
        \FPifgt{#1}{#2}%
            \def\pgfmathresult{#1}%
        \else%
            \def\pgfmathresult{#2}%
        \fi%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpmin#1#2{%
    \pgfmathfpparse{#2}\let\pgfmath@result=\pgfmathresult%
    \pgfmathfpparse{#1}%
    \pgfmathfpmin@@{\pgfmathresult}{\pgfmath@result}%
}%
\def\pgfmathfpmin@#1{%
    \pgfmathfpmin@@#1%
}%
\def\pgfmathfpmin@@#1#2{%
    \begingroup%
        \FPiflt{#1}{#2}%
            \def\pgfmathresult{#1}%
        \else%
            \def\pgfmathresult{#2}%
        \fi%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%


\def\pgfmathfppow#1#2{%
    \pgfmathfpparse{#2}\let\pgfmath@result=\pgfmathresult%
    \pgfmathfpparse{#1}%
    \pgfmathfppow@{\pgfmathresult}{\pgfmath@result}%
}%
\def\pgfmathfppow@#1#2{%
    \begingroup%
        \FPpow\pgfmathresult{#1}{#2}\unskip%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpexp#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpexp@{\pgfmathresult}%
}%
\def\pgfmathfpexp@#1{%
    \begingroup%
        \FPexp\pgfmathresult{#1}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpln#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpln@{\pgfmathresult}%
}%
\def\pgfmathfpln@#1{%
    \begingroup%
        \FPln\pgfmathresult{#1}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpsqrt#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpsqrt@{\pgfmathresult}%
}%
\def\pgfmathfpsqrt@#1{%
    \begingroup%
        \FProot\pgfmathresult{#1}{2}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpveclen#1#2{%
    \pgfmathfpparse{#2}\let\pgfmath@result=\pgfmathresult%
    \pgfmathfpparse{#1}%
    \pgfmathfpveclen@{\pgfmathresult}{\pgfmath@result}%
}%
\def\pgfmathfpveclen@#1#2{%
    \begingroup%
      \FPmul\pgfmath@result{#1}{#1}%
      \FPmul\pgfmath@@result{#2}{#2}%
      \FPadd\pgfmathresult{\pgfmath@result}{\pgfmath@@result}%
      \FProot\pgfmathresult{\pgfmathresult}{2}%
      \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%


\def\pgfmathfpsin#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpsin@{\pgfmathresult}%
}%
\def\pgfmathfpsin@#1{%
    \begingroup%
        \FPmul\pgfmathresult{#1}{0.017453292519943295}%
        \FPsin\pgfmathresult{\pgfmathresult}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpcos#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpcos@{\pgfmathresult}%
}%
\def\pgfmathfpcos@#1{%
    \begingroup%
        \FPmul\pgfmathresult{#1}{0.017453292519943295}%
        \FPcos\pgfmathresult{\pgfmathresult}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfptan#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfptan@{\pgfmathresult}%
}%
\def\pgfmathfptan@#1{%
    \begingroup%
        \FPmul\pgfmathresult{#1}{0.017453292519943295}%
        \FPtan\pgfmathresult{\pgfmathresult}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpacos#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpacos@{\pgfmathresult}%
}%
\def\pgfmathfpacos@#1{%
    \begingroup%
        \FParccos\pgfmathresult{#1}%
        \FPmul\pgfmathresult{\pgfmathresult}{57.295779513082320885}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpasin#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpasin@{\pgfmathresult}%
}%
\def\pgfmathfpasin@#1{%
    \begingroup%
        \FParcsin\pgfmathresult{#1}%
        \FPmul\pgfmathresult{\pgfmathresult}{57.295779513082320885}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpatan#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpatan@{\pgfmathresult}%
}%
\def\pgfmathfpatan@#1{%
    \begingroup%
        \FParctan\pgfmathresult{#1}%
        \FPmul\pgfmathresult{\pgfmathresult}{57.295779513082320885}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpcot#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpcot@{\pgfmathresult}%
}%
\def\pgfmathfpcot@#1{%
    \begingroup%
        \FPmul\pgfmathresult{#1}{0.017453292519943295}%
        \FPcot\pgfmathresult{\pgfmathresult}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpsec#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpsec@{\pgfmathresult}%
}%
\def\pgfmathfpsec@#1{%
    \begingroup%
        \FPmul\pgfmathresult{#1}{0.017453292519943295}%
        \FPcos\pgfmathresult{\pgfmathresult}%
        \FPdiv\pgfmathresult{1}{\pgfmathresult}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpcosec#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpcosec@{\pgfmathresult}%
}%
\def\pgfmathfpcosec@#1{%
    \begingroup%
        \FPmul\pgfmathresult{#1}{0.017453292519943295}%
        \FPsin\pgfmathresult{\pgfmathresult}%
        \FPdiv\pgfmathresult{1}{\pgfmathresult}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfpdeg#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfpdeg@{\pgfmathresult}%
}%
\def\pgfmathfpdeg@#1{%
    \begingroup%
        \FPmul\pgfmathresult{#1}{57.295779513082320885}%
    \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfprad#1{%
    \pgfmathfpparse{#1}%
    \pgfmathfprad@{\pgfmathresult}%
}%
\def\pgfmathfprad@#1{%
    \begingroup%
        \FPmul\pgfmathresult{#1}{0.01745329251994325}%
    \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%


\def\pgfmathfpsetseed#1{%
    \pgfmathfpparse{#1}%
    \afterassignment\pgfmath@gobbletilpgfmath@%
    \FPseed\pgfmathresult\relax\pgfmath@%
}%

\def\pgfmathfprnd{%
    \begingroup%
        \FPrandom\pgfmathresult%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%

\def\pgfmathfprand{%
    \begingroup%
        \FPrandom\pgfmathresult%
        \FPmul\pgfmathresult{2}{\pgfmathresult}%
        \FPsub\pgfmathresult{\pgfmathresult}{1}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryfixedpointarithmetic.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryfpu.code.tex ====

\newif\ifpgfmathfloatparseactive
\newif\ifpgfmathfloat@scaleactive

\def\pgflibraryfpuifactive#1#2{%
    \ifpgfmathfloatparseactive
        #1%
    \else
        #2%
    \fi
}%

\pgfqkeys{/pgf}{
    fpu/.is choice,
    fpu/true/.code={%
        \ifpgfmathfloatparseactive
        \else
            \pgfutil@ifundefined{pgfmathdeclarefunction}{%
                \pgfmathfloat@parser@install@pgf@two@null@null%
            }{%
                \pgfmathfloat@parser@install%
            }%
            \pgfmathfloatparseactivetrue
            \pgfkeysalso{/pgf/fixed point arithmetic/.prefix style={/pgf/fpu=false}}%
        \fi
    },%
    fpu/false/.code={%
        \ifpgfmathfloatparseactive
            \pgfmathfloat@uninstall%
            \pgfmathfloatparseactivefalse
        \fi
    },%
    fpu/.default=true,
    fpu/scale results/.code={%
        \ifpgfmathfloatparseactive
            \pgfmathparse{#1}%
        \else
            \pgfmathfloatparsenumber{#1}%
        \fi
        \let\pgfmathfloatscale=\pgfmathresult%
    },%
    fpu/output format/.is choice,
    fpu/output format/float/.code=    {%
        \def\pgfmathfloatparse@output@choice{Y}%
        \let\pgfmathfloatparse@output=\relax
    },
    fpu/output format/sci/.code=    {%
        \def\pgfmathfloatparse@output@choice{S}%
        \def\pgfmathfloatparse@output{\pgfmathfloattosci@{\pgfmathresult}}%
    },
    fpu/output format/fixed/.code=    {%
        \def\pgfmathfloatparse@output@choice{F}%
        \def\pgfmathfloatparse@output{\pgfmathfloattofixed@{\pgfmathresult}}%
    },
    fpu/output format/float,
    fpu/rel thresh/.code={%
        \pgfmathfloatparsenumber{#1}%
        \let\pgfmathfloat@relthresh=\pgfmathresult
    },
    fpu/rel thresh=1e-4,
    fpu/install only/.code={
        \edef\pgf@list{#1}%
        \pgfutil@for\pgf@temp:=\pgf@list\do{%
            \expandafter\pgfmath@float@install@singlefunction\expandafter{%
                \romannumeral-`0\expandafter\pgfutil@trimspaces\expandafter{\pgf@temp}}%
        }%
    },
}%

\pgfmathfloatcreate{1}{1.0}{0}\let\pgfmathfloatscale=\pgfmathresult

\let\pgfmathfloatone=\pgfmathresult

\def\pgfmathfloatparse{%
    \begingroup%
        \let\pgfmathpostparse=\relax%
        \pgfmath@catcodes%
        \pgfmath@quickparsefalse%
        \ifpgfmathfloatparseactive\else
          \pgfmathfloat@parser@install
        \fi
        \pgfmathfloatparse@}%

\def\pgfmathfloatparse@pgf@two@null@null{%
    \pgfmath@quickparsefalse%
    \pgfmathfloatparse@}%

\def\pgfmathfloatparse@#1{%
    \edef\pgfmathfloat@expression{#1}%
    \expandafter\pgfmathfloatparse@@\pgfmathfloat@expression\pgfmathfloat@
    \ifpgfmathfloat@scaleactive
        \expandafter\pgfmathfloatmultiply@\expandafter{\pgfmathresult}{\pgfmathfloatscale}%
        \pgfmathfloattofixed{\pgfmathresult}%
    \else
        \pgfmathfloatparse@output
    \fi
    \ignorespaces
}%

\def\pgfmathfloat@char@asterisk{*}%
\def\pgfmathfloatparse@@#1#2\pgfmathfloat@{%
    \def\pgfmathfloat@test{#1}%
    \ifx\pgfmathfloat@test\pgfmathfloat@char@asterisk%
        \def\pgfmathfloat@expression{#2}%
        \pgfmathfloat@scaleactivetrue
    \fi%
    \expandafter\pgfmathparse@\expandafter{\pgfmathfloat@expression}%
}%

\pgfkeys{/pgf/fpu/.cd,
  scale file plot x/.code=\pgfmathfloatparse{#1}\edef\pgfmathfloatplotscalex{\pgfmathresult*},
  scale file plot y/.code=\pgfmathfloatparse{#1}\edef\pgfmathfloatplotscaley{\pgfmathresult*},
  scale file plot z/.code=\pgfmathfloatparse{#1}\edef\pgfmathfloatplotscalez{\pgfmathresult*}
}%

\def\pgfmathfloat@uninstall@appendcmd#1{%
    \expandafter\gdef\expandafter\pgfmathfloat@uninstall\expandafter{\pgfmathfloat@uninstall #1}%
}%

\def\pgfmathfloat@plots@checkuninstallcmd{%
    \pgfutil@ifundefined{pgfmathfloat@uninstall}{%
        \global\let\pgfmathfloat@uninstall=\pgfutil@empty
    }{%
        \def\pgfmathfloat@uninstall@appendcmd##1{}%
        \def\pgfmathfloat@prepareuninstallcmd##1{}%
    }%
}%

\def\pgfmathfloat@prepareuninstallcmd#1{%
    \expandafter\global\expandafter\let\csname pgfmathfloat@backup@\string#1\endcsname=#1%
    \expandafter\gdef\expandafter\pgfmathfloat@uninstall\expandafter{\pgfmathfloat@uninstall
        \expandafter\let\expandafter#1\csname pgfmathfloat@backup@\string#1\endcsname%
    }%
}%

\def\pgfmathfloat@install#1=#2{%
    \pgfmathfloat@prepareuninstallcmd{#1}%
    \let#1=#2%
}%
\def\pgfmathfloat@install@csname#1#2{%
    \expandafter\pgfmathfloat@prepareuninstallcmd\csname #1\endcsname%
    \pgfutil@namelet{#1}{#2}%
}%
\def\pgfmathfloat@install@unimplemented#1{%
    \expandafter\pgfmathfloat@prepareuninstallcmd\csname pgfmath#1@\endcsname%
    \expandafter\def\csname pgfmath#1@\endcsname##1{\pgfmathfloat@notimplemented{#1}}%
}%
\def\pgfmathfloat@plots@install{%
    \let\pgfmathfloatplotscalex=\pgfutil@empty
    \let\pgfmathfloatplotscaley=\pgfutil@empty
    \let\pgfmathfloatplotscalez=\pgfutil@empty
    \pgfmathfloat@install\pgf@parsexyline=\pgfmathfloat@parsexyline%
    \pgfmathfloat@install\pgf@parsexyzline=\pgfmathfloat@parsexyzline%
}%
\def\pgfmathfloat@parsexyline#1 #2 #3\pgf@stop{%
    \edef\pgfmathfloat@marshal{%
        \noexpand\pgfplotstreampoint{\noexpand\pgfpointxy{\pgfmathfloatplotscalex#1}{\pgfmathfloatplotscaley#2}}%
    }%
    \pgfmathfloat@marshal%
}%
\def\pgfmathfloat@parsexyzline#1 #2 #3 #4\pgf@stop{%
  \edef\pgfmathfloat@marshal{%
        \noexpand\pgfplotstreampoint{%
            \noexpand\pgfpointxyz{\pgfmathfloatplotscalex#1}{\pgfmathfloatplotscaley#2}{\pgfmathfloatplotscalez#3}%
        }%
    }%
    \pgfmathfloat@marshal%
}%

\def\pgfmathfloat@parser@install@functions{%
    \pgfmathfloat@install\pgfmathadd@=\pgfmathfloatadd@%
    \pgfmathfloat@install\pgfmathsubtract@=\pgfmathfloatsubtract@%
    \pgfmathfloat@install\pgfmathneg@=\pgfmathfloatneg@%
    \pgfmathfloat@install\pgfmathmultiply@=\pgfmathfloatmultiply@%
    \pgfmathfloat@install\pgfmathdivide@=\pgfmathfloatdivide@%
    \pgfmathfloat@install\pgfmathabs@=\pgfmathfloatabs@%
    \pgfmathfloat@install\pgfmathsign@=\pgfmathfloatsign@%
    \pgfmathfloat@install\pgfmathround@=\pgfmathfloatround@%
    \pgfmathfloat@install\pgfmathfloor@=\pgfmathfloatfloor@%
    \pgfmathfloat@install\pgfmathceil@=\pgfmathfloatceil@
    \pgfmathfloat@install\pgfmathint@=\pgfmathfloatint@
    \pgfmathfloat@install\pgfmathmod@=\pgfmathfloatmod@%
    \pgfmathfloat@install\pgfmathmax@=\pgfmathfloatmax@%
    \pgfmathfloat@install\pgfmathmin@=\pgfmathfloatmin@%
    \pgfmathfloat@install\pgfmathsin@=\pgfmathfloatsin@%
    \pgfmathfloat@install\pgfmathcos@=\pgfmathfloatcos@%
    \pgfmathfloat@install\pgfmathtan@=\pgfmathfloattan@%
    \pgfmathfloat@install\pgfmathdeg@=\pgfmathfloatdeg@%
    \pgfmathfloat@install\pgfmathrad@=\pgfmathfloatrad@%
    \pgfmathfloat@install\pgfmathatan@=\pgfmathfloatatan@%
    \pgfmathfloat@install\pgfmathasin@=\pgfmathfloatasin@%
    \pgfmathfloat@install\pgfmathacos@=\pgfmathfloatacos@%
    \pgfmathfloat@install\pgfmathcot@=\pgfmathfloatcot@%
    \pgfmathfloat@install\pgfmathsec@=\pgfmathfloatsec@%
    \pgfmathfloat@install\pgfmathcosec@=\pgfmathfloatcosec@%
    \pgfmathfloat@install\pgfmathexp@=\pgfmathfloatexp@%
    \pgfmathfloat@install\pgfmathln@=\pgfmathfloatln@%
    \pgfmathfloat@install@csname{pgfmathlog10@}{pgfmathfloatlog10@}%
    \pgfmathfloat@install@csname{pgfmathlog2@}{pgfmathfloatlog2@}%
    \pgfmathfloat@install\pgfmathsqrt@=\pgfmathfloatsqrt@%
    \pgfmathfloat@install\pgfmath@pi=\pgfmathfloatpi@%
    \pgfmathfloat@install\pgfmathpi=\pgfmathfloatpi@%
    \pgfmathfloat@install\pgfmathe@=\pgfmathfloate@%
    \pgfmathfloat@install\pgfmathe=\pgfmathfloate@%
    \pgfmathfloat@install\pgfmathlessthan@=\pgfmathfloatlessthan@%
    \pgfmathfloat@install\pgfmathnotless@=\pgfmathfloatnotless@%
    \pgfmathfloat@install\pgfmathnotgreater@=\pgfmathfloatnotgreater@%
    \pgfmathfloat@install\pgfmathless@=\pgfmathfloatlessthan@%
    \pgfmathfloat@install\pgfmathgreaterthan@=\pgfmathfloatgreaterthan@%
    \pgfmathfloat@install\pgfmathgreater@=\pgfmathfloatgreaterthan@%
    \pgfmathfloat@install\pgfmathifthenelse@=\pgfmathfloatifthenelse@%
    \pgfmathfloat@install\pgfmathequal@=\pgfmathfloatequal@%
    \pgfmathfloat@install\pgfmathequalto@=\pgfmathfloatequal@%
    \pgfmathfloat@install\pgfmathnotequal@=\pgfmathfloatnotequal@%
    \pgfmathfloat@install\pgfmathnotequalto@=\pgfmathfloatnotequal@%
    \pgfmathfloat@install\pgfmathpow@=\pgfmathfloatpow@
    \pgfmathfloat@install\pgfmathrand@=\pgfmathfloatrand@
    \pgfmathfloat@install\pgfmathrand=\pgfmathfloatrand@
    \pgfmathfloat@install\pgfmathrnd@=\pgfmathfloatrnd@
    \pgfmathfloat@install\pgfmathrnd=\pgfmathfloatrnd@
    \pgfmathfloat@install\pgfmathtrue@=\pgfmathfloattrue@
    \pgfmathfloat@install\pgfmathfalse@=\pgfmathfloatfalse@
    \pgfmathfloat@install\pgfmathnot@=\pgfmathfloatnot@
    \pgfmathfloat@install\pgfmathhex@=\pgfmathfloathex@
    \pgfmathfloat@install\pgfmathHex@=\pgfmathfloatHex@
    \pgfmathfloat@install\pgfmathoct@=\pgfmathfloatoct@
    \pgfmathfloat@install\pgfmathbin@=\pgfmathfloatbin@
    \pgfmathfloat@install\pgfmathand@=\pgfmathfloatand@
    \pgfmathfloat@install\pgfmathor@=\pgfmathfloator@
    \pgfmathfloat@install\pgfmathfactorial@=\pgfmathfloatfactorial@
    \pgfmathfloat@install\pgfmathveclen@=\pgfmathfloatveclen@
    \pgfmathfloat@install\pgfmathcosh@=\pgfmathfloatcosh@
    \pgfmathfloat@install\pgfmathsinh@=\pgfmathfloatsinh@
    \pgfmathfloat@install\pgfmathtanh@=\pgfmathfloattanh@
    \pgfmathfloat@install\pgfmath@iftrue=\pgfmathfloat@iftrue%
    \expandafter\pgfmathfloat@install\csname pgfmathatan2@\endcsname=\pgfmathfloatatantwo@
    \pgfmathfloat@install@unimplemented{isprime}%
    \pgfmathfloat@install@unimplemented{iseven}%
    \pgfmathfloat@install@unimplemented{isodd}%
    \pgfmathfloat@install@unimplemented{gcd}%
    \pgfmathfloat@install@unimplemented{frac}%
    \pgfmathfloat@install@unimplemented{random}%
    \pgfmathfloat@install@unimplemented{setseed}%
    \pgfmathfloat@install@unimplemented{Mod}%
    \pgfmathfloat@install@unimplemented{div}%
    \pgfmathfloat@install@unimplemented{real}%
    \pgfmathfloat@install\pgfmathscientific=\pgfmathfloatscientific%
}%

\def\pgfmath@float@install@singlefunction#1{%
    \ifcsname pgfmath@function@#1\endcsname\else
        \pgfmath@error{The function `#1' does not exist}{}%
    \fi
    \pgfmath@toks={}%
    \pgfmathloop
    \ifnum\pgfmathcounter>\csname pgfmath@operation@#1@arity\endcsname\relax%
    \else
        \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@char@hash}%
        \expandafter\pgfmath@addto@toks\expandafter{\pgfmathcounter}%
    \repeatpgfmathloop
    \edef\pgfmath@head{\noexpand\def\expandafter\noexpand\csname pgfmath#1@\endcsname\the\pgfmath@toks}%
    \pgfmath@toks={}%
    \def\pgfmath@arguments{}%
    \pgfmathloop
    \ifnum\pgfmathcounter>\csname pgfmath@operation@#1@arity\endcsname\relax%
    \else
        \pgfmath@addto@toks{\pgfmathfloatparsenumber}%
        \expandafter\expandafter\expandafter\pgfmath@addto@toks
            \expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter
                {\expandafter\pgfmath@char@hash\pgfmathcounter}}%
        \pgfmath@addto@toks{\let}%
        \expandafter\pgfmath@addto@toks\expandafter{%
            \csname pgfmath@argument@\pgfmathcounter\endcsname=\pgfmathresult}%
        \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter
            \pgfmath@arguments\expandafter\expandafter\expandafter{\expandafter
                \pgfmath@arguments\expandafter{\csname pgfmath@argument@\pgfmathcounter\endcsname}}%
    \repeatpgfmathloop
    \expandafter\pgfmath@addto@toks\expandafter{\csname pgfmathfloat#1@\expandafter\endcsname\pgfmath@arguments}%
    \pgfmath@addto@toks{\pgfmathfloattofixed{\pgfmathresult}}%
    \edef\pgfmath@body{{\the\pgfmath@toks}}%
    \expandafter\pgfmath@head\pgfmath@body
}

\def\pgfmathfloat@iftrue{%
    \if Y\pgfmathfloatparse@output@choice
        \let\pgfmathfloat@@iftrue@v=\pgfmathfloatone
        \let\pgfmathfloat@@iftrue@next=\pgfmathfloat@iftrue@
    \else
        \if S\pgfmathfloatparse@output@choice
            \def\pgfmathfloat@@iftrue@v{1.0e0}%
            \let\pgfmathfloat@@iftrue@next=\pgfmathfloat@iftrue@
        \else
            \def\pgfmath@next{\pgfutilifstartswith{1.0}}%
            \expandafter\pgfmath@next\expandafter{\pgfmathresult}{%
                \ifdim\pgfmathresult pt=1.0pt %
                    \let\pgfmathfloat@@iftrue@next=\pgfutil@firstoftwo
                \else
                    \let\pgfmathfloat@@iftrue@next=\pgfutil@secondoftwo
                \fi
            }{%
                \let\pgfmathfloat@@iftrue@next=\pgfutil@secondoftwo
            }%
        \fi
    \fi
    \pgfmathfloat@@iftrue@next%
}%
\def\pgfmathfloat@iftrue@{%
    \ifx\pgfmathresult\pgfmathfloat@@iftrue@v
        \let\pgfmath@next=\pgfutil@firstoftwo
    \else
        \let\pgfmath@next=\pgfutil@secondoftwo
    \fi
    \pgfmath@next%
}%

\def\pgfmathfloat@parser@install{%
    \pgfmathfloat@plots@checkuninstallcmd
    \pgfmathfloat@plots@install%
    \pgfmathfloat@parser@install@functions
    \pgfmath@tokens@make{exponent}{\pgfmathfloat@POSTFLAGSCHAR}%
    \pgfmathfloat@uninstall@appendcmd{%
        \expandafter\let\csname pgfmath@token@exponent@\pgfmathfloat@POSTFLAGSCHAR\endcsname=\relax
    }%
    \let\pgfmath@basic@parse@exponent=\pgfmath@parse@exponent%
    \let\pgfmath@basic@stack@push@operand=\pgfmath@stack@push@operand
    \pgfmathfloat@install\pgfmath@stack@push@operand=\pgfmathfloat@stack@push@operand
    \pgfmathfloat@install\pgfmath@parse@operand@quote=\pgfmathfloat@parse@operand@quote
    \pgfmathfloat@install\pgfmath@parse@exponent=\pgfmathfloat@parse@float@or@exponent
    \pgfmathfloat@install\pgfmathparse=\pgfmathfloatparse%
    \pgfmathfloat@install\pgfmathparse@expression@is@number=\pgfmathfloat@parse@expression@is@number
}%


\def\pgfmathfloat@parse@expression@is@number{%
    \pgfmathfloatparsenumber{\pgfmath@expression}%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup
  \ignorespaces
}%

\def\pgfmathfloat@defineadapter@for@pgf@two@null@null@ONEARG#1{%
    \edef\pgfmathfloat@loc@TMPa{%
        \noexpand\def\expandafter\noexpand\csname pgfmath@parsefunction@#1\endcsname{%
            \noexpand\let\noexpand\pgfmath@parsepostgroup\expandafter\noexpand\csname pgfmath@parsefunction@#1@\endcsname%
            \noexpand\expandafter\noexpand\pgfmath@parse@}%
        \noexpand\def\expandafter\noexpand\csname pgfmath@parsefunction@#1@\endcsname{%
            \noexpand\expandafter\expandafter\noexpand\csname pgfmath#1@\endcsname\noexpand\expandafter{\noexpand\pgfmathresult}%
            \noexpand\pgfmath@postfunction%
        }%
    }%
    \pgfmathfloat@loc@TMPa
}%
\def\pgfmathfloat@parser@install@pgf@two@null@null{%
    \pgfmathfloat@plots@checkuninstallcmd
    \pgfmathfloat@plots@install%
    \pgfmathfloat@parser@install@functions
    \let\pgfmathrand@=\pgfmath@basic@rand@
    \let\pgfmathrnd@=\pgfmath@basic@rnd@
    \pgfmathfloat@install\pgfmathmax@=\pgfmathfloatmaxtwo%
    \pgfmathfloat@install\pgfmathmin@=\pgfmathfloatmintwo%
    \pgfmathfloat@defineadapter@for@pgf@two@null@null@ONEARG{factorial}%
    \pgfmathfloat@defineadapter@for@pgf@two@null@null@ONEARG{hex}%
    \pgfmathfloat@defineadapter@for@pgf@two@null@null@ONEARG{bin}%
    \pgfmathfloat@defineadapter@for@pgf@two@null@null@ONEARG{oct}%
    \pgfmathfloat@defineadapter@for@pgf@two@null@null@ONEARG{tanh}%
    \pgfmathfloat@defineadapter@for@pgf@two@null@null@ONEARG{sinh}%
    \pgfmathfloat@defineadapter@for@pgf@two@null@null@ONEARG{cosh}%
    \let\pgfmath@basic@parsedecimalpoint=\pgfmath@parsedecimalpoint%
    \let\pgfmath@basic@stack@push@operand=\pgfmath@stackpushoperand
    \pgfmathfloat@install\pgfmath@stackpushoperand=\pgfmathfloat@stack@push@operand
    \pgfmathfloat@install\pgfmath@parsedecimalpoint=\pgfmathfloat@parsedecimalpoint@pgf@two@null@null
    \pgfmathfloat@install\pgfmath@endparse=\pgfmathfloat@endparse@pgf@two@null@null
    \pgfmathfloat@install\pgfmath@endparsegroup=\pgfmathfloat@endparsegroup@pgf@two@null@null
    \pgfmathfloat@install\pgfmath@postfunction=\pgfmathfloat@postfunction@pgf@two@null@null
    \pgfmathfloat@install\pgfmath@@parseoperandgroup=\pgfmathfloat@@parseoperandgroup
    \pgfmathfloat@install\pgfmathparse=\pgfmathfloatparse@pgf@two@null@null%
}%

\pgfutil@ifundefined{pgfmathdeclarefunction}{%
    \def\pgfmathdeclarepseudoconstant#1#2{%
        \begingroup
        \toks0=\expandafter{\csname pgfmath#1@\endcsname}%
        \toks1={\pgfmath@postfunction}%
        \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
        \xdef\pgfmathfloat@glob@TMPb{\the\toks0 }%
        \endgroup
        \expandafter\let\csname pgfmath@parsefunction@#1\endcsname=\pgfmathfloat@glob@TMP
        \expandafter\let\csname pgfmath#1\endcsname=\pgfmathfloat@glob@TMPb
        \expandafter\def\csname pgfmath#1@\endcsname{#2}%
    }%
    \let\pgfmathredeclarepseudoconstant=\pgfmathdeclarepseudoconstant
}{%
    \pgfutil@ifundefined{pgfmathdeclarepseudoconstant}{%
        \def\pgfmathdeclarepseudoconstant#1#2{\pgfmathdeclarefunction*{#1}{0}{#2}}
    }{}%
}%

\pgfmathdeclarepseudoconstant{inf}{\def\pgfmathresult{inf}}%
\pgfmathdeclarepseudoconstant{INF}{\def\pgfmathresult{inf}}%
\pgfmathdeclarepseudoconstant{Inf}{\def\pgfmathresult{inf}}%
\pgfmathdeclarepseudoconstant{infty}{\def\pgfmathresult{inf}}%
\pgfmathdeclarepseudoconstant{nan}{\def\pgfmathresult{nan}}%
\pgfmathdeclarepseudoconstant{NaN}{\def\pgfmathresult{nan}}%


\def\pgfmathfloat@parsedecimalpoint@pgf@two@null@null#1{%
    \expandafter\ifx\pgfmathfloat@POSTFLAGSCHAR#1%
        \let\pgfmath@next=\pgfmathfloat@return@float@pgf@two@null@null%
    \else
        \def\pgfmath@next{\pgfmath@basic@parsedecimalpoint#1}%
    \fi
    \pgfmath@next
}%
\def\pgfmathfloat@return@float@pgf@two@null@null#1]{%
    \edef\pgfmathresult{\the\c@pgfmath@parsecounta\pgfmathfloat@POSTFLAGSCHAR#1]}%
    \let\pgfmath@resulttemp=\pgfmathresult
    \pgfmath@parseoperator%
}%
\def\pgfmathfloat@endparse@pgf@two@null@null#1\pgfmath@empty{%
    \pgfmath@processalloperations%
    \pgfmath@stackpop{\pgfmathresult}%
    \pgfmath@smuggleone{\pgfmathresult}%
  \endgroup%
  \ignorespaces%
}%
\def\pgfmathfloat@endparsegroup@pgf@two@null@null{%
        \pgfmath@processalloperations%
        \pgfmath@stackpop{\pgfmathresult}%
        \pgfmath@smuggleone{\pgfmathresult}%
    \endgroup%
    \pgfmath@parsepostgroup%
}%
\def\pgfmathfloat@postfunction@pgf@two@null@null{%
    \let\pgfmath@parsepostgroup\pgfmath@parseoperator%
    \ifnum\pgfmath@sign1<0
        \pgfmathfloatneg@{\pgfmathresult}%
        \let\pgfmath@sign\pgfutil@empty
    \fi
    \pgfmath@parseoperator}%
\def\pgfmathfloat@@parseoperandgroup{%
    \let\pgfmath@postparsegroup\pgfmath@parseoperator%
    \ifnum\pgfmath@sign1<0
        \pgfmathfloatneg@{\pgfmathresult}%
        \let\pgfmath@sign\pgfutil@empty
    \fi
    \pgfmath@parseoperator%
}%






\def\pgfmathfloat@parse@float@or@exponent{%
    \if\pgfmath@token \pgfmathfloat@POSTFLAGSCHAR%
        \expandafter\pgfmathfloat@return@float\expandafter\pgfmath@token@next
    \else
        \expandafter\pgfmath@basic@parse@exponent
    \fi
}%
\def\pgfmathfloat@return@float#1]{%
    \edef\pgfmathresult{\pgfmath@number \pgfmathfloat@POSTFLAGSCHAR#1]}%
    \expandafter\pgfmath@basic@stack@push@operand\expandafter{\pgfmathresult}%
    \pgfmath@parse@@operator%
}%

\def\pgfmathfloat@parse@operand@quote#1"{%
  \edef\pgfmathresult{\pgfmath@fpu@stringmarker #1}%
  \expandafter\pgfmath@basic@stack@push@operand\expandafter{\pgfmathresult}%
  \pgfmath@parse@@operator%
}

\def\pgfmath@fpu@stringmarker{@@str@@:}%

\def\pgfmathfloat@stack@push@operand#1{%
    \pgfutil@ifnextchar\bgroup{%
        \let\pgfmathfloat@stack@push@operand@list@=\pgfutil@empty
        \pgfmathfloat@stack@push@operand@list
    }{%
        \pgfmathfloat@stack@push@operand@single
    }%
    #1\relax
}%

\def\pgfmathfloat@stack@push@operand@single#1\relax{%
    \expandafter\pgfutil@in@\pgfmathfloat@POSTFLAGSCHAR{#1}%
    \ifpgfutil@in@
        \pgfmath@basic@stack@push@operand{#1}%
    \else
        \expandafter\pgfutil@in@\expandafter{\pgfmath@fpu@stringmarker}{#1}%
        \ifpgfutil@in@
            \pgfmathfloat@stack@push@operand@single@str#1\relax
        \else
            \pgfmathfloatparsenumber{#1}%
            \expandafter\pgfmath@basic@stack@push@operand\expandafter{\pgfmathresult}%
        \fi
    \fi
}%

\expandafter\def\expandafter\pgfmathfloat@stack@push@operand@single@str\pgfmath@fpu@stringmarker #1\relax{%
    \pgfmath@basic@stack@push@operand{#1}%
}%

\def\pgfmathfloat@stack@push@operand@GOBBLE#1\relax{}%
\def\pgfmathfloat@stack@push@operand@list#1{%
    \expandafter\pgfutil@in@ \pgfmathfloat@POSTFLAGSCHAR{#1}%
    \ifpgfutil@in@
        \expandafter\def\expandafter\pgfmathfloat@stack@push@operand@list@\expandafter{%
            \pgfmathfloat@stack@push@operand@list@{#1}%
        }%
    \else
        \pgfmathfloatparsenumber{#1}%
        \begingroup
        \toks0=\expandafter{\pgfmathfloat@stack@push@operand@list@}%
        \toks1=\expandafter{\pgfmathresult}%
        \xdef\pgfmathfloat@glob@TMP{\the\toks0 {\the\toks1}}%
        \endgroup
        \let\pgfmathfloat@stack@push@operand@list@=\pgfmathfloat@glob@TMP
    \fi
    \pgfutil@ifnextchar\relax{%
        \expandafter\pgfmath@basic@stack@push@operand\expandafter{\pgfmathfloat@stack@push@operand@list@}%
        \pgfmathfloat@stack@push@operand@GOBBLE
    }{%
        \pgfmathfloat@stack@push@operand@list
    }%
}%




\let\pgfmath@basic@add@=\pgfmathadd@
\let\pgfmath@basic@subtract@=\pgfmathsubtract@
\let\pgfmath@basic@multiply@=\pgfmathmultiply@
\let\pgfmath@basic@divide@=\pgfmathdivide@
\let\pgfmath@basic@reciprocal@=\pgfmathreciprocal@
\let\pgfmath@basic@abs@=\pgfmathabs@
\let\pgfmath@basic@round@=\pgfmathround@
\let\pgfmath@basic@rand@=\pgfmathrand@
\let\pgfmath@basic@rnd@=\pgfmathrnd@
\let\pgfmath@basic@setseed@=\pgfmathsetseed@
\let\pgfmath@basic@random@=\pgfmathrandom@
\let\pgfmath@basic@floor@=\pgfmathfloor@
\let\pgfmath@basic@ceil@=\pgfmathceil@
\let\pgfmath@basic@mod@=\pgfmathmod@
\let\pgfmath@basic@max@=\pgfmathmax@
\let\pgfmath@basic@min@=\pgfmathmin@
\let\pgfmath@basic@sin@=\pgfmathsin@
\let\pgfmath@basic@cos@=\pgfmathcos@
\let\pgfmath@basic@tan@=\pgfmathtan@
\let\pgfmath@basic@deg@=\pgfmathdeg@
\let\pgfmath@basic@rad@=\pgfmathrad@
\let\pgfmath@basic@atan@=\pgfmathatan@
\let\pgfmath@basic@asin@=\pgfmathasin@
\let\pgfmath@basic@acos@=\pgfmathacos@
\let\pgfmath@basic@cot@=\pgfmathcot@
\let\pgfmath@basic@sec@=\pgfmathsec@
\let\pgfmath@basic@cosec@=\pgfmathcosec@
\let\pgfmath@basic@pow@=\pgfmathpow@
\let\pgfmath@basic@exp@=\pgfmathexp@
\let\pgfmath@basic@ln@=\pgfmathln@
\let\pgfmath@basic@sqrt@=\pgfmathsqrt@
\let\pgfmath@basic@@pi=\pgfmath@pi
\let\pgfmath@basic@veclen@=\pgfmathveclen@
\let\pgfmath@basic@e@=\pgfmathe@
\let\pgfmath@basic@lessthan@=\pgfmathlessthan@
\let\pgfmath@basic@greaterthan@=\pgfmathgreaterthan@
\let\pgfmath@basic@equalto@=\pgfmathequalto@
\let\pgfmath@basic@equal@=\pgfmathequal@
\let\pgfmath@basic@true@=\pgfmathtrue@
\let\pgfmath@basic@false@=\pgfmathfalse@

\def\pgfmathfloatscientific#1#2{%
    \edef\pgfmathresult{#1e#2}%
    \expandafter\pgfmathfloatparsenumber\expandafter{\pgfmathresult}%
}%
\def\pgfmathfloatlessthan@#1#2{%
    \global\pgfmathfloatcomparisonfalse
    \begingroup
    \edef\pgfmathfloat@loc@TMPa{#1}%
    \edef\pgfmathfloat@loc@TMPb{#2}%
    \expandafter\pgfmathfloat@decompose\pgfmathfloat@loc@TMPa\relax\pgfmathfloat@a@S\pgfmathfloat@a@M\pgfmathfloat@a@E
    \expandafter\pgfmathfloat@decompose\pgfmathfloat@loc@TMPb\relax\pgfmathfloat@b@S\pgfmathfloat@b@M\pgfmathfloat@b@E
    \ifcase\pgfmathfloat@a@S
        \ifcase\pgfmathfloat@b@S
        \or%
            \global\pgfmathfloatcomparisontrue
        \or%
        \or%
        \or%
            \global\pgfmathfloatcomparisontrue
        \or%
        \fi
    \or
        \ifcase\pgfmathfloat@b@S
        \or%
            \pgfmathfloatlessthan@positive
        \or%
        \or%
        \or%
            \global\pgfmathfloatcomparisontrue
        \or%
        \fi
    \or
        \ifcase\pgfmathfloat@b@S
            \global\pgfmathfloatcomparisontrue
        \or%
            \global\pgfmathfloatcomparisontrue
        \or%
            \pgfmathfloatgreaterthan@positive
        \or%
        \or%
            \global\pgfmathfloatcomparisontrue
        \or%
        \fi
    \or
    \or
    \or
        \ifnum\pgfmathfloat@b@S=3
        \else
            \global\pgfmathfloatcomparisontrue
        \fi
    \fi
    \endgroup
    \ifpgfmathfloatcomparison
        \def\pgfmathresult{1.0}%
    \else
        \def\pgfmathresult{0.0}%
    \fi
}%
\let\pgfmathfloatlessthan=\pgfmathfloatlessthan@
\let\pgfmathfloatless@=\pgfmathfloatlessthan@

\def\pgfmathfloatnotless@#1#2{%
    \pgfmathfloatless@{#1}{#2}%
    \ifpgfmathfloatcomparison
        \def\pgfmathresult{0.0}%
    \else
        \def\pgfmathresult{1.0}%
    \fi
}%
\def\pgfmathfloatnotgreater@#1#2{%
    \pgfmathfloatless@{#2}{#1}%
    \ifpgfmathfloatcomparison
        \def\pgfmathresult{0.0}%
    \else
        \def\pgfmathresult{1.0}%
    \fi
}%

\def\pgfmathfloatlessthan@positive{%
    \ifnum\pgfmathfloat@a@E<\pgfmathfloat@b@E
        \global\pgfmathfloatcomparisontrue
    \else
        \ifnum\pgfmathfloat@a@E=\pgfmathfloat@b@E
            \ifdim\pgfmathfloat@a@M<\pgfmathfloat@b@M
                \global\pgfmathfloatcomparisontrue
            \fi
        \fi
    \fi
}%

\def\pgfmathfloatgreaterthan@positive{%
    \ifnum\pgfmathfloat@a@E>\pgfmathfloat@b@E
        \global\pgfmathfloatcomparisontrue
    \else
        \ifnum\pgfmathfloat@a@E=\pgfmathfloat@b@E
            \ifdim\pgfmathfloat@a@M>\pgfmathfloat@b@M
                \global\pgfmathfloatcomparisontrue
            \fi
        \fi
    \fi
}%


\def\pgfmathfloatgreaterthan@#1#2{\pgfmathfloatlessthan@{#2}{#1}}%
\let\pgfmathfloatgreaterthan=\pgfmathfloatgreaterthan@
\let\pgfmathfloatgreater@=\pgfmathfloatgreaterthan@

\def\pgfmathfloatmax@#1{%
    \begingroup
        \pgfmathfloatcreate{2}{1.0}{2147483644}%
        \let\pgfmathmaxsofar=\pgfmathresult
        \pgfmathfloatmax@@#1{}%
}%
\def\pgfmathfloatmax@@#1{%
    \def\pgfmath@temp{#1}%
    \ifx\pgfmath@temp\pgfmath@empty%
        \expandafter\pgfmathfloatmax@@@%
    \else%
        \pgfmathfloatlessthan{\pgfmathmaxsofar}{#1}%
        \ifpgfmathfloatcomparison
            \edef\pgfmathmaxsofar{#1}%
        \fi
        \expandafter\pgfmathfloatmax@@%
    \fi%
}%
\def\pgfmathfloatmax@@@{%
    \let\pgfmathresult=\pgfmathmaxsofar
    \pgfmath@smuggleone{\pgfmathresult}%
    \endgroup
}%
\def\pgfmathfloatmin@#1{%
    \begingroup
        \pgfmathfloatcreate{1}{1.0}{2147483644}%
        \let\pgfmathminsofar=\pgfmathresult
        \pgfmathfloatmin@@#1{}%
}%
\def\pgfmathfloatmin@@#1{%
    \def\pgfmath@temp{#1}%
    \ifx\pgfmath@temp\pgfmath@empty%
        \expandafter\pgfmathfloatmin@@@%
    \else%
        \pgfmathfloatlessthan{#1}{\pgfmathminsofar}%
        \ifpgfmathfloatcomparison
            \edef\pgfmathminsofar{#1}%
        \fi
        \expandafter\pgfmathfloatmin@@%
    \fi%
}%
\def\pgfmathfloatmin@@@{%
    \let\pgfmathresult=\pgfmathminsofar
    \pgfmath@smuggleone{\pgfmathresult}%
    \endgroup
}%

\def\pgfmathfloatmaxtwo#1#2{%
    \pgfmathfloatlessthan{#1}{#2}%
    \ifpgfmathfloatcomparison
        \edef\pgfmathresult{#2}%
    \else
        \edef\pgfmathresult{#1}%
    \fi
}%
\let\pgfmathfloatmax=\pgfmathfloatmaxtwo

\def\pgfmathfloatmintwo#1#2{%
    \pgfmathfloatlessthan{#1}{#2}%
    \ifpgfmathfloatcomparison
        \edef\pgfmathresult{#1}%
    \else
        \edef\pgfmathresult{#2}%
    \fi
}%
\let\pgfmathfloatmin=\pgfmathfloatmintwo

\def\pgfmathfloattoextentedprecision#1{%
    \begingroup
    \pgfmathfloattoextentedprecision@a{#1}%
    \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\pgfmathresult}{\the\pgfmathfloat@a@E}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

\def\pgfmathfloattoextentedprecision@@zero#1\pgfmathfloat@EOI{%
    \edef\pgfmathresult{#1}%
}%
\def\pgfmathfloattoextentedprecision@@one#1.#2#3\pgfmathfloat@EOI{%
    \edef\pgfmathresult{#1#2.#3}%
}%
\def\pgfmathfloattoextentedprecision@@two#1.#2#3#4\pgfmathfloat@EOI{%
    \edef\pgfmathresult{#1#2#3.#4}%
}%
\def\pgfmathfloattoextentedprecision@@three#1.#2#3#4#5\pgfmathfloat@EOI{%
    \edef\pgfmathresult{#1#2#3#4.#5}%
}%

\def\pgfmathfloatsetextprecision#1{%
    \ifcase#1\relax
        \let\pgfmathfloattoextentedprecision@@=\pgfmathfloattoextentedprecision@@zero
        \def\pgfmathfloatextprec@shift{0}%
    \or
        \let\pgfmathfloattoextentedprecision@@=\pgfmathfloattoextentedprecision@@one
        \def\pgfmathfloatextprec@shift{1}%
    \or
        \let\pgfmathfloattoextentedprecision@@=\pgfmathfloattoextentedprecision@@two
        \def\pgfmathfloatextprec@shift{2}%
    \else
        \let\pgfmathfloattoextentedprecision@@=\pgfmathfloattoextentedprecision@@three
        \def\pgfmathfloatextprec@shift{3}%
    \fi
}%
\pgfmathfloatsetextprecision{2}%

\def\pgfmathfloattoextentedprecision@a#1{%
    \edef\pgfmathresult{#1}%
    \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \ifnum\pgfmathfloat@a@S<3
        \advance\pgfmathfloat@a@E by-\pgfmathfloatextprec@shift\relax%
        \expandafter\pgfmathfloattoextentedprecision@@\the\pgfmathfloat@a@Mtok 000\pgfmathfloat@EOI
    \fi
}%


\def\pgfmathfloattoextentedprecision@b#1{%
    \edef\pgfmathresult{#1}%
    \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@b@S\pgfmathfloat@a@Mtok\pgfmathfloat@b@E
    \ifnum\pgfmathfloat@b@S<3
        \advance\pgfmathfloat@b@E by-\pgfmathfloatextprec@shift\relax
        \expandafter\pgfmathfloattoextentedprecision@@\the\pgfmathfloat@a@Mtok 00\pgfmathfloat@EOI
    \fi
}%

\def\pgfmathfloatadd@#1#2{%
    \begingroup
    \pgfmathfloattoextentedprecision@a{#1}%
    \let\pgfmathfloat@arga=\pgfmathresult
    \pgfmathfloattoextentedprecision@b{#2}%
    \let\pgfmathfloat@argb=\pgfmathresult
    \pgfmathfloatcomparisontrue%
    \ifcase\pgfmathfloat@a@S
        \edef\pgfmathresult{#2}%
        \pgfmathfloatcomparisonfalse
    \or
    \or
        \edef\pgfmathfloat@arga{-\pgfmathfloat@arga}%
    \else
        \pgfmathfloatcomparisonfalse
        \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{0.0}{0}%
    \fi
    \ifcase\pgfmathfloat@b@S
        \edef\pgfmathresult{#1}%
        \pgfmathfloatcomparisonfalse
    \or
    \or
        \edef\pgfmathfloat@argb{-\pgfmathfloat@argb}%
    \else
        \pgfmathfloatcomparisonfalse
        \pgfmathfloatcreate{\the\pgfmathfloat@b@S}{0.0}{0}%
    \fi
    \ifpgfmathfloatcomparison
        \ifnum\pgfmathfloat@a@E<\pgfmathfloat@b@E
            \pgfmathfloatadd@shift{\pgfmathfloat@arga}{\pgfmathfloat@a@E}{\pgfmathfloat@b@E}%
        \else
            \pgfmathfloatadd@shift{\pgfmathfloat@argb}{\pgfmathfloat@b@E}{\pgfmathfloat@a@E}%
        \fi
        \pgfmath@basic@add@{\pgfmathfloat@arga}{\pgfmathfloat@argb}%
        \edef\pgfmathresult{\pgfmathresult e\the\pgfmathfloat@a@E}%
        \expandafter\pgfmathfloatqparsenumber\expandafter{\pgfmathresult}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

\def\pgfmathfloatifzero#1#2#3{%
    \pgfmathfloatgetflagstomacro{#1}\pgfmathfloat@loc@TMPa
    \if\pgfmathfloat@loc@TMPa0 #2\else#3\fi
}%

\def\pgfmathfloatiffinite#1#2#3{%
    \pgfmathfloatgetflagstomacro{#1}\pgfmathfloatiffinite@
    \ifnum\pgfmathfloatiffinite@>2 #3\else #2\fi
}%

\def\pgfmathfloatifthenelse@#1#2#3{%
    \pgfmathfloatifflags{#1}{0}{%
        \edef\pgfmathresult{#3}%
    }{%
        \edef\pgfmathresult{#2}%
    }%
}%
\def\pgfmathfloatequal@#1#2{%
    \pgfmathfloatifapproxequalrel{#1}{#2}{%
        \def\pgfmathresult{1}%
        \pgfmathfloatcomparisontrue
    }{%
        \def\pgfmathresult{0}%
        \pgfmathfloatcomparisonfalse
    }%
}%
\let\pgfmathfloatequalto@=\pgfmathfloatequal@

\def\pgfmathfloatnotequal@#1#2{%
    \pgfmathfloatifapproxequalrel{#1}{#2}{%
        \def\pgfmathresult{0}%
        \pgfmathfloatcomparisonfalse
    }{%
        \def\pgfmathresult{1}%
        \pgfmathfloatcomparisontrue
    }%
}%
\let\pgfmathfloatnotequalto@=\pgfmathfloatnotequal@

\long\def\pgfmathfloatifapproxequalrel#1#2#3#4{%
    \begingroup
    \pgfmathfloatparsenumber{#1}%
    \let\pgfmathfloatarga=\pgfmathresult
    \pgfmathfloatparsenumber{#2}%
    \let\pgfmathfloatargb=\pgfmathresult
    \pgfmathfloatrelerror@\pgfmathfloatarga\pgfmathfloatargb
    \let\pgfmathfloatarga=\pgfmathresult
    \pgfmathfloatlessthan@\pgfmathfloatarga\pgfmathfloat@relthresh
    \ifpgfmathfloatcomparison
        \def\pgfmathfloat@loc@TMPa{#3}%
    \else
        \def\pgfmathfloat@loc@TMPa{#4}%
    \fi
    \expandafter\endgroup
    \pgfmathfloat@loc@TMPa
}%

\def\pgfmathfloatifflags#1#2#3#4{%
    \if#2-%
        \pgfmathfloatifflags{#1}{2}{#3}{#4}%
    \else
        \if#2+%
            \pgfmathfloatifflags{#1}{1}{#3}{#4}%
        \else
            \pgfmathfloatgetflagstomacro{#1}\pgfmathfloat@loc@TMPa
            \if#2u%
                \ifnum\pgfmathfloat@loc@TMPa>2
                    #3\relax
                \else
                    #4\relax
                \fi
            \else
                \if\pgfmathfloat@loc@TMPa#2%
                    #3\relax
                \else
                    #4\relax
                \fi
            \fi
        \fi
    \fi
}%

\def\pgfmathfloatadd@shift#1#2#3{%
    \pgf@xa=#1 pt%
    \pgfmathfloat@a@S=#3\relax
    \advance\pgfmathfloat@a@S by-#2\relax
    \ifcase\pgfmathfloat@a@S
    \or
        \divide\pgf@xa by10\relax
    \or
        \divide\pgf@xa by100\relax
    \or
        \divide\pgf@xa by1000\relax
    \or
        \divide\pgf@xa by10000\relax
    \or
        \divide\pgf@xa by10000\relax
        \divide\pgf@xa by10\relax
    \or
        \divide\pgf@xa by10000\relax
        \divide\pgf@xa by100\relax
    \or
        \divide\pgf@xa by10000\relax
        \divide\pgf@xa by1000\relax
    \or
        \divide\pgf@xa by10000\relax
        \divide\pgf@xa by10000\relax
    \else
        \pgf@xa=0pt%
    \fi
    #2=#3\relax
    \edef#1{\pgf@sys@tonumber\pgf@xa}%
}%

\let\pgfmathfloatadd=\pgfmathfloatadd@


\def\pgfmathfloatsubtract@#1#2{%
    \begingroup
    \edef\pgfmathresult{#2}%
    \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@b@S\pgfmathfloat@a@Mtok\pgfmathfloat@b@E
    \ifcase\pgfmathfloat@b@S
        \edef\pgfmathresult{#1}%
    \or
        \pgfmathfloatcreate{2}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@b@E}%
        \let\pgfmathfloatsub@arg=\pgfmathresult
        \pgfmathfloatadd@{#1}{\pgfmathfloatsub@arg}%
    \or
        \pgfmathfloatcreate{1}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@b@E}%
        \let\pgfmathfloatsub@arg=\pgfmathresult
        \pgfmathfloatadd@{#1}{\pgfmathfloatsub@arg}%
    \else
        \pgfmathfloatcreate{\the\pgfmathfloat@b@S}{0.0}{0}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

\let\pgfmathfloatsubtract=\pgfmathfloatsubtract@

\def\pgfmathfloatmultiplyfixed@#1#2{%
    \begingroup
    \pgfmathfloattoextentedprecision@a{#1}%
    \let\pgfmathfloat@arga=\pgfmathresult
    \pgfmathfloatcomparisontrue%
    \ifcase\pgfmathfloat@a@S
        \edef\pgfmathresult{#1}%
        \pgfmathfloatcomparisonfalse
    \or
    \or
        \edef\pgfmathfloat@arga{-\pgfmathfloat@arga}%
    \else
        \pgfmathfloatcomparisonfalse
        \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{0.0}{0}%
    \fi
    \ifpgfmathfloatcomparison
        \pgfmath@basic@multiply@{\pgfmathfloat@arga}{#2}%
        \edef\pgfmathresult{\pgfmathresult e\the\pgfmathfloat@a@E}%
        \expandafter\pgfmathfloatqparsenumber\expandafter{\pgfmathresult}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

\let\pgfmathfloatmultiplyfixed=\pgfmathfloatmultiplyfixed@


\def\pgfmathfloatmultiply@#1#2{%
    \begingroup
    \pgfmathfloatsetextprecision{1}%
    \pgfmathfloattoextentedprecision@a{#1}%
    \let\pgfmathfloat@arga=\pgfmathresult
    \pgfmathfloattoextentedprecision@b{#2}%
    \let\pgfmathfloat@argb=\pgfmathresult
    \pgfmathfloatcomparisontrue%
    \ifcase\pgfmathfloat@a@S
        \pgfmathfloatcreate{0}{0.0}{0}%
        \pgfmathfloatcomparisonfalse
    \or%
        \ifcase\pgfmathfloat@b@S
            \pgfmathfloatcreate{0}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \def\pgfmathresult@S{1}%
        \or
            \def\pgfmathresult@S{2}%
        \else
            \expandafter\pgfmathfloatcreate\the\pgfmathfloat@b@S{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \fi
    \or%
        \ifcase\pgfmathfloat@b@S
            \pgfmathfloatcreate{0}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \def\pgfmathresult@S{2}%
        \or
            \def\pgfmathresult@S{1}%
        \or
            \pgfmathfloatcreate{3}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{5}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{4}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \fi
    \or%
        \pgfmathfloatcreate{3}{0.0}{0}%
        \pgfmathfloatcomparisonfalse
    \or%
        \ifcase\pgfmathfloat@b@S
            \pgfmathfloatcreate{0}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{4}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{5}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{3}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{4}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{5}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \fi
    \or%
        \ifcase\pgfmathfloat@b@S
            \pgfmathfloatcreate{0}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{5}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{4}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{3}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{5}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{4}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \fi
    \fi
    \ifpgfmathfloatcomparison
        \pgfmath@basic@multiply@{\pgfmathfloat@arga}{\pgfmathfloat@argb}%
        \advance\pgfmathfloat@a@E by\pgfmathfloat@b@E
        \edef\pgfmathresult{\pgfmathresult e\the\pgfmathfloat@a@E}%
        \expandafter\pgfmathfloatqparsenumber\expandafter{\pgfmathresult}%
        \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
        \pgfmathfloatcreate{\pgfmathresult@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\let\pgfmathfloatmultiply=\pgfmathfloatmultiply@

\def\pgfmathfloatdivide@#1#2{%
    \begingroup
    \pgfmathfloatsetextprecision{1}%
    \edef\pgfmathfloat@arga{#1}%
    \pgfmathfloattoextentedprecision@a{\pgfmathfloat@arga}%
    \let\pgfmathfloat@arga=\pgfmathresult
    \edef\pgfmathfloat@argb{#2}%
    \pgfmathfloattoextentedprecision@b{\pgfmathfloat@argb}%
    \let\pgfmathfloat@argb=\pgfmathresult
    \pgfmathfloatcomparisontrue%
    \ifcase\pgfmathfloat@a@S
        \pgfmathfloatcreate{0}{0.0}{0}%
        \pgfmathfloatcomparisonfalse
    \or%
        \ifcase\pgfmathfloat@b@S
            \pgfmathfloatcreate{4}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \def\pgfmathresult@S{1}%
        \or
            \def\pgfmathresult@S{2}%
        \or
            \pgfmathfloatcreate{3}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \else
            \pgfmathfloatcreate{0}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \fi
    \or%
        \ifcase\pgfmathfloat@b@S
            \pgfmathfloatcreate{5}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \def\pgfmathresult@S{2}%
        \or
            \def\pgfmathresult@S{1}%
        \or
            \pgfmathfloatcreate{3}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \else
            \pgfmathfloatcreate{0}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \fi
    \or%
        \pgfmathfloatcreate{3}{0.0}{0}%
        \pgfmathfloatcomparisonfalse
    \or%
        \ifcase\pgfmathfloat@b@S
            \pgfmathfloatcreate{4}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{4}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{5}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{3}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{4}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{5}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \fi
    \or%
        \ifcase\pgfmathfloat@b@S
            \pgfmathfloatcreate{5}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{5}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{4}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{3}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{5}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \or
            \pgfmathfloatcreate{4}{0.0}{0}%
            \pgfmathfloatcomparisonfalse
        \fi
    \fi
    \ifpgfmathfloatcomparison
        \pgfmath@basic@divide@{\pgfmathfloat@arga}{\pgfmathfloat@argb}%
        \advance\pgfmathfloat@a@E by-\pgfmathfloat@b@E
        \edef\pgfmathresult{\pgfmathresult e\the\pgfmathfloat@a@E}%
        \expandafter\pgfmathfloatqparsenumber\expandafter{\pgfmathresult}%
        \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
        \pgfmathfloatcreate{\pgfmathresult@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\let\pgfmathfloatdivide=\pgfmathfloatdivide@

\def\pgfmathfloatreciprocal@#1{%
    \begingroup
    \edef\pgfmathfloat@loc@TMPa{#1}%
    \pgfmathfloatcreate{1}{1.0}{0}%
    \pgfmathfloatdivide@{\pgfmathresult}{\pgfmathfloat@loc@TMPa}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

\def\pgfmathfloatsqrt@#1{%
    \begingroup
    \pgfmathfloatsetextprecision{3}%
    \edef\pgfmathfloat@arga{#1}%
    \pgfmathfloattoextentedprecision@a{\pgfmathfloat@arga}%
    \let\pgfmathfloat@arga=\pgfmathresult
    \ifcase\pgfmathfloat@a@S
        \pgfmathfloatcreate{0}{0.0}{0}%
    \or%
        \pgfmath@basic@sqrt@{\pgfmathfloat@arga}%
        \ifodd\pgfmathfloat@a@E
            \ifnum\pgfmathfloat@a@E>0
                \expandafter\pgfmath@basic@multiply@\expandafter{\pgfmathresult}{3.16227766}%
            \else
                \expandafter\pgfmath@basic@multiply@\expandafter{\pgfmathresult}{0.316227766}%
            \fi
        \fi
        \divide\pgfmathfloat@a@E by2 %
        \edef\pgfmathfloat@arga{\pgfmathresult e\the\pgfmathfloat@a@E}%
        \pgfmathfloatqparsenumber{\pgfmathfloat@arga}%
    \or%
        \pgfmathfloatcreate{3}{0.0}{0}%
    \or%
        \pgfmathfloatcreate{3}{0.0}{0}%
    \or%
        \pgfmathfloatcreate{4}{0.0}{0}%
    \or%
        \pgfmathfloatcreate{3}{0.0}{0}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\let\pgfmathfloatsqrt=\pgfmathfloatsqrt@

\def\pgfmathfloatint@#1{%
    \begingroup
    \edef\pgfmathfloatint@input{#1}%
    \expandafter\pgfmathfloat@decompose@tok\pgfmathfloatint@input\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \gdef\pgfmathfloatintwasnoop{1}%
    \gdef\pgfmathfloatintremainder{}%
    \ifcase\pgfmathfloat@a@S
    \or%
        \expandafter\pgfmathfloatint@@\the\pgfmathfloat@a@Mtok\pgfmathfloat@EOI
        \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \or%
        \expandafter\pgfmathfloatint@@\the\pgfmathfloat@a@Mtok\pgfmathfloat@EOI
        \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \else
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\def\pgfmathfloatint@@#1.{%
    \ifnum\pgfmathfloat@a@E<0
        \pgfmathfloat@a@S=0
        \pgfmathfloat@a@Mtok={0.0}%
        \pgfmathfloat@a@E=0
        \gdef\pgfmathfloatintwasnoop{0}%
        \expandafter\pgfmathfloatint@@loop@gobble
    \else
        \pgfmathfloat@a@Mtok={#1.}%
        \pgfmathfloat@b@E=\pgfmathfloat@a@E
        \expandafter\pgfmathfloatint@@loop
    \fi
}%
\def\pgfmathfloatint@@loop#1{%
    \def\pgfmathfloatint@@loop@{#1}%
    \ifx\pgfmathfloatint@@loop@\pgfmathfloat@EOI
        \gdef\pgfmathfloatintwasnoop{1}%
        \let\pgfmathfloatint@@loop@next=\relax
    \else
        \ifnum\pgfmathfloat@b@E=0
            \def\pgfmathfloatint@@loop@next{\pgfmathfloatint@@loop@gobble#1}%
        \else
            \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
            \advance\pgfmathfloat@b@E by-1
            \let\pgfmathfloatint@@loop@next=\pgfmathfloatint@@loop
        \fi
    \fi
    \pgfmathfloatint@@loop@next
}%
\def\pgfmathfloatint@@loop@gobble#1\pgfmathfloat@EOI{%
    \if0\pgfmathfloatintwasnoop
    \else
        \gdef\pgfmathfloatintwasnoop{2}%
        \gdef\pgfmathfloatintremainder{#1}%
    \fi
}%
\let\pgfmathfloatint=\pgfmathfloatint@

\def\pgfmathfloatfloor#1{%
    \edef\pgfmath@orig{#1}%
    \pgfmathfloatint@{#1}%
    \pgfmathfloatifflags{\pgfmath@orig}{2}{%
        \let\pgfmath@trunc=\pgfmathresult
        \ifcase\pgfmathfloatintwasnoop\relax
            \pgfmathfloatcreate{2}{1.0}{0}%
            \expandafter\pgfmathfloatadd@\expandafter{\pgfmathresult}{\pgfmath@trunc}%
        \or
            \let\pgfmathresult=\pgfmath@trunc
        \else
            \pgfmathfloatparsenumber{0.\pgfmathfloatintremainder}%
            \pgfmathfloatifflags{\pgfmathresult}{1}{%
                \pgfmathfloatcreate{2}{1.0}{0}%
                \expandafter\pgfmathfloatadd@\expandafter{\pgfmathresult}{\pgfmath@trunc}%
            }{%
                \let\pgfmathresult=\pgfmath@trunc
            }%
        \fi
    }{}%
}%
\let\pgfmathfloatfloor@=\pgfmathfloatfloor

\def\pgfmathfloatceil#1{%
    \edef\pgfmath@orig{#1}%
    \pgfmathfloatint@{#1}%
    \pgfmathfloatifflags{\pgfmath@orig}{1}{%
        \let\pgfmath@trunc=\pgfmathresult
        \ifcase\pgfmathfloatintwasnoop\relax
            \pgfmathfloatcreate{1}{1.0}{0}%
            \expandafter\pgfmathfloatadd@\expandafter{\pgfmathresult}{\pgfmath@trunc}%
        \or
            \let\pgfmathresult=\pgfmath@trunc
        \else
            \pgfmathfloatparsenumber{0.\pgfmathfloatintremainder}%
            \pgfmathfloatifflags{\pgfmathresult}{1}{%
                \pgfmathfloatcreate{1}{1.0}{0}%
                \expandafter\pgfmathfloatadd@\expandafter{\pgfmathresult}{\pgfmath@trunc}%
            }{%
                \let\pgfmathresult=\pgfmath@trunc
            }%
        \fi
    }{}%
}%
\let\pgfmathfloatceil@=\pgfmathfloatceil

\def\pgfmathfloat@notimplemented#1{%
    \pgfmath@error{Sorry, the operation '#1' has not yet been implemented in the floating point unit}{}%
    \pgfmathfloatcreate{0}{0.0}{0}%
}%

\def\pgfmathfloatshift@#1#2{%
    \begingroup
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \advance\pgfmathfloat@a@E by#2\relax
    \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\let\pgfmathfloatshift=\pgfmathfloatshift@

\def\pgfmathfloatabs@#1{%
    \begingroup
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \ifcase\pgfmathfloat@a@S
    \or
    \or
        \pgfmathfloat@a@S=1
    \or
    \or
    \or
        \pgfmathfloat@a@S=4
    \fi
    \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\def\pgfmathfloatsign@#1{%
    \begingroup
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \ifcase\pgfmathfloat@a@S
        \pgfmathfloatcreate{0}{0.0}{0}%
    \or
        \pgfmathfloatcreate{1}{1.0}{0}%
    \or
        \pgfmathfloatcreate{2}{1.0}{0}%
    \or
        \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \or
        \pgfmathfloatcreate{1}{1.0}{0}%
    \or
        \pgfmathfloatcreate{2}{1.0}{0}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\let\pgfmathfloatsign=\pgfmathfloatsign@

\def\pgfmathfloatabserror@#1#2{%
    \pgfmathfloatsubtract@{#1}{#2}%
    \pgfmathfloatabs@{\pgfmathresult}%
}%
\let\pgfmathfloatabserror=\pgfmathfloatabserror@

\def\pgfmathfloatrelerror@#1#2{%
    \pgfmathfloatsubtract@{#1}{#2}%
    \let\pgfmathfloat@subtract=\pgfmathresult
    \pgfmathfloatifflags{#2}{0}{%
        \let\pgfmathresult=\pgfmathfloat@subtract
    }{%
        \pgfmathfloatdivide@{\pgfmathfloat@subtract}{#2}%
    }%
    \pgfmathfloatabs@{\pgfmathresult}%
}%
\let\pgfmathfloatrelerror=\pgfmathfloatrelerror@

\def\pgfmathfloatmod@#1#2{%
    \begingroup
    \pgfmathfloattoint{#1}%
    \let\pgfmathfloat@loc@TMPa=\pgfmathresult
    \pgfmathfloattoint{#2}%
    \let\pgfmathfloat@loc@TMPb=\pgfmathresult
    \c@pgfmath@counta=\pgfmathfloat@loc@TMPa\relax
    \divide\c@pgfmath@counta by\pgfmathfloat@loc@TMPb\relax
    \expandafter\pgfmathfloatparsenumber\expandafter{\the\c@pgfmath@counta}%
    \let\pgfmathfloat@loc@TMPa=\pgfmathresult
    \pgfmathfloatmultiply@{\pgfmathfloat@loc@TMPa}{#2}%
    \let\pgfmathfloat@loc@TMPb=\pgfmathresult
    \pgfmathfloatsubtract@{#1}{\pgfmathfloat@loc@TMPb}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\let\pgfmathfloatmod=\pgfmathfloatmod@


\def\pgfmathfloatmodknowsinverse@#1#2#3{%
    \pgfmathfloatmod@{#1}{#2}%
}%
\let\pgfmathfloatmodknowsinverse=\pgfmathfloatmodknowsinverse@

\def\pgfmathfloatpi@{%
    \pgfmathfloatcreate{1}{3.14159265358979}{0}%
}%
\let\pgfmathfloatpi=\pgfmathfloatpi@

\def\pgfmathfloate@{%
    \pgfmathfloatcreate{1}{2.71828182845905}{0}%
}%
\let\pgfmathfloate=\pgfmathfloate@

\def\pgfmathfloatdeg@#1{%
    \expandafter\ifx\csname pgfmfltdeg@factor\endcsname\relax
        \pgfmathfloatcreate{1}{5.72957795130823}{1}%
        \global\let\pgfmfltdeg@factor=\pgfmathresult
    \fi
    \pgfmathfloatmultiply@{#1}\pgfmfltdeg@factor%
}%
\let\pgfmathfloatdeg=\pgfmathfloatdeg@

\def\pgfmathfloatrad@#1{%
    \expandafter\ifx\csname pgfmfltrad@factor\endcsname\relax
        \pgfmathfloatcreate{1}{1.74532925199433}{-2}%
        \global\let\pgfmfltrad@factor=\pgfmathresult
    \fi
    \pgfmathfloatmultiply@{#1}\pgfmfltrad@factor%
}%
\let\pgfmathfloatrad=\pgfmathfloatrad@

\def\pgfmathfloatTRIG@#1#2{%
    \if0\pgfmath@trig@format@choice
        \expandafter\ifx\csname pgfmathfloatTRIG@NUM\endcsname\relax%
            \pgfmathfloatcreate{1}{3.6}{2}%
            \global\let\pgfmathfloatTRIG@NUM=\pgfmathresult
            \pgfmathfloatcreate{1}{2.77777777777778}{-3}%
            \global\let\pgfmathfloatTRIG@NUM@INV=\pgfmathresult
        \fi
        \pgfmathfloatmodknowsinverse@{#2}{\pgfmathfloatTRIG@NUM}{\pgfmathfloatTRIG@NUM@INV}%
    \else
        \expandafter\ifx\csname pgfmathfloatTRIG@rad@NUM\endcsname\relax%
            \pgfmathfloatcreate{1}{6.28318530717959}{0}%
            \global\let\pgfmathfloatTRIG@rad@NUM=\pgfmathresult
            \pgfmathfloatcreate{1}{1.59154943091895}{-1}%
            \global\let\pgfmathfloatTRIG@rad@NUM@INV=\pgfmathresult
        \fi
        \pgfmathfloatmodknowsinverse@{#2}{\pgfmathfloatTRIG@rad@NUM}{\pgfmathfloatTRIG@rad@NUM@INV}%
    \fi
    \pgfmathfloattofixed@{\pgfmathresult}%
    \expandafter#1\expandafter{\pgfmathresult}%
    \pgfmathfloatparsenumber{\pgfmathresult}%
}%

\def\pgfmathfloatsin@#1{\pgfmathfloatTRIG@\pgfmath@basic@sin@{#1}}%
\let\pgfmathfloatsin=\pgfmathfloatsin@
\def\pgfmathfloatcos@#1{\pgfmathfloatTRIG@\pgfmath@basic@cos@{#1}}%
\let\pgfmathfloatcos=\pgfmathfloatcos@
\def\pgfmathfloattan@#1{%
    \begingroup
    \pgfmathfloatcos@{#1}%
    \let\pgfmathfloat@loc@TMPa=\pgfmathresult
    \pgfmathfloatsin@{#1}%
    \expandafter\pgfmathfloatdivide@\expandafter{\pgfmathresult}{\pgfmathfloat@loc@TMPa}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\let\pgfmathfloattan=\pgfmathfloattan@

\def\pgfmathfloatcot@#1{%
    \begingroup
    \pgfmathfloatsin@{#1}%
    \let\pgfmathfloat@loc@TMPa=\pgfmathresult
    \pgfmathfloatcos@{#1}%
    \expandafter\pgfmathfloatdivide@\expandafter{\pgfmathresult}{\pgfmathfloat@loc@TMPa}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\let\pgfmathfloatcot=\pgfmathfloatcot@

\def\pgfmathfloatatan@#1{%
    \begingroup
    \expandafter\ifx\csname pgfmathfloatatan@TMP\endcsname\relax%
        \pgfmathfloatcreate{1}{1.6}{4}%
        \global\let\pgfmathfloatatan@TMP=\pgfmathresult
        \pgfmathfloatcreate{2}{1.6}{4}%
        \global\let\pgfmathfloatatan@TMPB=\pgfmathresult
    \fi
    \pgfmathfloatgreaterthan@{#1}{\pgfmathfloatatan@TMP}%
    \ifpgfmathfloatcomparison
        \pgfmathiftrigonometricusesdeg{%
            \pgfmathfloatcreate{1}{9.0}{1}%
        }{%
            \pgfmathfloatcreate{1}{1.570796326794}{0}%
        }%
    \else
        \pgfmathfloatlessthan{#1}{\pgfmathfloatatan@TMPB}%
        \ifpgfmathfloatcomparison
            \pgfmathiftrigonometricusesdeg{%
                \pgfmathfloatcreate{2}{9.0}{1}%
            }{%
                \pgfmathfloatcreate{2}{1.570796326794}{0}%
            }%
        \else
            \pgfmathfloattofixed@{#1}%
            \expandafter\pgfmath@basic@atan@\expandafter{\pgfmathresult}%
            \pgfmathfloatparsenumber{\pgfmathresult}%
        \fi
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\let\pgfmathfloatatan=\pgfmathfloatatan@

\def\pgfmathfloatatantwo#1#2{%
  \begingroup%
    \let\pgfmath@trig@format@choice@@=\pgfmath@trig@format@choice
    \def\pgfmath@trig@format@choice{0}%
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \expandafter\pgfmathfloat@decompose#2\relax\pgfmathfloat@b@S\pgfmathfloat@b@M\pgfmathfloat@b@E
    \ifnum\pgfmathfloat@a@S=0
        \pgfmathfloat@a@E=-16 %
    \fi
    \ifnum\pgfmathfloat@a@E<-3 %
        \ifnum\pgfmathfloat@b@S=2 %
            \pgfmathfloatcreate{1}{1.8}{2}%
        \else
            \ifnum\pgfmathfloat@b@S=1 %
                \pgfmathfloatcreate{0}{0.0}{0}%
            \else
                \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{9.0}{1}%
            \fi
        \fi
    \else%
      \pgfmathfloatabs@{#1}\let\pgfmath@tempa\pgfmathresult%
      \pgfmathfloatabs@{#2}\let\pgfmath@tempb\pgfmathresult%
      \pgfmathfloatgreaterthan@{\pgfmath@tempa}{\pgfmath@tempb}%
      \ifpgfmathfloatcomparison
        \pgfmathfloatdivide@{#2}{\pgfmath@tempa}%
        \expandafter\pgfmathfloatatan@\expandafter{\pgfmathresult}%
        \let\pgfmath@tempa=\pgfmathresult
        \pgfmathfloatcreate{1}{9.0}{1}%
        \let\pgfmath@tempb=\pgfmathresult
        \pgfmathfloatsubtract@{\pgfmath@tempb}{\pgfmath@tempa}%
      \else%
        \pgfmathfloatdivide@{\pgfmath@tempa}{#2}%
        \expandafter\pgfmathfloatatan@\expandafter{\pgfmathresult}%
        \expandafter\pgfmathfloatifflags\expandafter{\pgfmathresult}{2}{%
            \let\pgfmath@tempa=\pgfmathresult
            \pgfmathfloatcreate{1}{1.8}{2}%
            \let\pgfmath@tempb=\pgfmathresult
            \pgfmathfloatadd@{\pgfmath@tempa}{\pgfmath@tempb}%
        }{}%
      \fi%
      \pgfmathfloatifflags{#1}{-}{%
        \pgfmathfloatmultiplyfixed@{\pgfmathresult}{-1}%
      }{}%
    \fi%
    \if1\pgfmath@trig@format@choice@@
        \pgfmathfloat@scale@deg@to@rad\pgfmathresult
    \fi
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}%
\let\pgfmathfloatatantwo@=\pgfmathfloatatantwo
\expandafter\let\csname pgfmathfloatatan2\endcsname=\pgfmathfloatatantwo
\expandafter\let\csname pgfmathfloatatan2@\endcsname=\pgfmathfloatatantwo@

\def\pgfmathfloat@scale@deg@to@rad#1{%
    \edef\pgfmathfloat@loc@TMPb{#1}%
    \pgfmathfloatcreate{1}{1.74532925199433}{-2}%
    \pgfmathfloatmultiply@{\pgfmathresult}{\pgfmathfloat@loc@TMPb}%
}%

\def\pgfmathfloatsec@#1{\pgfmathfloatTRIG@\pgfmath@basic@cos@{#1}\pgfmathfloatreciprocal@{\pgfmathresult}}%
\let\pgfmathfloatsec=\pgfmathfloatsec@
\def\pgfmathfloatcosec@#1{\pgfmathfloatTRIG@\pgfmath@basic@sin@{#1}\pgfmathfloatreciprocal@{\pgfmathresult}}%
\let\pgfmathfloatcosec=\pgfmathfloatcosec@

\def\pgfmathlog@invoke@expanded#1#2{%
    \edef\pgfmath@resulttemp{#2}%
    \expandafter#1\pgfmath@resulttemp
}%

\def\pgfmathfloatln@#1{%
    \pgfmathlog@float{#1}%
    \ifx\pgfmathresult\pgfutil@empty
        \pgfmathfloatcreate{3}{0.0}{0}%
    \else
        \pgfmathfloatparsenumber{\pgfmathresult}%
    \fi
}%
\let\pgfmathfloatln=\pgfmathfloatln@

\expandafter\def\csname pgfmathfloatlog10@\endcsname#1{%
    \pgfmathfloatln@{#1}%
    \let\pgfmathfloat@log@e=\pgfmathresult
    \pgfmathfloatcreate{1}{4.34294481903252}{-1}%
    \pgfmathfloatmultiply@{\pgfmathresult}{\pgfmathfloat@log@e}%
}%
\pgfutil@namelet{pgfmathfloatlog10}{pgfmathfloatlog10@}%

\expandafter\def\csname pgfmathfloatlog2@\endcsname#1{%
    \pgfmathfloatln@{#1}%
    \let\pgfmathfloat@log@e=\pgfmathresult
    \pgfmathfloatcreate{1}{1.44269504088896}{0}%
    \pgfmathfloatmultiply@{\pgfmathresult}{\pgfmathfloat@log@e}%
}%
\pgfutil@namelet{pgfmathfloatlog2}{pgfmathfloatlog2@}%

\expandafter\let\expandafter\pgfmathfloatlogtwo\csname pgfmathfloatlog2\endcsname
\expandafter\let\expandafter\pgfmathfloatlogtwo@\csname pgfmathfloatlog2@\endcsname
\expandafter\let\expandafter\pgfmathfloatlogten\csname pgfmathfloatlog10\endcsname
\expandafter\let\expandafter\pgfmathfloatlogten@\csname pgfmathfloatlog10@\endcsname

\def\pgfmathlog@#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathlog@float{\pgfmathresult}%
}%
\let\pgfmathlog=\pgfmathlog@
\def\pgfmathlog@float#1{%
    \begingroup%
        \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
        \ifnum\pgfmathfloat@a@S=1
            \expandafter\pgfmath@basic@ln@\expandafter{\the\pgfmathfloat@a@Mtok}%
            \pgfmathfloat@b@M=\pgfmathresult pt%
            \pgfmathfloat@a@M=2.302585pt%
            \multiply\pgfmathfloat@a@M by\pgfmathfloat@a@E\relax
            \advance\pgfmathfloat@b@M by\pgfmathfloat@a@M
            \edef\pgfmathresult{\pgf@sys@tonumber{\pgfmathfloat@b@M}}%
        \else
            \let\pgfmathresult=\pgfutil@empty%
        \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup%
}%


\def\pgfmathfloatexp@#1{%
    \begingroup
        \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
        \ifcase\pgfmathfloat@a@S
            \pgfmathfloatcreate{1}{1.0}{0}%
        \or%
            \pgfmathfloatexp@@{#1}%
        \or%
            \pgfmathfloatexp@@{#1}%
        \else
            \edef\pgfmathresult{#1}%
        \fi
        \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\def\pgfmathfloatexp@@#1{%
    \pgfmathfloattofixed@{#1}%
    \pgf@xa=\pgfmathresult pt
    \pgf@xa=0.434294481\pgf@xa\relax
    \edef\pgfmathfloat@loc@TMPa{\pgf@sys@tonumber{\pgf@xa}}%
    \expandafter\pgfmathfloatexp@@toint\pgfmathfloat@loc@TMPa\relax
    \pgf@xa=2.302585092pt
    \multiply\pgf@xa by-\pgfmathfloat@k\relax
    \advance\pgf@xa by\pgfmathresult pt
    \edef\pgfmathfloat@loc@TMPa{\pgf@sys@tonumber{\pgf@xa}}%
    \pgfmath@basic@exp@{\pgfmathfloat@loc@TMPa}%
    \let\pgfmathfloat@loc@TMPa=\pgfmathresult
    \pgfmathfloatparsenumber{\pgfmathfloat@loc@TMPa}%
    \let\pgfmathfloat@loc@TMPa=\pgfmathresult
    \pgfmathfloatshift@{\pgfmathfloat@loc@TMPa}{\pgfmathfloat@k}%
}%
\def\pgfmathfloatexp@@toint#1.#2\relax{%
    \c@pgf@counta=#1\relax
    \ifnum\c@pgf@counta<0
\advance\c@pgf@counta by-1 %
        \c@pgf@countb=#2\relax
        \ifnum\c@pgf@countb>0
            \advance\c@pgf@counta by-1
        \fi
    \fi
    \edef\pgfmathfloat@k{\the\c@pgf@counta}%
}%
\let\pgfmathfloatexp=\pgfmathfloatexp@

\def\pgfmathfloatround@#1{%
    \begingroup
    \pgfkeysvalueof{/pgf/number format/precision/.@cmd}0\pgfeov
    \pgfmathfloattofixed{#1}%
    \pgfmathroundto{\pgfmathresult}%
    \pgfmathfloatparsenumber{\pgfmathresult}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%


\def\pgfmathfloatneg@#1{%
    \begingroup
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \ifcase\pgfmathfloat@a@S\relax
        \edef\pgfmathresult{#1}%
    \or
        \pgfmathfloatcreate{2}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \or
        \pgfmathfloatcreate{1}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \or
        \edef\pgfmathresult{#1}%
    \or
        \pgfmathfloatcreate{5}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \or
        \pgfmathfloatcreate{4}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%


\def\pgfmathfloatpow@#1#2{%
    \begingroup%
    \expandafter\pgfmathfloat@decompose@tok#2\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \ifcase\pgfmathfloat@a@S\relax
        \pgfmathfloatcreate{1}{1.0}{0}%
    \or
        \pgfmathfloatpow@@{#1}{#2}%
    \or
        \pgfmathfloatpow@@{#1}{#2}%
    \or
        \edef\pgfmathresult{#2}%
    \or
        \edef\pgfmathresult{#2}%
    \or
        \pgfmathfloatcreate{0}{0.0}{0}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

\def\pgfmathfloatpow@@#1#2{%
    \pgfmathfloattofixed@{#2}%
    \afterassignment\pgfmath@x%
    \expandafter\c@pgfmath@counta\pgfmathresult pt\relax%
    \ifdim\pgfmath@x=0pt %
        \ifnum\c@pgfmath@counta<0
            \pgfmathfloatreciprocal@{#1}%
            \let\pgfmathfloat@loc@TMPa=\pgfmathresult
            \c@pgfmath@counta=-\c@pgfmath@counta
        \else
            \edef\pgfmathfloat@loc@TMPa{#1}%
        \fi
        \pgfmathfloatcreate{1}{1.0}{0}%
        \let\pgfmathfloat@loc@TMPb=\pgfmathresult
        \pgfmathloop
            \ifnum\c@pgfmath@counta>0\relax%
                \ifodd\c@pgfmath@counta%
                    \pgfmathfloatmultiply@{\pgfmathfloat@loc@TMPb}{\pgfmathfloat@loc@TMPa}%
                    \let\pgfmathfloat@loc@TMPb=\pgfmathresult
                \fi
                \ifnum\c@pgfmath@counta>1\relax%
                    \pgfmathfloatmultiply@{\pgfmathfloat@loc@TMPa}{\pgfmathfloat@loc@TMPa}%
                    \let\pgfmathfloat@loc@TMPa=\pgfmathresult
                \fi%
                \divide\c@pgfmath@counta by2\relax%
        \repeatpgfmathloop%
    \else
        \pgfmathfloatgetflags{#1}\c@pgfmath@counta
        \ifnum0=\c@pgfmath@counta
            \pgfmathfloatgetflags{#2}\c@pgfmath@counta
            \ifnum0=\c@pgfmath@counta
                \pgfmathfloatcreate{1}{1.0}{0}%
            \else
                \pgfmathfloatcreate{0}{0.0}{0}%
            \fi
        \else
            \pgfmathfloatln@{#1}%
            \let\pgfmathfloat@loc@TMPa=\pgfmathresult
            \edef\pgfmathfloat@loc@TMPb{#2}%
            \pgfmathfloatmultiply@{\pgfmathfloat@loc@TMPa}{\pgfmathfloat@loc@TMPb}%
            \pgfmathfloatexp@{\pgfmathresult}%
        \fi
    \fi
}%

\def\pgfmathfloat@definemethodfrombasic@NOARG#1{%
    \pgfutil@ifundefined{pgfmath@basic@#1@}{%
        \pgfutil@namelet{pgfmath@basic@#1@}{pgfmath#1@}%
    }{}%
    \edef\pgfmathfloat@glob@TMP{%
        \expandafter\noexpand\csname pgfmath@basic@#1@\endcsname
        \noexpand\pgfmathfloatparsenumber{\noexpand\pgfmathresult}%
    }%
    \expandafter\let\csname pgfmathfloat#1@\endcsname=\pgfmathfloat@glob@TMP%
    \expandafter\let\csname pgfmathfloat#1\endcsname=\pgfmathfloat@glob@TMP%
}%
\def\pgfmathfloat@definemethodfrombasic@ONEARG#1{%
    \pgfutil@ifundefined{pgfmath@basic@#1@}{%
        \pgfutil@namelet{pgfmath@basic@#1@}{pgfmath#1@}%
    }{}%
    \edef\pgfmathfloat@glob@TMP##1{%
        \noexpand\pgfmathfloattofixed{##1}%
        \noexpand\expandafter
        \expandafter\noexpand\csname pgfmath@basic@#1@\endcsname\noexpand\expandafter%
            {\noexpand\pgfmathresult}%
        \noexpand\pgfmathfloatparsenumber{\noexpand\pgfmathresult}%
    }%
    \expandafter\let\csname pgfmathfloat#1@\endcsname=\pgfmathfloat@glob@TMP%
    \expandafter\let\csname pgfmathfloat#1\endcsname=\pgfmathfloat@glob@TMP%
}%
\def\pgfmathfloat@definemethodfrombasic@TWOARGS#1{%
    \pgfutil@ifundefined{pgfmath@basic@#1@}{%
        \pgfutil@namelet{pgfmath@basic@#1@}{pgfmath#1@}%
    }{}%
    \edef\pgfmathfloat@glob@TMP##1##2{%
        \noexpand\pgfmathfloattofixed{##2}%
        \noexpand\let\noexpand\pgfmathfloat@loc@TMPa=\noexpand\pgfmathresult
        \noexpand\pgfmathfloattofixed{##1}%
        \noexpand\expandafter
        \expandafter\noexpand\csname pgfmath@basic@#1@\endcsname\noexpand\expandafter%
            {\noexpand\pgfmathresult}{\noexpand\pgfmathfloat@loc@TMPa}%
        \noexpand\pgfmathfloatparsenumber{\noexpand\pgfmathresult}%
    }%
    \expandafter\let\csname pgfmathfloat#1@\endcsname=\pgfmathfloat@glob@TMP%
    \expandafter\let\csname pgfmathfloat#1\endcsname=\pgfmathfloat@glob@TMP%
}%
\pgfmathfloat@definemethodfrombasic@NOARG{rand}%
\pgfmathfloat@definemethodfrombasic@NOARG{rnd}%
\pgfmathfloat@definemethodfrombasic@NOARG{false}%
\pgfmathfloat@definemethodfrombasic@NOARG{true}%
\pgfmathfloat@definemethodfrombasic@ONEARG{asin}%
\pgfmathfloat@definemethodfrombasic@ONEARG{acos}%
\pgfmathfloat@definemethodfrombasic@ONEARG{not}%
\pgfmathfloat@definemethodfrombasic@ONEARG{hex}%
\pgfmathfloat@definemethodfrombasic@ONEARG{Hex}%
\pgfmathfloat@definemethodfrombasic@ONEARG{oct}%
\pgfmathfloat@definemethodfrombasic@ONEARG{bin}%
\pgfmathfloat@definemethodfrombasic@TWOARGS{and}%
\pgfmathfloat@definemethodfrombasic@TWOARGS{or}%

\pgfutil@ifundefined{pgfmathdeclarefunction}{%
    \let\pgfmath@basic@rand=\pgfmathrand
    \let\pgfmath@basic@rand@=\pgfmathrand@
    \def\pgfmathfloatrand@{%
        \pgfmath@basic@rand
        \pgfmathfloatparsenumber{\pgfmathresult}%
    }%
    \let\pgfmathfloatrand=\pgfmathfloatrand@%
    \let\pgfmath@basic@rnd=\pgfmathrnd
    \let\pgfmath@basic@rnd@=\pgfmathrnd@
    \def\pgfmathfloatrnd@{%
        \pgfmath@basic@rnd
        \pgfmathfloatparsenumber{\pgfmathresult}%
    }%
    \let\pgfmathfloatrnd=\pgfmathfloatrnd@%
}{}%

\def\pgfmathfloatfactorial@#1{%
    \begingroup
    \pgfmathfloattofixed{#1}%
    \afterassignment\pgfmath@gobbletilpgfmath@%
    \expandafter\c@pgfmath@counta\pgfmathresult\relax\pgfmath@%
    \pgfmathfloatcreate{1}{1.0}{0}%
    \let\pgfmathfloat@loc@TMPa=\pgfmathresult
    \pgfmathloop
    \ifnum\c@pgfmath@counta<2 %
    \else
        \expandafter\pgfmathfloatparsenumber\expandafter{\the\c@pgfmath@counta}%
        \expandafter\pgfmathfloatmultiply@\expandafter{\pgfmathresult}{\pgfmathfloat@loc@TMPa}%
        \let\pgfmathfloat@loc@TMPa=\pgfmathresult
        \advance\c@pgfmath@counta by-1\relax%
    \repeatpgfmathloop
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

\def\pgfmathfloatveclen@#1#2{%
    \begingroup
    \edef\pgfmathfloat@@a{#1}%
    \pgfmathfloatmultiply@{\pgfmathfloat@@a}{\pgfmathfloat@@a}%
    \let\pgfmathfloat@@a=\pgfmathresult
    \edef\pgfmathfloat@@b{#2}%
    \pgfmathfloatmultiply@{\pgfmathfloat@@b}{\pgfmathfloat@@b}%
    \let\pgfmathfloat@@b=\pgfmathresult
    \pgfmathfloatadd@{\pgfmathfloat@@a}{\pgfmathfloat@@b}%
    \pgfmathfloatsqrt@{\pgfmathresult}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

\def\pgfmathfloatcosh@#1{%
    \begingroup
    \pgfmathfloatexp@{#1}%
    \let\pgfmathfloat@@a=\pgfmathresult
    \pgfmathfloatneg@{#1}%
    \pgfmathfloatexp@{\pgfmathresult}%
    \pgfmathfloatadd@{\pgfmathresult}{\pgfmathfloat@@a}%
    \expandafter\pgfmathfloatmultiplyfixed@\expandafter{\pgfmathresult}{0.5}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\def\pgfmathfloatsinh@#1{%
    \begingroup
    \pgfmathfloatexp@{#1}%
    \let\pgfmathfloat@@a=\pgfmathresult
    \pgfmathfloatneg@{#1}%
    \pgfmathfloatexp@{\pgfmathresult}%
    \pgfmathfloatsubtract@{\pgfmathfloat@@a}{\pgfmathresult}%
    \expandafter\pgfmathfloatmultiplyfixed@\expandafter{\pgfmathresult}{0.5}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\def\pgfmathfloattanh@#1{%
    \begingroup
    \pgfmathfloatsinh@{#1}%
    \let\pgfmathfloat@@a=\pgfmathresult
    \pgfmathfloatcosh@{#1}%
    \let\pgfmathfloat@@b=\pgfmathresult
    \pgfmathfloatdivide@{\pgfmathfloat@@a}{\pgfmathfloat@@b}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryfpu.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryintersections.code.tex ====


\usepgflibrary{fpu}%

\newcount\pgf@intersect@solutions

\newif\ifpgf@intersect@sort
\newif\ifpgf@intersect@sort@by@second@path

\def\pgfintersectionsortbyfirstpath{%
    \pgf@intersect@sorttrue%
    \pgf@intersect@sort@by@second@pathfalse%
}%

\def\pgfintersectionsortbysecondpath{%
    \pgf@intersect@sorttrue%
    \pgf@intersect@sort@by@second@pathtrue%
}%

\def\pgfpointintersectionsolution#1{%
    \ifnum#1<1\relax%
        \pgfpoint@intersect@solution@orgin%
    \else%
        \ifnum#1>\pgfintersectionsolutions\relax%
            \pgfpoint@intersect@solution@orgin%
        \else%
            \csname pgfpoint@intersect@solution@#1\endcsname%
        \fi%
    \fi%
}%

\def\pgfintersectiongetsolutionsegmentindices#1#2#3{%
    \ifnum#1<1\relax%
        \let#2=\pgfutil@empty
        \let#3=\pgfutil@empty
    \else%
        \ifnum#1>\pgfintersectionsolutions\relax%
            \let#2=\pgfutil@empty
            \let#3=\pgfutil@empty
        \else%
            \def\pgf@temp##1##2##3##4{%
                \edef#2{##1}%
                \edef#3{##2}%
            }%
            \expandafter\let\expandafter\pgf@tempb\csname pgf@intersect@solution@props@#1\endcsname
            \expandafter\pgf@temp\pgf@tempb
        \fi%
    \fi%
}%

\def\pgfintersectiongetsolutiontimes#1#2#3{%
    \ifnum#1<1\relax%
        \let#2=\pgfutil@empty
        \let#3=\pgfutil@empty
    \else%
        \ifnum#1>\pgfintersectionsolutions\relax%
            \let#2=\pgfutil@empty
            \let#3=\pgfutil@empty
        \else%
            \def\pgf@temp##1##2##3##4{%
                \edef#2{##3}%
                \edef#3{##4}%
                \ifx#2\pgfutil@empty \edef#2{##1}\fi
                \ifx#3\pgfutil@empty \edef#3{##2}\fi
            }%
            \expandafter\let\expandafter\pgf@tempb\csname pgf@intersect@solution@props@#1\endcsname
            \expandafter\pgf@temp\pgf@tempb
        \fi%
    \fi%
}%

\def\pgfpoint@intersect@solution@orgin{%
    \begingroup%
        \pgftransforminvert%
        \pgfpointorigin%
        \pgf@pos@transform@glob
        \global\pgf@x=\pgf@x%
        \global\pgf@y=\pgf@y%
    \endgroup%
}%

\long\def\pgfintersectionofpaths#1#2{%
    \begingroup%
        \pgfinterruptpath%
        #1%
        \pgfgetpath\pgf@intersect@path@a%
        \global\let\pgf@intersect@path@temp=\pgf@intersect@path@a%
        \endpgfinterruptpath%
    \endgroup%
    \let\pgf@intersect@path@a=\pgf@intersect@path@temp%
    \begingroup%
        \pgfinterruptpath%
        #2%
        \pgfgetpath\pgf@intersect@path@b%
        \global\let\pgf@intersect@path@temp=\pgf@intersect@path@b%
        \endpgfinterruptpath%
    \endgroup%
    \let\pgf@intersect@path@b=\pgf@intersect@path@temp%
    \pgf@intersect@solutions=0\relax%
    \pgf@intersect@path@reset@a
    \ifpgf@intersect@sort@by@second@path%
        \let\pgf@intersect@temp=\pgf@intersect@path@a%
        \let\pgf@intersect@path@a=\pgf@intersect@path@b%
        \let\pgf@intersect@path@b=\pgf@intersect@temp%
    \fi%
    \pgfprocessround\pgf@intersect@path@a\pgf@intersect@path@a%
    \pgfprocessround\pgf@intersect@path@b\pgf@intersect@path@b%
    \let\pgf@intersect@token@after=\pgf@intersect@path@process@a%
    \expandafter\pgf@intersectionofpaths\pgf@intersect@path@a\pgf@stop%
    \edef\pgfintersectionsolutions{\the\pgf@intersect@solutions}%
    \pgfmathloop%
        \ifnum\pgfmathcounter>\pgfintersectionsolutions\relax%
        \else%
            \pgfutil@namelet{pgfpoint@intersect@solution@\pgfmathcounter}%
                {pgfpoint@g@intersect@solution@\pgfmathcounter}%
            \edef\pgf@marshal{\noexpand\pgf@intersection@set@properties{\csname pgfpoint@g@intersect@solution@\pgfmathcounter @props\endcsname}}%
            \pgf@marshal
            \ifpgf@intersect@sort%
                \pgfutil@namelet{pgf@intersect@solution@\pgfmathcounter @time@a}%
                    {pgf@g@intersect@solution@\pgfmathcounter @time@a}%
            \fi%
    \repeatpgfmathloop%
    \ifpgf@intersect@sort%
        \pgfintersectionsolutionsortbytime%
    \fi%
}%

\def\pgf@intersection@set@properties#1{%
    \pgfutil@namedef{pgf@intersect@solution@props@\pgfmathcounter}{#1}%
}%

\def\pgf@intersection@store@properties#1{%
    \expandafter\xdef\csname #1@props\endcsname{{\pgf@intersect@time@offset}{\pgf@intersect@time@offset@b}{\pgf@intersect@time@a}{\pgf@intersect@time@b}}%
}%

\def\pgf@intersectionofpaths#1{%
    \ifx#1\pgf@stop%
        \let\pgf@intersect@next=\relax%
    \else%
        \ifx#1\pgfsyssoftpath@movetotoken%
            \let\pgf@intersect@next=\pgf@intersect@token@moveto%
        \else%
            \ifx#1\pgfsyssoftpath@linetotoken%
                \let\pgf@intersect@next=\pgf@intersect@token@lineto%
            \else%
                \ifx#1\pgfsyssoftpath@closepathtoken%
                    \let\pgf@intersect@next=\pgf@intersect@token@lineto%
                \else%
                    \ifx#1\pgfsyssoftpath@curvetosupportatoken%
                        \let\pgf@intersect@next=\pgf@intersect@token@curveto%
                    \else%
                        \ifx#1\pgfsyssoftpath@rectcornertoken%
                            \let\pgf@intersect@next=\pgf@intersect@token@rect%
                        \fi%
                    \fi%
                \fi%
            \fi%
        \fi%
    \fi%
    \pgf@intersect@next}%

\def\pgf@intersect@token@moveto#1#2{%
    \def\pgfpoint@intersect@start{\pgfqpoint{#1}{#2}}%
    \pgf@intersectionofpaths%
}%

\def\pgf@intersect@token@lineto#1#2{%
    \def\pgfpoint@intersect@end{\pgfqpoint{#1}{#2}}%
    \def\pgf@intersect@type{line}%
    \pgf@intersect@token@after%
}%
\def\pgf@intersect@token@curveto#1#2\pgfsyssoftpath@curvetosupportbtoken#3#4\pgfsyssoftpath@curvetotoken#5#6{%
    \def\pgfpoint@intersect@firstsupport{\pgfqpoint{#1}{#2}}%
    \def\pgfpoint@intersect@secondsupport{\pgfqpoint{#3}{#4}}%
    \def\pgfpoint@intersect@end{\pgfqpoint{#5}{#6}}%
    \def\pgf@intersect@type{curve}%
    \pgf@intersect@token@after%
}%

\def\pgf@intersect@token@rect#1#2\pgfsyssoftpath@rectsizetoken#3#4{%
    \pgf@xa=#1\relax%
    \advance\pgf@xa by#3\relax%
    \pgf@ya=#2\relax%
    \advance\pgf@ya by#4\relax%
    \edef\pgf@marshal{%
        \noexpand\pgfsyssoftpath@movetotoken{#1}{#2}%
        \noexpand\pgfsyssoftpath@linetotoken{#1}{\the\pgf@ya}%
        \noexpand\pgfsyssoftpath@linetotoken{\the\pgf@xa}{\the\pgf@ya}%
        \noexpand\pgfsyssoftpath@linetotoken{\the\pgf@xa}{#2}%
        \noexpand\pgfsyssoftpath@closepathtoken{#1}{#2}%
    }%
    \expandafter\pgf@intersectionofpaths\pgf@marshal%
}%

\def\pgf@intersect@path@process@a{%
    \pgf@intersect@path@getpoints@a%
    \let\pgf@intersect@token@after=\pgf@intersect@path@process@b%
    \pgf@intersect@path@reset@b
    \expandafter\pgf@intersectionofpaths\pgf@intersect@path@b\pgf@stop%
    \let\pgfpoint@intersect@start=\pgfpoint@intersect@end@a%
    \let\pgf@intersect@token@after=\pgf@intersect@path@process@a%
    \c@pgf@counta=\pgf@intersect@time@offset\relax%
    \advance\c@pgf@counta by1\relax%
    \edef\pgf@intersect@time@offset{\the\c@pgf@counta}%
    \pgf@intersectionofpaths%
}%

\def\pgf@intersect@path@reset@a{%
    \def\pgf@intersect@time@offset{0}%
    \def\pgf@intersect@time@a{}%
}%

\def\pgf@intersect@path@reset@b{%
    \def\pgf@intersect@time@offset@b{0}%
    \def\pgf@intersect@time@b{}%
}%

\def\pgf@intersect@path@getpoints@a{%
    \let\pgfpoint@intersect@start@a=\pgfpoint@intersect@start%
    \let\pgfpoint@intersect@end@a=\pgfpoint@intersect@end%
    \let\pgfpoint@intersect@firstsupport@a=\pgfpoint@intersect@firstsupport%
    \let\pgfpoint@intersect@secondsupport@a=\pgfpoint@intersect@secondsupport%
    \let\pgf@intersect@type@a=\pgf@intersect@type%
}%

\def\pgf@intersect@path@process@b{%
    \pgf@intersect@path@getpoints@b%
    \csname pgf@intersect@\pgf@intersect@type@a @and@\pgf@intersect@type@b\endcsname%
    \let\pgfpoint@intersect@start=\pgfpoint@intersect@end@b%
    \c@pgf@counta=\pgf@intersect@time@offset@b\relax%
    \advance\c@pgf@counta by1\relax%
    \edef\pgf@intersect@time@offset@b{\the\c@pgf@counta}%
    \pgf@intersectionofpaths}%

\def\pgf@intersect@path@getpoints@b{%
    \let\pgfpoint@intersect@start@b=\pgfpoint@intersect@start%
    \let\pgfpoint@intersect@end@b=\pgfpoint@intersect@end%
    \let\pgfpoint@intersect@firstsupport@b=\pgfpoint@intersect@firstsupport%
    \let\pgfpoint@intersect@secondsupport@b=\pgfpoint@intersect@secondsupport%
    \let\pgf@intersect@type@b=\pgf@intersect@type%
}%

\def\pgf@intersect@line@and@line{%
    \pgf@intersectionoflines{\pgfpoint@intersect@start@a}{\pgfpoint@intersect@end@a}%
        {\pgfpoint@intersect@start@b}{\pgfpoint@intersect@end@b}%
}%

\def\pgf@intersect@line@and@curve{%
    \pgf@intersectionoflineandcurve%
        {\pgf@process{\pgfpoint@intersect@start@a}}{\pgf@process{\pgfpoint@intersect@end@a}}%
        {\pgf@process{\pgfpoint@intersect@start@b}}{\pgf@process{\pgfpoint@intersect@firstsupport@b}}%
        {\pgf@process{\pgfpoint@intersect@secondsupport@b}}{\pgf@process{\pgfpoint@intersect@end@b}}%
}%

\def\pgf@intersect@curve@and@line{%
    \pgf@intersectionofcurveandline%
        {\pgf@process{\pgfpoint@intersect@start@a}}{\pgf@process{\pgfpoint@intersect@firstsupport@a}}%
        {\pgf@process{\pgfpoint@intersect@secondsupport@a}}{\pgf@process{\pgfpoint@intersect@end@a}}%
        {\pgf@process{\pgfpoint@intersect@start@b}}{\pgf@process{\pgfpoint@intersect@end@b}}%
}%

\def\pgf@intersect@curve@and@curve{%
    \pgf@intersectionofcurves%
        {\pgf@process{\pgfpoint@intersect@start@a}}{\pgf@process{\pgfpoint@intersect@firstsupport@a}}%
        {\pgf@process{\pgfpoint@intersect@secondsupport@a}}{\pgf@process{\pgfpoint@intersect@end@a}}%
        {\pgf@process{\pgfpoint@intersect@start@b}}{\pgf@process{\pgfpoint@intersect@firstsupport@b}}%
        {\pgf@process{\pgfpoint@intersect@secondsupport@b}}{\pgf@process{\pgfpoint@intersect@end@b}}%
}%


\def\pgfintersectionoflines#1#2#3#4{%
    \pgf@intersect@solutions=0\relax%
    \pgf@intersectionoflines{#1}{#2}{#3}{#4}%
}%

\def\pgf@intersectionoflines#1#2#3#4{%
    \pgf@iflinesintersect{#1}{#2}{#3}{#4}%
    {%
        \pgfextract@process\pgf@intersect@solution@candidate{%
        }%
        \pgf@ifsolution@duplicate{\pgf@intersect@solution@candidate}{%
        }{%
            \global\advance\pgf@intersect@solutions by1\relax%
            \expandafter\global\expandafter\let\csname pgfpoint@g@intersect@solution@\the\pgf@intersect@solutions\endcsname=\pgf@intersect@solution@candidate
            \ifpgf@intersect@sort%
                \pgf@process{\pgf@intersect@solution@candidate}%
                \pgf@xc=\pgf@x%
                \pgf@yc=\pgf@y%
                \pgf@process{\pgfpointdiff{\pgfpoint@intersect@start@a}{\pgfpoint@intersect@end@a}}%
                \edef\pgf@marshal{%
                    \noexpand\pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
                }%
                \pgf@marshal%
                \let\pgf@intersect@length@a=\pgfmathresult%
                \pgf@process{\pgfpointdiff{\pgfpoint@intersect@start@a}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}%
                \edef\pgf@marshal{%
                    \noexpand\pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
                }%
                \pgf@marshal%
                \pgfmathdivide@{\pgfmathresult}{\pgf@intersect@length@a}%
                \pgf@x=\pgfmathresult pt\relax%
                \advance\pgf@x by\pgf@intersect@time@offset pt\relax%
                \edef\pgf@intersect@time@a{\pgfmath@tonumber{\pgf@x}}%
                \expandafter\global\expandafter\let\csname pgf@g@intersect@solution@\the\pgf@intersect@solutions @time@a\endcsname=
                    \pgf@intersect@time@a
            \else
                \let\pgf@intersect@time@a=\pgfutil@empty
            \fi%
            \let\pgf@intersect@time@b=\pgfutil@empty
            \pgf@intersection@store@properties{pgfpoint@g@intersect@solution@\the\pgf@intersect@solutions}%
        }%
    }{%
    }%
}%

\newif\ifpgf@s
\newif\ifpgf@t
\def\pgfiflinesintersect#1#2#3#4{%
    \begingroup%
        \pgf@iflinesintersect{\pgf@process{#1}}{\pgf@process{#2}}{\pgf@process{#3}}{\pgf@process{#4}}%
            {\aftergroup\pgfutil@firstoftwo}{\aftergroup\pgfutil@secondoftwo}%
    \endgroup%
}%

\def\pgf@intersections@version{2}%

\def\pgf@iflinesintersect#1#2#3#4{%
    \pgf@intersect@boundingbox@reset%
    \pgf@intersect@boundingbox@update{#1}%
    \pgf@intersect@boundingbox@update{#2}%
    \pgf@intersect@boundingbox@assign@b%
    \pgf@intersect@boundingbox@reset%
    \pgf@intersect@boundingbox@update{#3}%
    \pgf@intersect@boundingbox@update{#4}%
    \pgf@intersect@boundingbox@assign@a%
    \pgf@intersect@boundingbox@a%
    \pgf@intersect@boundingbox@b%
    \pgf@intersect@boundingbox@ifoverlap@upperbound{%
        \pgf@iflinesintersect@{#1}{#2}{#3}{#4}%
    }{%
        \let\pgf@intersect@next=\pgfutil@secondoftwo%
    }%
    \pgf@intersect@next%
}%

\def\pgf@iflinesintersect@#1#2#3#4{%
    #1\relax%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    #2\relax%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    #3\relax%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    #4\relax%
    \edef\pgf@intersect@A{%
        \pgf@xa=\the\pgf@xa\space
        \pgf@ya=\the\pgf@ya\space
    }%
    \advance\pgf@xb by-\pgf@xa
    \advance\pgf@yb by-\pgf@ya
    \advance\pgf@xa by-\pgf@xc
    \advance\pgf@ya by-\pgf@yc
    \pgf@xa=-\pgf@xa
    \pgf@ya=-\pgf@ya
    \advance\pgf@xc by-\pgf@x
    \advance\pgf@yc by-\pgf@y
    \begingroup
    \ifdim\pgf@xb<0sp \pgf@xb=-\pgf@xb\fi
    \ifdim\pgf@yb<0sp \pgf@yb=-\pgf@yb\fi
    \advance\pgf@xb by\pgf@yb
    \xdef\pgf@intersect@len@a{\pgf@sys@tonumber\pgf@xb}%
    \ifdim\pgf@xc<0sp \pgf@xc=-\pgf@xc\fi
    \ifdim\pgf@yc<0sp \pgf@yc=-\pgf@yc\fi
    \advance\pgf@xc by\pgf@yc
    \xdef\pgf@intersect@len@b{\pgf@sys@tonumber\pgf@xc}%
    \endgroup
    \edef\pgf@marshal{%
        \noexpand\pgfutilsolvetwotwoleqfloat{%
            {\pgf@sys@tonumber\pgf@xb}{\pgf@sys@tonumber\pgf@xc}%
            {\pgf@sys@tonumber\pgf@yb}{\pgf@sys@tonumber\pgf@yc}%
        }{%
            {\pgf@sys@tonumber\pgf@xa}%
            {\pgf@sys@tonumber\pgf@ya}%
        }%
    }%
    \pgf@marshal
    \let\pgf@intersect@next=\pgfutil@secondoftwo%
    \ifx\pgfmathresult\pgfutil@empty
    \else
        \def\pgf@marshal##1##2{%
            \global\pgf@x=##1pt %
            \global\pgf@y=##2pt %
        }%
        \expandafter\pgf@marshal\pgfmathresult
        \def\pgf@marshal{XXXX}%
        \ifdim\pgf@x<0sp
            \pgf@xa=-\pgf@intersect@len@a\pgf@x
            \ifdim\pgf@xa<\pgfintersectiontolerance\relax
                \def\pgf@marshal{1}%
            \else
                \def\pgf@marshal{0}%
            \fi
        \else
            \ifdim\pgf@x>1pt
                \pgf@xa=\pgf@intersect@len@a\pgf@x
                \advance\pgf@xa by-\pgf@intersect@len@a pt %
                \ifdim\pgf@xa<\pgfintersectiontolerance\relax
                    \def\pgf@marshal{1}%
                \else
                    \def\pgf@marshal{0}%
                \fi
            \else
                \def\pgf@marshal{1}%
            \fi
        \fi
        \if1\pgf@marshal
            \ifdim\pgf@y<0sp
                \pgf@xa=-\pgf@intersect@len@b\pgf@y
                \ifdim\pgf@xa<\pgfintersectiontolerance\relax
                    \def\pgf@marshal{1}%
                \else
                    \def\pgf@marshal{0}%
                \fi
            \else
                \ifdim\pgf@y>1pt
                    \pgf@xa=\pgf@intersect@len@b\pgf@y
                    \advance\pgf@xa by-\pgf@intersect@len@b pt %
                    \ifdim\pgf@xa<\pgfintersectiontolerance\relax
                        \def\pgf@marshal{1}%
                    \else
                        \def\pgf@marshal{0}%
                    \fi
                \else
                    \def\pgf@marshal{1}%
                \fi
            \fi
        \fi
        \if1\pgf@marshal
            \pgf@intersect@A
            \pgf@yc=\pgf@x
            \global\pgf@x=\pgf@sys@tonumber\pgf@xb\pgf@yc
            \global\pgf@y=\pgf@sys@tonumber\pgf@yb\pgf@yc
            \global\advance\pgf@x by \pgf@xa
            \global\advance\pgf@y by \pgf@ya
            \let\pgf@intersect@next=\pgfutil@firstoftwo%
        \fi
    \fi
}%




\def\pgfintersectionoflineandcurve#1#2#3#4#5#6{%
    \pgf@intersect@solutions=0\relax%
    \pgf@intersectionoflineandcurve{#1}{#2}{#3}{#4}{#5}{#6}%
}%

\def\pgf@intersectionoflineandcurve#1#2#3#4#5#6{%
    \pgf@intersectionofcurves%
        {\pgf@process{#1}}%
        {%
            \pgf@process{%
                \pgfpointadd{#1\relax\pgf@x=0.666666\pgf@x\pgf@y=0.666666\pgf@y}%
                    {#2\relax\pgf@x=0.333333\pgf@x\pgf@y=0.333333\pgf@y}%
            }%
        }%
        {%
            \pgf@process{%
                \pgfpointadd{#1\relax\pgf@x=0.333333\pgf@x\pgf@y=0.333333\pgf@y}%
                    {#2\relax\pgf@x=0.666666\pgf@x\pgf@y=0.666666\pgf@y}%
            }%
        }%
        {\pgf@process{#2}}%
        {\pgf@process{#3}}%
        {\pgf@process{#4}}%
        {\pgf@process{#5}}%
        {\pgf@process{#6}}%
}%

\def\pgf@intersectionofcurveandline#1#2#3#4#5#6{%
    \pgf@intersectionofcurves%
        {\pgf@process{#1}}%
        {\pgf@process{#2}}%
        {\pgf@process{#3}}%
        {\pgf@process{#4}}%
        {\pgf@process{#5}}%
        {%
            \pgf@process{%
                \pgfpointadd{#5\relax\pgf@x=0.666666\pgf@x\pgf@y=0.666666\pgf@y}%
                    {#6\relax\pgf@x=0.333333\pgf@x\pgf@y=0.333333\pgf@y}%
            }%
        }%
        {%
            \pgf@process{%
                \pgfpointadd{#5\relax\pgf@x=0.333333\pgf@x\pgf@y=0.333333\pgf@y}%
                    {#6\relax\pgf@x=0.666666\pgf@x\pgf@y=0.666666\pgf@y}%
            }%
        }%
        {\pgf@process{#6}}%
}%




\def\pgfintersectiontolerance{0.1pt}%
\def\pgfintersectiontoleranceupperbound{1pt}%
\def\pgfintersectiontolerancefactor{0.1}%



\def\pgfpointintersectionofcurves#1#2#3#4#5#6#7#8#9{%
    \pgf@intersect@solutions=0\relax%
    \pgf@intersectionofcurves%
        {\pgf@process{#1}}{\pgf@process{#2}}{\pgf@process{#3}}{\pgf@process{#4}}%
        {\pgf@process{#5}}{\pgf@process{#6}}{\pgf@process{#7}}{\pgf@process{#8}}%
    \pgfpointintersectionsolution{#9}%
}%

\def\pgfintersectionofcurves#1#2#3#4#5#6#7#8{%
    \pgf@intersect@solutions=0\relax%
    \pgf@intersectionofcurves%
        {\pgf@process{#1}}{\pgf@process{#2}}{\pgf@process{#3}}{\pgf@process{#4}}%
        {\pgf@process{#5}}{\pgf@process{#6}}{\pgf@process{#7}}{\pgf@process{#8}}%
}%
\def\pgf@intersectionofcurves#1#2#3#4#5#6#7#8{%
    \begingroup%
        \dimendef\pgf@time@a=2\relax%
        \dimendef\pgf@time@aa=4\relax%
        \dimendef\pgf@time@b=6\relax%
        \dimendef\pgf@time@bb=8\relax%
        \pgf@time@a=0pt\relax%
        \pgf@time@aa=1pt\relax%
        \pgf@time@b=0pt\relax%
        \pgf@time@bb=1pt\relax%
        \let\pgf@intersect@subdivide@curve=\pgf@intersect@subdivide@curve@b%
        \let\pgf@curve@subdivde@after=\pgf@@intersectionofcurves%
        \pgf@@intersectionofcurves{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
    \endgroup%
}%

\def\pgf@intersect@boundingbox@assign@a{%
    \edef\pgf@intersect@boundingbox@a{%
        \noexpand\pgf@xb=\the\pgf@xa\space%
        \noexpand\pgf@yb=\the\pgf@ya\space%
        \noexpand\pgf@xc=\the\pgf@xb\space%
        \noexpand\pgf@yc=\the\pgf@yb\space%
    }%
}%
\def\pgf@intersect@boundingbox@assign@b{%
    \edef\pgf@intersect@boundingbox@b{%
        \noexpand\global\noexpand\pgf@x=\the\pgf@xa\space%
        \noexpand\global\noexpand\pgf@y=\the\pgf@ya\space%
        \noexpand\pgf@xa=\the\pgf@xb\space%
        \noexpand\pgf@ya=\the\pgf@yb\space%
    }%
}%

\def\pgf@intersect@boundingbox@ifoverlap{%
    \def\pgf@intersect@next{\pgfutil@secondoftwo}%
    \ifdim\pgf@xa<\pgf@xb%
    \else%
        \ifdim\pgf@x>\pgf@xc%
        \else%
            \ifdim\pgf@ya<\pgf@yb%
            \else%
                \ifdim\pgf@y>\pgf@yc%
                \else%
                    \def\pgf@intersect@next{\pgfutil@firstoftwo}%
                \fi
            \fi
        \fi
    \fi
    \pgf@intersect@next
}%
\def\pgf@intersect@boundingbox@ifoverlap@upperbound{%
    \begingroup
    \def\pgf@intersect@next{\pgfutil@secondoftwo}%
    \advance\pgf@xa by+\pgfintersectiontolerance\relax
    \ifdim\pgf@xa<\pgf@xb%
    \else%
        \global\advance\pgf@x by-\pgfintersectiontolerance\relax
        \ifdim\pgf@x>\pgf@xc%
        \else%
            \advance\pgf@ya by\pgfintersectiontolerance\relax
            \ifdim\pgf@ya<\pgf@yb%
            \else%
                \global\advance\pgf@y by-\pgfintersectiontolerance\relax
                \ifdim\pgf@y>\pgf@yc%
                \else%
                    \def\pgf@intersect@next{\pgfutil@firstoftwo}%
                \fi
            \fi
        \fi
    \fi
    \expandafter
    \endgroup
    \pgf@intersect@next
}%
\def\pgf@intersect@boundingbox@ifoverlap@UNUSED{%
    \let\pgf@intersect@next=\pgfutil@secondoftwo%
    \ifdim\pgf@xa<\pgf@xb%
    \else%
        \ifdim\pgf@x>\pgf@xc%
        \else%
            \ifdim\pgf@ya<\pgf@yb%
            \else%
                \ifdim\pgf@y>\pgf@yc%
                \else%
                    \let\pgf@intersect@next=\pgfutil@firstoftwo%
                \fi
            \fi
        \fi
    \fi
    \pgf@intersect@next
}%
\def\pgf@@intersectionofcurves#1#2#3#4#5#6#7#8{%
    \pgf@intersect@boundingbox@reset%
    \pgf@intersect@boundingbox@update{#1}%
    \pgf@intersect@boundingbox@update{#2}%
    \pgf@intersect@boundingbox@update{#3}%
    \pgf@intersect@boundingbox@update{#4}%
    \pgf@intersect@boundingbox@assign@b%
    \pgf@intersect@boundingbox@reset%
    \pgf@intersect@boundingbox@update{#5}%
    \pgf@intersect@boundingbox@update{#6}%
    \pgf@intersect@boundingbox@update{#7}%
    \pgf@intersect@boundingbox@update{#8}%
    \pgf@intersect@boundingbox@assign@a%
    \pgf@intersect@boundingbox@a%
    \pgf@intersect@boundingbox@b%
    \pgf@intersect@boundingbox@ifoverlap{%
        \pgf@@@intersectionofcurves{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
    }{%
    }%
}%

\def\pgf@@@intersectionofcurves#1#2#3#4#5#6#7#8{%
                    \advance\pgf@xc by-\pgf@xb%
                    \advance\pgf@yc by-\pgf@yb%
                    \advance\pgf@xa by-\pgf@x%
                    \advance\pgf@ya by-\pgf@y%
                    \let\pgf@intersect@subdivde=\relax%
                    \ifdim\pgf@xc<\pgfintersectiontolerance\relax%
                        \ifdim\pgf@xa<\pgfintersectiontolerance\relax%
                            \ifdim\pgf@yc<\pgfintersectiontolerance\relax%
                                \ifdim\pgf@ya<\pgfintersectiontolerance\relax%
                                    \pgfextract@process\pgf@intersect@solution@candidate{%
                                        \pgf@intersect@boundingbox@a%
                                        \pgf@intersect@boundingbox@b%
                                        \pgf@x=0.25\pgf@x%
                                        \advance\pgf@x by0.25\pgf@xa%
                                        \advance\pgf@x by0.25\pgf@xb%
                                        \advance\pgf@x by0.25\pgf@xc%
                                        \pgf@y=0.25\pgf@y%
                                        \advance\pgf@y by0.25\pgf@ya%
                                        \advance\pgf@y by0.25\pgf@yb%
                                        \advance\pgf@y by0.25\pgf@yc%
                                    }%
                                    \let\pgf@intersect@subdivde=\pgf@stop%
                                    \pgf@ifsolution@duplicate\pgf@intersect@solution@candidate{}%
                                    {%
                                        \global\advance\pgf@intersect@solutions by1\relax%
                                        \begingroup
                                        \advance\pgf@time@a by\pgf@time@aa%
                                        \divide\pgf@time@a by2\relax%
                                        \advance\pgf@time@a by\pgf@intersect@time@offset pt\relax%
                                        \edef\pgf@intersect@time@a{\pgfmath@tonumber{\pgf@time@a}}%
                                        \advance\pgf@time@b by\pgf@time@bb%
                                        \divide\pgf@time@b by2\relax%
                                        \advance\pgf@time@b by\pgf@intersect@time@offset@b pt\relax%
                                        \edef\pgf@intersect@time@b{\pgfmath@tonumber{\pgf@time@b}}%
                                        \pgf@intersection@store@properties{pgfpoint@g@intersect@solution@\the\pgf@intersect@solutions}%
                                        \expandafter\global\expandafter\let%
                                            \csname pgfpoint@g@intersect@solution@\the\pgf@intersect@solutions\endcsname=%
                                                \pgf@intersect@solution@candidate%
                                        \ifpgf@intersect@sort%
                                            \expandafter\xdef%
                                            \csname pgf@g@intersect@solution@\the\pgf@intersect@solutions @time@a\endcsname%
                                                {\pgf@intersect@time@a}%
                                        \fi%
                                        \endgroup
                                    }%
                                \fi%
                            \fi%
                        \fi%
                    \fi%
                    \ifx\pgf@intersect@subdivde\pgf@stop%
                    \else%
                        \pgf@intersect@subdivide@curve{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
                    \fi%
}%

\def\pgf@intersect@subdivide@curve@b#1#2#3#4#5#6#7#8{%
    \begingroup%
        \advance\pgf@time@bb by\pgf@time@b\relax%
        \divide\pgf@time@bb by2\relax%
        \let\pgf@intersect@subdivide@curve=\pgf@intersect@subdivide@curve@a%
        \pgf@curve@subdivide@left{#5}{#6}{#7}{#8}{#1}{#2}{#3}{#4}%
    \endgroup%
    \begingroup%
        \advance\pgf@time@b by\pgf@time@bb\relax%
        \divide\pgf@time@b by2\relax%
        \let\pgf@intersect@subdivide@curve=\pgf@intersect@subdivide@curve@a%
        \pgf@curve@subdivide@right{#5}{#6}{#7}{#8}{#1}{#2}{#3}{#4}%
    \endgroup%
}%

\def\pgf@intersect@subdivide@curve@a#1#2#3#4#5#6#7#8{%
    \begingroup%
        \advance\pgf@time@aa by\pgf@time@a\relax%
        \divide\pgf@time@aa by2\relax%
        \let\pgf@intersect@subdivide@curve=\pgf@intersect@subdivide@curve@b%
        \pgf@curve@subdivide@left{#5}{#6}{#7}{#8}{#1}{#2}{#3}{#4}%
    \endgroup%
    \begingroup%
        \advance\pgf@time@a by\pgf@time@aa\relax%
        \divide\pgf@time@a by2\relax%
        \let\pgf@intersect@subdivide@curve=\pgf@intersect@subdivide@curve@b%
        \pgf@curve@subdivide@right{#5}{#6}{#7}{#8}{#1}{#2}{#3}{#4}%
    \endgroup%
}%

\def\pgf@intersect@boundingbox@reset{%
    \pgf@xa=16000pt\relax%
    \pgf@ya=16000pt\relax%
    \pgf@xb=-16000pt\relax%
    \pgf@yb=-16000pt\relax%
}%

\def\pgf@intersect@boundingbox@update#1{%
    #1\relax%
    \ifdim\pgf@x<\pgf@xa\pgf@xa=\pgf@x\fi%
    \ifdim\pgf@y<\pgf@ya\pgf@ya=\pgf@y\fi%
    \ifdim\pgf@x>\pgf@xb\pgf@xb=\pgf@x\fi%
    \ifdim\pgf@y>\pgf@yb\pgf@yb=\pgf@y\fi%
}%


\def\pgf@float@adapter@setxy{%
    \pgfmathfloatparsenumber{\pgf@sys@tonumber\pgf@x}\let\pgf@fpu@x=\pgfmathresult
    \pgfmathfloatparsenumber{\pgf@sys@tonumber\pgf@y}\let\pgf@fpu@y=\pgfmathresult
}%
\def\pgf@float@adapter@mult#1=#2*#3{%
    \pgfmathfloatmultiplyfixed@{#3}{#2}%
    \let#1=\pgfmathresult
}%
\def\pgf@float@adapter@advance#1by#2*#3{%
    \pgfmathfloatmultiplyfixed@{#3}{#2}%
    \let\pgfutil@temp=\pgfmathresult
    \pgfmathfloatadd@{#1}{\pgfutil@temp}%
    \let#1=\pgfmathresult
}%

\def\pgf@float@adapter@tostring#1{%
    \pgfmathfloattofixed{#1}\edef#1{\pgfmathresult pt }%
}%

\def\pgf@curve@subdivide@left#1#2#3#4{%
    \begingroup
    #1\relax%
    \pgfutil@tempdima=\pgf@x%
    \pgfutil@tempdimb=\pgf@y%
    \pgf@float@adapter@setxy
    \pgf@float@adapter@mult\pgf@fpu@xa=.5*\pgf@fpu@x  \pgf@float@adapter@mult\pgf@fpu@ya=.5*\pgf@fpu@y%
    \pgf@float@adapter@mult\pgf@fpu@xb=.25*\pgf@fpu@x \pgf@float@adapter@mult\pgf@fpu@yb=.25*\pgf@fpu@y%
    \pgf@float@adapter@mult\pgf@fpu@xc=.125*\pgf@fpu@x\pgf@float@adapter@mult\pgf@fpu@yc=.125*\pgf@fpu@y%
    #2\relax%
    \pgf@float@adapter@setxy
    \pgf@float@adapter@advance\pgf@fpu@xa by.5*\pgf@fpu@x\pgf@float@adapter@advance\pgf@fpu@ya by.5*\pgf@fpu@y%
    \pgf@float@adapter@advance\pgf@fpu@xb by.5*\pgf@fpu@x\pgf@float@adapter@advance\pgf@fpu@yb by.5*\pgf@fpu@y%
    \pgf@float@adapter@advance\pgf@fpu@xc by.375*\pgf@fpu@x\pgf@float@adapter@advance\pgf@fpu@yc by.375*\pgf@fpu@y%
    #3\relax%
    \pgf@float@adapter@setxy
    \pgf@float@adapter@advance\pgf@fpu@xb by.25*\pgf@fpu@x\pgf@float@adapter@advance\pgf@fpu@yb by.25*\pgf@fpu@y%
    \pgf@float@adapter@advance\pgf@fpu@xc by.375*\pgf@fpu@x\pgf@float@adapter@advance\pgf@fpu@yc by.375*\pgf@fpu@y%
    #4\relax%
    \pgf@float@adapter@setxy
    \pgf@float@adapter@advance\pgf@fpu@xc by.125*\pgf@fpu@x\pgf@float@adapter@advance\pgf@fpu@yc by.125*\pgf@fpu@y%
    \pgf@float@adapter@tostring\pgf@fpu@xa
    \pgf@float@adapter@tostring\pgf@fpu@ya
    \pgf@float@adapter@tostring\pgf@fpu@xb
    \pgf@float@adapter@tostring\pgf@fpu@yb
    \pgf@float@adapter@tostring\pgf@fpu@xc
    \pgf@float@adapter@tostring\pgf@fpu@yc
    \edef\pgf@marshal{%
        \noexpand\pgf@curve@subdivde@after%
            {\noexpand\pgf@x=\the\pgfutil@tempdima\noexpand\pgf@y=\the\pgfutil@tempdimb}%
            {\noexpand\pgf@x=\pgf@fpu@xa\noexpand\pgf@y=\pgf@fpu@ya}%
            {\noexpand\pgf@x=\pgf@fpu@xb\noexpand\pgf@y=\pgf@fpu@yb}%
            {\noexpand\pgf@x=\pgf@fpu@xc\noexpand\pgf@y=\pgf@fpu@yc}%
    }%
    \expandafter
    \endgroup
    \pgf@marshal%
}%

\def\pgf@curve@subdivide@right#1#2#3#4{%
    \begingroup
    #1\relax%
    \pgf@float@adapter@setxy
    \pgf@float@adapter@mult\pgf@float@tmpa=.125*\pgf@fpu@x\pgf@float@adapter@mult\pgf@float@tmpb=.125*\pgf@fpu@y%
    #2\relax%
    \pgf@float@adapter@setxy
    \pgf@float@adapter@advance\pgf@float@tmpa by.375*\pgf@fpu@x\pgf@float@adapter@advance\pgf@float@tmpb by.375*\pgf@fpu@y%
    \pgf@float@adapter@mult\pgf@fpu@xa=.25*\pgf@fpu@x\pgf@float@adapter@mult\pgf@fpu@ya=.25*\pgf@fpu@y%
    #3\relax%
    \pgf@float@adapter@setxy
    \pgf@float@adapter@advance\pgf@float@tmpa by.375*\pgf@fpu@x\pgf@float@adapter@advance\pgf@float@tmpb by.375*\pgf@fpu@y%
    \pgf@float@adapter@advance\pgf@fpu@xa by.5*\pgf@fpu@x\pgf@float@adapter@advance\pgf@fpu@ya by.5*\pgf@fpu@y%
    \pgf@float@adapter@mult\pgf@fpu@xb=.5*\pgf@fpu@x\pgf@float@adapter@mult\pgf@fpu@yb=.5*\pgf@fpu@y%
    #4\relax%
    \pgf@float@adapter@setxy
    \pgf@float@adapter@advance\pgf@float@tmpa by.125*\pgf@fpu@x\pgf@float@adapter@advance\pgf@float@tmpb by.125*\pgf@fpu@y%
    \pgf@float@adapter@advance\pgf@fpu@xa by.25*\pgf@fpu@x\pgf@float@adapter@advance\pgf@fpu@ya by.25*\pgf@fpu@y%
    \pgf@float@adapter@advance\pgf@fpu@xb by.5*\pgf@fpu@x\pgf@float@adapter@advance\pgf@fpu@yb by.5*\pgf@fpu@y%
    \let\pgf@fpu@xc=\pgf@fpu@x\let\pgf@fpu@yc=\pgf@fpu@y%
    \pgf@float@adapter@tostring\pgf@float@tmpa
    \pgf@float@adapter@tostring\pgf@float@tmpb
    \pgf@float@adapter@tostring\pgf@fpu@xa
    \pgf@float@adapter@tostring\pgf@fpu@ya
    \pgf@float@adapter@tostring\pgf@fpu@xb
    \pgf@float@adapter@tostring\pgf@fpu@yb
    \pgf@float@adapter@tostring\pgf@fpu@xc
    \pgf@float@adapter@tostring\pgf@fpu@yc
    \edef\pgf@marshal{%
        \noexpand\pgf@curve@subdivde@after%
            {\noexpand\pgf@x=\pgf@float@tmpa\noexpand\pgf@y=\pgf@float@tmpb}%
            {\noexpand\pgf@x=\pgf@fpu@xa\noexpand\pgf@y=\pgf@fpu@ya}%
            {\noexpand\pgf@x=\pgf@fpu@xb\noexpand\pgf@y=\pgf@fpu@yb}%
            {\noexpand\pgf@x=\pgf@fpu@xc\noexpand\pgf@y=\pgf@fpu@yc}%
    }%
    \expandafter
    \endgroup
    \pgf@marshal%
}%


\def\pgf@ifsolution@duplicate#1{%
    #1%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \let\pgf@intersect@next=\pgfutil@secondoftwo%
    \pgfmathloop%
        \ifnum\pgfmathcounter>\pgf@intersect@solutions\relax%
        \else%
            \pgf@ifsolution@duplicate@{\pgfmathcounter}%
    \repeatpgfmathloop%
    \pgf@intersect@next%
}%

\def\pgf@ifsolution@duplicate@#1{%
    \pgf@process{\csname pgfpoint@g@intersect@solution@#1\endcsname}%
    \advance\pgf@x by-\pgf@xa%
    \advance\pgf@y by-\pgf@ya%
    \ifdim\pgf@x<0pt\relax\pgf@x=-\pgf@x\fi%
    \ifdim\pgf@y<0pt\relax\pgf@y=-\pgf@y\fi%
    \pgf@x=\pgfintersectiontolerancefactor\pgf@x%
    \pgf@y=\pgfintersectiontolerancefactor\pgf@y%
    \ifdim\pgf@x<\pgfintersectiontolerance\relax%
        \ifdim\pgf@y<\pgfintersectiontolerance\relax%
            \let\pgf@intersect@next=\pgfutil@firstoftwo%
        \fi%
    \fi%
}%

\newif\ifpgf@intersect@solutions@sortfinish

\def\pgfintersectionsolutionsortbytime{%
    \pgf@intersect@solutions@sortfinishtrue%
    \pgfmathloop%
        \ifnum\pgfmathcounter<\pgfintersectionsolutions\relax%
            \pgfutil@tempcnta=\pgfmathcounter%
            \advance\pgfutil@tempcnta by1\relax%
            \ifdim\csname pgf@intersect@solution@\pgfmathcounter @time@a\endcsname pt>%
                \csname pgf@intersect@solution@\the\pgfutil@tempcnta @time@a\endcsname pt\relax%
                \pgf@intersect@solutions@sortfinishfalse%
                \pgfintersectionsolutionsortbytime@swap{pgfpoint@intersect@solution@\pgfmathcounter}%
                    {pgfpoint@intersect@solution@\the\pgfutil@tempcnta}%
                \pgfintersectionsolutionsortbytime@swap{pgf@intersect@solution@\pgfmathcounter @time@a}%
                    {pgf@intersect@solution@\the\pgfutil@tempcnta @time@a}%
                \pgfintersectionsolutionsortbytime@swap{pgf@intersect@solution@props@\pgfmathcounter}%
                    {pgf@intersect@solution@props@\the\pgfutil@tempcnta}%
            \fi%
    \repeatpgfmathloop%
    \ifpgf@intersect@solutions@sortfinish%
    \else%
        \expandafter\pgfintersectionsolutionsortbytime%
    \fi%
}%

\def\pgfintersectionsolutionsortbytime@swap#1#2{%
    \pgfutil@namelet{pgf@intersect@temp}{#1}%
    \pgfutil@namelet{#1}{#2}%
    \pgfutil@namelet{#2}{pgf@intersect@temp}%
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryintersections.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarylindenmayersystems.code.tex ====

\newdimen\pgflsystemstep
\newcount\c@pgf@lsystem@iteration

\newif\ifpgf@lsystem@randomize@step
\newif\ifpgf@lsystem@randomize@angle

\pgfkeys{/pgf/lindenmayer system/.cd,%
    step/.code={\pgfmathsetlength\pgflsystemstep{#1}},%
    randomize step percent/.code={%
        \pgfmathparse{#1}%
        \let\pgflsystemrandomizesteppercent=\pgfmathresult%
        \ifdim\pgfmathresult pt=0pt\relax%
            \pgf@lsystem@randomize@stepfalse%
        \else%
            \pgf@lsystem@randomize@steptrue%
        \fi%
    },%
    left angle/.code={\pgfmathparse{#1}\let\pgflsystemleftangle=\pgfmathresult},%
    right angle/.code={\pgfmathparse{#1}\let\pgflsystemrightangle=\pgfmathresult},%
    angle/.style={/pgf/lindenmayer system/left angle={#1}, /pgf/lindenmayer system/right angle={#1}},%
    randomize angle percent/.code={%
        \pgfmathparse{#1}%
        \let\pgflsystemrandomizeanglepercent=\pgfmathresult%
        \ifdim\pgfmathresult pt=0pt\relax%
            \pgf@lsystem@randomize@anglefalse%
        \else%
            \pgf@lsystem@randomize@angletrue%
        \fi%
    }%
}%

\pgfkeys{/pgf/lindenmayer system/.cd,
    step=5pt,%
    randomize step percent=0,%
    angle=90,%
    randomize angle percent=0%
}%

\long\def\pgfdeclarelindenmayersystem#1#2{%
    \pgfutil@ifundefined{pgf@lsystem@#1}%
        {%
            \begingroup%
                \edef\pgf@lsystem@name{#1}%
                \expandafter\global\expandafter\let\csname pgf@lsystem@#1\endcsname=\pgf@lsystem@name%
                \let\symbol=\pgf@lsystem@symbol%
                \let\rule=\pgf@lsystem@rule%
                #2%
            \endgroup%
        }%
        {\pgferror{Lindenmayer system `#1' is already defined}}%
}%

\def\pgf@lsystem@symbol#1#2{%
    \expandafter\gdef\csname pgf@lsystem@\pgf@lsystem@name @symbol@#1\endcsname{#2}%
}%

\def\pgf@lsystem@rule#1{\expandafter\pgf@lsystem@rule@#1\pgf@stop}%
\def\pgf@lsystem@rule@#1{\def\pgf@lsystem@rule@head{#1}\pgf@lsystem@rule@@}%
\def\pgf@lsystem@rule@@#1->{%
    \let\pgf@lsystem@rule@body=\pgfutil@empty%
    \pgfutil@ifnextchar x{\pgf@lsystem@rule@@@}{\pgf@lsystem@rule@@@}}%
\def\pgf@lsystem@rule@@@#1{%
    \ifx#1\pgf@stop%
        \expandafter\global\expandafter\let%
            \csname pgf@lsystem@\pgf@lsystem@name @rule@\pgf@lsystem@rule@head\endcsname=\pgf@lsystem@rule@body%
    \else%
        \edef\pgf@lsystem@rule@body{\pgf@lsystem@rule@body#1}%
        \expandafter\pgf@lsystem@rule@@@%
    \fi%
}%

\def\pgflindenmayersystem#1#2#3{%
    \begingroup%
        \edef\pgf@lsystem@name{#1}%
        \edef\pgf@lsystem@axiom{#2}%
        \pgfmathtruncatemacro\pgf@lsystem@order{#3}%
        \let\pgf@lsystem@current@symbol=\relax%
        \c@pgf@lsystem@iteration=0\relax%
        \ifnum\pgf@lsystem@order=0\relax%
            \expandafter\pgf@lsystem@draw\pgf@lsystem@axiom\pgf@stop
            \let\pgf@lsystem@next=\pgf@lsystem@end%
        \else%
            \let\pgf@lsystem@next=\pgf@lsystem@run%
        \fi%
        \expandafter\pgf@lsystem@next\pgf@lsystem@axiom\pgf@lsystem@stop%
}%

\def\pgf@lsystem@run#1{%
    \ifx#1\pgf@lsystem@stop%
        \def\pgf@lsystem@token{\pgf@lsystem@stop}%
        \let\pgf@lsystem@next=\pgf@lsystem@end%
    \else%
        \ifx#1\pgf@stop%
            \advance\c@pgf@lsystem@iteration by-1\relax%
            \let\pgf@system@token=\pgfutil@empty%
            \let\pgf@lsystem@next=\pgf@lsystem@run%
        \else%
            \expandafter\let\expandafter\pgf@lsystem@token\expandafter=%
                \csname pgf@lsystem@\pgf@lsystem@name @rule@#1\endcsname%
            \ifx\pgf@lsystem@token\relax%
                \pgf@lsystem@draw#1\pgf@stop%
                \let\pgf@lsystem@token=\pgfutil@empty%
            \else%
                \advance\c@pgf@lsystem@iteration by1\relax%
                \ifnum\c@pgf@lsystem@iteration=\pgf@lsystem@order%
                    \expandafter\pgf@lsystem@draw\pgf@lsystem@token \pgf@stop%
                    \advance\c@pgf@lsystem@iteration by-1\relax%
                    \let\pgf@lsystem@token=\pgfutil@empty%
                \else%
                    \expandafter\def\expandafter\pgf@lsystem@token\expandafter{\pgf@lsystem@token \pgf@stop}%
                \fi%
            \fi%
            \let\pgf@lsystem@next=\pgf@lsystem@run%
        \fi%
    \fi%
    \expandafter\pgf@lsystem@next\pgf@lsystem@token}%

\def\pgf@lsystem@end#1\pgf@lsystem@stop{\endgroup}%

\def\pgf@lsystem@draw#1{%
    \ifx#1\pgf@stop%
        \let\pgf@lsystem@next=\relax%
    \else%
        \expandafter\let\expandafter\pgf@lsystem@current@symbol\expandafter=%
            \csname pgf@lsystem@\pgf@lsystem@name @symbol@#1\endcsname%
        \ifx\pgf@lsystem@current@symbol\relax%
            \expandafter\let\expandafter\pgf@lsystem@current@symbol\expandafter=%
                \csname pgf@lsystem@symbol@default@#1\endcsname%
        \fi%
        \let\pgf@lsystem@next=\pgf@lsystem@@draw%
    \fi%
    \pgf@lsystem@next}%

\def\pgf@lsystem@@draw{%
    \edef\pgflsystemcurrentstep{\the\pgflsystemstep}%
    \let\pgflsystemcurrentrightangle=\pgflsystemrightangle%
    \let\pgflsystemcurrentrightangle=\pgflsystemleftangle%
    \pgf@lsystem@current@symbol%
    \pgf@lsystem@draw}%

\expandafter\def\csname
pgf@lsystem@symbol@default@F\endcsname{\pgflsystemdrawforward}%
\expandafter\def\csname
pgf@lsystem@symbol@default@f\endcsname{\pgflsystemmoveforward}%
\expandafter\def\csname
pgf@lsystem@symbol@default@+\endcsname{\pgflsystemturnleft}%
\expandafter\def\csname
pgf@lsystem@symbol@default@-\endcsname{\pgflsystemturnright}%
\expandafter\def\csname
pgf@lsystem@symbol@default@[\endcsname{\pgflsystemsavestate}%
\expandafter\def\csname
pgf@lsystem@symbol@default@]\endcsname{\pgflsystemrestorestate}%

\def\pgflsystemradonmizestep{%
    \ifpgf@lsystem@randomize@step%
        \pgfmathrand%
        \pgf@x=\pgflsystemrandomizesteppercent pt\relax%
        \pgf@x=\pgfmathresult\pgf@x%
        \divide\pgf@x by20\relax%
        \advance\pgf@x by\pgflsystemstep\relax%
        \edef\pgflsystemcurrentstep{\the\pgf@x}%
    \else%
        \edef\pgflsystemcurrentstep{\the\pgflsystemstep}%
    \fi%
}%

\def\pgflsystemdrawforward{%
    \pgflsystemradonmizestep
    \pgftransformxshift{+\pgflsystemcurrentstep}%
    \pgfpathlineto{\pgfpointorigin}}%

\def\pgflsystemmoveforward{%
    \pgflsystemradonmizestep
    \pgftransformxshift{+\pgflsystemcurrentstep}%
    \pgfpathmoveto{\pgfpointorigin}}%

\def\pgflsystemranomizerightangle{%
    \ifpgf@lsystem@randomize@angle%
        \pgf@x=\pgflsystemrandomizeanglepercent pt\relax%
        \divide\pgf@x by20\relax%
        \pgfmathrand%
        \pgf@x=\pgfmathresult\pgf@x%
        \advance\pgf@x by\pgflsystemrightangle pt\relax%
        \edef\pgflsystemcurrentrightangle{\pgfmath@tonumber{\pgf@x}}%
    \else%
        \let\pgflsystemcurrentrightangle=\pgflsystemrightangle%
    \fi%
}%

\def\pgflsystemranomizeleftangle{%
    \ifpgf@lsystem@randomize@angle%
        \pgf@x=\pgflsystemrandomizeanglepercent pt\relax%
        \divide\pgf@x by20\relax%
        \pgfmathrand%
        \pgf@x=\pgfmathresult\pgf@x%
        \advance\pgf@x by\pgflsystemleftangle pt\relax%
        \edef\pgflsystemcurrentleftangle{\pgfmath@tonumber{\pgf@x}}%
    \else%
        \let\pgflsystemcurrentleftangle=\pgflsystemleftangle%
    \fi%
}%

\def\pgflsystemturnright{%
    \pgflsystemranomizerightangle
    \pgftransformrotate{-\pgflsystemcurrentrightangle}}%

\def\pgflsystemturnleft{%
    \pgflsystemranomizeleftangle
    \pgftransformrotate{\pgflsystemcurrentleftangle}}%

\def\pgflsystemsavestate{\begingroup}%
\def\pgflsystemrestorestate{\endgroup\pgfpathmoveto{\pgfpointorigin}}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarylindenmayersystems.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarypatterns.code.tex ====

\ProvidesFileRCS{pgflibrarypatterns.code.tex}



\pgfdeclarepatternformonly{horizontal lines}{\pgfpointorigin}{\pgfqpoint{100pt}{1pt}}{\pgfqpoint{100pt}{3pt}}%
{%
  \pgfsetlinewidth{0.4pt}%
  \pgfpathmoveto{\pgfqpoint{0pt}{0.5pt}}%
  \pgfpathlineto{\pgfqpoint{100pt}{0.5pt}}%
  \pgfusepath{stroke}%
}%

\pgfdeclarepatternformonly{vertical lines}{\pgfpointorigin}{\pgfqpoint{1pt}{100pt}}{\pgfqpoint{3pt}{100pt}}%
{%
  \pgfsetlinewidth{0.4pt}%
  \pgfpathmoveto{\pgfqpoint{0.5pt}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0.5pt}{100pt}}%
  \pgfusepath{stroke}%
}%

\pgfdeclarepatternformonly{north east lines}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{4pt}{4pt}}{\pgfqpoint{3pt}{3pt}}%
{%
  \pgfsetlinewidth{0.4pt}%
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}%
  \pgfpathlineto{\pgfqpoint{3.1pt}{3.1pt}}%
  \pgfusepath{stroke}%
}%

\pgfdeclarepatternformonly{north west lines}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{4pt}{4pt}}{\pgfqpoint{3pt}{3pt}}%
{%
  \pgfsetlinewidth{0.4pt}%
  \pgfpathmoveto{\pgfqpoint{0pt}{3pt}}%
  \pgfpathlineto{\pgfqpoint{3.1pt}{-0.1pt}}%
  \pgfusepath{stroke}%
}%


\pgfdeclarepatternformonly{grid}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{4pt}{4pt}}{\pgfqpoint{3pt}{3pt}}%
{%
  \pgfsetlinewidth{0.4pt}%
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{3.1pt}}%
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}%
  \pgfpathlineto{\pgfqpoint{3.1pt}{0pt}}%
  \pgfusepath{stroke}%
}%

\pgfdeclarepatternformonly{crosshatch}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{4pt}{4pt}}{\pgfqpoint{3pt}{3pt}}%
{%
  \pgfsetlinewidth{0.4pt}%
  \pgfpathmoveto{\pgfqpoint{3.1pt}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{3.1pt}}%
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}%
  \pgfpathlineto{\pgfqpoint{3.1pt}{3.1pt}}%
  \pgfusepath{stroke}%
}%



\pgfdeclarepatternformonly{dots}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{1pt}{1pt}}{\pgfqpoint{3pt}{3pt}}%
{%
  \pgfpathcircle{\pgfqpoint{0pt}{0pt}}{.5pt}%
  \pgfusepath{fill}%
}%

\pgfdeclarepatternformonly{crosshatch dots}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{2.5pt}{2.5pt}}{\pgfqpoint{3pt}{3pt}}%
{%
  \pgfpathcircle{\pgfqpoint{0pt}{0pt}}{.5pt}%
  \pgfpathcircle{\pgfqpoint{1.5pt}{1.5pt}}{.5pt}%
  \pgfusepath{fill}%
}%





\pgfdeclarepatternformonly{fivepointed stars}{\pgfpointorigin}{\pgfqpoint{3mm}{3mm}}{\pgfqpoint{3mm}{3mm}}%
{%
  \pgftransformshift{\pgfqpoint{1mm}{1mm}}%
  \pgfpathmoveto{\pgfqpointpolar{18}{1mm}}%
  \pgfpathlineto{\pgfqpointpolar{162}{1mm}}%
  \pgfpathlineto{\pgfqpointpolar{306}{1mm}}%
  \pgfpathlineto{\pgfqpointpolar{90}{1mm}}%
  \pgfpathlineto{\pgfqpointpolar{234}{1mm}}%
  \pgfpathclose%
  \pgfusepath{fill}%
}%

\pgfdeclarepatternformonly{sixpointed stars}{\pgfpointorigin}{\pgfqpoint{3mm}{3mm}}{\pgfqpoint{3mm}{3mm}}%
{%
  \pgftransformshift{\pgfqpoint{1mm}{1mm}}%
  \pgfpathmoveto{\pgfqpointpolar{30}{1mm}}%
  \pgfpathlineto{\pgfqpointpolar{150}{1mm}}%
  \pgfpathlineto{\pgfqpointpolar{270}{1mm}}%
  \pgfpathclose%
  \pgfpathmoveto{\pgfqpointpolar{-30}{1mm}}%
  \pgfpathlineto{\pgfqpointpolar{-270}{1mm}}%
  \pgfpathlineto{\pgfqpointpolar{-150}{1mm}}%
  \pgfpathclose%
  \pgfsetnonzerorule%
  \pgfusepath{fill}%
}%




\pgfdeclarepatternformonly{bricks}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{5mm}{5mm}}{\pgfqpoint{4mm}{4mm}}%
{%
  \pgfsetlinewidth{0.8pt}%
  \pgfpathmoveto{\pgfqpoint{0mm}{1mm}}%
  \pgfpathlineto{\pgfqpoint{4mm}{1mm}}%
  \pgfpathmoveto{\pgfqpoint{0mm}{3mm}}%
  \pgfpathlineto{\pgfqpoint{4mm}{3mm}}%
  \pgfpathmoveto{\pgfqpoint{1mm}{0mm}}%
  \pgfpathlineto{\pgfqpoint{1mm}{1mm}}%
  \pgfpathmoveto{\pgfqpoint{3mm}{1mm}}%
  \pgfpathlineto{\pgfqpoint{3mm}{3mm}}%
  \pgfpathmoveto{\pgfqpoint{1mm}{3mm}}%
  \pgfpathlineto{\pgfqpoint{1mm}{4mm}}%
  \pgfusepath{stroke}%
}%



\pgfdeclarepatternformonly{checkerboard}{\pgfpointorigin}{\pgfqpoint{4mm}{4mm}}{\pgfqpoint{4mm}{4mm}}%
{%
  \pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{2mm}{2mm}}%
  \pgfpathrectangle{\pgfqpoint{2mm}{2mm}}{\pgfqpoint{2mm}{2mm}}%
  \pgfusepath{fill}%
}%




\pgfdeclarepatterninherentlycolored{checkerboard light gray}
{\pgfpointorigin}{\pgfqpoint{4mm}{4mm}}{\pgfqpoint{4mm}{4mm}}%
{%
  \pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{4.1mm}{4.1mm}}%
  \pgfusepath{fill}%
  \pgfsetfillcolor{black!20}%
  \pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{2mm}{2mm}}%
  \pgfpathrectangle{\pgfqpoint{2mm}{2mm}}{\pgfqpoint{2mm}{2mm}}%
  \pgfusepath{fill}%
}%

\pgfdeclarepatterninherentlycolored{horizontal lines light gray}
{\pgfpointorigin}{\pgfpoint{100pt}{4pt}}
{\pgfpoint{100pt}{4pt}}
{%
  \pgfsetfillcolor{black!10}%
  \pgfpathrectangle{\pgfpointorigin}{\pgfpoint{100pt}{2.5pt}}%
  \pgfusepath{fill}%
  \pgfsetfillcolor{black!15}%
  \pgfpathrectangle{\pgfpoint{0pt}{2pt}}{\pgfpoint{100pt}{2.5pt}}%
  \pgfusepath{fill}%
}%

\pgfdeclarepatterninherentlycolored{horizontal lines gray}
{\pgfpointorigin}{\pgfpoint{100pt}{4pt}}
{\pgfpoint{100pt}{4pt}}
{%
  \pgfsetfillcolor{black!30}%
  \pgfpathrectangle{\pgfpointorigin}{\pgfpoint{100pt}{2.5pt}}%
  \pgfusepath{fill}%
  \pgfsetfillcolor{black!35}%
  \pgfpathrectangle{\pgfpoint{0pt}{2pt}}{\pgfpoint{100pt}{2.5pt}}%
  \pgfusepath{fill}%
}%

\pgfdeclarepatterninherentlycolored{horizontal lines dark gray}
{\pgfpointorigin}{\pgfpoint{100pt}{4pt}}
{\pgfpoint{100pt}{4pt}}
{%
  \pgfsetfillcolor{black!90}%
  \pgfpathrectangle{\pgfpointorigin}{\pgfpoint{100pt}{2.5pt}}%
  \pgfusepath{fill}%
  \pgfsetfillcolor{black!85}%
  \pgfpathrectangle{\pgfpoint{0pt}{2pt}}{\pgfpoint{100pt}{2.5pt}}%
  \pgfusepath{fill}%
}%

\pgfdeclarepatterninherentlycolored{horizontal lines light blue}
{\pgfpointorigin}{\pgfpoint{100pt}{4pt}}
{\pgfpoint{100pt}{4pt}}
{%
  \pgfsetfillcolor{blue!10}%
  \pgfpathrectangle{\pgfpointorigin}{\pgfpoint{100pt}{2.5pt}}%
  \pgfusepath{fill}%
  \pgfsetfillcolor{blue!15}%
  \pgfpathrectangle{\pgfpoint{0pt}{2pt}}{\pgfpoint{100pt}{2.5pt}}%
  \pgfusepath{fill}%
}%

\pgfdeclarepatterninherentlycolored{horizontal lines dark blue}
{\pgfpointorigin}{\pgfpoint{100pt}{4pt}}
{\pgfpoint{100pt}{4pt}}
{%
  \pgfsetfillcolor{blue!90}%
  \pgfpathrectangle{\pgfpointorigin}{\pgfpoint{100pt}{2.5pt}}%
  \pgfusepath{fill}%
  \pgfsetfillcolor{blue!85}%
  \pgfpathrectangle{\pgfpoint{0pt}{2pt}}{\pgfpoint{100pt}{2.5pt}}%
  \pgfusepath{fill}%
}%


\pgfdeclarepatterninherentlycolored{crosshatch dots gray}
{\pgfpointorigin}{\pgfpoint{8pt}{8pt}}
{\pgfpoint{8pt}{8pt}}
{%
  \pgfsetfillcolor{black!20}%
  \pgfpathrectangle{\pgfpointorigin}{\pgfpoint{8pt}{8pt}}%
  \pgfusepath{fill}%
  \pgfsetfillcolor{black!10}%
  \pgfpathcircle{\pgfpoint{2pt}{1.75pt}}{1pt}%
  \pgfpathcircle{\pgfpoint{6pt}{5.75pt}}{1pt}%
  \pgfusepath{fill}%
  \pgfsetfillcolor{black!70}%
  \pgfpathcircle{\pgfpoint{2pt}{2.25pt}}{1pt}%
  \pgfpathcircle{\pgfpoint{6pt}{6.25pt}}{1pt}%
  \pgfusepath{fill}%
}%

\pgfutil@definecolor{pgf@lightsteelblue}{rgb}{0.6875,0.765625,0.8671875}%
\pgfutil@colorlet{pgf@darklightsteelblue}{black!50!pgf@lightsteelblue}%

\pgfdeclarepatterninherentlycolored{crosshatch dots light steel blue}
{\pgfpointorigin}{\pgfpoint{8pt}{8pt}}
{\pgfpoint{8pt}{8pt}}
{%
  \pgfsetfillcolor{pgf@lightsteelblue}%
  \pgfpathrectangle{\pgfpointorigin}{\pgfpoint{8pt}{8pt}}%
  \pgfusepath{fill}%
  \pgfsetfillcolor{pgf@darklightsteelblue!10}%
  \pgfpathcircle{\pgfpoint{2pt}{1.75pt}}{1pt}%
  \pgfpathcircle{\pgfpoint{6pt}{5.75pt}}{1pt}%
  \pgfusepath{fill}%
  \pgfsetfillcolor{pgf@darklightsteelblue!70}%
  \pgfpathcircle{\pgfpoint{2pt}{2.25pt}}{1pt}%
  \pgfpathcircle{\pgfpoint{6pt}{6.25pt}}{1pt}%
  \pgfusepath{fill}%
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarypatterns.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarypatterns.meta.code.tex ====

\def\pgf@pat@type@uncolored{0}%
\def\pgf@pat@type@colored{1}%
\newif\ifpgf@pat@makepatternimmutable

\pgfkeys{/pgf/patterns/.cd,
  name/.store in=\pgf@pat@name,
  number ../.store in=\pgf@pat@number,
  type/.is choice,
    type/uncolored/.code={\let\pgf@pat@type=\pgf@pat@type@uncolored},
    type/colored/.code={\let\pgf@pat@type=\pgf@pat@type@colored},
    type/form only/.style={/pgf/patterns/type=uncolored},
    type/inherently colored/.style={/pgf/patterns/type=colored},
  x/.store in=\pgf@pat@xvec,
  y/.store in=\pgf@pat@yvec,
  parameters/.store in=\pgf@pat@parameters,
  defaults/.store in=\pgf@pat@defaults,
  append to defaults/.code={%
    \pgf@pat@addto@macro\pgf@pat@defaults{,#1}%
  },
  bottom left/.store in=\pgf@pat@bottomleft,
  top right/.store in=\pgf@pat@topright,
  tile size/.store in=\pgf@pat@tilesize,
  tile transformation/.store in=\pgf@pat@transformation,
  code/.store in=\pgf@pat@code,
  set up code/.store in=\pgf@pat@declarebefore,
  name=,
  number ..=,
  type=uncolored,
  x=1cm, y=1cm,
  parameters=,
  defaults=,
  bottom left=,
  top right=,
  tile size=,
  tile transformation=,
  code=,
  set up code=,
}%

\def\pgf@pat@name@prefix{pgf@pattern@name@meta@}%

\def\pgfifpatternundefined#1{%
  \pgfutil@ifundefined{\pgf@pat@name@prefix#1}%
}%

\def\pgf@pat@adddef@to@macro#1#2{%
  \expandafter\expandafter\expandafter\def%
    \expandafter\expandafter\expandafter#1%
      \expandafter\expandafter\expandafter{\expandafter#1\expandafter%
        \def\expandafter#2\expandafter{#2}}%
}%

\def\pgf@pat@addto@macro#1#2{%
  \expandafter\def\expandafter#1\expandafter{#1#2}}%

\def\pgf@pat@process#1{%
  \pgf@process{#1}%
}%

\def\pgf@pat@doifnotempty#1{%
  \ifx#1\pgfutil@empty%
    \let\pgf@pat@next=\relax%
  \else%
    \let\pgf@pat@next=#1%
  \fi%
  \pgf@pat@next%
}%

\def\pgf@pat@processtransformations#1{#1}%
\def\pgf@pat@processpoint#1{%
  \pgf@process{#1}%
}%


\def\pgfdeclarepattern#1{%
  \begingroup%
    \nullfont%
    \def\pgf@pat@options{,#1}%
    \pgfkeys{/pgf/patterns/.cd,#1}%
    \ifx\pgf@pat@name\pgfutil@empty
        \pgferror{Declaring unnamed pattern}%
    \fi
    \ifx\pgf@pat@bottomleft\pgfutil@empty
        \pgferror{Bottom left corner of the bounding box unset}%
    \fi
    \ifx\pgf@pat@topright\pgfutil@empty
        \pgferror{Top right corner of the bounding box unset}%
    \fi
    \ifx\pgf@pat@tilesize\pgfutil@empty
        \pgferror{Tile size unset}%
    \fi
    \ifx\pgf@pat@code\pgfutil@empty
        \pgferror{Pattern code is empty}%
    \fi
    \pgf@declarepattern@meta%
  \endgroup%
}%
\def\pgf@declarepattern@meta{%
    \pgfifpatternundefined{\pgf@pat@name}{%
      \ifx\pgf@pat@parameters\pgfutil@empty%
        \pgf@pat@declare%
        \edef\pgf@marshal{%
          \noexpand\pgf@pat@addto@macro\noexpand\pgf@pat@options{,number ..=\pgf@pattern@number}}%
        \pgf@marshal%
      \fi%
      \expandafter\global\expandafter\let\csname\pgf@pat@name@prefix\pgf@pat@name\endcsname=\pgf@pat@options%
    }{%
      \pgferror{Pattern `\pgf@pat@name' already defined}%
    }%
}%
\let\pgf@pat@declarebefore=\pgfutil@empty
\let\pgf@pat@declareafter=\pgfutil@empty
\let\pgf@pat@codebefore=\pgfutil@empty
\let\pgf@pat@codeafter=\pgfutil@empty

\def\pgf@pat@declare{%
   \pgfsysprotocol@getcurrentprotocol\pgf@pattern@temp%
   {%
     \pgfsetxvec{\pgfpoint{\pgf@pat@xvec}{+0pt}}%
     \pgfsetyvec{\pgfpoint{+0pt}{\pgf@pat@yvec}}%
     \pgf@pat@doifnotempty\pgf@pat@declarebefore%
     \pgfinterruptpath%
       \pgfpicturetrue%
       \pgf@relevantforpicturesizetrue%
       \pgftransformreset%
       \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
       \pgfsysprotocol@bufferedtrue%
       \pgfsys@beginscope%
         \pgfinterruptboundingbox%
           \pgfsetarrows{-}%
           \pgf@pat@doifnotempty\pgf@pat@codebefore
           \pgf@pat@code%
           \pgf@pat@doifnotempty\pgf@pat@codeafter%
         \endpgfinterruptboundingbox%
       \pgfsys@endscope%
       \pgfsysprotocol@getcurrentprotocol\pgf@pattern@code%
       \global\let\pgf@pattern@code=\pgf@pattern@code%
     \endpgfinterruptpath%
     \pgf@pat@doifnotempty\pgf@pat@declareafter%
     \pgf@pat@processpoint{\pgf@pat@bottomleft}%
     \pgf@xa=\pgf@x%
     \pgf@ya=\pgf@y%
     \pgf@pat@processpoint{\pgf@pat@topright}%
     \pgf@xb=\pgf@x%
     \pgf@yb=\pgf@y%
     \pgf@pat@processpoint{\pgf@pat@tilesize}%
     \pgf@xc=\pgf@x%
     \pgf@yc=\pgf@y%
     \begingroup%
       \pgftransformreset%
       \pgf@pat@processtransformations\pgf@pat@transformation%
       \pgfgettransformentries\aa\ab\ba\bb\shiftx\shifty%
       \global\edef\pgf@pattern@matrix{{\aa}{\ab}{\ba}{\bb}{\shiftx}{\shifty}}%
     \endgroup%
     \pgfutil@tempcnta=\pgf@pattern@number\relax%
     \advance\pgfutil@tempcnta by1\relax%
     \xdef\pgf@pattern@number{\the\pgfutil@tempcnta}%
     \xdef\pgf@marshal{\noexpand\pgfsys@declarepattern%
       {\pgf@pattern@number}%
       {\the\pgf@xa}{\the\pgf@ya}{\the\pgf@xb}{\the\pgf@yb}{\the\pgf@xc}{\the\pgf@yc}\pgf@pattern@matrix{\pgf@pattern@code}{\pgf@pat@type}}%
   }%
   \pgf@marshal%
   \pgfsysprotocol@setcurrentprotocol\pgf@pattern@temp%
}%

\def\pgf@pat@checkname#1{%
  \pgf@pat@@checkname#1[]\pgf@patstop}%

\def\pgf@pat@@checkname#1[#2]#3\pgf@patstop{%
  \expandafter\def\expandafter\pgf@pat@onlinename\expandafter{\romannumeral-`0\pgfutil@trimspaces{#1}}%
  \def\pgf@pat@onlineoptions{#2}%
}%


\def\pgf@pat@unravel#1/{%
  \pgfutil@ifnextchar\pgf@stop{\def\pgf@pat@unravelled{#1}}{\pgf@pat@unravel}}%

\pgfkeys{/handlers/.pattern/.code={%
    \expandafter\expandafter\expandafter\pgf@pat@unravel\pgfkeyscurrentpath/\pgf@stop%
    \pgfpatternalias{#1}{\pgf@pat@unravelled}%
}}%

\def\pgfpatternalias#1#2{%
  \begingroup%
    \pgf@pat@checkname{#1}%
    \expandafter\let\expandafter\pgf@pat@options\expandafter=%
      \csname\pgf@pat@name@prefix\pgf@pat@onlinename\endcsname%
    \pgf@pat@macroaskeys{/pgf/patterns/.cd}{\pgf@pat@options}%
    \pgfutil@toks@\expandafter{\pgf@pat@onlineoptions}%
    \edef\pgf@pat@tmp{append to defaults={\the\pgfutil@toks@}}%
    \expandafter\pgf@pat@addto@macro\expandafter\pgf@pat@options\expandafter{\expandafter,\pgf@pat@tmp}%
    \pgf@pat@addto@macro\pgf@pat@options{,name=#2}%
    \expandafter\global\expandafter\let\csname\pgf@pat@name@prefix#2\endcsname=\pgf@pat@options%
  \endgroup%
}%


\let\pgfsetfillpattern@old=\pgfsetfillpattern

\def\pgf@pat@macroaskeys#1#2{%
  \pgfutil@toks@\expandafter{#2}%
  \edef\pgf@marshal{\noexpand\pgfkeys{,#1,\the\pgfutil@toks@}}%
  \pgf@marshal%
}%
\def\pgfsetfillpattern#1#2{%
  \pgf@pat@checkname{#1}%
  \pgfutil@ifundefined{\pgf@pat@name@prefix\pgf@pat@onlinename}{%
    \pgfsetfillpattern@old{\pgf@pat@onlinename}{#2}%
  }{%
    \let\pgf@pat@parameters=\pgfutil@empty%
    \expandafter\let\expandafter\pgf@pat@options\expandafter=%
      \csname\pgf@pat@name@prefix\pgf@pat@onlinename\endcsname%
    \pgf@pat@macroaskeys{/pgf/patterns/.cd}{\pgf@pat@options}%
    \ifx\pgf@pat@parameters\pgfutil@empty%
    \else%
      \begingroup%
          \pgf@pat@macroaskeys{/pgf/pattern keys/.cd}{\pgf@pat@defaults}%
          \pgf@pat@macroaskeys{/pgf/pattern keys/.cd}{\pgf@pat@onlineoptions}%
          \edef\pgf@pat@current@parameters{\pgf@pat@parameters}%
          \edef\pgf@pat@onlinename{\pgf@pat@onlinename\pgf@pat@current@parameters}%
          \let\pgf@pat@name=\pgf@pat@onlinename%
          \pgfutil@ifundefined{\pgf@pat@name@prefix\pgf@pat@onlinename}{%
              \let\pgf@pat@parameters=\pgfutil@empty%
            \pgf@declarepattern@meta%
          }{}%
          \expandafter%
        \endgroup%
        \expandafter\def\expandafter\pgf@pat@onlinename\expandafter{\pgf@pat@onlinename}%
        \expandafter\let\expandafter\pgf@pat@options\expandafter=%
      \csname\pgf@pat@name@prefix\pgf@pat@onlinename\endcsname%
      \pgf@pat@macroaskeys{/pgf/patterns/.cd}{\pgf@pat@options}%
    \fi%
    \ifx\pgf@pat@type\pgf@pat@type@uncolored%
      \pgf@pat@setpatternuncolored{\pgf@pat@number}{#2}%
    \else%
      \pgfsys@setpatterncolored{\pgf@pat@number}%
    \fi%
  }%
}%

\def\pgf@pat@setpatternuncolored#1#2{%
  \pgfutil@colorlet{pgf@tempcolor}{#2}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgf@tempcolor}}%
  \pgfutil@extractcolorspec{pgf@tempcolor}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}%
  \expandafter\pgf@pat@set@fill@patternuncolored\pgf@rgbcolor\relax{#1}%
}%
\def\pgf@pat@set@fill@patternuncolored#1,#2,#3\relax#4{%
  \pgfsys@setpatternuncolored{#4}{#1}{#2}{#3}%
}%


\pgfdeclarepattern{
  name=Lines,
  parameters={
      \pgfkeysvalueof{/pgf/pattern keys/distance},
      \pgfkeysvalueof{/pgf/pattern keys/angle},
      \pgfkeysvalueof{/pgf/pattern keys/xshift},
      \pgfkeysvalueof{/pgf/pattern keys/yshift},
      \pgfkeysvalueof{/pgf/pattern keys/line width},
  },
  bottom left={%
    \pgfpoint
      {-.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}%
      {-.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}},
  top right={%
    \pgfpoint
      {.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}%
      {.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}},
  tile size={%
    \pgfpoint
      {\pgfkeysvalueof{/pgf/pattern keys/distance}}%
      {\pgfkeysvalueof{/pgf/pattern keys/distance}}},
  tile transformation={%
    \pgftransformshift{%
      \pgfpoint
        {\pgfkeysvalueof{/pgf/pattern keys/xshift}}%
        {\pgfkeysvalueof{/pgf/pattern keys/yshift}}}%
    \pgftransformrotate{\pgfkeysvalueof{/pgf/pattern keys/angle}}},
  defaults={
    distance/.initial=3pt,
    angle/.initial=0,
    xshift/.initial=0pt,
    yshift/.initial=0pt,
    line width/.initial=\the\pgflinewidth,
  },
  code={%
    \pgfsetlinewidth{\pgfkeysvalueof{/pgf/pattern keys/line width}}%
    \pgfpathmoveto{\pgfpoint{-.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}{0pt}}%
    \pgfpathlineto{\pgfpoint{.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}{0pt}}%
    \pgfusepath{stroke}%
  },
}

\pgfdeclarepattern{
  name=Hatch,
  parameters={
      \pgfkeysvalueof{/pgf/pattern keys/distance},
      \pgfkeysvalueof{/pgf/pattern keys/angle},
      \pgfkeysvalueof{/pgf/pattern keys/xshift},
      \pgfkeysvalueof{/pgf/pattern keys/yshift},
      \pgfkeysvalueof{/pgf/pattern keys/line width},
  },
  bottom left={%
    \pgfpoint
      {-.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}%
      {-.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}},
  top right={%
    \pgfpoint
      {.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}%
      {.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}},
  tile size={%
    \pgfpoint
      {\pgfkeysvalueof{/pgf/pattern keys/distance}}%
      {\pgfkeysvalueof{/pgf/pattern keys/distance}}},
  tile transformation={%
    \pgftransformshift{%
      \pgfpoint
        {\pgfkeysvalueof{/pgf/pattern keys/xshift}}%
        {\pgfkeysvalueof{/pgf/pattern keys/yshift}}}%
    \pgftransformrotate{\pgfkeysvalueof{/pgf/pattern keys/angle}}},
  defaults={
    distance/.initial=3pt,
    angle/.initial=0,
    xshift/.initial=0pt,
    yshift/.initial=0pt,
    line width/.initial=\the\pgflinewidth,
  },
  code={%
    \pgfsetlinewidth{\pgfkeysvalueof{/pgf/pattern keys/line width}}%
    \pgfpathmoveto{\pgfpoint{-.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}{0pt}}%
    \pgfpathlineto{\pgfpoint{.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}{0pt}}%
    \pgfpathmoveto{\pgfpoint{0pt}{-.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}}%
    \pgfpathlineto{\pgfpoint{0pt}{.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}}%
    \pgfusepath{stroke}%
  },
}

\pgfdeclarepattern{
  name=Dots,
  parameters={
      \pgfkeysvalueof{/pgf/pattern keys/distance},
      \pgfkeysvalueof{/pgf/pattern keys/angle},
      \pgfkeysvalueof{/pgf/pattern keys/xshift},
      \pgfkeysvalueof{/pgf/pattern keys/yshift},
      \pgfkeysvalueof{/pgf/pattern keys/radius},
  },
  bottom left={%
    \pgfpoint
      {-.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}%
      {-.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}},
  top right={%
    \pgfpoint
      {.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}%
      {.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}},
  tile size={%
    \pgfpoint
      {\pgfkeysvalueof{/pgf/pattern keys/distance}}%
      {\pgfkeysvalueof{/pgf/pattern keys/distance}}},
  tile transformation={%
    \pgftransformshift{%
      \pgfpoint
        {\pgfkeysvalueof{/pgf/pattern keys/xshift}}%
        {\pgfkeysvalueof{/pgf/pattern keys/yshift}}}%
    \pgftransformrotate{\pgfkeysvalueof{/pgf/pattern keys/angle}}},
  defaults={
    distance/.initial=3pt,
    angle/.initial=0,
    xshift/.initial=0pt,
    yshift/.initial=0pt,
    radius/.initial=.5pt,
  },
  code={%
    \pgfpathcircle%
      {\pgfpointorigin}%
      {\pgfkeysvalueof{/pgf/pattern keys/radius}}
    \pgfusepath{fill}%
  },
}

\pgfdeclarepattern{
  name=Stars,
  parameters={
      \pgfkeysvalueof{/pgf/pattern keys/distance},
      \pgfkeysvalueof{/pgf/pattern keys/angle},
      \pgfkeysvalueof{/pgf/pattern keys/xshift},
      \pgfkeysvalueof{/pgf/pattern keys/yshift},
      \pgfkeysvalueof{/pgf/pattern keys/radius},
      \pgfkeysvalueof{/pgf/pattern keys/points},
  },
  bottom left={%
    \pgfpoint
      {-.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}%
      {-.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}},
  top right={%
    \pgfpoint
      {.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}%
      {.5*(\pgfkeysvalueof{/pgf/pattern keys/distance})}},
  tile size={%
    \pgfpoint
      {\pgfkeysvalueof{/pgf/pattern keys/distance}}%
      {\pgfkeysvalueof{/pgf/pattern keys/distance}}},
  tile transformation={%
    \pgftransformshift{%
      \pgfpoint
        {\pgfkeysvalueof{/pgf/pattern keys/xshift}}%
        {\pgfkeysvalueof{/pgf/pattern keys/yshift}}}%
    \pgftransformrotate{\pgfkeysvalueof{/pgf/pattern keys/angle}}},
  defaults={
    distance/.initial=3mm,
    angle/.initial=0,
    xshift/.initial=0pt,
    yshift/.initial=0pt,
    radius/.initial=1mm,
    points/.initial=5,
  },
  code={%
    \pgfmathsetmacro\a{180/(\pgfkeysvalueof{/pgf/pattern keys/points})}%
    \pgfpathmoveto{\pgfpointpolar{90}{\pgfkeysvalueof{/pgf/pattern keys/radius}}}%
    \foreach \i in {1,...,\pgfkeysvalueof{/pgf/pattern keys/points}}{%
        \pgfpathlineto{\pgfpointpolar{90+2*\i*\a-\a}{.5*(\pgfkeysvalueof{/pgf/pattern keys/radius})}}%
        \pgfpathlineto{\pgfpointpolar{90+2*\i*\a}{\pgfkeysvalueof{/pgf/pattern keys/radius}}}%
    }%
    \pgfpathclose%
    \pgfusepath{fill}%
  },
}

==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarypatterns.meta.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex ====

\ProvidesFileRCS{pgflibraryplothandlers.code.tex}



\pgfdeclareplothandler{\pgfplothandlercurveto}{}{%
  point macro=\pgf@plot@curveto@handler@initial,
  jump macro=\pgf@plot@smooth@next@moveto,
  end macro=\pgf@plot@curveto@handler@finish
}%

\def\pgf@plot@smooth@next@moveto{%
  \pgf@plot@curveto@handler@finish%
  \global\pgf@plot@startedfalse%
  \global\let\pgf@plotstreampoint\pgf@plot@curveto@handler@initial%
}%

\def\pgf@plot@curveto@handler@initial#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@plot@first@action{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@curveto@first{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \global\let\pgf@plot@curveto@first@support=\pgf@plot@curveto@first%
  \global\let\pgf@plotstreampoint=\pgf@plot@curveto@handler@second%
}%

\def\pgf@plot@curveto@handler@second#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@curveto@second{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \global\let\pgf@plotstreampoint=\pgf@plot@curveto@handler@third%
  \global\pgf@plot@startedtrue%
}%

\def\pgf@plot@curveto@handler@third#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@curveto@current{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{\pgf@plot@curveto@first}
  \advance\pgf@xa by-\pgf@x%
  \advance\pgf@ya by-\pgf@y%
  \pgf@xa=\pgf@plottension\pgf@xa%
  \pgf@ya=\pgf@plottension\pgf@ya%
  \pgf@process{\pgf@plot@curveto@second}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \advance\pgf@xb by-\pgf@xa%
  \advance\pgf@yb by-\pgf@ya%
  \advance\pgf@xc by\pgf@xa%
  \advance\pgf@yc by\pgf@ya%
  \edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgf@plot@curveto@first@support}%
    {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgf@plot@curveto@second}}%
  {\pgf@marshal}%
  \global\let\pgf@plot@curveto@first=\pgf@plot@curveto@second%
  \global\let\pgf@plot@curveto@second=\pgf@plot@curveto@current%
  \xdef\pgf@plot@curveto@first@support{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
}%

\def\pgf@plot@curveto@handler@finish{%
  \ifpgf@plot@started%
    \pgfpathcurveto{\pgf@plot@curveto@first@support}{\pgf@plot@curveto@second}{\pgf@plot@curveto@second}%
  \fi%
}%



\def\pgfsetplottension#1{%
  \pgf@x=#1pt\relax%
  \pgf@x=0.2775\pgf@x\relax%
  \edef\pgf@plottension{\pgf@sys@tonumber\pgf@x}}%
\pgfsetplottension{0.5}%



\pgfdeclareplothandler{\pgfplothandlerclosedcurve}{}{%
  point macro=\pgf@plot@closedcurve@handler@initial,
  end macro=\pgf@plot@closedcurve@handler@finish,
  jump macro=\pgf@plot@closedsmooth@next@moveto
}%

\def\pgf@plot@closedsmooth@next@moveto{%
  \pgf@plot@closedcurve@handler@finish%
  \global\pgf@plot@startedfalse%
  \global\let\pgf@plotstreampoint\pgf@plot@closedcurve@handler@initial%
}%

\def\pgf@plot@closedcurve@handler@initial#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \xdef\pgf@plot@closedcurve@initial{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \global\let\pgf@plotstreampoint=\pgf@plot@closedcurve@handler@second%
  \global\pgf@plot@startedfalse%
}%

\def\pgf@plot@closedcurve@handler@second#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@closedcurve@after@initial{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  {\pgfpathmoveto{}}%
  \global\let\pgf@plotstreampoint=\pgf@plot@closedcurve@handler@third%
}%

\def\pgf@plot@closedcurve@handler@third#1{%
  \global\pgf@plot@startedtrue%
  \pgf@process{#1}%
  \xdef\pgf@plot@closedcurve@current{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{\pgf@plot@closedcurve@initial}
  \advance\pgf@xa by-\pgf@x%
  \advance\pgf@ya by-\pgf@y%
  \pgf@xa=\pgf@plottension\pgf@xa%
  \pgf@ya=\pgf@plottension\pgf@ya%
  \pgf@process{\pgf@plot@closedcurve@after@initial}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \advance\pgf@xb by-\pgf@xa%
  \advance\pgf@yb by-\pgf@ya%
  \advance\pgf@xc by\pgf@xa%
  \advance\pgf@yc by\pgf@ya%
  \global\let\pgf@plot@closedcurve@first=\pgf@plot@closedcurve@after@initial%
  \global\let\pgf@plot@closedcurve@second=\pgf@plot@closedcurve@current%
  \xdef\pgf@plot@closedcurve@after@initial@presupport{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
  \xdef\pgf@plot@closedcurve@first@support{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
  \global\let\pgf@plotstreampoint=\pgf@plot@closedcurve@handler@fourth%
}%

\def\pgf@plot@closedcurve@handler@fourth#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@closedcurve@current{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{\pgf@plot@closedcurve@first}
  \advance\pgf@xa by-\pgf@x%
  \advance\pgf@ya by-\pgf@y%
  \pgf@xa=\pgf@plottension\pgf@xa%
  \pgf@ya=\pgf@plottension\pgf@ya%
  \pgf@process{\pgf@plot@closedcurve@second}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \advance\pgf@xb by-\pgf@xa%
  \advance\pgf@yb by-\pgf@ya%
  \advance\pgf@xc by\pgf@xa%
  \advance\pgf@yc by\pgf@ya%
  \edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgf@plot@closedcurve@first@support}%
    {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgf@plot@closedcurve@second}}%
  {\pgf@marshal}%
  \global\let\pgf@plot@closedcurve@first=\pgf@plot@closedcurve@second%
  \global\let\pgf@plot@closedcurve@second=\pgf@plot@closedcurve@current%
  \xdef\pgf@plot@closedcurve@first@support{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
}%

\def\pgf@plot@closedcurve@handler@finish{%
  \ifpgf@plot@started
    \pgf@process{\pgf@plot@closedcurve@initial}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgf@plot@closedcurve@first}%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \pgf@xa=\pgf@plottension\pgf@xa%
    \pgf@ya=\pgf@plottension\pgf@ya%
    \pgf@process{\pgf@plot@closedcurve@second}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \advance\pgf@xb by-\pgf@xa%
    \advance\pgf@yb by-\pgf@ya%
    \advance\pgf@xc by\pgf@xa%
    \advance\pgf@yc by\pgf@ya%
    \edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgf@plot@closedcurve@first@support}%
      {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgf@plot@closedcurve@second}}%
    {\pgf@marshal}%
    \xdef\pgf@plot@closedcurve@first@support{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
    \pgf@process{\pgf@plot@closedcurve@after@initial}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgf@plot@closedcurve@second}%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \pgf@xa=\pgf@plottension\pgf@xa%
    \pgf@ya=\pgf@plottension\pgf@ya%
    \pgf@process{\pgf@plot@closedcurve@initial}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \advance\pgf@xb by-\pgf@xa%
    \advance\pgf@yb by-\pgf@ya%
    \advance\pgf@xc by\pgf@xa%
    \advance\pgf@yc by\pgf@ya%
    \edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgf@plot@closedcurve@first@support}%
      {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgf@plot@closedcurve@initial}}%
    {\pgf@marshal}%
    \edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
      {\noexpand\pgf@plot@closedcurve@after@initial@presupport}{\noexpand\pgf@plot@closedcurve@after@initial}}%
    {\pgf@marshal}%
    \pgfpathclose%
  \fi%
}%






\pgfdeclareplothandler{\pgfplothandlerxcomb}{}{%
  start macro=\pgfplotxzerolevelstreamstart,
  point macro=\pgf@plot@xcomb@handler,
  end macro=\pgfplotxzerolevelstreamend,
}%

\def\pgf@plot@xcomb@handler#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \begingroup
  \pgfplotxzerolevelstreamnext
  \endgroup
  \pgf@yb=\pgf@x
  \pgfpathmoveto{\pgfqpoint{\pgf@yb}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
}%



\pgfdeclareplothandler{\pgfplothandlerycomb}{}{%
  start macro=\pgfplotyzerolevelstreamstart,
  point macro=\pgf@plot@ycomb@handler,
  end macro=\pgfplotyzerolevelstreamend
}%

\def\pgf@plot@ycomb@handler#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \begingroup
  \pgfplotyzerolevelstreamnext
  \endgroup
  \pgf@yb=\pgf@x
  \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
}%

\def\pgfplotxzerolevelstreamstart{\pgf@plotxzerolevelstreamstart}%
\def\pgfplotxzerolevelstreamend{\pgf@plotxzerolevelstreamend}%
\def\pgfplotxzerolevelstreamnext{\pgf@plotxzerolevelstreamnext}
\def\pgfplotyzerolevelstreamstart{\pgf@plotyzerolevelstreamstart}%
\def\pgfplotyzerolevelstreamend{\pgf@plotyzerolevelstreamend}%
\def\pgfplotyzerolevelstreamnext{\pgf@plotyzerolevelstreamnext}%

\def\pgfplotxzerolevelstreamconstant#1{%
    \edef\pgfplotxzerolevelstreamconstant@val{#1}%
    \def\pgf@plotxzerolevelstreamstart{%
        \global\let\pgf@plotxzerolevelstreamend=\relax
        \gdef\pgf@plotxzerolevelstreamnext{\global\pgf@x=\pgfplotxzerolevelstreamconstant@val\relax}%
    }%
}%
\pgfplotxzerolevelstreamconstant{0pt}%

\def\pgfplotyzerolevelstreamconstant#1{%
    \edef\pgfplotyzerolevelstreamconstant@val{#1}%
    \def\pgf@plotyzerolevelstreamstart{%
        \global\let\pgf@plotyzerolevelstreamend=\relax
        \gdef\pgf@plotyzerolevelstreamnext{\global\pgf@x=\pgfplotyzerolevelstreamconstant@val\relax}%
    }%
}%
\pgfplotyzerolevelstreamconstant{0pt}%

\def\pgfplotbarwidth{\pgfkeysvalueof{/pgf/bar width}}%
\def\pgfplotbarshift{\pgfkeysvalueof{/pgf/bar shift}}%

\pgfqkeys{/pgf}{%
    bar width/.initial=10pt,
    bar shift/.initial=0pt,
    bar interval width/.initial=1,
    bar interval shift/.initial=0.5,
    at begin bar/.initial=,
    at end bar/.initial=,
}%


\pgfdeclareplothandler{\pgfplothandlerybar}{}{%
  start={
    \pgfmathparse{\pgfplotbarwidth}%
    \xdef\pgfplotbarwidth@{\pgfmathresult pt}%
    \pgfmathparse{\pgfplotbarshift}%
    \xdef\pgfplotbarshift@{\pgfmathresult pt}%
    \pgfplotyzerolevelstreamstart
  },
  end macro=\pgfplotyzerolevelstreamend,
  point macro=\pgf@plot@ybar@handler
}%

\def\pgf@plot@ybar@handler#1{%
  \pgfkeysvalueof{/pgf/at begin bar}%
  \pgf@process{#1}%
  \pgf@ya=\pgf@y
  \expandafter\pgf@xb\pgfplotbarwidth@\relax
  \pgf@xc=\pgf@x
  \advance\pgf@xc by-.5\pgf@xb
  \advance\pgf@xc by\pgfplotbarshift@\relax
  \begingroup
  \pgfplotyzerolevelstreamnext
  \endgroup
  \pgf@yb=\pgf@x
  \advance\pgf@ya by-\pgf@yb
  \pgfpathrectangle
    {\pgfqpoint{\pgf@xc}{\pgf@yb}}%
    {\pgfqpoint{\pgf@xb}{\pgf@ya}}%
  \pgfkeysvalueof{/pgf/at end bar}%
}%

\pgfdeclareplothandler{\pgfplothandlerxbar}{}{%
  start={
    \pgfmathparse{\pgfplotbarwidth}%
    \xdef\pgfplotbarwidth@{\pgfmathresult pt}%
    \pgfmathparse{\pgfplotbarshift}%
    \xdef\pgfplotbarshift@{\pgfmathresult pt}%
    \pgfplotxzerolevelstreamstart
  },
  end macro=\pgfplotxzerolevelstreamend,
  point macro=\pgf@plot@xbar@handler
}%

\def\pgf@plot@xbar@handler#1{%
  \pgfkeysvalueof{/pgf/at begin bar}%
  \pgf@process{#1}%
  \pgf@ya=\pgf@x
  \expandafter\pgf@xb\pgfplotbarwidth@\relax
  \pgf@xc=\pgf@y
  \advance\pgf@xc by-.5\pgf@xb
  \advance\pgf@xc by\pgfplotbarshift@\relax
  \begingroup
  \pgfplotxzerolevelstreamnext
  \endgroup
  \pgf@yb=\pgf@x
  \advance\pgf@ya by-\pgf@yb
  \pgfpathrectangle
    {\pgfqpoint{\pgf@yb}{\pgf@xc}}%
    {\pgfqpoint{\pgf@ya}{\pgf@xb}}%
  \pgfkeysvalueof{/pgf/at end bar}%
}%

\pgfdeclareplothandler{\pgfplothandlerybarinterval}{}{%
  start={
    \pgfmathparse{\pgfkeysvalueof{/pgf/bar interval width}}%
    \xdef\pgfplotbarintervalwidth@{\pgfmathresult}%
    \pgfmathparse{\pgfkeysvalueof{/pgf/bar interval shift}}%
    \xdef\pgfplotbarintervalshift@{\pgfmathresult}%
    \pgfplotyzerolevelstreamstart
  },
  end macro=\pgfplotyzerolevelstreamend,
  point macro=\pgf@plot@ybarinterval@handler@first
}%

\def\pgf@plot@ybarinterval@handler@first#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@barinterval@intervalstart{\the\pgf@x}%
  \xdef\pgf@plot@barinterval@bar{\the\pgf@y}%
  \global\let\pgf@plotstreampoint=\pgf@plot@ybarinterval@handler%
}%
\def\pgf@plot@ybarinterval@handler#1{%
  \pgfkeysvalueof{/pgf/at begin bar}%
  \pgf@process{#1}%
  \pgf@ya=\pgf@plot@barinterval@bar
  \xdef\pgf@plot@barinterval@bar{\the\pgf@y}%
  \pgf@xc=\pgf@plot@barinterval@intervalstart\relax
  \xdef\pgf@plot@barinterval@intervalstart{\the\pgf@x}%
  \pgf@xb=\pgf@x
  \advance\pgf@xb by-\pgf@xc
  \advance\pgf@xc by\pgfplotbarintervalshift@\pgf@xb
  \pgf@xb=\pgfplotbarintervalwidth@\pgf@xb
  \advance\pgf@xc by-.5\pgf@xb%
  \begingroup
  \pgfplotyzerolevelstreamnext
  \endgroup
  \pgf@yb=\pgf@x
  \advance\pgf@ya by-\pgf@yb
  \pgfpathrectangle
    {\pgfqpoint{\pgf@xc}{\pgf@yb}}%
    {\pgfqpoint{\pgf@xb}{\pgf@ya}}%
  \pgfkeysvalueof{/pgf/at end bar}%
}%

\pgfdeclareplothandler{\pgfplothandlerxbarinterval}{}{%
  start={
    \pgfmathparse{\pgfkeysvalueof{/pgf/bar interval width}}%
    \xdef\pgfplotbarintervalwidth@{\pgfmathresult}%
    \pgfmathparse{\pgfkeysvalueof{/pgf/bar interval shift}}%
    \xdef\pgfplotbarintervalshift@{\pgfmathresult}%
    \pgfplotxzerolevelstreamstart
  },
  end macro=\pgfplotxzerolevelstreamend,
  point macro=\pgf@plot@xbarinterval@handler@first
}%

\def\pgf@plot@xbarinterval@handler@first#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@barinterval@intervalstart{\the\pgf@y}%
  \xdef\pgf@plot@barinterval@bar{\the\pgf@x}%
  \global\let\pgf@plotstreampoint=\pgf@plot@xbarinterval@handler%
}%
\def\pgf@plot@xbarinterval@handler#1{%
  \pgfkeysvalueof{/pgf/at begin bar}%
  \pgf@process{#1}%
  \pgf@ya=\pgf@plot@barinterval@bar
  \xdef\pgf@plot@barinterval@bar{\the\pgf@x}%
  \pgf@xc=\pgf@plot@barinterval@intervalstart\relax
  \xdef\pgf@plot@barinterval@intervalstart{\the\pgf@y}%
  \pgf@xb=\pgf@y
  \advance\pgf@xb by-\pgf@xc
  \advance\pgf@xc by\pgfplotbarintervalshift@\pgf@xb
  \pgf@xb=\pgfplotbarintervalwidth@\pgf@xb
  \advance\pgf@xc by-.5\pgf@xb%
  \begingroup
  \pgfplotxzerolevelstreamnext
  \endgroup
  \pgf@yb=\pgf@x
  \advance\pgf@ya by-\pgf@yb
  \pgfpathrectangle
    {\pgfqpoint{\pgf@yb}{\pgf@xc}}%
    {\pgfqpoint{\pgf@ya}{\pgf@xb}}%
  \pgfkeysvalueof{/pgf/at end bar}%
}%



\pgfdeclareplothandler{\pgfplothandlerconstantlineto}{}{%
  point macro=\pgf@plot@const@line@handler
}%

\def\pgf@plot@const@line@handler#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@y}%
  \pgf@plot@first@action{}%
  \global\let\pgf@plotstreampoint=\pgf@plot@const@line@handler@@%
}%
\def\pgf@plot@const@line@handler@@#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x
  \pgf@ya=\pgf@y
  \pgf@yb\pgf@plot@const@line@handler@last\relax
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@ya}%
}%


\pgfdeclareplothandler{\pgfplothandlerconstantlinetomarkright}{}{%
  point macro=\pgf@plot@const@line@mark@right@handler
}%

\def\pgf@plot@const@line@mark@right@handler#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@x}%
  \pgf@plot@first@action{}%
  \global\let\pgf@plotstreampoint=\pgf@plot@const@line@mark@right@handler@@%
}%
\def\pgf@plot@const@line@mark@right@handler@@#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x
  \pgf@ya=\pgf@y
  \pgf@yb\pgf@plot@const@line@handler@last\relax
  \pgfpathlineto{\pgfqpoint{\pgf@yb}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@xa}%
}%


\pgfdeclareplothandler{\pgfplothandlerconstantlinetomarkmid}{}{%
  point macro=\pgf@plot@const@line@mark@mid@handler
}%

\def\pgf@plot@const@line@mark@mid@handler#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@const@line@handler@last{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
  \pgf@plot@first@action{}%
  \global\let\pgf@plotstreampoint=\pgf@plot@const@line@mark@mid@handler@@%
}%
\def\pgf@plot@const@line@mark@mid@handler@@#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x
  \pgf@ya=\pgf@y
  \pgf@plot@const@line@handler@last
  \pgf@xc=.5\pgf@xa
  \advance\pgf@xc by.5\pgf@x
  \pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@y}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@const@line@handler@last{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
}%


\pgfdeclareplothandler{\pgfplothandlerjumpmarkright}{}{%
  point macro=\pgf@plot@jumpmarkright@handler
}%

\def\pgf@plot@jumpmarkright@handler#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@x}%
  \pgf@plot@first@action{}%
  \global\let\pgf@plotstreampoint=\pgf@plot@jumpmarkright@handler@@%
}%
\def\pgf@plot@jumpmarkright@handler@@#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x
  \pgf@ya=\pgf@y
  \pgf@yb\pgf@plot@const@line@handler@last\relax
  \pgfpathmoveto{\pgfqpoint{\pgf@yb}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@xa}%
}%


\pgfdeclareplothandler{\pgfplothandlerjumpmarkleft}{}{%
  point macro=\pgf@plot@jumpmarkleft@handler
}%
\def\pgf@plot@jumpmarkleft@handler#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@y}%
  \pgf@plot@first@action{}%
  \global\let\pgf@plotstreampoint=\pgf@plot@jumpmarkleft@handler@@%
}%
\def\pgf@plot@jumpmarkleft@handler@@#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x
  \pgf@ya=\pgf@y
  \pgf@yb\pgf@plot@const@line@handler@last\relax
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
  \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@ya}%
}%


\pgfdeclareplothandler{\pgfplothandlerjumpmarkmid}{}{%
  point macro=\pgf@plot@jump@mark@mid@handler
}%

\def\pgf@plot@jump@mark@mid@handler#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@const@line@handler@last{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
  \pgf@plot@first@action{}%
  \global\let\pgf@plotstreampoint=\pgf@plot@jump@mark@mid@handler@@%
}%
\def\pgf@plot@jump@mark@mid@handler@@#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x
  \pgf@ya=\pgf@y
  \pgf@plot@const@line@handler@last
  \pgf@xc=.5\pgf@xa
  \advance\pgf@xc by.5\pgf@x
  \pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@y}}%
  \pgfpathmoveto{\pgfqpoint{\pgf@xc}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@const@line@handler@last{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
}%



\pgfdeclareplothandler{\pgfplothandlerpolarcomb}{}{%
  point macro=\pgf@plot@polarcomb@handler
}%

\def\pgf@plot@polarcomb@handler#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgfpathmoveto{\pgfpointorigin}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
}%





\pgfdeclareplothandler{\pgfplothandlermark}{#1}{%
  start={
    \def\pgf@plot@mark{%
      \ifnum\pgf@plot@mark@count<\pgf@plot@mark@repeat\relax%
      \else%
        \global\pgf@plot@mark@count=0\relax%
        #1%
      \fi%
    }%
    \global\pgf@plot@mark@count=\pgf@plot@mark@repeat\relax%
    \global\advance\pgf@plot@mark@count by-\pgf@plot@mark@phase\relax%
  },
  point macro=\pgf@plot@mark@handler
}%

\newcount\pgf@plot@mark@count
\def\pgf@plot@mark@phase{0}%

\def\pgf@plot@mark@handler#1{%
  \global\advance\pgf@plot@mark@count by1\relax%
  {\pgftransformshift{#1}\pgf@plot@mark}%
}%



\def\pgfsetplotmarkrepeat#1{\def\pgf@plot@mark@repeat{#1}}%
\pgfsetplotmarkrepeat{1}%



\def\pgfsetplotmarkphase#1{\def\pgf@plot@mark@phase{#1}}%
\pgfsetplotmarkphase{1}%




\pgfdeclareplothandler{\pgfplothandlermarklisted}{#1#2}{%
  start={
    \let\pgf@plot@mark@list=\pgfutil@empty%
    \edef\pgf@marshal{\noexpand\foreach\noexpand\pgf@temp in{#2}}
    \pgf@marshal{\xdef\pgf@plot@mark@list{\pgf@plot@mark@list(\pgf@temp)}}%
    \def\pgf@plot@mark{%
      \edef\pgf@marshal{\noexpand\pgfutil@in@{(\the\pgf@plot@mark@count)}{\pgf@plot@mark@list}}%
      \pgf@marshal%
      \ifpgfutil@in@#1\fi%
    }%
    \global\pgf@plot@mark@count=\pgf@plot@mark@repeat\relax%
    \global\advance\pgf@plot@mark@count by-\pgf@plot@mark@phase\relax%
  },
  point macro=\pgf@plot@mark@handler
}%




\def\pgfdeclareplotmark#1#2{\expandafter\def\csname pgf@plot@mark@#1\endcsname{#2}}%



\def\pgfsetplotmarksize#1{\pgfmathsetlength\pgfplotmarksize{#1}}%

\newdimen\pgfplotmarksize
\pgfplotmarksize=2pt



\def\pgfuseplotmark#1{\csname pgf@plot@mark@#1\endcsname}%



\pgfdeclareplotmark{*}
{%
  \pgfpathellipse{\pgfpointorigin}{\pgfqpoint{\pgfplotmarksize}{0sp}}{\pgfqpoint{0sp}{\pgfplotmarksize}}%
  \pgfusepathqfillstroke
}%



\pgfdeclareplotmark{+}
{%
  \pgfpathmoveto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
  \pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfusepathqstroke
}%



\pgfdeclareplotmark{x}
{%
  \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}{-.70710678\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}{.70710678\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}{.70710678\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}{-.70710678\pgfplotmarksize}}%
  \pgfusepathqstroke
}%






\pgfkeys{/pgf/gap around stream point/.initial=1.5pt}%

\pgfdeclareplothandler{\pgfplothandlergaplineto}{}{%
  point macro=\pgf@plot@gap@lineto@handler@initial,
  jump macro=\pgf@plot@gap@next@moveto
}%

\def\pgf@plot@gap@next@moveto{%
  \global\let\pgf@plotstreampoint=\pgf@plot@gap@lineto@handler@initial%
}%

\def\pgf@plot@gap@lineto@handler@initial#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \xdef\pgf@plot@gap@lineto@last{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \global\let\pgf@plotstreampoint=\pgf@plot@gap@lineto@handler%
}%

\def\pgf@plot@gap@lineto@handler#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \xdef\pgf@plot@gap@lineto@next{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \pgf@process{\pgfpointnormalised{\pgfpointdiff{\pgf@plot@gap@lineto@last}{\pgf@plot@gap@lineto@next}}}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgfpathmoveto{\pgfpointadd{\pgfpointscale{\pgfkeysvalueof{/pgf/gap
          around stream point}}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}{\pgf@plot@gap@lineto@last}}%
  \pgfpathlineto{\pgfpointadd{\pgfpointscale{\pgfkeysvalueof{/pgf/gap
          around stream point}}{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}}{\pgf@plot@gap@lineto@next}}%
  \global\let\pgf@plot@gap@lineto@last=\pgf@plot@gap@lineto@next%
}%





\pgfdeclareplothandler{\pgfplothandlergapcycle}{}{%
  point macro=\pgf@plot@gap@cycle@handler@initial,
  jump macro=\pgf@plot@gapcycle@next@moveto,
  end macro=\pgf@plot@gap@cycle@handler@finish,
  start={\global\let\pgf@plot@gap@cycle@first\relax}
}%

\def\pgf@plot@gapcycle@next@moveto{%
  \pgf@plot@gap@cycle@handler@finish%
  \global\let\pgf@plot@gap@cycle@first=\relax%
  \global\let\pgf@plotstreampoint=\pgf@plot@gap@cycle@handler@initial%
}%

\def\pgf@plot@gap@cycle@handler@initial#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \xdef\pgf@plot@gap@cycle@last{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \global\let\pgf@plot@gap@cycle@first=\pgf@plot@gap@cycle@last%
  \global\let\pgf@plotstreampoint=\pgf@plot@gap@cycle@handler%
}%

\def\pgf@plot@gap@cycle@handler#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \xdef\pgf@plot@gap@cycle@next{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \pgf@process{\pgfpointnormalised{\pgfpointdiff{\pgf@plot@gap@cycle@last}{\pgf@plot@gap@cycle@next}}}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgfpathmoveto{\pgfpointadd{\pgfpointscale{\pgfkeysvalueof{/pgf/gap
          around stream point}}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}{\pgf@plot@gap@cycle@last}}%
  \pgfpathlineto{\pgfpointadd{\pgfpointscale{\pgfkeysvalueof{/pgf/gap
          around stream point}}{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}}{\pgf@plot@gap@cycle@next}}%
  \global\let\pgf@plot@gap@cycle@last=\pgf@plot@gap@cycle@next%
}%

\def\pgf@plot@gap@cycle@handler@finish{%
  \ifx\pgf@plot@gap@cycle@first\relax%
  \else
    \pgf@plot@gap@cycle@handler{\pgf@plot@gap@cycle@first}%
  \fi
}%



\endinput

==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex ====

\ProvidesFileRCS{pgflibraryplotmarks.code.tex}



\pgfdeclareplotmark{o}
{%
  \pgfpathellipse{\pgfpointorigin}{\pgfqpoint{\pgfplotmarksize}{0sp}}{\pgfqpoint{0sp}{\pgfplotmarksize}}%
  \pgfusepathqstroke
}%



\pgfdeclareplotmark{Mercedes star}
{%
  \pgfpathmoveto{\pgfqpointpolar{90}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfpointorigin}%
  \pgfpathmoveto{\pgfqpointpolar{-30}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfpointorigin}%
  \pgfpathmoveto{\pgfqpointpolar{-150}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfpointorigin}%
  \pgfusepathqstroke
}%

\pgfdeclareplotmark{Mercedes star flipped}
{%
  \pgfpathmoveto{\pgfqpointpolar{-90}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfpointorigin}%
  \pgfpathmoveto{\pgfqpointpolar{30}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfpointorigin}%
  \pgfpathmoveto{\pgfqpointpolar{150}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfpointorigin}%
  \pgfusepathqstroke
}%





\pgfdeclareplotmark{asterisk}
{%
  \pgfpathmoveto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfqpointpolar{30}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{210}{\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfqpointpolar{-30}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{-210}{\pgfplotmarksize}}%
  \pgfusepathqstroke
}%



\pgfdeclareplotmark{star}
{%
  \pgfpathmoveto{\pgfpointorigin}\pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfpointorigin}\pgfpathlineto{\pgfqpointpolar{18}{\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfpointorigin}\pgfpathlineto{\pgfqpointpolar{-54}{\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfpointorigin}\pgfpathlineto{\pgfqpointpolar{234}{\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfpointorigin}\pgfpathlineto{\pgfqpointpolar{162}{\pgfplotmarksize}}%
  \pgfusepathqstroke
}%



\pgfdeclareplotmark{10-pointed star}
{%
  \pgfpathmoveto{\pgfqpoint{0pt}{-\pgfplotmarksize}}\pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfqpointpolar{18}{-\pgfplotmarksize}}\pgfpathlineto{\pgfqpointpolar{18}{\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfqpointpolar{-54}{-\pgfplotmarksize}}\pgfpathlineto{\pgfqpointpolar{-54}{\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfqpointpolar{234}{-\pgfplotmarksize}}\pgfpathlineto{\pgfqpointpolar{234}{\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfqpointpolar{162}{-\pgfplotmarksize}}\pgfpathlineto{\pgfqpointpolar{162}{\pgfplotmarksize}}%
  \pgfusepathqstroke
}%



\pgfdeclareplotmark{oplus}
{%
  \pgfpathcircle{\pgfpointorigin}{\pgfplotmarksize}%
  \pgfpathmoveto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
  \pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfusepathqstroke
}%

\pgfdeclareplotmark{oplus*}
{%
  \pgfpathcircle{\pgfpointorigin}{\pgfplotmarksize}%
  \pgfpathmoveto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
  \pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfusepathqfillstroke
}%



\pgfdeclareplotmark{otimes}
{%
  \pgfpathcircle{\pgfpointorigin}{\pgfplotmarksize}%
  \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}{-.70710678\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}{.70710678\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}{.70710678\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}{-.70710678\pgfplotmarksize}}%
  \pgfusepathqstroke
}%

\pgfdeclareplotmark{otimes*}
{%
  \pgfpathcircle{\pgfpointorigin}{\pgfplotmarksize}%
  \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}{-.70710678\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}{.70710678\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}{.70710678\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}{-.70710678\pgfplotmarksize}}%
  \pgfusepathqfillstroke
}%



\pgfdeclareplotmark{|}
{%
  \pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfusepathqstroke
}%




\pgfdeclareplotmark{-}
{%
  \pgfpathmoveto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
  \pgfusepathqstroke
}%



\pgfdeclareplotmark{square}
{%
  \pgfpathrectangle{\pgfqpoint{-\pgfplotmarksize}{-\pgfplotmarksize}}{\pgfqpoint{2\pgfplotmarksize}{2\pgfplotmarksize}}%
  \pgfusepathqstroke
}%


\pgfdeclareplotmark{square*}
{%
  \pgfpathrectangle{\pgfqpoint{-\pgfplotmarksize}{-\pgfplotmarksize}}{\pgfqpoint{2\pgfplotmarksize}{2\pgfplotmarksize}}%
  \pgfusepathqfillstroke
}%



\pgfdeclareplotmark{triangle}
{%
  \pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{-30}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{-150}{\pgfplotmarksize}}%
  \pgfpathclose
  \pgfusepathqstroke
}%



\pgfdeclareplotmark{triangle*}
{%
  \pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{-30}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{-150}{\pgfplotmarksize}}%
  \pgfpathclose
  \pgfusepathqfillstroke
}%




\pgfdeclareplotmark{diamond}
{%
  \pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{.75\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{-.75\pgfplotmarksize}{0pt}}%
  \pgfpathclose
  \pgfusepathqstroke
}%



\pgfdeclareplotmark{diamond*}
{%
  \pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{.75\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{-.75\pgfplotmarksize}{0pt}}%
  \pgfpathclose
  \pgfusepathqfillstroke
}%




\pgfdeclareplotmark{pentagon}
{%
  \pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{18}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{-54}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{234}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{162}{\pgfplotmarksize}}%
  \pgfpathclose
  \pgfusepathqstroke
}%


\pgfdeclareplotmark{pentagon*}
{%
  \pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{18}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{-54}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{234}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpointpolar{162}{\pgfplotmarksize}}%
  \pgfpathclose
  \pgfusepathqfillstroke
}%

\newif\ifpgfmarktext@usetikznode
\pgfkeys{
  /pgf/text mark/.initial=p,
  /pgf/text mark style/.initial=,
  /pgf/text mark as node/.is if=pgfmarktext@usetikznode,
  /pgf/text mark as node/.default=true,
  /pgf/text mark/style/.style={/pgf/text mark style={#1}},%
  /pgf/text mark/as node/.style={/pgf/text mark as node={#1}},%
}%

\pgfdeclareplotmark{text}
{
  \pgfkeysgetvalue{/pgf/text mark style}\pgfmarktext@style
  \pgfkeysgetvalue{/pgf/text mark}\pgfmarktext@
  \ifpgfmarktext@usetikznode
    \expandafter\node\expandafter[\pgfmarktext@style]{\pgfmarktext@};
  \else
    \expandafter\pgftext\expandafter[\pgfmarktext@style]{\pgfmarktext@}%
  \fi
}%

\pgfkeysdef{/pgf/mark color}{\def\pgf@mark@color{#1}}%
\let\pgf@mark@color\pgfutil@empty

\def\pgf@set@mark@color{%
    \ifx\pgf@mark@color\pgfutil@empty
        \pgfsys@color@rgb@fill{1}{1}{1}%
    \else
        \pgfsetfillcolor{\pgf@mark@color}%
    \fi
}%
\def\pgf@mark@color@none{none}%


\pgfdeclareplotmark{halfcircle}{%
    \ifx\pgf@mark@color@none\pgf@mark@color
    \else
        \pgfscope
        \pgf@set@mark@color
        \pgfpathmoveto
            {\pgfqpoint{-\pgfplotmarksize}{0pt}}%
        \pgfpatharc{180}{360}{\pgfplotmarksize}%
        \pgfusepathqfill
        \endpgfscope%
    \fi
    \pgfpathmoveto
        {\pgfqpoint{-\pgfplotmarksize}{0pt}}%
    \pgfpathlineto
        {\pgfqpoint{\pgfplotmarksize}{0pt}}%
    \pgfpathcircle{\pgfpointorigin}%
        {\pgfplotmarksize}%
    \pgfusepathqstroke
}%
\pgfdeclareplotmark{halfcircle*}{%
    \pgfpathmoveto
        {\pgfqpoint{\pgfplotmarksize}{0pt}}%
    \pgfpatharc{0}{180}{\pgfplotmarksize}%
    \pgfpathclose
    \pgfusepathqfill
    \ifx\pgf@mark@color@none\pgf@mark@color
    \else
        \pgfscope
            \pgf@set@mark@color
            \pgfpathmoveto
                {\pgfqpoint{-\pgfplotmarksize}{0pt}}%
            \pgfpatharc{180}{360}{\pgfplotmarksize}%
            \pgfusepathqfill
        \endpgfscope%
    \fi
    \pgfpathcircle{\pgfpointorigin}%
        {\pgfplotmarksize}%
    \pgfusepathqstroke
}%


\pgfdeclareplotmark{halfdiamond*}{%
  \pgfpathmoveto{\pgfqpoint{-.75\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{.75\pgfplotmarksize}{0pt}}%
  \pgfusepathqfill
  \ifx\pgf@mark@color@none\pgf@mark@color
  \else
      \pgfscope
      \pgf@set@mark@color
      \pgfpathmoveto{\pgfqpoint{.75\pgfplotmarksize}{0pt}}%
      \pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
      \pgfpathlineto{\pgfqpoint{-.75\pgfplotmarksize}{0pt}}%
      \pgfusepathqfill
      \endpgfscope
  \fi
  \pgfpathmoveto{\pgfqpoint{.75\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{-.75\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfpathclose
  \pgfusepathqstroke
}%


\pgfdeclareplotmark{halfsquare*}{%
  \pgfpathmoveto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
  \pgfusepathqfill
  \ifx\pgf@mark@color@none\pgf@mark@color
  \else
      \pgfscope
          \pgf@set@mark@color
          \pgfpathmoveto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
          \pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
          \pgfpathlineto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
          \pgfusepathqfill
      \endpgfscope
  \fi
  \pgfpathmoveto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfpathclose
  \pgfusepathqstroke
}%


\pgfdeclareplotmark{halfsquare right*}{%
  \pgfpathmoveto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfusepathqfill
  \ifx\pgf@mark@color@none\pgf@mark@color
  \else
      \pgfscope
          \pgf@set@mark@color
          \pgfpathmoveto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
          \pgfpathlineto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
          \pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
          \pgfusepathqfill
      \endpgfscope
  \fi
  \pgfpathmoveto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfpathclose
  \pgfusepathqstroke
}%


\pgfdeclareplotmark{halfsquare left*}{%
  \pgfpathmoveto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfusepathqfill
  \ifx\pgf@mark@color@none\pgf@mark@color
  \else
      \pgfscope
          \pgf@set@mark@color
          \pgfpathmoveto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
          \pgfpathlineto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
          \pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
          \pgfusepathqfill
      \endpgfscope
  \fi
  \pgfpathmoveto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfpathclose
  \pgfusepathqstroke
}%


\pgfdeclareplotmark{heart}{%
  \pgfpathmoveto{\pgfqpoint{0pt}{-1.75\pgfplotmarksize}}%
  \pgfpathcurveto{\pgfqpoint{0pt}{-1.75\pgfplotmarksize}}{\pgfqpoint{0pt}{-1.66\pgfplotmarksize}}{\pgfqpoint{-.5\pgfplotmarksize}{-1.165\pgfplotmarksize}}%
  \pgfpathcurveto{\pgfqpoint{-.5\pgfplotmarksize}{-1.165\pgfplotmarksize}}{\pgfqpoint{-\pgfplotmarksize}{-.75\pgfplotmarksize}}{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
  \pgfpathcurveto{\pgfqpoint{-\pgfplotmarksize}{0pt}}{\pgfqpoint{-\pgfplotmarksize}{.5825\pgfplotmarksize}}{\pgfqpoint{-.5825\pgfplotmarksize}{.5825\pgfplotmarksize}}%
  \pgfpathcurveto{\pgfqpoint{-.5825\pgfplotmarksize}{.5825\pgfplotmarksize}}{\pgfqpoint{0pt}{.5825\pgfplotmarksize}}{\pgfqpoint{0pt}{0pt}}%
  \pgfpathcurveto{\pgfqpoint{0pt}{0pt}}{\pgfqpoint{0pt}{.5825\pgfplotmarksize}}{\pgfqpoint{.5825\pgfplotmarksize}{.5825\pgfplotmarksize}}%
  \pgfpathcurveto{\pgfqpoint{.5825\pgfplotmarksize}{.5825\pgfplotmarksize}}{\pgfqpoint{\pgfplotmarksize}{.5825\pgfplotmarksize}}{\pgfqpoint{\pgfplotmarksize}{0pt}}%
  \pgfpathcurveto{\pgfqpoint{\pgfplotmarksize}{0pt}}{\pgfqpoint{\pgfplotmarksize}{-.75\pgfplotmarksize}}{\pgfqpoint{.5\pgfplotmarksize}{-1.165\pgfplotmarksize}}%
  \pgfpathcurveto{\pgfqpoint{.5\pgfplotmarksize}{-1.165\pgfplotmarksize}}{\pgfqpoint{0pt}{-1.66\pgfplotmarksize}}{\pgfqpoint{0pt}{-1.75\pgfplotmarksize}}%
  \pgfpathclose
  \pgfusepathqfillstroke
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryprofiler.code.tex ====

\pgfutil@ifundefined{pdfelapsedtime}{%
  \pgfutil@ifluatex
    \def\pgfutil@pdfelapsedtime{%
      \numexpr\pgfutil@directlua{%
        tex.print(math.floor((os.clock())*65536+0.5))}\relax}
  \else
    \pgferror{%
      Library 'profiler' can only be used with pdftex Rev. >= 1.671
      because it needs the \string\pdfelapsedtime\space command or
      with luatex}%
    \global\let\pgfutil@pdfelapsedtime=\c@pgf@counta
  \fi}{%
  \let\pgfutil@pdfelapsedtime\pdfelapsedtime}%


\def\pgfprofilenew#1{%
    \pgfutil@ifundefined{c@pgfprofile@elapsedtotal@#1}{%
        \expandafter\gdef\csname c@pgfprofile@elapsedtotal@#1\endcsname{0}%
        \expandafter\gdef\csname c@pgfprofile@elapsedself@#1\endcsname{0}%
        \expandafter\gdef\csname c@pgfprofile@numinvocations@#1\endcsname{0}%
        \expandafter\gdef\csname c@pgfprofile@subtractforself@#1\endcsname{0}%
        \expandafter\gdef\csname c@pgfprofile@semaphor@#1\endcsname{0}%
        \expandafter\gdef\csname c@pgfprofile@elapsed@at@start@#1\endcsname{0}%
        \pgfprofile@all@registered@list@add{#1}%
    }{%
    }%
}%

\def\pgfprofile@TeX@DIALECT@toenvironment@begin#1{\csname #1\endcsname}%
\def\pgfprofile@TeX@DIALECT@toenvironment@end#1{\csname end#1\endcsname}%

\def\pgfprofile@@to@pgfretval#1{%
    \expandafter\let\expandafter\pgfretval#1%
}%

\def\pgfprofilenewforenvironment{\pgfutil@ifnextchar[{\pgfprofilenewforenvironment@}{\pgfprofilenewforenvironment@[]}}%
\def\pgfprofilenewforenvironment@[#1]#2{%
    \expandafter\pgfprofile@@to@pgfretval\pgfprofile@TeX@DIALECT@toenvironment@begin{#2}%
    \ifx\pgfretval\relax
        \pgferror{\string\pgfprofilenewforenvironment{#2} doesn't work: the environment `#2' is (not yet?) known or not known in this context}{}%
    \else
        \expandafter\global\expandafter\let\csname pgfprofile@orig@begin@#2\endcsname=\pgfretval
        \expandafter\pgfprofile@@to@pgfretval\pgfprofile@TeX@DIALECT@toenvironment@end{#2}%
        \expandafter\global\expandafter\let\csname pgfprofile@orig@end@#2\endcsname=\pgfretval
        \def\pgfprofile@temp{#1}%
        \ifx\pgfprofile@temp\pgfutil@empty
            \pgfprofilenewforenvironment@@{\pgfprofileenv #2}{#2}%
        \else
            \pgfprofilenewforenvironment@@{#1}{#2}%
        \fi
    \fi
}%
\def\pgfprofilenewforenvironment@@#1#2{%
    \pgfprofilenew{#1}%
    \expandafter\expandafter\expandafter\gdef\pgfprofile@TeX@DIALECT@toenvironment@begin{#2}{%
        \pgfprofilestart{#1}%
        \csname pgfprofile@orig@begin@#2\endcsname
    }%
    \expandafter\expandafter\expandafter\gdef\pgfprofile@TeX@DIALECT@toenvironment@end{#2}{%
        \csname pgfprofile@orig@end@#2\endcsname
        \pgfprofileend{#1}%
    }%
}%


\def\pgfprofilecs{}%
\def\pgfprofileenv{}%

\def\pgfprofilenewforcommand{\pgfutil@ifnextchar[{\pgfprofilenewforcommand@}{\pgfprofilenewforcommand@[]}}%
\def\pgfprofilenewforcommand@[#1]#2#3{%
    \def\pgfprofile@temp{#3}%
    \ifx\pgfprofile@temp\pgfutil@empty
        \pgfprofilenewforcommandpattern[#1]{#2}{}{}%
    \else
        \ifcase#3\relax
            \pgfprofilenewforcommandpattern[#1]{#2}{}{}%
        \or
            \pgfprofilenewforcommandpattern[#1]{#2}{##1}{{##1}}%
        \or
            \pgfprofilenewforcommandpattern[#1]{#2}{##1##2}{{##1}{##2}}%
        \or
            \pgfprofilenewforcommandpattern[#1]{#2}{##1##2##3}{{##1}{##2}{##3}}%
        \or
            \pgfprofilenewforcommandpattern[#1]{#2}{##1##2##3##4}{{##1}{##2}{##3}{##4}}%
        \or
            \pgfprofilenewforcommandpattern[#1]{#2}{##1##2##3##4##5}{{##1}{##2}{##3}{##4}{##5}}%
        \or
            \pgfprofilenewforcommandpattern[#1]{#2}{##1##2##3##4##5##6}{{##1}{##2}{##3}{##4}{##5}{##6}}%
        \or
            \pgfprofilenewforcommandpattern[#1]{#2}{##1##2##3##4##5##6##7}{{##1}{##2}{##3}{##4}{##5}{##6}{##7}}%
        \else
            \pgferror{library 'profiler' can't replace control sequences with '#3' arguments automatically, sorry.}{}%
        \fi
    \fi
}%

\def\pgfprofilenewforcommandpattern{\pgfutil@ifnextchar[{\pgfprofilenewforcommandpattern@}{\pgfprofilenewforcommandpattern@[]}}%
\def\pgfprofilenewforcommandpattern@[#1]#2#3#4{%
    \def\pgfprofile@known{1}%
    \ifx#2\undefined
        \def\pgfprofile@known{0}%
    \else
        \ifx#2\relax
            \def\pgfprofile@known{0}%
        \fi
    \fi
    \if\pgfprofile@known0%
        \pgferror{\string\pgfprofilenewforcommandpattern{\string#2} doesn't work: the command `\string#2' is (not yet?) known or not known in this context}%
    \else
    \begingroup
    \pgfprofile@cs@to@name{#2}%
    \let\pgfprofilenew@cmdname=\pgfretval
    \def\pgfprofile@temp{#1}%
    \ifx\pgfprofile@temp\pgfutil@empty
        \edef\pgfprofilenew@profilerentryname{\pgfprofilecs\pgfprofilenew@cmdname}%
    \else
        \edef\pgfprofilenew@profilerentryname{#1}%
    \fi
    \expandafter\global\expandafter\let\csname pgfprofile@name@for@\pgfprofilenew@cmdname\endcsname=\pgfprofilenew@profilerentryname
    \pgfprofilenew{\pgfprofilenew@profilerentryname}%
    \expandafter\gdef\csname b@pgfprofile@show@\pgfprofilenew@profilerentryname\endcsname{0}%
    \expandafter\global\expandafter\let\csname pgfprofile@orig@\pgfprofilenew@cmdname\endcsname=#2%
    \toks0={#3}%
    \edef\pgfprofile@temp{\the\toks0}%
    \def\pgfprofile@tempb{}%
    \ifx\pgfprofile@temp\pgfprofile@tempb
        \expandafter\global\expandafter\let\csname pgfprofile@repl@\pgfprofilenew@cmdname\endcsname=\pgfprofileinvokecommand@uptoonearg
    \else
        \expandafter\gdef\csname pgfprofile@repl@\pgfprofilenew@cmdname\endcsname#3{%
            \pgfprofile@invokeorig{#4}%
        }%
    \fi
    \xdef#2{\noexpand\pgfprofileinvokecommand{\pgfprofilenew@cmdname}}%
    \endgroup
    \fi
}%

\def\pgfprofileshowinvocationsfor#1{%
    \pgfutil@ifundefined{b@pgfprofile@show@#1}{%
        \pgferror{\string\pgfprofileshowinvocationsfor{#1} doesn't work: the argument is no profiler entry}%
    }{%
        \expandafter\gdef\csname b@pgfprofile@show@#1\endcsname{1}%
        \expandafter\gdef\csname b@pgfprofile@show@edef@#1\endcsname{0}%
    }%
}%
\def\pgfprofileshowinvocationsexpandedfor#1{%
    \pgfutil@ifundefined{b@pgfprofile@show@#1}{%
        \pgferror{\string\pgfprofileshowinvocationsfor{#1} doesn't work: the argument is no profiler entry}%
    }{%
        \expandafter\gdef\csname b@pgfprofile@show@#1\endcsname{1}%
        \expandafter\gdef\csname b@pgfprofile@show@edef@#1\endcsname{1}%
    }%
}%

\def\pgfprofile@no@optional@arg@text{}%
\def\pgfprofileinvokecommand#1{%
    \pgfutil@ifnextchar[{\pgfprofileinvokecommand@{#1}}{\pgfprofileinvokecommand@{#1}[]}%
}%
\def\pgfprofileinvokecommand@#1[#2]{%
    \def\pgfprofileinvokecommand@cs{#1}%
    \def\pgfprofileinvokecommand@optarg{#2}%
    \edef\pgfprofileinvokecommand@profilerentryname{\csname pgfprofile@name@for@#1\endcsname}%
    \csname pgfprofile@repl@#1\endcsname%
}%

\def\pgfprofile@invokeorig#1{%
    \begingroup
    \toks1=\expandafter{\pgfprofileinvokecommand@optarg}%
    \toks2={#1}%
    \toks3=\expandafter{\csname pgfprofile@orig@\pgfprofileinvokecommand@cs\endcsname}%
    \ifx\pgfprofileinvokecommand@optarg\pgfprofile@no@optional@arg@text
        \xdef\pgfprofile@invokeorig@doitfinally{\the\toks3 \the\toks2 }%
    \else
        \xdef\pgfprofile@invokeorig@doitfinally{\the\toks3[\the\toks1]\the\toks2 }%
    \fi
    \if1\csname b@pgfprofile@show@\pgfprofileinvokecommand@profilerentryname\endcsname
        \pgfprofile@orig@show
    \fi
    \endgroup
    \edef\pgfprofile@temp{{\pgfprofileinvokecommand@cs}{\pgfprofileinvokecommand@profilerentryname}}%
    \expandafter\pgfprofile@invokeorig@\pgfprofile@temp%
}%
\def\pgfprofile@orig@show{%
    \toks4=\expandafter{\csname\pgfprofileinvokecommand@cs\endcsname}%
    \ifx\pgfprofileinvokecommand@optarg\pgfprofile@no@optional@arg@text
        \def\pgfprofile@orig@show@args{\the\toks2 }%
    \else
        \def\pgfprofile@orig@show@args{[\the\toks1] \the\toks2 }%
    \fi
    \if1\csname b@pgfprofile@show@edef@\pgfprofileinvokecommand@profilerentryname\endcsname
        \edef\pgfprofile@orig@show@args{\pgfprofile@orig@show@args}%
        \edef\pgfprofile@orig@show@args{\pgfprofile@orig@show@args}%
    \fi
    \pgf@typeout{pgflibraryprofiler: calling
        \#\csname c@pgfprofile@numinvocations@\pgfprofileinvokecommand@profilerentryname\endcsname\space
        (\the\toks4 \pgfprofile@orig@show@args)}%
}%

\def\pgfprofile@invokeorig@#1#2{%
    \pgfprofileifisrunning{#2}{%
        \pgfprofile@invokeorig@doitfinally%
    }{%
        \pgfprofilestart{#2}%
        \pgfprofile@invokeorig@doitfinally%
        \pgfprofileend{#2}%
    }%
}%


\def\pgfprofileinvokecommand@uptoonearg{%
    \pgfutil@ifnextchar\bgroup{\pgfprofileinvokecommand@onearg}{\pgfprofileinvokecommand@noarg}%
}%
\def\pgfprofileinvokecommand@onearg#1{%
    \pgfprofile@invokeorig{{#1}}%
}%
\def\pgfprofileinvokecommand@noarg{%
    \pgfprofile@invokeorig{}%
}%



\def\pgfprofilestart#1{%
    \pgfprofileifisrunning{#1}{%
        \relax
    }{%
        \expandafter\xdef\csname c@pgfprofile@elapsed@at@start@#1\endcsname{\the\pgfutil@pdfelapsedtime}%
        \expandafter\gdef\csname c@pgfprofile@subtractforself@#1\endcsname{0}%
        \pgfprofile@advance{c@pgfprofile@numinvocations@#1}{1}%
        \pgfprofilestackpush{#1}%
    }%
    \pgfprofile@advance{c@pgfprofile@semaphor@#1}{1}%
}%

\def\pgfprofileend#1{%
    \pgfprofile@advance{c@pgfprofile@semaphor@#1}{-1}%
    \pgfprofileifisrunning{#1}{%
        \relax
    }{%
        \begingroup
            \c@pgf@countb=\pgfutil@pdfelapsedtime\relax
            \advance\c@pgf@countb by-\csname c@pgfprofile@elapsed@at@start@#1\endcsname\relax
            \pgfprofilestackpop\pgfretval
            \edef\pgfprofile@temp{#1}%
            \ifx\pgfprofile@temp\pgfretval
            \else
                \pgf@typeout{pgflibraryprofiler WARNING: possible error in self time computation...}%
            \fi
            \pgfprofilestackifempty{%
                \relax
            }{%
                \pgfprofilestacktop\pgfretval
                \pgfprofile@advance{c@pgfprofile@subtractforself@\pgfretval}{\c@pgf@countb}%
            }%
            \pgfprofile@advance{c@pgfprofile@elapsedtotal@#1}{\c@pgf@countb}%
            \advance\c@pgf@countb by-\csname c@pgfprofile@subtractforself@#1\endcsname\relax
            \pgfprofile@advance{c@pgfprofile@elapsedself@#1}{\c@pgf@countb}%
        \endgroup
    }%
}%

\def\pgfprofileifisrunning#1#2#3{%
    \ifnum\csname c@pgfprofile@semaphor@#1\endcsname=0 \def\pgfprofileifisrunning@next{#3}\else \def\pgfprofileifisrunning@next{#2}\fi
    \pgfprofileifisrunning@next
}%

\def\pgfprofilesetrel#1{\edef\pgfprofile@rel{#1}}%

\def\pgfprofilepostprocess{%
    \begingroup
    \c@pgf@countb=\time
    \divide\c@pgf@countb by60
    \c@pgf@countd=\c@pgf@countb
    \multiply\c@pgf@countd by60
    \c@pgf@countc=\time
    \advance\c@pgf@countc by-\c@pgf@countd
    \immediate\openout\w@pgf@writea=\jobname.profiler.\the\year-\pgfprofiletotwodigitstr\month-\pgfprofiletotwodigitstr\day_\pgfprofiletotwodigitstr\c@pgf@countb h_\pgfprofiletotwodigitstr\c@pgf@countc m.dat
    \immediate\write\w@pgf@writea{%
        \pgfprofile@percent relative values are measured against the totaltime of `\pgfprofile@rel'.%
    }%
    \pgf@typeout{pgflibraryprofiler: relative values are measured against the totaltime of `\pgfprofile@rel'.}%
    \immediate\write\w@pgf@writea{%
        profilerentry\pgfprofile@TAB
        totaltime[s]\pgfprofile@TAB
        totaltime[percent]\pgfprofile@TAB
        selftime[s]\pgfprofile@TAB
        selftime[percent]\pgfprofile@TAB
        numinvocations\pgfprofile@TAB}%
    \pgfprofileifisrunning{\pgfprofile@rel}{%
        \pgfprofileend{\pgfprofile@rel}%
    }{}%
    \pgf@xa=\csname c@pgfprofile@elapsedtotal@\pgfprofile@rel\endcsname sp
    \edef\pgfprofiletotaltime{\pgf@sys@tonumber\pgf@xa}%
    \pgfmathreciprocal@{\pgfprofiletotaltime}%
    \let\pgfprofiletotaltime@inv=\pgfmathresult
    \pgfprofile@all@registered@list@foreach{%
        \pgfprofileifisrunning{##1}{%
            \pgfprofileend{##1}%
        }{}%
        \pgfprofilepostprocess@single{##1}%
    }%
    \immediate\write\w@pgf@writea{%
        \pgfprofile@percent\space vim: ts=40 nowrap nostartofline
    }%
    \immediate\closeout\w@pgf@writea
    \endgroup
}%

{%
\catcode`\[=1 %
\catcode`\]=2 %
\catcode`\{=12 %
\catcode`\}=12 %
\catcode`\^^I=12
\gdef\pgfprofile@lbrace[{]%
\gdef\pgfprofile@rbrace[}]%
\gdef\pgfprofile@TAB[^^I]%
]
{
\catcode`\%=12 \gdef\pgfprofile@percent{%}}

\def\pgfprofilepostprocess@single#1{%
    \begingroup
    \pgf@xa=\csname c@pgfprofile@elapsedtotal@#1\endcsname sp
    \pgf@xb=\csname c@pgfprofile@elapsedself@#1\endcsname sp
    \pgf@ya=\pgfprofiletotaltime@inv\pgf@xa
    \pgf@yb=\pgfprofiletotaltime@inv\pgf@xb
    \multiply\pgf@ya by100
    \multiply\pgf@yb by100
    \edef\pgfprofilecur@total{\pgf@sys@tonumber\pgf@xa}%
    \edef\pgfprofilecur@self{\pgf@sys@tonumber\pgf@xb}%
    \edef\pgfprofilecur@total@rel{\pgf@sys@tonumber\pgf@ya}%
    \edef\pgfprofilecur@self@rel{\pgf@sys@tonumber\pgf@yb}%
    \pgf@typeout{
        pgflibraryprofiler(#1)
        \pgfprofile@lbrace
            total time=\pgfprofilecur@total sec; (\pgfprofilecur@total@rel\pgfprofile@percent)
            self time=\pgfprofilecur@self sec; (\pgfprofilecur@self@rel\pgfprofile@percent)
            invocations=\csname c@pgfprofile@numinvocations@#1\endcsname;
        \pgfprofile@rbrace
    }%
    \immediate\write\w@pgf@writea{%
        #1\pgfprofile@TAB
        \pgfprofilecur@total\pgfprofile@TAB
        \pgfprofilecur@total@rel\pgfprofile@TAB
        \pgfprofilecur@self\pgfprofile@TAB
        \pgfprofilecur@self@rel\pgfprofile@TAB
        \csname c@pgfprofile@numinvocations@#1\endcsname\pgfprofile@TAB
    }%
    \endgroup
}%
\long\def\pgfprofileforeachentryinCSV#1#2{%
    \long\def\pgfprofileinvokeforeach@@##1{#2}%
    \pgfprofileforeachentryinCSVisterminated@loop#1,\pgfeov
}%
\long\def\pgfprofileforeachentryinCSVisterminated@loop{%
    \pgfutil@ifnextchar\pgfeov{\pgfutil@gobble}{\pgfprofileforeachentryinCSV@next}%
}%
\long\def\pgfprofileforeachentryinCSV@next#1,{%
    \pgfprofileinvokeforeach@@{#1}%
    \pgfprofileforeachentryinCSVisterminated@loop%
}%

\xdef\pgfprofile@all@registered@list{}%
\xdef\pgfprofile@currently@running@list{}%

\def\pgfprofile@all@registered@list@add#1{%
    \ifx\pgfprofile@all@registered@list\pgfutil@empty
        \xdef\pgfprofile@all@registered@list{#1}%
    \else
        \xdef\pgfprofile@all@registered@list{\pgfprofile@all@registered@list,#1}%
    \fi
}%

\def\pgfprofile@all@registered@list@foreach#1{%
    \expandafter\pgfprofileforeachentryinCSV\expandafter{\pgfprofile@all@registered@list}{#1}%
}%

\def\pgfprofile@advance#1#2{%
    \begingroup
        \c@pgf@counta=\csname #1\endcsname\relax
        \advance\c@pgf@counta by#2\relax
        \expandafter\xdef\csname #1\endcsname{\the\c@pgf@counta}%
    \endgroup
}%

\def\pgfprofile@cs@to@name@#1#2\relax{\def\pgfretval{#2}}

\def\pgfprofile@cs@to@name#1{%
    \expandafter\pgfprofile@cs@to@name@\string#1\relax
}%

\newcount\c@pgfprofile@stacktop

\c@pgfprofile@stacktop=-1
\def\pgfprofilestackpush#1{%
    \global\advance\c@pgfprofile@stacktop by1
    \expandafter\xdef\csname pgfprofile@stack@\the\c@pgfprofile@stacktop\endcsname{#1}%
}%
\def\pgfprofilestackpop#1{%
    \pgfprofilestacktop#1%
    \global\advance\c@pgfprofile@stacktop by-1
}%
\def\pgfprofilestacktop#1{%
    \expandafter\let\expandafter#1\csname pgfprofile@stack@\the\c@pgfprofile@stacktop\endcsname
}%
\def\pgfprofilestackifempty#1#2{%
    \ifnum\c@pgfprofile@stacktop<0 #1\else #2\fi
}%


\def\pgfprofiletotwodigitstr#1{\ifnum#1<10 0\the#1\else\the#1\fi}%

\pgfprofilenew{main job}%
\pgfprofilestart{main job}%
\expandafter\xdef\csname c@pgfprofile@elapsed@at@start@main job\endcsname{0}%
\pgfprofilesetrel{main job}%

\pgfutil@ifundefined{AtEndDocument}{%
}{%
    \pgfprofilenew{preamble}
    \pgfprofilestart{preamble}
    \expandafter\xdef\csname c@pgfprofile@elapsed@at@start@preamble\endcsname{0}%
    \AtBeginDocument{\pgfprofileend{preamble}}%
    \AtEndDocument{\pgfprofilepostprocess}%
}%
\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryprofiler.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryshadings.code.tex ====

\ProvidesFileRCS{pgflibraryshadings.code.tex}



\pgfdeclarefunctionalshading[black]{color wheel white center}
{\pgfpoint{-50bp}{-50bp}}
{\pgfpoint{50bp}{50bp}}
{}
{ %
  2 copy %
  2 copy abs exch abs add 0.0001 ge
  {atan 360.0 div} %
  { pop } %
  ifelse  %
  3 1 roll %
  dup mul %
  exch dup mul %
  add sqrt %
  25.0 div %
  dup 1.0 ge %
  { pop 1.0 }{} ifelse %
  1.0 %
  3 2 roll 6.0 mul dup 4 1 roll %
  floor cvr  %
  dup 5 1 roll %
  3 index sub neg %
  1.0 3 index sub %
  2 index mul %
  6 1 roll %
  dup 3 index mul neg 1.0 add %
  2 index mul %
  7 1 roll %
  neg 1.0 add %
  2 index mul neg 1.0  add %
  1 index mul %
  7 2 roll %
  pop pop %
  dup 0.5 le %
  { %
    pop exch pop
  }
  { dup 1.5 le %
    { %
      pop exch 4 1 roll exch pop
    }
    { dup 2.5 le %
      { %
        pop 4 1 roll pop
      }
      { dup 3.5 le %
        { %
          pop exch 4 2 roll pop
        }
        { dup 4.5 le %
          { %
            pop exch pop 3 -1 roll
          }
          { %
            pop 3 1 roll exch pop
          }
          ifelse
        }
        ifelse %
      }
      ifelse %
    }
    ifelse %
  }
  ifelse %
  \ifpgfshadingmodelcmyk
    \pgffuncshadingrgbtocmyk
  \fi
  \ifpgfshadingmodelgray
    \pgffuncshadingrgbtogray
  \fi
}%

\pgfdeclarefunctionalshading[black]{color wheel black center}
{\pgfpoint{-50bp}{-50bp}}
{\pgfpoint{50bp}{50bp}}
{}
{ %
  2 copy %
  2 copy abs exch abs add 0.0001 ge
  {atan 360.0 div} %
  { pop } %
  ifelse  %
  3 1 roll %
  dup mul %
  exch dup mul %
  add sqrt %
  25.0 div %
  dup 1.0 ge %
  { pop 1.0 }{} ifelse %
  1.0 exch %
  3 2 roll 6.0 mul dup 4 1 roll %
  floor cvr  %
  dup 5 1 roll %
  3 index sub neg %
  1.0 3 index sub %
  2 index mul %
  6 1 roll %
  dup 3 index mul neg 1.0 add %
  2 index mul %
  7 1 roll %
  neg 1.0 add %
  2 index mul neg 1.0  add %
  1 index mul %
  7 2 roll %
  pop pop %
  dup 0.5 le %
  { %
    pop exch pop
  }
  { dup 1.5 le %
    { %
      pop exch 4 1 roll exch pop
    }
    { dup 2.5 le %
      { %
        pop 4 1 roll pop
      }
      { dup 3.5 le %
        { %
          pop exch 4 2 roll pop
        }
        { dup 4.5 le %
          { %
            pop exch pop 3 -1 roll
          }
          { %
            pop 3 1 roll exch pop
          }
          ifelse
        }
        ifelse %
      }
      ifelse %
    }
    ifelse %
  }
  ifelse %
  \ifpgfshadingmodelcmyk
    \pgffuncshadingrgbtocmyk
  \fi
  \ifpgfshadingmodelgray
    \pgffuncshadingrgbtogray
  \fi
}%

\pgfdeclarefunctionalshading[black]{color wheel}
{\pgfpoint{-50bp}{-50bp}}
{\pgfpoint{50bp}{50bp}}
{}
{ %
  2 copy abs exch abs add 0.0001 ge
  {atan 360.0 div} %
  { pop } %
  ifelse  %
  1.0 1.0 %
  3 2 roll 6.0 mul dup 4 1 roll %
  floor cvr  %
  dup 5 1 roll %
  3 index sub neg %
  1.0 3 index sub %
  2 index mul %
  6 1 roll %
  dup 3 index mul neg 1.0 add %
  2 index mul %
  7 1 roll %
  neg 1.0 add %
  2 index mul neg 1.0  add %
  1 index mul %
  7 2 roll %
  pop pop %
  dup 0.5 le %
  { %
    pop exch pop
  }
  { dup 1.5 le %
    { %
      pop exch 4 1 roll exch pop
    }
    { dup 2.5 le %
      { %
        pop 4 1 roll pop
      }
      { dup 3.5 le %
        { %
          pop exch 4 2 roll pop
        }
        { dup 4.5 le %
          { %
            pop exch pop 3 -1 roll
          }
          { %
            pop 3 1 roll exch pop
          }
          ifelse
        }
        ifelse %
      }
      ifelse %
    }
    ifelse %
  }
  ifelse %
  \ifpgfshadingmodelcmyk
    \pgffuncshadingrgbtocmyk
  \fi
  \ifpgfshadingmodelgray
    \pgffuncshadingrgbtogray
  \fi
}%



\colorlet{lower left}{white}%
\colorlet{lower right}{white}%
\colorlet{upper left}{white}%
\colorlet{upper right}{white}%

\pgfdeclarefunctionalshading[lower left,lower right,upper left,upper right]{bilinear interpolation}
{\pgfpointorigin}
{\pgfpoint{100bp}{100bp}}
{
  \pgfshadecolortorgb{lower left}{\pgf@lib@shadings@ll}\pgfshadecolortorgb{lower right}{\pgf@lib@shadings@lr}
  \pgfshadecolortorgb{upper right}{\pgf@lib@shadings@ur}\pgfshadecolortorgb{upper left}{\pgf@lib@shadings@ul}
}{
  25 sub 50 div exch 25 sub 50 div 2 copy                   %
  neg 1 add exch neg 1 add                      %
  3 1 roll 2 copy exch 5 2 roll 6 copy 6 copy   %
  \pgf@lib@shadings@llred mul exch \pgf@lib@shadings@lrred mul add mul     %
  4 1 roll
  \pgf@lib@shadings@urred mul exch \pgf@lib@shadings@ulred mul add mul
  add
  13 1 roll
  \pgf@lib@shadings@llgreen mul exch \pgf@lib@shadings@lrgreen mul add mul %
  4 1 roll
  \pgf@lib@shadings@urgreen mul exch \pgf@lib@shadings@ulgreen mul add mul
  add
  7 1 roll
  \pgf@lib@shadings@llblue mul exch \pgf@lib@shadings@lrblue mul add mul   %
  4 1 roll
  \pgf@lib@shadings@urblue mul exch \pgf@lib@shadings@ulblue mul add mul
  add
  \ifpgfshadingmodelcmyk
    \pgffuncshadingrgbtocmyk
  \fi
  \ifpgfshadingmodelgray
    \pgffuncshadingrgbtogray
  \fi
}%



\pgfdeclarefunctionalshading[black]{Mandelbrot set}
{\pgfpoint{-50bp}{-50bp}}
{\pgfpoint{50bp}{50bp}}{}
{
  12.5 div exch 12.5 div exch
  1 index 1 index
  1 index dup mul %
  1 index dup mul %
  sub             %
  4 index add     %
  3 1 roll
  mul 2 mul       %
  2 index add     %
  1 index dup mul %
  1 index dup mul %
  sub             %
  4 index add     %
  3 1 roll
  mul 2 mul       %
  2 index add     %
  1 index dup mul %
  1 index dup mul %
  sub             %
  4 index add     %
  3 1 roll
  mul 2 mul       %
  2 index add     %
  1 index dup mul %
  1 index dup mul %
  sub             %
  4 index add     %
  3 1 roll
  mul 2 mul       %
  2 index add     %
  1 index dup mul 1 index dup mul add
  4 lt {
  1 index dup mul %
  1 index dup mul %
  sub             %
  4 index add     %
  3 1 roll
  mul 2 mul       %
  2 index add     %
  1 index dup mul %
  1 index dup mul %
  sub             %
  4 index add     %
  3 1 roll
  mul 2 mul       %
  2 index add     %
  1 index dup mul %
  1 index dup mul %
  sub             %
  4 index add     %
  3 1 roll
  mul 2 mul       %
  2 index add     %
  1 index dup mul 1 index dup mul add
  4 lt {
  1 index dup mul %
  1 index dup mul %
  sub             %
  4 index add     %
  3 1 roll
  mul 2 mul       %
  2 index add     %
  1 index dup mul %
  1 index dup mul %
  sub             %
  4 index add     %
  3 1 roll
  mul 2 mul       %
  2 index add     %
  1 index dup mul %
  1 index dup mul %
  sub             %
  4 index add     %
  3 1 roll
  mul 2 mul       %
  2 index add     %
  } { pop pop 1000.0 1000.0 } ifelse
  } { pop pop 1000.0 1000.0 } ifelse
  dup mul exch
  dup mul
  add sqrt
  dup 4 1 roll
  2 gt { pop pop 2.0 exch div 1.0 exch sub dup dup} {pop pop pop 0.0 0.0 0.0} ifelse
  \ifpgfshadingmodelcmyk
    \pgffuncshadingrgbtocmyk
  \fi
  \ifpgfshadingmodelgray
    \pgffuncshadingrgbtogray
  \fi
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibraryshadings.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarysnakes.code.tex ====

\ProvidesFileRCS{pgflibrarysnakes.code.tex}

\pgfwarning{Snakes have been superseded by decorations. Use the decoration libraries instead of the snakes library}%

\usepgflibrary{decorations.pathmorphing,decorations.pathreplacing,decorations.shapes}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarysnakes.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarysvg.path.code.tex ====

\ProvidesFileRCS{pgflibrarysvg.path.code.tex}


\usepgfmodule{parser}%



\def\pgfpathsvg#1{%
  \let\pgf@lib@svg@finish@prev\relax%
  {%
    \pgftransforminvert%
    \pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@path@lastx}{\pgf@path@lasty}}}%
  }%
  \pgf@lib@svg@last@x\pgf@x%
  \pgf@lib@svg@last@y\pgf@y%
  \let\pgf@lib@svg@num=\pgfutil@empty%
  \let\pgf@lib@svg@exp=\pgfutil@empty%
  \pgfparserparse{svgpath}#1"%
}%



\newdimen\pgf@lib@svg@last@x
\newdimen\pgf@lib@svg@last@y
\newdimen\pgf@lib@svg@last@c@x
\newdimen\pgf@lib@svg@last@c@y

\newcount\pgf@lib@svg@count
\newcount\pgf@lib@svg@max@num

\newif\pgf@lib@svg@relative




\def\pgf@lib@svg@clear@bezier@quad{%
  \let\pgf@lib@svg@bezier@last=\pgfutil@empty
  \let\pgf@lib@svg@quad@last=\pgfutil@empty
}%
\pgf@lib@svg@clear@bezier@quad



\pgfparserdef{svgpath}{all}{the letter M}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@moveto}%
}%

\def\pgf@lib@svg@moveto{%
  \pgf@lib@svg@clear@bezier@quad%
  \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{0}pt%
  \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{1}pt%
  \pgfpathmoveto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
  \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto}%
}%



\pgfparserdef{svgpath}{all}{the letter m}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@moveto@rel}%
}%

\def\pgf@lib@svg@moveto@rel{%
  \pgf@lib@svg@clear@bezier@quad%
  \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{0}pt%
  \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{1}pt%
  \pgfpathmoveto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
  \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto@rel}%
}%



\pgfparserdef{svgpath}{all}{the letter L}
{%
  \pgf@lib@svg@finish@prev%
  \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto}%
}%

\def\pgf@lib@svg@lineto{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \pgf@lib@svg@clear@bezier@quad%
    \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{0}pt%
    \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{1}pt%
    \pgfpathlineto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
    \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto}%
  \fi
}%



\pgfparserdef{svgpath}{all}{the letter l}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto@rel}%
}%

\def\pgf@lib@svg@lineto@rel{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \pgf@lib@svg@clear@bezier@quad%
    \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{0}pt%
    \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{1}pt%
    \pgfpathlineto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
    \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto@rel}%
  \fi
}%



\pgfparserdef{svgpath}{all}{the letter Z}
{%
  \pgf@lib@svg@closepath
}%

\pgfparserdef{svgpath}{all}{the letter z}
{%
  \pgf@lib@svg@closepath
}%

\def\pgf@lib@svg@closepath{%
  \pgf@lib@svg@finish@prev
  \pgfpathclose
  \let\pgf@lib@svg@finish@prev=\relax
  \pgf@lib@svg@clear@bezier@quad%
  \pgfparserswitch{initial}%
}%



\pgfparserdef{svgpath}{all}{blank space \space}{}%





\pgfparserdef{svgpath}{all}{the letter H}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@hlineto}%
}%

\def\pgf@lib@svg@hlineto{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \pgf@lib@svg@clear@bezier@quad%
    \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{0}pt%
    \pgfpathlineto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
    \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@hlineto}%
  \fi
}%

\pgfparserdef{svgpath}{all}{the letter h}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@hlineto@rel}%
}%

\def\pgf@lib@svg@hlineto@rel{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \pgf@lib@svg@clear@bezier@quad%
    \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{0}pt%
    \pgfpathlineto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
    \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@hlineto@rel}%
  \fi
}%



\pgfparserdef{svgpath}{all}{the letter V}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@vlineto}%
}%

\def\pgf@lib@svg@vlineto{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \pgf@lib@svg@clear@bezier@quad%
    \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{0}pt%
    \pgfpathlineto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
    \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@vlineto}%
  \fi
}%

\pgfparserdef{svgpath}{all}{the letter v}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@vlineto@rel}%
}%

\def\pgf@lib@svg@vlineto@rel{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \pgf@lib@svg@clear@bezier@quad%
    \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{0}pt%
    \pgfpathlineto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
    \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@vlineto@rel}%
  \fi
}%





\pgfparserdef{svgpath}{all}{the letter C}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{6}{\pgf@lib@svg@curveto}%
}%

\def\pgf@lib@svg@curveto{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \let\pgf@lib@svg@quad@last=\pgfutil@empty%
    \edef\pgf@lib@svg@bezier@last{%
      \noexpand\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}%
    \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{4}pt%
    \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{5}pt%
    \pgfpathcurveto
    {\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}%
    {\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}%
    {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
    \pgf@lib@svg@read@nums{6}{\pgf@lib@svg@curveto}%
  \fi
}%


\pgfparserdef{svgpath}{all}{the letter c}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{6}{\pgf@lib@svg@curveto@rel}%
}%

\def\pgf@lib@svg@curveto@rel{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \let\pgf@lib@svg@quad@last=\pgfutil@empty%
    \pgf@process{\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}}%
    \edef\pgf@lib@svg@bezier@last{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
    \pgfpathcurveto
    {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}}%
    {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}}%
    {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{4}pt}{\pgf@lib@svg@get@num{5}pt}}}%
    \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{4}pt%
    \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{5}pt%
    \pgf@lib@svg@read@nums{6}{\pgf@lib@svg@curveto@rel}%
  \fi
}%





\pgfparserdef{svgpath}{all}{the letter S}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@curveto@smooth}%
}%

\def\pgf@lib@svg@curveto@smooth{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \ifx\pgf@lib@svg@bezier@last\pgfutil@empty%
      \def\pgf@lib@svg@first@cp{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
    \else
      \def\pgf@lib@svg@first@cp{%
        \pgfpointadd
        {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
        {\pgfpointdiff
          {\pgf@lib@svg@bezier@last}%
          {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
        }%
      }%
    \fi
    \pgfpathcurveto
    {\pgf@lib@svg@first@cp}%
    {\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}%
    {\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}%
    \let\pgf@lib@svg@quad@last=\pgfutil@empty%
    \edef\pgf@lib@svg@bezier@last{%
      \noexpand\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}%
    \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{2}pt%
    \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{3}pt%
    \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@curveto@smooth}%
  \fi
}%


\pgfparserdef{svgpath}{all}{the letter s}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@curveto@rel@smooth}%
}%

\def\pgf@lib@svg@curveto@rel@smooth{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \ifx\pgf@lib@svg@bezier@last\pgfutil@empty%
      \def\pgf@lib@svg@first@cp{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
    \else
      \def\pgf@lib@svg@first@cp{%
        \pgfpointadd
        {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
        {\pgfpointdiff
          {\pgf@lib@svg@bezier@last}%
          {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
        }%
      }%
    \fi
    \pgfpathcurveto
    {\pgf@lib@svg@first@cp}%
    {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}}%
    {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}}%
    \let\pgf@lib@svg@quad@last=\pgfutil@empty%
    \pgf@process{\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}}%
    \edef\pgf@lib@svg@bezier@last{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
    \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{2}pt%
    \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{3}pt%
    \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@curveto@rel@smooth}%
  \fi
}%





\pgfparserdef{svgpath}{all}{the letter Q}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@quad@curveto}%
}%

\def\pgf@lib@svg@quad@curveto{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \let\pgf@lib@svg@bezier@last=\pgfutil@empty%
    \edef\pgf@lib@svg@quad@last{%
      \noexpand\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}%
    \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{2}pt%
    \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{3}pt%
    \pgfpathquadraticcurveto
    {\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}%
    {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
    \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@quad@curveto}%
  \fi
}%


\pgfparserdef{svgpath}{all}{the letter q}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@quad@curveto@rel}%
}%

\def\pgf@lib@svg@quad@curveto@rel{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \let\pgf@lib@svg@bezier@last=\pgfutil@empty%
    \pgf@process{\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}}%
    \edef\pgf@lib@svg@quad@last{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
    \pgfpathquadraticcurveto
    {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}}%
    {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}}%
    \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{2}pt%
    \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{3}pt%
    \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@quad@curveto@rel}%
  \fi
}%




\pgfparserdef{svgpath}{all}{the letter T}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@quad@curveto@smooth}%
}%

\def\pgf@lib@svg@quad@curveto@smooth{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \pgf@process{%
      \ifx\pgf@lib@svg@quad@last\pgfutil@empty%
        \pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}%
      \else
        \pgfpointadd
        {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
        {\pgfpointdiff
          {\pgf@lib@svg@quad@last}%
          {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
        }%
      \fi
    }%
    \edef\pgf@lib@svg@first@cp{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
    \pgfpathquadraticcurveto
    {\pgf@lib@svg@first@cp}%
    {\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}%
    \let\pgf@lib@svg@bezier@last=\pgfutil@empty%
    \let\pgf@lib@svg@quad@last=\pgf@lib@svg@first@cp%
    \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{0}pt%
    \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{1}pt%
    \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@quad@curveto@smooth}%
  \fi
}%


\pgfparserdef{svgpath}{all}{the letter t}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@quad@curveto@rel@smooth}%
}%

\def\pgf@lib@svg@quad@curveto@rel@smooth{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
     \pgf@process{%
      \ifx\pgf@lib@svg@quad@last\pgfutil@empty%
        \pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}%
      \else
        \pgfpointadd
        {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
        {\pgfpointdiff
          {\pgf@lib@svg@quad@last}%
          {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
        }%
      \fi
    }%
    \edef\pgf@lib@svg@first@cp{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
    \pgfpathquadraticcurveto
    {\pgf@lib@svg@first@cp}%
    {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}}%
    \let\pgf@lib@svg@bezier@last=\pgfutil@empty%
    \let\pgf@lib@svg@quad@last=\pgf@lib@svg@first@cp%
    \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{0}pt%
    \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{1}pt%
    \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@quad@curveto@rel@smooth}%
  \fi
}%




\pgfparserdef{svgpath}{all}{the letter A}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{7}{\pgf@lib@svg@arcto}%
}%

\def\pgf@lib@svg@arcto{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \pgf@lib@svg@clear@bezier@quad%
    \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{5}pt%
    \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{6}pt%
    \pgfpatharcto
    {\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}%
    {\pgf@lib@svg@get@num{2}}%
    {\pgf@lib@svg@get@num{3}}%
    {\pgf@lib@svg@get@num{4}}%
    {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
    \pgf@lib@svg@read@nums{7}{\pgf@lib@svg@arcto}%
  \fi
}%

\pgfparserdef{svgpath}{all}{the letter a}
{%
  \pgf@lib@svg@finish@prev
  \pgf@lib@svg@read@nums{7}{\pgf@lib@svg@arcto@rel}%
}%

\def\pgf@lib@svg@arcto@rel{%
  \ifnum\pgf@lib@svg@count=0\relax%
  \else%
    \pgf@lib@svg@clear@bezier@quad%
    \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{5}pt%
    \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{6}pt%
    \pgfpatharcto
    {\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}%
    {\pgf@lib@svg@get@num{2}}%
    {\pgf@lib@svg@get@num{3}}%
    {\pgf@lib@svg@get@num{4}}%
    {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}%
    \pgf@lib@svg@read@nums{7}{\pgf@lib@svg@arcto@rel}%
  \fi
}%






\pgfparserdef{svgpath}{all}{the character "}
{%
  \pgf@lib@svg@finish@prev
  \pgfparserswitch{final}%
}%





\def\pgf@lib@svg@read@nums#1#2{%
  \pgf@lib@svg@count=0\relax
  \pgf@lib@svg@max@num=#1\relax
  \pgfparserswitch{num}%
  \def\pgf@lib@svg@finish@prev{%
    \ifx\pgf@lib@svg@num\pgfutil@empty%
    \else%
      \ifx\pgf@lib@svg@exp\pgfutil@empty
      \else
        \pgfmathfloatparsenumber{\pgf@lib@svg@num e\pgf@lib@svg@exp}%
        \pgfmathfloattofixed{\pgfmathresult}%
        \let\pgf@lib@svg@num=\pgfmathresult
      \fi
      \expandafter\let\csname pgf@lib@svg@num@\the\pgf@lib@svg@count\endcsname=\pgf@lib@svg@num
      \advance\pgf@lib@svg@count by1\relax%
      \let\pgf@lib@svg@num=\pgfutil@empty%
      \let\pgf@lib@svg@exp=\pgfutil@empty%
    \fi
    #2%
  }%
}%

\def\pgf@lib@svg@get@num#1{\csname pgf@lib@svg@num@#1\endcsname}%


\pgfparserdef{svgpath}{num}{the character ,}
{%
  \pgf@lib@svg@handle@spacer
}%
\pgfparserlet{svgpath}{after.}{the character ,}[num]{the character ,}
\pgfparserlet{svgpath}{exp},[num],
\pgfparserlet{svgpath}{exp sign},[num],

\pgfparserdef{svgpath}{num}{\meaning\pgfutil@sptoken}
{%
  \pgf@lib@svg@handle@spacer
}%
\pgfparserlet{svgpath}{after.}{blank space}[num]{blank space}
\pgfparserlet{svgpath}{exp}{blank space},
\pgfparserlet{svgpath}{exp sign}{blank space},

\pgfparserdef{svgpath}{num}{the character -}
{%
  \pgf@lib@svg@handle@spacer
  \def\pgf@lib@svg@num{-}%
}%
\pgfparserlet{svgpath}{after.}{the character -}[num]{the character -}
\pgfparserlet{svgpath}{exp}-[num]-
\pgfparserdef{svgpath}{num}{the character +}
{%
  \pgf@lib@svg@handle@spacer
  \def\pgf@lib@svg@num{+}%
}
\pgfparserlet{svgpath}{after.}{the character +}[num]{the character +}
\pgfparserlet{svgpath}{exp}+[num]+

\def\pgf@lib@svg@handle@spacer{%
  \ifx\pgf@lib@svg@num\pgfutil@empty%
  \else
    \ifx\pgf@lib@svg@exp\pgfutil@empty
    \else
      \pgfmathfloatparsenumber{\pgf@lib@svg@num e\pgf@lib@svg@exp}%
      \pgfmathfloattofixed{\pgfmathresult}%
      \let\pgf@lib@svg@num=\pgfmathresult
    \fi
    \expandafter\let\csname pgf@lib@svg@num@\the\pgf@lib@svg@count\endcsname=\pgf@lib@svg@num
    \advance\pgf@lib@svg@count by1\relax%
    \ifnum\pgf@lib@svg@count=\pgf@lib@svg@max@num\relax%
      \pgf@lib@svg@finish@prev%
    \fi
    \let\pgf@lib@svg@num=\pgfutil@empty%
    \let\pgf@lib@svg@exp=\pgfutil@empty%
    \pgfparserswitch{num}%
  \fi
}%



\pgfparserdef{svgpath}{num}e
  {%
    \pgfparserswitch{exp sign}%
    \let\pgf@lib@svg@exp=\pgfutil@empty
  }
\pgfparserlet{svgpath}{after.}e[num]e
\pgfparserdef{svgpath}{exp sign}-
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp-}%
    \pgfparserswitch{exp}%
  }
\pgfparserdef{svgpath}{exp sign}+
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp+}%
    \pgfparserswitch{exp}%
  }
\pgfparserdef{svgpath}{exp sign}0
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp0}%
    \pgfparserswitch{exp}%
  }
\pgfparserdef{svgpath}{exp sign}1
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp1}%
    \pgfparserswitch{exp}%
  }
\pgfparserdef{svgpath}{exp sign}2
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp2}%
    \pgfparserswitch{exp}%
  }
\pgfparserdef{svgpath}{exp sign}3
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp3}%
    \pgfparserswitch{exp}%
  }
\pgfparserdef{svgpath}{exp sign}4
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp4}%
    \pgfparserswitch{exp}%
  }
\pgfparserdef{svgpath}{exp sign}5
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp5}%
    \pgfparserswitch{exp}%
  }
\pgfparserdef{svgpath}{exp sign}6
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp6}%
    \pgfparserswitch{exp}%
  }
\pgfparserdef{svgpath}{exp sign}7
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp7}%
    \pgfparserswitch{exp}%
  }
\pgfparserdef{svgpath}{exp sign}8
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp8}%
    \pgfparserswitch{exp}%
  }
\pgfparserdef{svgpath}{exp sign}9
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp9}%
    \pgfparserswitch{exp}%
  }

\pgfparserdef{svgpath}{exp}0
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp0}%
  }
\pgfparserdef{svgpath}{exp}1
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp1}%
  }
\pgfparserdef{svgpath}{exp}2
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp2}%
  }
\pgfparserdef{svgpath}{exp}3
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp3}%
  }
\pgfparserdef{svgpath}{exp}4
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp4}%
  }
\pgfparserdef{svgpath}{exp}5
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp5}%
  }
\pgfparserdef{svgpath}{exp}6
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp6}%
  }
\pgfparserdef{svgpath}{exp}7
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp7}%
  }
\pgfparserdef{svgpath}{exp}8
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp8}%
  }
\pgfparserdef{svgpath}{exp}9
  {%
    \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp9}%
  }

\pgfparserdef{svgpath}{num}{the character .}
  {%
    \expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num.}%
    \pgfparserswitch{after.}%
  }%
\pgfparserdef{svgpath}{after.}{the character .}
  {%
    \pgf@lib@svg@handle@spacer
    \def\pgf@lib@svg@num{.}%
    \pgfparserswitch{after.}%
  }%
\pgfparserlet{svgpath}{exp}{the character .}[after.]{the character .}

\pgfparserdef{svgpath}{all}{the character 0}
{\expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num0}}%

\pgfparserdef{svgpath}{all}{the character 1}
{\expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num1}}%

\pgfparserdef{svgpath}{all}{the character 2}
{\expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num2}}%

\pgfparserdef{svgpath}{all}{the character 3}
{\expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num3}}%

\pgfparserdef{svgpath}{all}{the character 4}
{\expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num4}}%

\pgfparserdef{svgpath}{all}{the character 5}
{\expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num5}}%

\pgfparserdef{svgpath}{all}{the character 6}
{\expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num6}}%

\pgfparserdef{svgpath}{all}{the character 7}
{\expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num7}}%

\pgfparserdef{svgpath}{all}{the character 8}
{\expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num8}}%

\pgfparserdef{svgpath}{all}{the character 9}
{\expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num9}}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarysvg.path.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarytimelines.code.tex ====

\ProvidesFileRCS{pgflibrarytimelines.code.tex}



\usepgfmodule{animations}%



\def\pgftimelinebegin{%
  \pgf@timeline@todo@saved=\pgf@timeline@todo%
  \begingroup%
    \advance\pgf@timeline@depth by1\relax%
    \pgf@timeline@todo{}%
}%

\newcount\pgf@timeline@depth
\newtoks\pgf@timeline@todo
\newtoks\pgf@timeline@todo@saved



\def\pgftimelineend{%
    \the\pgf@timeline@todo%
  \endgroup%
  \global\pgf@timeline@todo=\pgf@timeline@todo@saved%
}%



\def\pgftimelineentry#1#2#3#4{%
  \begingroup%
    \pgfparsetime{#1}%
    \edef\pgf@timeline@whom{#2}%
    \edef\pgf@timeline@attr{#3}%
    \expandafter\let\expandafter\pgf@timeline@entry\csname pgf@tl@\pgf@timeline@whom @\pgf@timeline@attr @\the\pgf@timeline@depth\endcsname%
    \ifx\pgf@timeline@entry\relax%
      \edef\pgf@timeline@entry{\noexpand\pgf@timeline@setup{\pgf@timeline@whom}{\pgf@timeline@attr}}%
    \fi%
    \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@timeline@entry\expandafter\expandafter\expandafter%
    {\expandafter\pgf@timeline@entry\expandafter\pgf@timeline@doentry\expandafter{\pgftimeresult}{#4}}%
    \expandafter\global\expandafter\let\csname pgf@tl@\pgf@timeline@whom @\pgf@timeline@attr @\the\pgf@timeline@depth\endcsname\pgf@timeline@entry%
    \global\pgf@timeline@todo\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgf@timeline@todo\expandafter\pgf@timeline@handle\csname pgf@tl@\pgf@timeline@whom @\pgf@timeline@attr @\the\pgf@timeline@depth\endcsname}%
  \endgroup%
}%


\newtoks\pgf@timeline@sort@toks
\countdef\pgf@timeline@sort@count=0\relax%
\countdef\pgf@timeline@count@down=1\relax%
\countdef\pgf@timeline@count@down@next=2\relax%


\def\pgf@timeline@handle#1{%
  \ifx#1\relax%
  \else%
  {%
    \pgf@timeline@sort@count=1\relax%
    #1%
      \pgf@timeline@count@down=1\relax%
      \pgf@timeline@sort@toks{}%
      \pgfutil@loop%
      \ifnum\pgf@timeline@count@down<\pgf@timeline@sort@count\relax%
        \edef\pgf@temp{\the\pgf@timeline@sort@toks\noexpand\pgf@timeline@donow{\the\dimen\pgf@timeline@count@down}{\the\toks\pgf@timeline@count@down}}%
        \pgf@timeline@sort@toks\expandafter{\pgf@temp}%
        \advance\pgf@timeline@count@down by1\relax%
      \pgfutil@repeat%
      \pgf@timeline@compute@duration%
      \edef\pgf@temp{\noexpand\pgf@timeline@call@attribute{\pgf@timeline@whom}{\pgf@timeline@attr}{\the\pgf@timeline@sort@toks}}
      \expandafter%
    \endgroup%
    \pgf@temp%
  }%
  \global\let#1\relax%
  \fi%
}%

\def\pgf@timeline@compute@duration{%
  \advance\pgf@timeline@sort@count by-1\relax%
  \pgfmathparse{\the\dimen\pgf@timeline@sort@count}%
  \global\let\pgf@timeline@duration\pgfmathresult%
}%


\def\pgf@timeline@setup#1#2{%
  \def\pgf@timeline@whom{#1}%
  \def\pgf@timeline@attr{#2}%
  \begingroup%
}%

\def\pgf@timeline@doentry#1#2{%
  \dimen\pgf@timeline@sort@count=#1pt\relax%
  \toks\pgf@timeline@sort@count{#2}%
  \pgf@timeline@count@down\pgf@timeline@sort@count\relax%
  \pgfutil@loop%
  \ifnum\pgf@timeline@count@down>1\relax%
    \pgf@timeline@count@down@next\pgf@timeline@count@down%
    \advance\pgf@timeline@count@down@next by-1\relax%
    \ifdim\dimen\pgf@timeline@count@down<\dimen\pgf@timeline@count@down@next\relax%
      \toks0=\toks\pgf@timeline@count@down%
      \dimen0=\dimen\pgf@timeline@count@down%
      \toks\pgf@timeline@count@down=\toks\pgf@timeline@count@down@next%
      \dimen\pgf@timeline@count@down=\dimen\pgf@timeline@count@down@next%
      \toks\pgf@timeline@count@down@next=\toks0\relax%
      \dimen\pgf@timeline@count@down@next=\dimen0\relax%
      \pgf@timeline@count@down\pgf@timeline@count@down@next\relax%
    \else%
      \pgf@timeline@count@down1\relax%
    \fi%
  \pgfutil@repeat%
  \advance\pgf@timeline@sort@count by1\relax%
}%


\def\pgf@timeline@call@attribute#1#2#3{%
  \pgfanimateattributecode{#2}{\pgfkeys{/pgf/animation/whom={#1},/pgf/animation/duration=\pgf@timeline@duration}#3}%
}%

\def\pgf@timeline@donow#1#2{%
  \pgfkeys{/pgf/animation/key time={#1/\pgf@timeline@duration}}%
  \pgfkeys{/pgf/animation/value={#2}}%
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/pgflibrarytimelines.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.ee.IEC.code.tex ====



\pgfdeclareshape{var resistor IEC}
{%
  \inheritsavedanchors[from=rectangle ee]%
  \inheritanchor[from=rectangle ee]{center}%
  \inheritanchor[from=rectangle ee]{north}%
  \inheritanchor[from=rectangle ee]{south}%
  \inheritanchor[from=rectangle ee]{east}%
  \inheritanchor[from=rectangle ee]{west}%
  \inheritanchor[from=rectangle ee]{north east}%
  \inheritanchor[from=rectangle ee]{north west}%
  \inheritanchor[from=rectangle ee]{south east}%
  \inheritanchor[from=rectangle ee]{south west}%
  \inheritanchor[from=rectangle ee]{input}%
  \inheritanchor[from=rectangle ee]{output}%
  \inheritanchorborder[from=rectangle ee]%

  \backgroundpath{
    \pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
    \pgf@xa=\pgf@x \pgf@ya=\pgf@y
    \pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
    \pgf@xb=\pgf@x \pgf@yb=\pgf@y
    \pgf@yc=.5\pgf@ya
    \advance\pgf@yc by.5\pgf@yb
    \pgf@xc=-.5\pgf@ya
    \advance\pgf@xc by.5\pgf@yb
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@yc}}
    \advance\pgf@xb by.1pt%
    \pgfutil@loop%
      \advance\pgf@xa by4\pgf@xc\relax%
    \ifdim\pgf@xa<\pgf@xb%
      \advance\pgf@xa by-3\pgf@xc%
      \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
      \advance\pgf@xa by2\pgf@xc%
      \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
      \advance\pgf@xa by\pgf@xc%
      \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yc}}%
    \pgfutil@repeat%
    \advance\pgf@xb by-.1pt%
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yc}}%
  }%
}%




\pgfdeclareshape{inductor IEC}
{%
  \savedanchor\northeast{%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgf@x=\pgf@xa%
    \advance\pgf@x by .5\pgf@xb%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
    \pgf@y=\pgf@ya%
    \advance\pgf@y by\pgf@yb%
  }%
  \savedanchor\southwest{%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgf@x=-\pgf@xa%
    \advance\pgf@x by -.5\pgf@xb%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \pgf@y=-\pgf@ya%
  }%

  \anchor{center}{\pgfpointorigin}%
  \inheritanchor[from=rectangle ee]{north}%
  \inheritanchor[from=rectangle ee]{south}%
  \inheritanchor[from=rectangle ee]{east}%
  \inheritanchor[from=rectangle ee]{west}%
  \inheritanchor[from=rectangle ee]{north east}%
  \inheritanchor[from=rectangle ee]{north west}%
  \inheritanchor[from=rectangle ee]{south east}%
  \inheritanchor[from=rectangle ee]{south west}%
  \inheritanchor[from=rectangle ee]{input}%
  \inheritanchor[from=rectangle ee]{output}%

  \anchorborder{%
    \ifdim\pgf@y<0pt%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      \pgf@process{\southwest}%
      \advance\pgf@y by-0.5pt%
      \pgf@xa=\pgf@x%
      \pgf@ya=\pgf@y%
      \pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\pgfqpoint{-\pgf@xa}{-\pgf@ya}}}%
    \else%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      \pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\northeast}}%
    \fi%
  }%

  \backgroundpath{
    \pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
    \pgf@xa=-\pgf@x \pgf@ya=0pt
    \pgf@xb=\pgf@x \pgf@yb=\pgf@y
    \pgf@xc=\pgf@yb%
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{0pt}}
    \advance\pgf@xb by.1pt%
    \pgfutil@loop%
      \advance\pgf@xa by2\pgf@xc\relax%
    \ifdim\pgf@xa<\pgf@xb%
      \pgfpatharc{180}{0}{\pgf@xc}%
    \pgfutil@repeat%
    \advance\pgf@xb by-.1pt%
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{0pt}}%
  }%
}%





\pgfdeclareshape{capacitor IEC}
{%
  \inheritsavedanchors[from=rectangle ee]%
  \inheritanchor[from=rectangle ee]{center}%
  \inheritanchor[from=rectangle ee]{north}%
  \inheritanchor[from=rectangle ee]{south}%
  \inheritanchor[from=rectangle ee]{east}%
  \inheritanchor[from=rectangle ee]{west}%
  \inheritanchor[from=rectangle ee]{north east}%
  \inheritanchor[from=rectangle ee]{north west}%
  \inheritanchor[from=rectangle ee]{south east}%
  \inheritanchor[from=rectangle ee]{south west}%
  \inheritanchor[from=rectangle ee]{input}%
  \inheritanchor[from=rectangle ee]{output}%
  \inheritanchorborder[from=rectangle ee]%

  \backgroundpath{
    \pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
    \pgf@xa=\pgf@x \pgf@ya=\pgf@y
    \pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
    \pgf@xb=\pgf@x \pgf@yb=\pgf@y
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
    \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
    \pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@ya}}
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
  }%
}%





\pgfdeclareshape{ground IEC}
{%
  \inheritsavedanchors[from=rectangle ee]%
  \inheritanchor[from=rectangle ee]{center}%
  \inheritanchor[from=rectangle ee]{north}%
  \inheritanchor[from=rectangle ee]{south}%
  \inheritanchor[from=rectangle ee]{east}%
  \inheritanchor[from=rectangle ee]{west}%
  \inheritanchor[from=rectangle ee]{north east}%
  \inheritanchor[from=rectangle ee]{north west}%
  \inheritanchor[from=rectangle ee]{south east}%
  \inheritanchor[from=rectangle ee]{south west}%
  \inheritanchor[from=rectangle ee]{input}%
  \inheritanchor[from=rectangle ee]{output}%
  \inheritanchorborder[from=rectangle ee]%

  \backgroundpath{
    \pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
    \pgf@xa=\pgf@x \pgf@ya=\pgf@y
    \pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
    \pgf@xb=\pgf@x \pgf@yb=\pgf@y
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
    \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
    \pgfmathsetlength\pgf@xa{.5\pgf@xa+.5\pgf@xb}
    \pgfmathsetlength\pgf@yc{.16666\pgf@yb-.16666\pgf@ya}
    \advance\pgf@ya by\pgf@yc
    \advance\pgf@yb by-\pgf@yc
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
    \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
    \advance\pgf@ya by\pgf@yc
    \advance\pgf@yb by-\pgf@yc
    \pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@ya}}
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
  }%
}%




\pgfdeclareshape{battery IEC}
{%
  \inheritsavedanchors[from=rectangle ee]%
  \inheritanchor[from=rectangle ee]{center}%
  \inheritanchor[from=rectangle ee]{north}%
  \inheritanchor[from=rectangle ee]{south}%
  \inheritanchor[from=rectangle ee]{east}%
  \inheritanchor[from=rectangle ee]{west}%
  \inheritanchor[from=rectangle ee]{north east}%
  \inheritanchor[from=rectangle ee]{north west}%
  \inheritanchor[from=rectangle ee]{south east}%
  \inheritanchor[from=rectangle ee]{south west}%
  \inheritanchor[from=rectangle ee]{input}%
  \inheritanchor[from=rectangle ee]{output}%
  \inheritanchorborder[from=rectangle ee]%

  \backgroundpath{
    \pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
    \pgf@xa=\pgf@x \pgf@ya=\pgf@y
    \pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
    \pgf@xb=\pgf@x \pgf@yb=\pgf@y
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
    \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
    \pgfmathsetlength\pgf@yc{.25\pgf@yb-.25\pgf@ya}
    \advance\pgf@ya by\pgf@yc
    \advance\pgf@yb by-\pgf@yc
    \pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@ya}}
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
  }%
}%




\pgfdeclareshape{breakdown diode IEC}
{%
  \inheritsavedanchors[from=rectangle ee]%
  \inheritanchor[from=rectangle ee]{center}%
  \inheritanchor[from=rectangle ee]{north}%
  \inheritanchor[from=rectangle ee]{south}%
  \inheritanchor[from=rectangle ee]{east}%
  \inheritanchor[from=rectangle ee]{west}%
  \inheritanchor[from=rectangle ee]{north east}%
  \inheritanchor[from=rectangle ee]{north west}%
  \inheritanchor[from=rectangle ee]{south east}%
  \inheritanchor[from=rectangle ee]{south west}%
  \inheritanchor[from=rectangle ee]{input}%
  \inheritanchor[from=rectangle ee]{output}%
  \inheritanchorborder[from=rectangle ee]%

  \backgroundpath{
    \pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
    \pgf@xa=\pgf@x \pgf@ya=\pgf@y
    \pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
    \pgf@xb=\pgf@x \pgf@yb=\pgf@y
    \pgf@xc=.5\pgf@xa \advance\pgf@xc by.5\pgf@xb
    \pgf@yc=.5\pgf@ya
    \advance\pgf@yc by .5\pgf@yb
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
    \pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@yc}}
    \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
    \pgfpathclose
    \pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@ya}}
    \pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@yc}}
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
    \pgfpathclose
  }%


  \beforebackgroundpath{
    {
      \pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
      \pgf@xa=\pgf@x \pgf@ya=\pgf@y
      \pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
      \pgf@xb=\pgf@x \pgf@yb=\pgf@y
      \pgf@yc=.5\pgf@ya
      \advance\pgf@yc by.5\pgf@yb
      \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@yc}}
      \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yc}}
      \pgfusepathqstroke
      \pgf@xc=.5\pgf@xa
      \advance\pgf@xc by.5\pgf@xb
      \pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}
      \pgf@yc=.5\pgf@yb
      \advance\pgf@yc by-.5\pgf@ya
      \pgftransformscale{\pgf@sys@tonumber{\pgf@yc}}
      \pgfpathmoveto{\pgfqpoint{-.5pt}{-1pt}}
      \pgfpathlineto{\pgfqpoint{0pt}{-1pt}}
      \pgfpathlineto{\pgfqpoint{0pt}{1pt}}
      \pgfpathlineto{\pgfqpoint{.5pt}{1pt}}
      \pgfusepathqstroke
    }
  }%
}%








\pgfdeclareshape{generic circle IEC}
{%

  \inheritsavedanchors[from=circle ee]%
  \inheritanchorborder[from=circle ee]%
  \inheritanchor[from=circle ee]{north}%
  \inheritanchor[from=circle ee]{north west}%
  \inheritanchor[from=circle ee]{north east}%
  \inheritanchor[from=circle ee]{center}%
  \inheritanchor[from=circle ee]{west}%
  \inheritanchor[from=circle ee]{east}%
  \inheritanchor[from=circle ee]{south}%
  \inheritanchor[from=circle ee]{south west}%
  \inheritanchor[from=circle ee]{south east}%
  \inheritanchor[from=circle ee]{input}%
  \inheritanchor[from=circle ee]{output}%
  \inheritbackgroundpath[from=circle ee]%

  \beforebackgroundpath{
    {
      \centerpoint%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      \pgftransformshift{}
      \pgfutil@tempdima=\radius%
      \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
      \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
      \ifdim\pgf@xb<\pgf@yb%
        \advance\pgfutil@tempdima by-\pgf@yb%
      \else%
        \advance\pgfutil@tempdima by-\pgf@xb%
      \fi%
      \pgftransformscale{\pgf@sys@tonumber{\pgfutil@tempdima}}
      \pgfkeysvalueof{/pgf/generic circle IEC/before background}
    }
  }%
}%




\pgfdeclareshape{generic diode IEC}
{%

  \inheritsavedanchors[from=rectangle ee]%
  \inheritanchor[from=rectangle ee]{center}%
  \inheritanchor[from=rectangle ee]{north}%
  \inheritanchor[from=rectangle ee]{south}%
  \inheritanchor[from=rectangle ee]{east}%
  \inheritanchor[from=rectangle ee]{west}%
  \inheritanchor[from=rectangle ee]{north east}%
  \inheritanchor[from=rectangle ee]{north west}%
  \inheritanchor[from=rectangle ee]{south east}%
  \inheritanchor[from=rectangle ee]{south west}%
  \inheritanchor[from=rectangle ee]{input}%
  \inheritanchor[from=rectangle ee]{output}%
  \inheritanchorborder[from=rectangle ee]%

  \backgroundpath{
    \pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
    \pgf@xa=\pgf@x \pgf@ya=\pgf@y
    \pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
    \pgf@xb=\pgf@x \pgf@yb=\pgf@y
    \advance\pgf@xb by-.5\pgflinewidth
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
    \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
    \pgf@yc=.5\pgf@ya
    \advance\pgf@yc by .5\pgf@yb
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yc}}
    \pgfpathclose
  }%


  \beforebackgroundpath{
    {
      \pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
      \pgf@xa=\pgf@x \pgf@ya=\pgf@y
      \pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
      \pgf@xb=\pgf@x \pgf@yb=\pgf@y
      \pgf@yc=.5\pgf@ya
      \advance\pgf@yc by.5\pgf@yb
      \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@yc}}
      \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yc}}
      \pgfusepathqstroke
      \pgftransformshift{\pgfqpoint{\pgf@xb}{\pgf@yc}}
      \pgf@yc=.5\pgf@yb
      \advance\pgf@yc by-.5\pgf@ya
      \pgftransformscale{\pgf@sys@tonumber{\pgf@yc}}
      \pgfkeysvalueof{/pgf/generic diode IEC/before background}
    }
  }%
}%


\pgfkeys{
  /pgf/generic circle IEC/before background/.initial=,
  /pgf/generic diode IEC/before background/.initial=,
}%






\pgfdeclareshape{make contact IEC}
{%
  \savedanchor\northeast{%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgf@x=\pgf@xa%
    \advance\pgf@x by .5\pgf@xb%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
    \pgf@y=\pgf@ya%
    \advance\pgf@y by\pgf@yb%
  }%
  \savedanchor\southwest{%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgf@x=-.5\pgf@xa%
    \advance\pgf@x by -.5\pgf@xb%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \pgf@y=-\pgf@ya%
  }%

  \anchor{center}{\pgfpointorigin}%
  \inheritanchor[from=rectangle ee]{north}%
  \inheritanchor[from=rectangle ee]{south}%
  \inheritanchor[from=rectangle ee]{east}%
  \inheritanchor[from=rectangle ee]{west}%
  \inheritanchor[from=rectangle ee]{north east}%
  \inheritanchor[from=rectangle ee]{north west}%
  \inheritanchor[from=rectangle ee]{south east}%
  \inheritanchor[from=rectangle ee]{south west}%
  \inheritanchor[from=rectangle ee]{input}%
  \inheritanchor[from=rectangle ee]{output}%

  \anchorborder{%
    \ifdim\pgf@y<0pt%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      \pgf@process{\southwest}%
      \advance\pgf@y by-0.5pt%
      \pgf@xa=\pgf@x%
      \pgf@ya=\pgf@y%
      \pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\pgfqpoint{-\pgf@xa}{-\pgf@ya}}}%
    \else%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      \pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\northeast}}%
    \fi%
  }%

  \backgroundpath{
    \pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
    \pgf@xa=-\pgf@x \pgf@ya=0pt
    \pgf@xb=\pgf@x \pgf@yb=\pgf@y
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{0pt}}
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
  }%
}%




\pgfdeclareshape{var make contact IEC}
{%
  \savedanchor\northeast{%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgf@x=\pgf@xa%
    \advance\pgf@x by .5\pgf@xb%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
    \pgf@y=\pgf@ya%
    \advance\pgf@y by\pgf@yb%
  }%
  \savedanchor\southwest{%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgf@x=-.5\pgf@xa%
    \advance\pgf@x by -.5\pgf@xb%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \pgf@y=-\pgf@ya%
    \pgf@xc=0.083333\pgf@x%
    \advance\pgf@y by\pgf@xc%
  }%

  \anchor{center}{\pgfpointorigin}%
  \inheritanchor[from=rectangle ee]{north}%
  \inheritanchor[from=rectangle ee]{south}%
  \inheritanchor[from=rectangle ee]{east}%
  \inheritanchor[from=rectangle ee]{west}%
  \inheritanchor[from=rectangle ee]{north east}%
  \inheritanchor[from=rectangle ee]{north west}%
  \inheritanchor[from=rectangle ee]{south east}%
  \inheritanchor[from=rectangle ee]{south west}%
  \inheritanchor[from=rectangle ee]{input}%
  \inheritanchor[from=rectangle ee]{output}%

  \anchorborder{%
    \ifdim\pgf@y<0pt%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      \pgf@process{\southwest}%
      \pgf@xa=\pgf@x%
      \pgf@ya=\pgf@y%
      \pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\pgfqpoint{-\pgf@xa}{-\pgf@ya}}}%
    \else%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      \pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\northeast}}%
    \fi%
  }%

  \backgroundpath{
    \pgf@process{\pgfpointadd{\northeast}{
        \pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
    \pgf@xa=-\pgf@x \pgf@ya=0pt
    \pgf@xb=\pgf@x \pgf@yb=\pgf@y
    \pgf@xc=\pgf@xa
    \pgfutil@tempdima=2\pgf@xb%
    \pgfutil@tempdima=0.083333\pgfutil@tempdima%
    \advance\pgf@xa by \pgfutil@tempdima
    {\pgfpathcircle{\pgfqpoint{\pgf@xa}{0pt}}{\pgfutil@tempdima}}
    \pgf@process{\pgfpointnormalised{\pgfpointdiff{\pgfqpoint{\pgf@xa}{0pt}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}}}
    \pgf@xc=\pgf@x
    \pgf@yc=\pgf@y
    \pgfpathmoveto{\pgfpointadd{\pgfqpoint{\pgf@xa}{0pt}}{%
        \pgfpointscale{\pgfutil@tempdima}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}}
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
  }%
}%



\pgfdeclareshape{break contact IEC}
{%
  \savedanchor\northeast{%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgf@x=\pgf@xa%
    \advance\pgf@x by .5\pgf@xb%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
    \pgf@y=\pgf@ya%
    \advance\pgf@y by\pgf@yb%
  }%
  \savedanchor\southwest{%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgf@x=-.5\pgf@xa%
    \advance\pgf@x by -.5\pgf@xb%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \pgf@y=-\pgf@ya%
  }%

  \anchor{center}{\pgfpointorigin}%
  \inheritanchor[from=rectangle ee]{north}%
  \inheritanchor[from=rectangle ee]{south}%
  \inheritanchor[from=rectangle ee]{east}%
  \inheritanchor[from=rectangle ee]{west}%
  \inheritanchor[from=rectangle ee]{north east}%
  \inheritanchor[from=rectangle ee]{north west}%
  \inheritanchor[from=rectangle ee]{south east}%
  \inheritanchor[from=rectangle ee]{south west}%
  \inheritanchor[from=rectangle ee]{input}%
  \inheritanchor[from=rectangle ee]{output}%

  \anchorborder{%
    \ifdim\pgf@y<0pt%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      \pgf@process{\southwest}%
      \advance\pgf@y by-0.5pt%
      \pgf@xa=\pgf@x%
      \pgf@ya=\pgf@y%
      \pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\pgfqpoint{-\pgf@xa}{-\pgf@ya}}}%
    \else%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      \pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\northeast}}%
    \fi%
  }%

  \backgroundpath{
    \pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
    \pgf@xa=-\pgf@x \pgf@ya=0pt
    \pgf@xb=\pgf@x \pgf@yb=\pgf@y
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{0pt}}
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
    \pgf@xc=.2\pgf@xb
    \advance\pgf@xc by-.2\pgf@xa
    \pgfpathmoveto{\pgfqpoint{\pgf@xb}{0pt}}
    \advance\pgf@xb by-\pgf@xc
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{0pt}}
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
  }%
}%





\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.ee.IEC.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.ee.code.tex ====




\pgfdeclareshape{rectangle ee}
{%
  \inheritsavedanchors[from=rectangle]%
  \inheritanchorborder[from=rectangle]%
  \inheritanchor[from=rectangle]{north}%
  \inheritanchor[from=rectangle]{north west}%
  \inheritanchor[from=rectangle]{north east}%
  \inheritanchor[from=rectangle]{center}%
  \inheritanchor[from=rectangle]{west}%
  \inheritanchor[from=rectangle]{east}%
  \inheritanchor[from=rectangle]{mid}%
  \inheritanchor[from=rectangle]{mid west}%
  \inheritanchor[from=rectangle]{mid east}%
  \inheritanchor[from=rectangle]{base}%
  \inheritanchor[from=rectangle]{base west}%
  \inheritanchor[from=rectangle]{base east}%
  \inheritanchor[from=rectangle]{south}%
  \inheritanchor[from=rectangle]{south west}%
  \inheritanchor[from=rectangle]{south east}%
  \inheritbackgroundpath[from=rectangle]%
  \anchor{input}{
    \pgf@process{\northeast}%
    \pgf@ya=.5\pgf@y%
    \pgf@process{\southwest}%
    \pgf@y=.5\pgf@y%
    \advance\pgf@y by \pgf@ya%
  }%
  \anchor{output}{%
    \pgf@process{\southwest}%
    \pgf@ya=.5\pgf@y%
    \pgf@process{\northeast}%
    \pgf@y=.5\pgf@y%
    \advance\pgf@y by \pgf@ya%
  }%
}%

\pgfdeclareshape{circle ee}
{%
  \inheritsavedanchors[from=circle]%
  \inheritanchorborder[from=circle]%
  \inheritanchor[from=circle]{north}%
  \inheritanchor[from=circle]{north west}%
  \inheritanchor[from=circle]{north east}%
  \inheritanchor[from=circle]{center}%
  \inheritanchor[from=circle]{west}%
  \inheritanchor[from=circle]{east}%
  \inheritanchor[from=circle]{mid}%
  \inheritanchor[from=circle]{mid west}%
  \inheritanchor[from=circle]{mid east}%
  \inheritanchor[from=circle]{base}%
  \inheritanchor[from=circle]{base west}%
  \inheritanchor[from=circle]{base east}%
  \inheritanchor[from=circle]{south}%
  \inheritanchor[from=circle]{south west}%
  \inheritanchor[from=circle]{south east}%
  \inheritbackgroundpath[from=circle]%
  \anchor{input}{\centerpoint\advance\pgf@x by-\radius}%
  \anchor{output}{\centerpoint\advance\pgf@x by\radius}%
}%




\pgfdeclareshape{direction ee}
{%
  \savedanchor\northeast{
    \pgf@x=0pt%
    \pgfmathsetlength{\pgf@y}{\pgfkeysvalueof{/pgf/minimum height}}%
    \pgf@y=.5\pgf@y
  }%
  \savedanchor\southwest{
    \pgfarrowtotallength{\pgfkeysvalueof{/pgf/direction ee arrow}}%
    \pgf@x=-\pgf@x%
    \pgfmathsetlength{\pgf@y}{\pgfkeysvalueof{/pgf/minimum height}}%
    \pgf@y=-.5\pgf@y
  }%

  \inheritanchor[from=rectangle ee]{center}%
  \inheritanchor[from=rectangle ee]{north}%
  \inheritanchor[from=rectangle ee]{south}%
  \inheritanchor[from=rectangle ee]{east}%
  \inheritanchor[from=rectangle ee]{west}%
  \inheritanchor[from=rectangle ee]{north east}%
  \inheritanchor[from=rectangle ee]{north west}%
  \inheritanchor[from=rectangle ee]{south east}%
  \inheritanchor[from=rectangle ee]{south west}%
  \inheritanchor[from=rectangle ee]{input}%
  \inheritanchor[from=rectangle ee]{output}%
  \inheritanchorborder[from=rectangle ee]%
  \nodeparts{}%

  \behindbackgroundpath{
    \pgf@process{\southwest}
    \pgf@xa=\pgf@x
    \pgf@process{\northeast}
    \pgf@xb=\pgf@x
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{0pt}}
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{0pt}}
    \pgfusepathqstroke
  }%

  \beforebackgroundpath{
    {
      \pgfsys@beginscope
      \pgfarrowdraw{\pgfkeysvalueof{/pgf/direction ee arrow}}%
      \pgfsys@endscope
    }
  }%
}%

\pgfkeys{
  /pgf/direction ee arrow/.initial=direction ee,
}%




\pgfarrowsdeclare{direction ee}{direction ee}
{%
  \pgfmathsetlength\pgfutil@tempdima{\pgfgetarrowoptions{direction ee}}%
  \pgfutil@tempdima=.5\pgfutil@tempdima
  \pgfarrowsleftextend{+-\pgfutil@tempdima}
  \pgfarrowsrightextend{+\pgfutil@tempdima}
}
{
  \pgfmathsetlength\pgfutil@tempdima{\pgfgetarrowoptions{direction ee}}%
  \pgfsetdash{}{+0pt}
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfqpoint{-0.5\pgfutil@tempdima}{0.38268343237\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0.5\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{-0.5\pgfutil@tempdima}{-0.38268343237\pgfutil@tempdima}}
  \pgfpathclose
  \pgfusepathqfillstroke
}%

\pgfsetarrowoptions{direction ee}{4pt}%





\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.ee.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.logic.IEC.code.tex ====

\usepgflibrary{shapes.gates.logic}%

\pgfkeys{/pgf/.cd,
  and gate IEC symbol/.initial=$\char`\&$,
  nand gate IEC symbol/.initial=$\char`\&$,
  or gate IEC symbol/.initial=$\geq1$,
  nor gate IEC symbol/.initial=$\geq1$,
  xor gate IEC symbol/.initial={$=1$},
  xnor gate IEC symbol/.initial={$=1$},
  not gate IEC symbol/.initial=1,
  buffer gate IEC symbol/.initial=1,
  logic gate IEC symbol align/.initial=top,
  logic gate IEC symbol color/.initial=%
}%

\pgfkeys{/pgf/logic gate IEC symbol align/.cd,
  top/.code=\pgftransformyshift{\innerhalfheight},
  bottom/.code=\pgftransformyshift{-\innerhalfheight},
  left/.code=\pgftransformxshift{-\innerhalfwidth},
  right/.code=\pgftransformxshift{\innerhalfwidth},
}%

\def\pgf@lib@sh@logicgates@IEC@foregroundpath#1{%
  \dimensions%
  {%
    \pgftransformshift{\centerpoint}%
    \edef\pgf@lib@sh@temp{\pgfkeysvalueof{/pgf/logic gate IEC symbol align}}%
    \edef\pgf@lib@sh@@temp{/pgf/logic gate IEC symbol align/.cd, \pgf@lib@sh@temp}%
    \expandafter\pgfkeys\expandafter{\pgf@lib@sh@@temp}%
    \expandafter\pgftext\expandafter[\pgf@lib@sh@temp]{%
      \pgfkeysgetvalue{/pgf/logic gate IEC symbol color}{\pgf@lib@sh@temp}%
      \ifx\pgf@lib@sh@temp\pgfutil@empty%
      \else%
        \expandafter\color\expandafter{\pgf@lib@sh@temp}%
      \fi%
      \pgfkeysvalueof{/pgf/#1 gate IEC symbol}%
    }%
  }%
}%


\def\pgf@lib@sh@logicgates@dimensions@IEC#1{%
  \pgf@x.5\wd\pgfnodeparttextbox%
  \pgf@y.5\ht\pgfnodeparttextbox%
  \advance\pgf@y.5\dp\pgfnodeparttextbox%
  \setbox\pgf@hbox\hbox{%
    \pgfinterruptpicture
      {\pgfkeysvalueof{/pgf/#1 gate IEC symbol}}%
    \endpgfinterruptpicture
  }%
  \pgf@xa.5\wd\pgf@hbox%
  \pgf@ya.5\ht\pgf@hbox%
  \advance\pgf@ya.5\dp\pgf@hbox%
  \ifdim\pgf@x<\pgf@xa%
    \pgf@x\pgf@xa%
  \fi%
  \ifdim\pgf@y<\pgf@ya%
    \pgf@y\pgf@ya%
  \fi%
  \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
  \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
  \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum width}}%
  \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
  \ifdim\pgf@x<.5\pgf@xa%
    \pgf@x.5\pgf@xa%
  \fi%
  \ifdim\pgf@y<.5\pgf@ya%
    \pgf@y.5\pgf@ya%
  \fi%
  \c@pgf@counta\pgf@lib@sh@logicgate@numinputs%
  \advance\c@pgf@counta1\relax%
  \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
  \pgf@yb2.0\pgf@yb%
  \advance\pgf@yb\pgflinewidth%
  \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/logic gate input sep}}%
  \edef\inputsep{\the\pgf@yc}%
  \addtosavedmacro\inputsep%
  \ifdim\pgf@yb<\pgf@yc%
    \pgf@yb\pgf@yc%
  \fi%
  \multiply\pgf@yb\c@pgf@counta%
  \ifdim\pgf@y<.5\pgf@yb%
    \pgf@y.5\pgf@yb%
  \fi%
  \pgf@xa\pgf@x%
  \pgfmathaddtolength\pgf@xa{-\pgfkeysvalueof{/pgf/inner xsep}}%
  \edef\innerhalfwidth{\the\pgf@xa}%
  \addtosavedmacro\innerhalfwidth%
  \pgf@ya\pgf@y%
  \pgfmathaddtolength\pgf@ya{-\pgfkeysvalueof{/pgf/inner ysep}}%
  \edef\innerhalfheight{\the\pgf@ya}%
  \addtosavedmacro\innerhalfheight%
  \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
  \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
  \edef\halfwidth{\the\pgf@x}%
  \edef\halfheight{\the\pgf@y}%
  \addtosavedmacro\halfwidth%
  \addtosavedmacro\halfheight%
}%

\def\pgf@lib@sh@logicgate@IEC@inputanchor#1{%
  \dimensions%
  \centerpoint%
  \advance\pgf@x-\halfwidth%
  \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-#1\endcsname%
    \advance\pgf@x-\invertedradius%
    \advance\pgf@x-\outerinvertedradius%
  \fi%
  \pgfutil@tempdima\halfheight%
  \multiply\pgfutil@tempdima2\relax%
  \c@pgf@counta\numinputs%
  \advance\c@pgf@counta1\relax%
  \divide\pgfutil@tempdima\c@pgf@counta%
  \multiply\pgfutil@tempdima#1\relax%
  \advance\pgf@y\halfheight%
  \advance\pgf@y-\pgfutil@tempdima%
}%



\pgfdeclareshape{and gate IEC}{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@and gate IEC\endcsname{%
    \pgf@lib@sh@logicgate@parseinputs{1024}%
    \pgfmathloop%
    \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
    \else%
      \pgfutil@ifundefined{pgf@anchor@and gate IEC@input \pgfmathcounter}{%
        \expandafter\xdef\csname pgf@anchor@and gate IEC@input \pgfmathcounter\endcsname{%
          \noexpand\pgf@lib@sh@logicgate@IEC@inputanchor{\pgfmathcounter}%
        }%
      }{}%
    \repeatpgfmathloop%
    \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
      \pgferror{An and gate must have at least two inputs}%
    \fi%
  }%
  \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
  \saveddimen\invertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
  }%
  \saveddimen\outerinvertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    \advance\pgf@x.5\pgflinewidth%
  }%
  \savedmacro\dimensions{%
    \pgf@lib@sh@logicgates@dimensions@IEC{and}%
  }%
  \savedanchor\centerpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\midpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+0.5ex}%
  }%
  \savedanchor\basepoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt%
  }%
  \anchor{center}{\centerpoint}%
  \anchor{mid}{\midpoint}%
  \anchor{mid west}{%
    \dimensions%
    \midpoint%
    \advance\pgf@x-\halfwidth}%
  \anchor{mid east}{%
    \dimensions%
    \midpoint%
    \advance\pgf@x\halfwidth}%
  \anchor{base}{\basepoint}%
  \anchor{base west}{%
    \dimensions%
    \basepoint%
    \advance\pgf@x-\halfwidth}%
  \anchor{base east}{%
    \dimensions%
    \basepoint%
    \advance\pgf@x\halfwidth}%
  \anchor{north}{\dimensions\centerpoint\advance\pgf@y\halfheight}%
  \anchor{south}{\dimensions\centerpoint\advance\pgf@y-\halfheight}%
  \anchor{east}{\dimensions\centerpoint\advance\pgf@x\halfwidth}%
  \anchor{west}{\dimensions\centerpoint\advance\pgf@x-\halfwidth}%
  \anchor{north east}{\dimensions\centerpoint\advance\pgf@x\halfwidth\advance\pgf@y\halfheight}%
  \anchor{north west}{\dimensions\centerpoint\advance\pgf@x-\halfwidth\advance\pgf@y\halfheight}%
  \anchor{south east}{\dimensions\centerpoint\advance\pgf@x\halfwidth\advance\pgf@y-\halfheight}%
  \anchor{south west}{\dimensions\centerpoint\advance\pgf@x-\halfwidth\advance\pgf@y-\halfheight}%
  \anchor{output}{\dimensions\centerpoint\advance\pgf@x\halfwidth}%
  \backgroundpath{%
    \dimensions%
    \pgf@xc\halfwidth%
    \pgf@yc\halfheight%
    \pgfmathaddtolength\pgf@xc{-\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathaddtolength\pgf@yc{-\pgfkeysvalueof{/pgf/outer xsep}}%
    {%
      \pgftransformshift{\centerpoint}%
      \pgfpathrectangle{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}%
        {%
          \pgf@xc2.0\pgf@xc%
          \pgf@yc2.0\pgf@yc%
          \pgfqpoint{\pgf@xc}{\pgf@yc}%
        }%
      \pgfpathclose%
      \pgf@xc-\halfwidth%
      \advance\pgf@xc-\invertedradius%
      \pgf@yc\halfheight%
      \pgfutil@tempdima2.0\pgf@yc%
      \c@pgf@counta\numinputs%
      \advance\c@pgf@counta1\relax%
      \divide\pgfutil@tempdima\c@pgf@counta%
      \pgfmathloop%
      \ifnum\pgfmathcounter>\numinputs%
      \else%
        \advance\pgf@yc-\pgfutil@tempdima%
        \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-\pgfmathcounter\endcsname%
          {%
            \pgfpathcircle{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\invertedradius}%
          }%
        \fi%
      \repeatpgfmathloop%
    }%
  }%
  \foregroundpath{\pgf@lib@sh@logicgates@IEC@foregroundpath{and}}%
  \anchorborder{%
    \pgfextract@process\externalpoint{}%
    \dimensions%
    \pgfpointadd{\centerpoint}{\pgfpointborderrectangle{\externalpoint}{\pgfqpoint{\halfwidth}{\halfheight}}}%
  }%
}%





\pgfdeclareshape{nand gate IEC}{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@nand gate IEC\endcsname{%
    \pgf@lib@sh@logicgate@parseinputs{1024}%
    \pgfmathloop%
    \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
    \else%
      \pgfutil@ifundefined{pgf@anchor@nand gate IEC@input \pgfmathcounter}{%
        \expandafter\xdef\csname pgf@anchor@nand gate IEC@input \pgfmathcounter\endcsname{%
          \noexpand\pgf@lib@sh@logicgate@IEC@inputanchor{\pgfmathcounter}%
        }%
      }{}%
    \repeatpgfmathloop%
    \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
      \pgferror{A nand gate must have at least two inputs}%
    \fi%
  }%
  \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
  \saveddimen\invertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
  }%
  \saveddimen\outerinvertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    \advance\pgf@x.5\pgflinewidth%
  }%
  \savedmacro\dimensions{%
    \pgf@lib@sh@logicgates@dimensions@IEC{nand}%
  }%
  \savedanchor\centerpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\midpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+0.5ex}%
  }%
  \savedanchor\basepoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt%
  }%
  \inheritanchor[from=and gate IEC]{center}%
  \inheritanchor[from=and gate IEC]{mid}%
  \inheritanchor[from=and gate IEC]{mid west}%
  \inheritanchor[from=and gate IEC]{mid east}%
  \inheritanchor[from=and gate IEC]{base}%
  \inheritanchor[from=and gate IEC]{base west}%
  \inheritanchor[from=and gate IEC]{base east}%
  \inheritanchor[from=and gate IEC]{north}%
  \inheritanchor[from=and gate IEC]{south}%
  \inheritanchor[from=and gate IEC]{east}%
  \inheritanchor[from=and gate IEC]{west}%
  \inheritanchor[from=and gate IEC]{north east}%
  \inheritanchor[from=and gate IEC]{north west}%
  \inheritanchor[from=and gate IEC]{south east}%
  \inheritanchor[from=and gate IEC]{south west}%
  \anchor{output}{%
    \csname pgf@anchor@and gate IEC@east\endcsname%
    \advance\pgf@x\invertedradius%
    \advance\pgf@x\outerinvertedradius%
  }%
  \backgroundpath{%
    \csname pgf@sh@bg@and gate IEC\endcsname%
    \pgfpathcircle{%
      \centerpoint%
      \advance\pgf@x\halfwidth%
      \advance\pgf@x\invertedradius%
    }{+\invertedradius}%
  }%
  \foregroundpath{\pgf@lib@sh@logicgates@IEC@foregroundpath{nand}}%
  \inheritanchorborder[from=and gate IEC]%
}%





\pgfdeclareshape{or gate IEC}{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@or gate IEC\endcsname{%
    \pgf@lib@sh@logicgate@parseinputs{1024}%
    \pgfmathloop%
    \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
    \else%
      \pgfutil@ifundefined{pgf@anchor@or gate IEC@input \pgfmathcounter}{%
        \expandafter\xdef\csname pgf@anchor@or gate IEC@input \pgfmathcounter\endcsname{%
          \noexpand\pgf@lib@sh@logicgate@IEC@inputanchor{\pgfmathcounter}%
        }%
      }{}%
    \repeatpgfmathloop%
    \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
      \pgferror{An or gate must have at least two inputs}%
    \fi%
  }%
  \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
  \saveddimen\invertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
  }%
  \saveddimen\outerinvertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    \advance\pgf@x.5\pgflinewidth%
  }%
  \savedmacro\dimensions{%
    \pgf@lib@sh@logicgates@dimensions@IEC{or}%
  }%
  \savedanchor\centerpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\midpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+0.5ex}%
  }%
  \savedanchor\basepoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt%
  }%
  \inheritanchor[from=and gate IEC]{center}%
  \inheritanchor[from=and gate IEC]{mid}%
  \inheritanchor[from=and gate IEC]{mid west}%
  \inheritanchor[from=and gate IEC]{mid east}%
  \inheritanchor[from=and gate IEC]{base}%
  \inheritanchor[from=and gate IEC]{base west}%
  \inheritanchor[from=and gate IEC]{base east}%
  \inheritanchor[from=and gate IEC]{north}%
  \inheritanchor[from=and gate IEC]{south}%
  \inheritanchor[from=and gate IEC]{east}%
  \inheritanchor[from=and gate IEC]{west}%
  \inheritanchor[from=and gate IEC]{north east}%
  \inheritanchor[from=and gate IEC]{north west}%
  \inheritanchor[from=and gate IEC]{south east}%
  \inheritanchor[from=and gate IEC]{south west}%
  \inheritanchor[from=and gate IEC]{output}%
  \inheritbackgroundpath[from=and gate IEC]%
  \foregroundpath{\pgf@lib@sh@logicgates@IEC@foregroundpath{or}}%
  \inheritanchorborder[from=and gate IEC]%
}%





\pgfdeclareshape{nor gate IEC}{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@nor gate IEC\endcsname{%
    \pgf@lib@sh@logicgate@parseinputs{1024}%
    \pgfmathloop%
    \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
    \else%
      \pgfutil@ifundefined{pgf@anchor@nor gate IEC@input \pgfmathcounter}{%
        \expandafter\xdef\csname pgf@anchor@nor gate IEC@input \pgfmathcounter\endcsname{%
          \noexpand\pgf@lib@sh@logicgate@IEC@inputanchor{\pgfmathcounter}%
        }%
      }{}%
    \repeatpgfmathloop%
    \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
      \pgferror{A nor gate must have at least two inputs}%
    \fi%
  }%
  \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
  \saveddimen\invertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
  }%
  \saveddimen\outerinvertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    \advance\pgf@x.5\pgflinewidth%
  }%
  \savedmacro\dimensions{%
    \pgf@lib@sh@logicgates@dimensions@IEC{nor}%
  }%
  \savedanchor\centerpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\midpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+0.5ex}%
  }%
  \savedanchor\basepoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt%
  }%
  \inheritanchor[from=and gate IEC]{center}%
  \inheritanchor[from=and gate IEC]{mid}%
  \inheritanchor[from=and gate IEC]{mid west}%
  \inheritanchor[from=and gate IEC]{mid east}%
  \inheritanchor[from=and gate IEC]{base}%
  \inheritanchor[from=and gate IEC]{base west}%
  \inheritanchor[from=and gate IEC]{base east}%
  \inheritanchor[from=and gate IEC]{north}%
  \inheritanchor[from=and gate IEC]{south}%
  \inheritanchor[from=and gate IEC]{east}%
  \inheritanchor[from=and gate IEC]{west}%
  \inheritanchor[from=and gate IEC]{north east}%
  \inheritanchor[from=and gate IEC]{north west}%
  \inheritanchor[from=and gate IEC]{south east}%
  \inheritanchor[from=and gate IEC]{south west}%
  \inheritanchor[from=nand gate IEC]{output}%
  \inheritbackgroundpath[from=nand gate IEC]%
  \foregroundpath{\pgf@lib@sh@logicgates@IEC@foregroundpath{nor}}%
  \inheritanchorborder[from=and gate IEC]%
}%





\pgfdeclareshape{xor gate IEC}{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@xor gate IEC\endcsname{%
    \pgf@lib@sh@logicgate@parseinputs{2}%
    \pgfmathloop%
    \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
    \else%
      \pgfutil@ifundefined{pgf@anchor@xor gate IEC@input \pgfmathcounter}{%
        \expandafter\xdef\csname pgf@anchor@xor gate IEC@input \pgfmathcounter\endcsname{%
          \noexpand\pgf@lib@sh@logicgate@IEC@inputanchor{\pgfmathcounter}%
        }%
      }{}%
    \repeatpgfmathloop%
    \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
      \pgferror{An xor gate must have two inputs}%
    \fi%
  }%
  \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
  \saveddimen\invertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
  }%
  \saveddimen\outerinvertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    \advance\pgf@x.5\pgflinewidth%
  }%
  \savedmacro\dimensions{%
    \pgf@lib@sh@logicgates@dimensions@IEC{xor}%
  }%
  \savedanchor\centerpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\midpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+0.5ex}%
  }%
  \savedanchor\basepoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt%
  }%
  \inheritanchor[from=and gate IEC]{center}%
  \inheritanchor[from=and gate IEC]{mid}%
  \inheritanchor[from=and gate IEC]{mid west}%
  \inheritanchor[from=and gate IEC]{mid east}%
  \inheritanchor[from=and gate IEC]{base}%
  \inheritanchor[from=and gate IEC]{base west}%
  \inheritanchor[from=and gate IEC]{base east}%
  \inheritanchor[from=and gate IEC]{north}%
  \inheritanchor[from=and gate IEC]{south}%
  \inheritanchor[from=and gate IEC]{east}%
  \inheritanchor[from=and gate IEC]{west}%
  \inheritanchor[from=and gate IEC]{north east}%
  \inheritanchor[from=and gate IEC]{north west}%
  \inheritanchor[from=and gate IEC]{south east}%
  \inheritanchor[from=and gate IEC]{south west}%
  \inheritanchor[from=and gate IEC]{output}%
  \inheritbackgroundpath[from=and gate IEC]%
  \foregroundpath{\pgf@lib@sh@logicgates@IEC@foregroundpath{xor}}%
  \inheritanchorborder[from=and gate IEC]%
}%





\pgfdeclareshape{xnor gate IEC}{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@xnor gate IEC\endcsname{%
    \pgf@lib@sh@logicgate@parseinputs{1024}%
    \pgfmathloop%
    \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
    \else%
      \pgfutil@ifundefined{pgf@anchor@xnor gate IEC@input \pgfmathcounter}{%
        \expandafter\xdef\csname pgf@anchor@xnor gate IEC@input \pgfmathcounter\endcsname{%
          \noexpand\pgf@lib@sh@logicgate@IEC@inputanchor{\pgfmathcounter}%
        }%
      }{}%
    \repeatpgfmathloop%
    \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
      \pgferror{A xnor gate must have two inputs}%
    \fi%
  }%
  \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
  \saveddimen\invertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
  }%
  \saveddimen\outerinvertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    \advance\pgf@x.5\pgflinewidth%
  }%
  \savedmacro\dimensions{%
    \pgf@lib@sh@logicgates@dimensions@IEC{xnor}%
  }%
  \savedanchor\centerpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\midpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+0.5ex}%
  }%
  \savedanchor\basepoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt%
  }%
  \inheritanchor[from=and gate IEC]{center}%
  \inheritanchor[from=and gate IEC]{mid}%
  \inheritanchor[from=and gate IEC]{mid west}%
  \inheritanchor[from=and gate IEC]{mid east}%
  \inheritanchor[from=and gate IEC]{base}%
  \inheritanchor[from=and gate IEC]{base west}%
  \inheritanchor[from=and gate IEC]{base east}%
  \inheritanchor[from=and gate IEC]{north}%
  \inheritanchor[from=and gate IEC]{south}%
  \inheritanchor[from=and gate IEC]{east}%
  \inheritanchor[from=and gate IEC]{west}%
  \inheritanchor[from=and gate IEC]{north east}%
  \inheritanchor[from=and gate IEC]{north west}%
  \inheritanchor[from=and gate IEC]{south east}%
  \inheritanchor[from=and gate IEC]{south west}%
  \inheritanchor[from=nand gate IEC]{output}%
  \inheritbackgroundpath[from=nand gate IEC]%
  \foregroundpath{\pgf@lib@sh@logicgates@IEC@foregroundpath{xnor}}%
  \inheritanchorborder[from=and gate IEC]%
}%




\pgfdeclareshape{buffer gate IEC}{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@buffer gate IEC\endcsname{%
    \pgf@lib@sh@logicgate@parseinputs{1}%
    \expandafter\gdef\csname pgf@anchor@buffer gate IEC@input\endcsname{%
      \pgf@lib@sh@logicgate@IEC@inputanchor{1}%
    }%
    \ifnum\pgf@lib@sh@logicgate@numinputs=0\relax%
      \pgferror{A buffer gate must have one inputs}%
    \fi%
  }%
  \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
  \saveddimen\invertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
  }%
  \saveddimen\outerinvertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    \advance\pgf@x.5\pgflinewidth%
  }%
  \savedmacro\dimensions{%
    \pgf@lib@sh@logicgates@dimensions@IEC{xor}%
  }%
  \savedanchor\centerpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\midpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+0.5ex}%
  }%
  \savedanchor\basepoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt%
  }%
  \inheritanchor[from=and gate IEC]{center}%
  \inheritanchor[from=and gate IEC]{mid}%
  \inheritanchor[from=and gate IEC]{mid west}%
  \inheritanchor[from=and gate IEC]{mid east}%
  \inheritanchor[from=and gate IEC]{base}%
  \inheritanchor[from=and gate IEC]{base west}%
  \inheritanchor[from=and gate IEC]{base east}%
  \inheritanchor[from=and gate IEC]{north}%
  \inheritanchor[from=and gate IEC]{south}%
  \inheritanchor[from=and gate IEC]{east}%
  \inheritanchor[from=and gate IEC]{west}%
  \inheritanchor[from=and gate IEC]{north east}%
  \inheritanchor[from=and gate IEC]{north west}%
  \inheritanchor[from=and gate IEC]{south east}%
  \inheritanchor[from=and gate IEC]{south west}%
  \inheritanchor[from=and gate IEC]{output}%
  \inheritbackgroundpath[from=and gate IEC]%
  \foregroundpath{\pgf@lib@sh@logicgates@IEC@foregroundpath{buffer}}%
  \inheritanchorborder[from=and gate IEC]%
}%





\pgfdeclareshape{not gate IEC}{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@not gate IEC\endcsname{%
    \pgf@lib@sh@logicgate@parseinputs{1}%
    \pgfutil@ifundefined{pgf@anchor@not gate IEC@input}{%
      \expandafter\gdef\csname pgf@anchor@not gate IEC@input\endcsname{%
          \pgf@lib@sh@logicgate@IEC@inputanchor{1}%
        }}{}%
    \ifnum\pgf@lib@sh@logicgate@numinputs=0\relax%
      \pgferror{A not gate must have one input}%
    \fi%
  }%
  \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
  \saveddimen\invertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
  }%
  \saveddimen\outerinvertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    \advance\pgf@x.5\pgflinewidth%
  }%
  \savedmacro\dimensions{%
    \pgf@lib@sh@logicgates@dimensions@IEC{not}%
  }%
  \savedanchor\centerpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\midpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+0.5ex}%
  }%
  \savedanchor\basepoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt%
  }%
  \inheritanchor[from=and gate IEC]{center}%
  \inheritanchor[from=and gate IEC]{mid}%
  \inheritanchor[from=and gate IEC]{mid west}%
  \inheritanchor[from=and gate IEC]{mid east}%
  \inheritanchor[from=and gate IEC]{base}%
  \inheritanchor[from=and gate IEC]{base west}%
  \inheritanchor[from=and gate IEC]{base east}%
  \inheritanchor[from=and gate IEC]{north}%
  \inheritanchor[from=and gate IEC]{south}%
  \inheritanchor[from=and gate IEC]{east}%
  \inheritanchor[from=and gate IEC]{west}%
  \inheritanchor[from=and gate IEC]{north east}%
  \inheritanchor[from=and gate IEC]{north west}%
  \inheritanchor[from=and gate IEC]{south east}%
  \inheritanchor[from=and gate IEC]{south west}%
  \inheritanchor[from=nand gate IEC]{output}%
  \inheritbackgroundpath[from=nand gate IEC]%
  \foregroundpath{\pgf@lib@sh@logicgates@IEC@foregroundpath{not}}%
  \inheritanchorborder[from=and gate IEC]%
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.logic.IEC.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.logic.US.code.tex ====

\usepgflibrary{shapes.gates.logic}%


\newif\ifpgfgateanchorsuseboundingrectangle%


\pgfkeys{
  /pgf/logic gate anchors use bounding box/.is if=pgfgateanchorsuseboundingrectangle,%
}%

\def\pgf@lib@sh@logicgates@dimensions@orUS{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y.5\dp\pgfnodeparttextbox%
    \c@pgf@counta\pgf@lib@sh@logicgate@numinputs%
    \advance\c@pgf@counta1\relax%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    \advance\pgf@ya\pgflinewidth%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/logic gate input sep}}%
    \pgf@yb.5\pgf@yb%
    \ifdim\pgf@ya<\pgf@yb%
        \pgf@ya\pgf@yb%
    \fi%
    \multiply\pgf@ya\c@pgf@counta%
    \ifdim\pgf@y<\pgf@ya%
        \pgf@y\pgf@ya%
    \fi%
    \ifdim\pgf@x>\pgf@y%
        \pgf@y\pgf@x%
    \else%
        \pgf@x\pgf@y%
    \fi%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@y<.5\pgf@ya%
        \pgf@y.5\pgf@ya%
    \fi%
    \pgf@xb\pgf@x%
    \advance\pgf@xb1.732051\pgf@y%
    \ifdim\pgf@xb<\pgf@xa%
        \pgf@xb\pgf@xa%
        \pgf@x0.366025\pgf@xb%
    \fi%
    \ifdim\pgf@x>\pgf@y%
        \pgf@y\pgf@x%
    \else%
        \pgf@x\pgf@y%
    \fi%
    \edef\halfside{\the\pgf@x}%
    \addtosavedmacro\halfside%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \edef\outerxsep{\the\pgf@xa}%
    \edef\outerysep{\the\pgf@ya}%
    \addtosavedmacro\outerxsep%
    \addtosavedmacro\outerysep%
    \advance\pgf@x\pgf@xa%
    \advance\pgf@y\pgf@ya%
    \edef\halfwidth{\the\pgf@x}%
    \edef\halfheight{\the\pgf@y}%
    \addtosavedmacro\halfwidth%
    \addtosavedmacro\halfheight%
    \pgfextract@process\tipanchor{%
        \advance\pgf@x-\pgf@xa%
        \advance\pgf@y-\pgf@ya%
        \pgf@x-.16666\pgf@x%
        \pgf@yb2.0\pgf@y%
        \advance\pgf@x.866025\pgf@yb%
        \advance\pgf@x1.154701\pgf@xa%
        \pgf@y0pt%
    }%
    \addtosavedmacro\tipanchor%
}%


\def\pgf@lib@sh@logicgates@dimensions@andUS{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y.5\dp\pgfnodeparttextbox%
    \c@pgf@counta\pgf@lib@sh@logicgate@numinputs%
    \advance\c@pgf@counta1\relax%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    \advance\pgf@ya\pgflinewidth%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/logic gate input sep}}%
    \pgf@yb.5\pgf@yb%
    \ifdim\pgf@ya<\pgf@yb%
        \pgf@ya\pgf@yb%
    \fi%
    \multiply\pgf@ya\c@pgf@counta%
    \ifdim\pgf@y<\pgf@ya%
        \pgf@y\pgf@ya%
    \fi%
    \ifdim\pgf@x>\pgf@y%
        \pgf@y\pgf@x%
    \else%
        \pgf@x\pgf@y%
    \fi%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@y<.5\pgf@ya%
        \pgf@y.5\pgf@ya%
    \fi%
    \pgf@xb2.5\pgf@x%
    \ifdim\pgf@xb<\pgf@xa%
        \pgf@xb\pgf@xa%
        \pgf@x0.4\pgf@xb%
    \fi%
    \ifdim\pgf@x>\pgf@y%
        \pgf@y\pgf@x%
    \else%
        \pgf@x\pgf@y%
    \fi%
    \edef\halfside{\the\pgf@x}%
    \addtosavedmacro\halfside%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \edef\outerxsep{\the\pgf@xa}%
    \edef\outerysep{\the\pgf@ya}%
    \addtosavedmacro\outerxsep%
    \addtosavedmacro\outerysep%
    \advance\pgf@x\pgf@xa%
    \advance\pgf@y\pgf@ya%
    \edef\halfwidth{\the\pgf@x}%
    \edef\halfheight{\the\pgf@y}%
    \addtosavedmacro\halfwidth%
    \addtosavedmacro\halfheight%
}%


\def\pgf@lib@sh@logicgate@AND@inputanchor#1{%
    \dimensions%
    \centerpoint%
    \pgf@xa\halfside%
    \advance\pgf@x-.166666\pgf@xa%
    \advance\pgf@x-\halfwidth%
    \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-#1\endcsname%
        \advance\pgf@x-\invertedradius%
        \advance\pgf@x-\outerinvertedradius%
    \fi%
    \pgfutil@tempdima\halfside%
    \multiply\pgfutil@tempdima2\relax%
    \c@pgf@counta\numinputs%
    \advance\c@pgf@counta1\relax%
    \divide\pgfutil@tempdima\c@pgf@counta%
    \multiply\pgfutil@tempdima#1\relax%
    \advance\pgf@y\halfside%
    \advance\pgf@y-\pgfutil@tempdima%
}%




\pgfdeclareshape{and gate US}{%
    \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@and gate US\endcsname{%
        \pgf@lib@sh@logicgate@parseinputs{1024}%
        \pgfmathloop%
        \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
        \else%
            \pgfutil@ifundefined{pgf@anchor@and gate US@input \pgfmathcounter}{%
                \expandafter\xdef\csname pgf@anchor@and gate US@input \pgfmathcounter\endcsname{%
                    \noexpand\pgf@lib@sh@logicgate@AND@inputanchor{\pgfmathcounter}%
                }%
            }{}%
        \repeatpgfmathloop%
        \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
            \pgferror{An and gate must have at least two inputs}%
        \fi%
    }%
    \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
    \saveddimen\invertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    }%
    \saveddimen\outerinvertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
        \advance\pgf@x.5\pgflinewidth%
    }%
    \savedmacro\dimensions{\pgf@lib@sh@logicgates@dimensions@andUS}%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{%
        \csname pgf@anchor@and gate US@east\endcsname%
        \pgf@xa\pgf@x%
        \midpoint%
        \pgf@x\pgf@xa}%
    \anchor{mid west}{%
        \csname pgf@anchor@and gate US@west\endcsname%
        \pgf@xa\pgf@x%
        \midpoint%
        \pgf@x\pgf@xa}%
    \anchor{base}{\basepoint}%
    \anchor{base east}{%
        \csname pgf@anchor@and gate US@east\endcsname%
        \pgf@xa\pgf@x%
        \basepoint%
        \pgf@x\pgf@xa}%
    \anchor{base west}{%
        \csname pgf@anchor@and gate US@west\endcsname%
        \pgf@xa\pgf@x%
        \basepoint%
        \pgf@x\pgf@xa}%
    \anchor{east}{%
        \dimensions%
        \pgf@xa\halfwidth%
        \pgf@xb\pgf@xa%
        \advance\pgf@xb-\outerxsep%
        \centerpoint%
        \advance\pgf@x.333333\pgf@xb%
        \advance\pgf@x\pgf@xa%
    }%
    \anchor{output}{\csname pgf@anchor@and gate US@east\endcsname}%
    \anchor{north east}{%
        \dimensions%
        \ifpgfgateanchorsuseboundingrectangle%
            \csname pgf@anchor@nand gate US@east\endcsname%
            \advance\pgf@y\halfheight%
        \else
            \pgf@xa\halfwidth%
            \pgf@ya\halfheight%
            \pgf@xb\pgf@xa%
            \advance\pgf@xb-\outerxsep%
            \centerpoint%
            \advance\pgf@x.333333\pgf@xb%
            \advance\pgf@x.707106\pgf@xa%
            \advance\pgf@y.707106\pgf@ya%
        \fi%
    }%
    \anchor{south east}{%
        \dimensions%
        \ifpgfgateanchorsuseboundingrectangle%
            \csname pgf@anchor@nand gate US@east\endcsname%
            \advance\pgf@y-\halfheight%
        \else
            \pgf@xa\halfwidth%
            \pgf@ya\halfheight%
            \pgf@xb\pgf@xa%
            \advance\pgf@xb-\outerxsep%
            \centerpoint%
            \advance\pgf@x.333333\pgf@xb%
            \advance\pgf@x.707106\pgf@xa%
            \advance\pgf@y-.707106\pgf@ya%
        \fi%
    }%
    \anchor{north}{%
        \dimensions%
        \centerpoint%
        \advance\pgf@y\halfheight%
    }%
    \anchor{south}{%
        \dimensions%
        \centerpoint%
        \advance\pgf@y-\halfheight%
    }%
    \anchor{south west}{%
        \dimensions%
        \centerpoint%
        \pgf@xa\halfside%
        \advance\pgf@x-1.16666\pgf@xa%
        \advance\pgf@x-\outerxsep%
        \advance\pgf@y-\halfheight%
    }%
    \anchor{north west}{%
        \dimensions%
        \centerpoint%
        \pgf@xa\halfside%
        \advance\pgf@x-1.16666\pgf@xa%
        \advance\pgf@x-\outerxsep%
        \advance\pgf@y\halfheight%
    }%
    \anchor{west}{%
        \dimensions%
        \centerpoint%
        \pgf@xa\halfside%
        \advance\pgf@x-1.16666\pgf@xa%
        \advance\pgf@x-\outerxsep%
    }%
    \backgroundpath{%
        \dimensions%
        \pgf@xc\halfwidth%
        \pgf@yc\halfheight%
        \advance\pgf@xc-\outerxsep%
        \advance\pgf@yc-\outerysep%
        \pgf@xb.333333\pgf@xc%
        {%
            \pgftransformshift{\centerpoint}%
            \pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@yc}}%
            {%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{90}{-90}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            \pgfpathlineto{\pgfqpoint{-1.16666\pgf@xc}{-\pgf@yc}}%
            \pgfpathlineto{\pgfqpoint{-1.16666\pgf@xc}{\pgf@yc}}%
            \pgfpathclose%
            \pgfutil@tempdima2.0\pgf@yc%
            \c@pgf@counta\numinputs%
            \advance\c@pgf@counta1\relax%
            \divide\pgfutil@tempdima\c@pgf@counta%
            \pgfmathloop%
            \ifnum\pgfmathcounter>\numinputs%
            \else%
                \advance\pgf@yc-\pgfutil@tempdima%
                \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-\pgfmathcounter\endcsname%
                    {%
                        \pgfpathcircle{%
                            \pgf@xa\halfside%
                            \pgf@x-1.16666\pgf@xa%
                            \advance\pgf@x-.5\pgflinewidth%
                            \advance\pgf@x-\invertedradius%
                            \pgf@y\pgf@yc%
                        }{+\invertedradius}%
                    }%
                \fi%
            \repeatpgfmathloop%
        }%
    }%
    \anchorborder{%
        \pgfextract@process\externalpoint{}%
        \pgfextract@process\externalpoint{\pgfpointadd{\centerpoint}{\externalpoint}}%
        \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}%
        \let\externalangle\pgfmathresult%
        \dimensions%
        \pgf@xb\halfside%
        \pgf@xc1.66666\pgf@xb%
        \advance\pgf@xc\outerxsep%
        \pgf@yc\halfheight%
        \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@and gate US@north west\endcsname}%
        \ifdim\externalangle pt<\pgfmathresult pt\relax%
            \pgfmathanglebetweenpoints{\centerpoint}{\centerpoint\advance\pgf@x.333333\pgf@xb\advance\pgf@y\pgf@yc}%
            \ifdim\externalangle pt<\pgfmathresult pt\relax%
                \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
                    {%
                        \centerpoint%
                        \advance\pgf@x.333333\pgf@xb%
                    }%
                    {0}{90}{+\halfwidth and +\halfheight}%
            \else%
                \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
                    {\centerpoint\advance\pgf@x.333333\pgf@xb\advance\pgf@y\pgf@yc}%
                    {\centerpoint\advance\pgf@x-\pgf@xc\advance\pgf@y\pgf@yc}%
            \fi%
        \else%
            \pgfmathanglebetweenpoints{\centerpoint}{\centerpoint\advance\pgf@x.333333\pgf@xb\advance\pgf@y-\pgf@yc}%
            \ifdim\externalangle pt>\pgfmathresult pt\relax%
                    \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
                    {%
                        \centerpoint%
                        \advance\pgf@x.333333\pgf@xb%
                    }%
                    {270}{360}{+\halfwidth and +\halfheight}%
            \else%
                \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@and gate US@south west\endcsname}%
                \ifdim\externalangle pt>\pgfmathresult pt\relax%
                    \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
                        {\centerpoint\advance\pgf@x.333333\pgf@xb\advance\pgf@y-\pgf@yc}%
                        {\csname pgf@anchor@and gate US@south west\endcsname}%
                \else%
                    \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
                        {\csname pgf@anchor@and gate US@north west\endcsname}%
                        {\csname pgf@anchor@and gate US@south west\endcsname}%
                \fi%
            \fi%
        \fi%
    }%
}%





\pgfdeclareshape{nand gate US}{%
    \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@nand gate US\endcsname{%
        \pgf@lib@sh@logicgate@parseinputs{1024}%
        \pgfmathloop%
        \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
        \else%
            \pgfutil@ifundefined{pgf@anchor@nand gate US@input \pgfmathcounter}{%
                \expandafter\xdef\csname pgf@anchor@nand gate US@input \pgfmathcounter\endcsname{%
                    \noexpand\pgf@lib@sh@logicgate@AND@inputanchor{\pgfmathcounter}%
                }%
            }{}%
        \repeatpgfmathloop%
        \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
            \pgferror{A nand gate must have at least two inputs}%
        \fi%
    }%
    \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
    \saveddimen\invertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    }%
    \saveddimen\outerinvertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
        \advance\pgf@x.5\pgflinewidth%
    }%
    \savedmacro\dimensions{\pgf@lib@sh@logicgates@dimensions@andUS}%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \inheritanchor[from=and gate US]{mid}%
    \inheritanchor[from=and gate US]{mid east}%
    \inheritanchor[from=and gate US]{mid west}%
    \inheritanchor[from=and gate US]{base}%
    \inheritanchor[from=and gate US]{base east}%
    \inheritanchor[from=and gate US]{base west}%
    \anchor{output}{%
        \dimensions
        \pgfpointadd{\centerpoint}{%
            \pgf@xa\halfside%
            \pgf@x1.33333\pgf@xa%
            \advance\pgf@x\invertedradius%
            \advance\pgf@x\outerinvertedradius%
            \advance\pgf@x\outerxsep%
            \pgf@y0pt%
        }%
    }%
    \inheritanchor[from=and gate US]{east}%
    \inheritanchor[from=and gate US]{north east}%
    \inheritanchor[from=and gate US]{south east}%
    \inheritanchor[from=and gate US]{north}%
    \inheritanchor[from=and gate US]{south}%
    \inheritanchor[from=and gate US]{south west}%
    \inheritanchor[from=and gate US]{north west}%
    \inheritanchor[from=and gate US]{west}%
    \backgroundpath{%
        \dimensions%
        \pgf@xc\halfwidth%
        \pgf@yc\halfheight%
        \advance\pgf@xc-\outerxsep%
        \advance\pgf@yc-\outerysep%
        \pgf@xb.333333\pgf@xc%
        {%
            \pgftransformshift{\centerpoint}%
            \pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@yc}}%
            {%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{90}{-90}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            \pgfpathlineto{\pgfqpoint{-1.16666\pgf@xc}{-\pgf@yc}}%
            \pgfpathlineto{\pgfqpoint{-1.16666\pgf@xc}{\pgf@yc}}%
            \pgfpathclose%
            \pgfutil@tempdima2.0\pgf@yc%
            \c@pgf@counta\numinputs%
            \advance\c@pgf@counta1\relax%
            \divide\pgfutil@tempdima\c@pgf@counta%
            \pgfmathloop%
            \ifnum\pgfmathcounter>\numinputs%
            \else%
                \advance\pgf@yc-\pgfutil@tempdima%
                \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-\pgfmathcounter\endcsname%
                    {%
                        \pgfpathcircle{%
                            \pgf@xa\halfside%
                            \pgf@x-1.166666\pgf@xa%
                            \advance\pgf@x-.5\pgflinewidth%
                            \advance\pgf@x-\invertedradius%
                            \pgf@y\pgf@yc%
                        }{+\invertedradius}%
                    }%
                \fi%
            \repeatpgfmathloop%
            {%
                \pgfpathcircle{%
                    \pgf@x1.33333\pgf@xc%
                    \advance\pgf@x\outerinvertedradius%
                    \pgf@y0pt%
                }{+\invertedradius}%
            }%
        }%
    }%
    \inheritanchorborder[from=and gate US]%
}%


\def\pgf@lib@sh@logicgate@OR@inputanchor#1{%
    \dimensions%
    \pgf@ya\halfside%
    \pgf@yb2.0\pgf@ya%
    \pgfutil@tempdima\halfside%
    \multiply\pgfutil@tempdima2\relax%
    \c@pgf@counta\numinputs%
    \advance\c@pgf@counta1\relax%
    \divide\pgfutil@tempdima\c@pgf@counta%
    \multiply\pgfutil@tempdima#1\relax%
    \pgf@yc\pgf@ya%
    \advance\pgf@yc-\pgfutil@tempdima%
    \pgf@xb\pgf@yb%
    \advance\pgf@yb-\halflinewidth%
    \pgfmathdivide@{\pgfmath@tonumber{\pgf@yc}}{\pgfmath@tonumber{\pgf@yb}}%
    \pgfmathasin@{\pgfmathresult}%
    \pgfmathcos@{\pgfmathresult}%
    \pgf@xc-1.166666\pgf@ya%
    \advance\pgf@xc-.866025\pgf@xb%
    \advance\pgf@xc\pgfmathresult\pgf@yb%
    \advance\pgf@xc\halflinewidth%
    \advance\pgf@xc-\outerxsep%
    \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-#1\endcsname%
        \advance\pgf@xc-\invertedradius%
        \advance\pgf@xc-\outerinvertedradius%
    \fi%
    \centerpoint%
    \advance\pgf@x\pgf@xc%
    \advance\pgf@y\pgf@yc%
}%


\pgfdeclareshape{or gate US}{%
    \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@or gate US\endcsname{%
        \pgf@lib@sh@logicgate@parseinputs{1024}%
        \pgfmathloop%
        \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
        \else%
            \pgfutil@ifundefined{pgf@anchor@or gate US@input \pgfmathcounter}{%
                \expandafter\xdef\csname pgf@anchor@or gate US@input \pgfmathcounter\endcsname{%
                    \noexpand\pgf@lib@sh@logicgate@OR@inputanchor{\pgfmathcounter}%
                }%
            }{}%
        \repeatpgfmathloop%
        \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
            \pgferror{An or gate must have at least two inputs}%
        \fi%
    }%
    \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
    \saveddimen\invertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    }%
    \saveddimen\halflinewidth{%
        \pgf@x.5\pgflinewidth%
    }%
    \saveddimen\outerinvertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
        \advance\pgf@x.5\pgflinewidth%
    }%
    \savedmacro\dimensions{\pgf@lib@sh@logicgates@dimensions@orUS}%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{%
        \csname pgf@anchor@or gate US@east\endcsname%
        \pgf@xa\pgf@x%
        \midpoint%
        \pgf@x\pgf@xa}%
    \anchor{mid west}{%
        \csname pgf@anchor@or gate US@north west\endcsname%
        \pgf@xa\pgf@x%
        \midpoint%
        \pgf@x\pgf@xa}%
    \anchor{base}{\basepoint}%
    \anchor{base east}{%
        \csname pgf@anchor@or gate US@east\endcsname%
        \pgf@xa\pgf@x%
        \basepoint%
        \pgf@x\pgf@xa}%
    \anchor{base west}{%
        \csname pgf@anchor@or gate US@north west\endcsname%
        \pgf@xa\pgf@x%
        \basepoint%
        \pgf@x\pgf@xa}%
    \anchor{east}{%
        \dimensions%
        \pgfpointadd{\centerpoint}{\tipanchor}%
    }%
    \anchor{output}{\csname pgf@anchor@or gate US@east\endcsname}%
    \anchor{north east}{%
        \dimensions%
        \ifpgfgateanchorsuseboundingrectangle%
            \tipanchor%
            \pgf@xa\pgf@x%
            \centerpoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\halfheight%
        \else%
            \centerpoint%
            \pgf@xa\halfwidth%
            \pgf@ya\halfheight%
            \pgf@xb\halfside%
            \advance\pgf@x-.166666\pgf@xb%
            \advance\pgf@xa\pgf@xb%
            \advance\pgf@x.5\pgf@xa%
            \advance\pgf@y-\pgf@xb%
            \advance\pgf@ya\pgf@xb%
            \advance\pgf@y.866025\pgf@ya%
        \fi%
    }%
    \anchor{south east}{%
        \dimensions%
        \ifpgfgateanchorsuseboundingrectangle%
            \tipanchor%
            \pgf@xa\pgf@x%
            \centerpoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y-\halfheight%
        \else
            \centerpoint%
            \pgf@xa\halfwidth%
            \pgf@ya\halfheight%
            \pgf@xb\halfside%
            \advance\pgf@x-.166666\pgf@xb%
            \advance\pgf@xa\pgf@xb%
            \advance\pgf@x.5\pgf@xa%
            \advance\pgf@y\pgf@xb%
            \advance\pgf@ya\pgf@xb%
            \advance\pgf@y-.866025\pgf@ya%
        \fi%
    }%
    \anchor{north}{%
        \dimensions%
        \centerpoint%
        \ifpgfgateanchorsuseboundingrectangle%
            \advance\pgf@y\halfheight%
        \else%
            \pgf@ya\halfheight%
            \advance\pgf@y.993043\pgf@ya%
        \fi%
    }%
    \anchor{south}{%
        \dimensions%
        \centerpoint%
        \ifpgfgateanchorsuseboundingrectangle%
            \advance\pgf@y-\halfheight%
        \else%
            \pgf@ya\halfheight%
            \advance\pgf@y-.993043\pgf@ya%
        \fi%
    }%
    \anchor{south west}{%
        \dimensions%
        \centerpoint%
        \pgf@xa\halfside%
        \advance\pgf@x-1.16666\pgf@xa%
        \pgf@xa\outerxsep%
        \advance\pgf@x-1.732050\pgf@xa%
        \advance\pgf@y-\halfheight%
    }%
    \anchor{north west}{%
        \dimensions%
        \centerpoint%
        \pgf@xa\halfside%
        \advance\pgf@x-1.16666\pgf@xa%
        \pgf@xa\outerxsep%
        \advance\pgf@x-1.732050\pgf@xa%
        \advance\pgf@y\halfheight%
    }%
    \anchor{west}{%
        \dimensions%
        \centerpoint%
        \pgf@xa\halfside%
        \ifpgfgateanchorsuseboundingrectangle%
            \advance\pgf@x-1.16666\pgf@xa%
            \advance\pgf@x-\outerxsep%
        \else%
            \advance\pgf@x-1.16666\pgf@xa%
            \advance\pgf@x-\outerxsep%
            \advance\pgf@x0.267949\pgf@xa%
        \fi%
    }%
    \backgroundpath{%
        \dimensions%
        \pgf@xc\halfwidth%
        \pgf@yc\halfheight%
        \advance\pgf@xc-\outerxsep%
        \advance\pgf@yc-\outerysep%
        {%
            \pgftransformshift{\centerpoint}%
            \pgfpathmoveto{\pgfqpoint{-.16666\pgf@xc}{\pgf@yc}}%
            {%
                \pgf@yc2.0\pgf@yc%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{90}{30}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            {%
                \pgf@yc2.0\pgf@yc%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{-30}{-90}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            \pgfpathlineto{\pgfqpoint{-1.16666\pgf@xc}{-\pgf@yc}}%
            {%
                \pgf@yc2.0\pgf@yc%
                \pgfpatharc{-30}{0}{+\pgf@yc}%
            }
            {%
                \pgf@yc2.0\pgf@yc%
                \pgfpatharc{0}{30}{+\pgf@yc}%
            }%
            \pgfpathclose%
            \pgfutil@tempdima2.0\pgf@yc%
            \c@pgf@counta\numinputs%
            \advance\c@pgf@counta1\relax%
            \divide\pgfutil@tempdima\c@pgf@counta%
            \pgfmathloop%
            \ifnum\pgfmathcounter>\numinputs%
            \else%
                \advance\pgf@yc-\pgfutil@tempdima%
                \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-\pgfmathcounter\endcsname%
                    {%
                        \pgfpathcircle{%
                            \pgf@ya\halfside%
                            \pgf@yb2.0\pgf@ya%
                            \pgf@xa\pgf@yb%
                            \advance\pgf@yb-\halflinewidth%
                            \pgfmathdivide@{\pgfmath@tonumber{\pgf@yc}}{\pgfmath@tonumber{\pgf@yb}}%
                            \let\sineangle\pgfmathresult%
                            \pgfmathasin@{\pgfmathresult}%
                            \pgfmathcos@{\pgfmathresult}%
                            \pgf@x-1.166666\pgf@ya%
                            \advance\pgf@x-.866025\pgf@xa%
                            \advance\pgf@x\pgfmathresult\pgf@yb%
                            \advance\pgf@x-\invertedradius%
                            \pgf@y\pgf@yc%
                        }{+\invertedradius}%
                    }%
                \fi%
            \repeatpgfmathloop%
        }%
    }%
    \anchorborder{%
        \pgfextract@process\externalpoint{}%
        \pgfextract@process\externalpoint{\pgfpointadd{\centerpoint}{\externalpoint}}%
        \pgf@xa\pgf@x%
        \pgf@ya\pgf@y%
        \centerpoint%
        \pgf@xb\pgf@x%
        \pgf@yb\pgf@y%
        \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}%
        \let\externalangle\pgfmathresult%
        \dimensions%
        \pgf@xc\halfside%
        \pgf@xc-.166666\pgf@xc%
        \ifdim\pgf@xa<\pgf@xc%
            \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@or gate US@north west\endcsname}%
            \ifdim\externalangle pt<\pgfmathresult pt\relax%
                \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
                    {%
                        \pgfgateanchorsuseboundingrectangletrue%
                        \csname pgf@anchor@or gate US@north\endcsname%
                    }%
                    {\csname pgf@anchor@or gate US@north west\endcsname}%
            \else%
                \pgfmathsubtract@{360}{\pgfmathresult}%
                \ifdim\externalangle pt>\pgfmathresult pt\relax%
                    \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
                    {%
                        \pgfgateanchorsuseboundingrectangletrue%
                        \csname pgf@anchor@or gate US@south\endcsname%
                    }%
                    {\csname pgf@anchor@or gate US@south west\endcsname}%
                \else%
                    \ifdim\pgf@ya>\pgf@yb%
                        \pgf@yc\halfheight%
                        \advance\pgf@yc\halfside%
                        \advance\pgf@yc-\outerxsep%
                        \pgfextract@process\point{%
                            \pgfmathpointintersectionoflineandarc{\centerpoint}{\externalpoint}%
                            {%
                                \centerpoint%
                                \pgf@xa\halfside%
                                \advance\pgf@x-1.166666\pgf@xa%
                                \pgf@xa2.0\pgf@xa%
                                \advance\pgf@x-.866025\pgf@xa%
                                \advance\pgf@x-\outerxsep%
                            }%
                            {0}{90}{+\pgf@yc}%
                        }%
                    \else%
                        \pgf@yc\halfheight%
                        \advance\pgf@yc\halfside%
                        \advance\pgf@yc-\outerxsep%
                        \pgfextract@process\point{%
                            \pgfmathpointintersectionoflineandarc{\centerpoint}{\externalpoint}%
                            {%
                                \centerpoint%
                                \pgf@xa\halfside%
                                \advance\pgf@x-1.166666\pgf@xa%
                                \pgf@xa2.0\pgf@xa%
                                \advance\pgf@x-.866025\pgf@xa%
                                \advance\pgf@x-\outerxsep%
                            }%
                            {270}{360}{+\pgf@yc}%
                        }%
                    \fi%
                \fi%
            \fi%
        \else%
            \ifdim\pgf@y=0pt\relax%
                \csname pgf@anchor@and gate US@east\endcsname%
            \else%
                \pgf@xc\halfwidth%
                \advance\pgf@xc\halfside%
                \pgf@yc\halfheight%
                \advance\pgf@yc\halfside%
                \pgf@xb\halfside%
                \pgf@xb-.166666\pgf@xb%
                \ifdim\pgf@ya<0pt%
                    \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
                    {%
                        \centerpoint%
                        \advance\pgf@y\halfside%
                        \advance\pgf@x\pgf@xb%
                    }%
                    {270}{330}{+\pgf@yc}%
                \else%
                    \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
                    {%
                        \centerpoint%
                        \advance\pgf@y-\halfside%
                        \advance\pgf@x\pgf@xb%
                    }%
                    {30}{90}{+\pgf@xc and +\pgf@yc}%
                \fi%
            \fi%
        \fi%
    }%
}%




\pgfdeclareshape{nor gate US}{%
    \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@nor gate US\endcsname{%
        \pgf@lib@sh@logicgate@parseinputs{1024}%
        \pgfmathloop%
        \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
        \else%
            \pgfutil@ifundefined{pgf@anchor@nor gate US@input \pgfmathcounter}{%
                \expandafter\xdef\csname pgf@anchor@nor gate US@input \pgfmathcounter\endcsname{%
                    \noexpand\pgf@lib@sh@logicgate@OR@inputanchor{\pgfmathcounter}%
                }%
            }{}%
        \repeatpgfmathloop%
        \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
            \pgferror{A nor gate must have at least two inputs}%
        \fi%
    }%
    \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
    \saveddimen\invertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    }%
    \saveddimen\halflinewidth{%
        \pgf@x.5\pgflinewidth%
    }%
    \saveddimen\outerinvertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
        \advance\pgf@x.5\pgflinewidth%
    }%
    \savedmacro\dimensions{\pgf@lib@sh@logicgates@dimensions@orUS}%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \inheritanchor[from=or gate US]{center}%
    \inheritanchor[from=or gate US]{mid}%
    \inheritanchor[from=or gate US]{mid east}%
    \inheritanchor[from=or gate US]{mid west}%
    \inheritanchor[from=or gate US]{base}%
    \inheritanchor[from=or gate US]{base east}%
    \inheritanchor[from=or gate US]{base west}%
    \inheritanchor[from=or gate US]{east}%
    \inheritanchor[from=or gate US]{north east}%
    \inheritanchor[from=or gate US]{south east}%
    \inheritanchor[from=or gate US]{north}%
    \inheritanchor[from=or gate US]{south}%
    \inheritanchor[from=or gate US]{south west}%
    \inheritanchor[from=or gate US]{north west}%
    \inheritanchor[from=or gate US]{west}%
    \anchor{output}{%
        \dimensions%
        \centerpoint%
        \pgf@xc\halfside%
        \pgf@yc\pgf@xc%
        \advance\pgf@x-.166666\pgf@xc%
        \pgf@yc2.0\pgf@yc%
        \advance\pgf@x.866025\pgf@yc%
        \advance\pgf@x\outerinvertedradius%
        \advance\pgf@x\invertedradius%
        \advance\pgf@x\outerxsep%
    }%
    \backgroundpath{%
        \dimensions%
        \pgf@xc\halfwidth%
        \pgf@yc\halfheight%
        \advance\pgf@xc-\outerxsep%
        \advance\pgf@yc-\outerysep%
        {%
            \pgftransformshift{\centerpoint}%
            \pgfpathmoveto{\pgfqpoint{-.16666\pgf@xc}{\pgf@yc}}%
            {%
                \pgf@yc2.0\pgf@yc%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{90}{30}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            {%
                \pgf@yc2.0\pgf@yc%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{-30}{-90}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            \pgfpathlineto{\pgfqpoint{-1.16666\pgf@xc}{-\pgf@yc}}%
            {%
                \pgf@yc2.0\pgf@yc%
                \pgfpatharc{-30}{0}{+\pgf@yc}%
            }
            {%
                \pgf@yc2.0\pgf@yc%
                \pgfpatharc{0}{30}{+\pgf@yc}%
            }%
            \pgfpathclose%
            {%
                \pgfpathcircle{%
                    \pgf@x-.166666\pgf@xc%
                    \pgf@yc2.0\pgf@yc%
                    \advance\pgf@x.866025\pgf@yc%
                    \advance\pgf@x\outerinvertedradius%
                    \pgf@y0pt%
                }{+\invertedradius}%
            }%
            \pgfutil@tempdima2.0\pgf@yc%
            \c@pgf@counta\numinputs%
            \advance\c@pgf@counta1\relax%
            \divide\pgfutil@tempdima\c@pgf@counta%
            \pgfmathloop%
            \ifnum\pgfmathcounter>\numinputs%
            \else%
                \advance\pgf@yc-\pgfutil@tempdima%
                \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-\pgfmathcounter\endcsname%
                    {%
                        \pgfpathcircle{%
                            \pgf@ya\halfside%
                            \pgf@yb2.0\pgf@ya%
                            \pgf@xa\pgf@yb%
                            \advance\pgf@yb-\halflinewidth%
                            \pgfmathdivide@{\pgfmath@tonumber{\pgf@yc}}{\pgfmath@tonumber{\pgf@yb}}%
                            \let\sineangle\pgfmathresult%
                            \pgfmathasin@{\pgfmathresult}%
                            \pgfmathcos@{\pgfmathresult}%
                            \pgf@x-1.166666\pgf@ya%
                            \advance\pgf@x-.866025\pgf@xa%
                            \advance\pgf@x\pgfmathresult\pgf@yb%
                            \advance\pgf@x-\invertedradius%
                            \pgf@y\pgf@yc%
                        }{+\invertedradius}%
                    }%
                \fi%
            \repeatpgfmathloop%
        }%
    }%
    \inheritanchorborder[from=or gate US]%
}%



\def\pgf@lib@sh@logicgate@XOR@inputanchor#1{%
    \dimensions%
    \pgf@ya\halfside%
    \pgf@yb2.0\pgf@ya%
    \pgfutil@tempdima\halfside%
    \multiply\pgfutil@tempdima2\relax%
    \c@pgf@counta\numinputs%
    \advance\c@pgf@counta1\relax%
    \divide\pgfutil@tempdima\c@pgf@counta%
    \multiply\pgfutil@tempdima#1\relax%
    \pgf@yc\pgf@ya%
    \advance\pgf@yc-\pgfutil@tempdima%
    \pgf@xb\pgf@yb%
    \advance\pgf@yb-\halflinewidth%
    \pgfmathdivide@{\pgfmath@tonumber{\pgf@yc}}{\pgfmath@tonumber{\pgf@yb}}%
    \pgfmathasin@{\pgfmathresult}%
    \pgfmathcos@{\pgfmathresult}%
    \pgf@xc-1.166666\pgf@ya%
    \advance\pgf@xc-.866025\pgf@xb%
    \advance\pgf@xc\pgfmathresult\pgf@yb%
    \advance\pgf@xc\halflinewidth%
    \advance\pgf@xc-\outerxsep%
    \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-#1\endcsname%
        \advance\pgf@xc-\invertedradius%
        \advance\pgf@xc-\outerinvertedradius%
    \fi%
    \centerpoint%
    \advance\pgf@x\pgf@xc%
    \advance\pgf@y\pgf@yc%
    \pgf@xa\halfside%
    \advance\pgf@x-.333333\pgf@xa%
}%





\pgfdeclareshape{xor gate US}{%
    \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@xor gate US\endcsname{%
        \pgf@lib@sh@logicgate@parseinputs{2}%
        \pgfmathloop%
        \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
        \else%
            \pgfutil@ifundefined{pgf@anchor@xor gate US@input \pgfmathcounter}{%
                \expandafter\xdef\csname pgf@anchor@xor gate US@input \pgfmathcounter\endcsname{%
                    \noexpand\pgf@lib@sh@logicgate@XOR@inputanchor{\pgfmathcounter}%
                }%
            }{}%
        \repeatpgfmathloop%
        \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
            \pgferror{An xor gate must have at two inputs}%
        \fi%
    }%
    \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
    \saveddimen\invertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    }%
    \saveddimen\halflinewidth{%
        \pgf@x.5\pgflinewidth%
    }%
    \saveddimen\outerinvertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
        \advance\pgf@x.5\pgflinewidth%
    }%
    \savedmacro\dimensions{\pgf@lib@sh@logicgates@dimensions@orUS}%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \inheritanchor[from=or gate US]{mid east}%
    \anchor{mid west}{%
        \csname pgf@anchor@xor gate US@north west\endcsname%
        \pgf@xa\pgf@x%
        \midpoint%
        \pgf@x\pgf@xa}%
    \anchor{base}{\basepoint}%
    \inheritanchor[from=or gate US]{base east}%
    \anchor{base west}{%
        \csname pgf@anchor@xor gate US@north west\endcsname%
        \pgf@xa\pgf@x%
        \basepoint%
        \pgf@x\pgf@xa}%
    \inheritanchor[from=or gate US]{base}%
    \inheritanchor[from=or gate US]{output}%
    \inheritanchor[from=or gate US]{east}%
    \inheritanchor[from=or gate US]{north east}%
    \inheritanchor[from=or gate US]{south east}%
    \inheritanchor[from=or gate US]{north}%
    \inheritanchor[from=or gate US]{south}%
    \anchor{south west}{%
        \dimensions%
        \pgf@xa\halfside%
        \pgf@xa-3.232051\pgf@xa%
        \pgf@xb\halfside%
        \pgf@xb2.0\pgf@xb%
        \advance\pgf@xb-\halflinewidth%
        \advance\pgf@xa.866025\pgf@xb%
        \pgf@ya.5\pgf@xb%
        \centerpoint%
        \advance\pgf@x\pgf@xa%
        \ifpgfgateanchorsuseboundingrectangle%
            \advance\pgf@y-\halfheight%
        \else%
            \advance\pgf@y-\pgf@ya%
        \fi%
    }%
    \anchor{north west}{%
        \dimensions%
        \pgf@xa\halfside%
        \pgf@xa-3.232051\pgf@xa%
        \pgf@xb\halfside%
        \pgf@xb2.0\pgf@xb%
        \advance\pgf@xb-\halflinewidth%
        \advance\pgf@xa.866025\pgf@xb%
        \pgf@ya.5\pgf@xb%
        \centerpoint%
        \advance\pgf@x\pgf@xa%
        \ifpgfgateanchorsuseboundingrectangle%
            \advance\pgf@y\halfheight%
        \else%
            \advance\pgf@y\pgf@ya%
        \fi%
    }%
    \anchor{west}{%
        \dimensions%
        \pgf@ya\halfside%
        \pgf@yb2.0\pgf@ya%
        \pgf@xb\pgf@yb%
        \advance\pgf@yb-\halflinewidth%
        \pgfmathdivide@{0}{\pgfmath@tonumber{\pgf@yb}}%
        \pgfmathasin@{\pgfmathresult}%
        \pgfmathcos@{\pgfmathresult}%
        \pgf@xc-1.166666\pgf@ya%
        \advance\pgf@xc-.866025\pgf@xb%
        \advance\pgf@xc\pgfmathresult\pgf@yb%
        \advance\pgf@xc\halflinewidth%
        \advance\pgf@xc-\outerxsep%
        \centerpoint%
        \advance\pgf@x\pgf@xc%
        \pgf@xa\halfside%
        \advance\pgf@x-.333333\pgf@xa%
        \ifpgfgateanchorsuseboundingrectangle%
            \pgf@xa2.0\pgf@xa%
            \advance\pgf@x-0.133974\pgf@xa%
        \fi%
    }%
    \backgroundpath{%
        \dimensions%
        \pgf@xc\halfwidth%
        \pgf@yc\halfheight%
        \advance\pgf@xc-\outerxsep%
        \advance\pgf@yc-\outerysep%
        {%
            \pgftransformshift{\centerpoint}%
            \pgfpathmoveto{\pgfqpoint{-.16666\pgf@xc}{\pgf@yc}}%
            {%
                \pgf@yc2.0\pgf@yc%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{90}{30}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            {%
                \pgf@yc2.0\pgf@yc%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{-30}{-90}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            \pgfpathlineto{\pgfqpoint{-1.16666\pgf@xc}{-\pgf@yc}}%
            {%
                \pgf@yc2.66666\pgf@yc%
                \pgfpatharc{-22}{0}{+1.166666\pgf@yc and +\pgf@yc}%
            }
            {%
                \pgf@yc2.66666\pgf@yc%
                \pgfpatharc{0}{22}{+1.166666\pgf@yc and +\pgf@yc}%
            }%
            \pgfpathclose%
            \pgfutil@tempdima2.0\pgf@yc%
            \c@pgf@counta\numinputs%
            \advance\c@pgf@counta1\relax%
            \divide\pgfutil@tempdima\c@pgf@counta%
            \pgfmathloop%
            \ifnum\pgfmathcounter>\numinputs%
            \else%
                \advance\pgf@yc-\pgfutil@tempdima%
                \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-\pgfmathcounter\endcsname%
                    {%
                        \pgfpathcircle{%
                            \pgf@ya\halfside%
                            \pgf@yb2.0\pgf@ya%
                            \pgf@xa\pgf@yb%
                            \advance\pgf@yb-\halflinewidth%
                            \pgfmathdivide@{\pgfmath@tonumber{\pgf@yc}}{\pgfmath@tonumber{\pgf@yb}}%
                            \pgfmathasin@{\pgfmathresult}%
                            \pgfmathcos@{\pgfmathresult}%
                            \pgf@x-1.5\pgf@ya%
                            \advance\pgf@x-.866025\pgf@xa%
                            \advance\pgf@x\pgfmathresult\pgf@yb%
                            \advance\pgf@x-\invertedradius%
                            \pgf@y\pgf@yc%
                        }{+\invertedradius}%
                    }%
                \fi%
            \repeatpgfmathloop%
            \pgf@xc\halfside%
            \pgf@yc\halfside%
            \pgfpathmoveto{\pgfqpoint{-1.5\pgf@xc}{-\pgf@yc}}%
            \pgf@yc2.0\pgf@yc%
            \pgfmathloop%
            \ifnum\pgfmathcounter<61\relax%
                {%
                    \pgfextract@process\point{%
                        \pgfpointadd{%
                            \pgf@x\halfside%
                            \pgf@x-3.232051\pgf@x%
                            \pgf@y0pt%
                        }{%
                            \pgfpointpolar{\pgfmathcounter-30}{+\pgf@yc}%
                        }%
                    }%
                    \pgfpathlineto{\point}%
                    \pgfpathmoveto{\point}%
                }
            \repeatpgfmathloop%
        }%
    }%
    \anchorborder{%
        \pgfextract@process\externalpoint{}%
        \pgfextract@process\externalpoint{\pgfpointadd{\centerpoint}{\externalpoint}}%
        \pgf@xa\pgf@x%
        \pgf@ya\pgf@y%
        \centerpoint%
        \pgf@xb\pgf@x%
        \pgf@yb\pgf@y%
        \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}%
        \let\externalangle\pgfmathresult%
        \dimensions%
        \pgf@xc\halfside%
        \pgf@xc-.166666\pgf@xc%
        \ifdim\pgf@xa<\pgf@xc%
            \pgfmathanglebetweenpoints{\centerpoint}%
            {%
                \pgfgateanchorsuseboundingrectangletrue%
                \csname pgf@anchor@xor gate US@north west\endcsname%
            }%
            \ifdim\externalangle pt<\pgfmathresult pt\relax%
                \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
                    {%
                        \pgfgateanchorsuseboundingrectangletrue%
                        \csname pgf@anchor@xor gate US@north\endcsname%
                    }%
                    {%
                        \pgfgateanchorsuseboundingrectangletrue%
                        \csname pgf@anchor@xor gate US@north west\endcsname%
                    }%
            \else%
                \pgfmathsubtract@{360}{\pgfmathresult}%
                \ifdim\externalangle pt>\pgfmathresult pt\relax%
                    \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
                    {%
                        \pgfgateanchorsuseboundingrectangletrue%
                        \csname pgf@anchor@xor gate US@south\endcsname%
                    }%
                    {%
                        \pgfgateanchorsuseboundingrectangletrue%
                        \csname pgf@anchor@xor gate US@south west\endcsname%
                    }%
                \else%
                    \ifdim\pgf@ya>\pgf@yb%
                        \pgf@yc\halfheight%
                        \advance\pgf@yc\halfside%
                        \advance\pgf@yc-\outerxsep%
                        \pgf@process{%
                            \pgfmathpointintersectionoflineandarc{\centerpoint}{\externalpoint}%
                            {%
                                \centerpoint%
                                \pgf@xa\halfside%
                                \advance\pgf@x-1.166666\pgf@xa%
                                \pgf@xa2.0\pgf@xa%
                                \advance\pgf@x-.866025\pgf@xa%
                                \advance\pgf@x-\outerxsep%
                                \advance\pgf@x-.166666\pgf@xa%
                            }%
                            {0}{90}{+\pgf@yc}%
                        }%
                    \else%
                        \pgf@yc\halfheight%
                        \advance\pgf@yc\halfside%
                        \advance\pgf@yc-\outerxsep%
                        \pgf@process{%
                            \pgfmathpointintersectionoflineandarc{\centerpoint}{\externalpoint}%
                            {%
                                \centerpoint%
                                \pgf@xa\halfside%
                                \advance\pgf@x-1.166666\pgf@xa%
                                \pgf@xa2.0\pgf@xa%
                                \advance\pgf@x-.866025\pgf@xa%
                                \advance\pgf@x-\outerxsep%
                                \advance\pgf@x-.166666\pgf@xa%
                            }%
                            {270}{360}{+\pgf@yc}%
                        }%
                    \fi%
                \fi%
            \fi%
        \else%
            \ifdim\pgf@y=0pt\relax%
                \csname pgf@anchor@and gate US@east\endcsname%
            \else%
                \pgf@xc\halfwidth%
                \advance\pgf@xc\halfside%
                \pgf@yc\halfheight%
                \advance\pgf@yc\halfside%
                \pgf@xb\halfside%
                \pgf@xb-.166666\pgf@xb%
                \ifdim\pgf@ya<0pt%
                    \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
                    {%
                        \centerpoint%
                        \advance\pgf@y\halfside%
                        \advance\pgf@x\pgf@xb%
                    }%
                    {270}{330}{+\pgf@yc}%
                \else%
                    \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
                    {%
                        \centerpoint%
                        \advance\pgf@y-\halfside%
                        \advance\pgf@x\pgf@xb%
                    }%
                    {30}{90}{+\pgf@xc and +\pgf@yc}%
                \fi%
            \fi%
        \fi%
    }%
}%




\pgfdeclareshape{xnor gate US}{%
    \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@xnor gate US\endcsname{%
        \pgf@lib@sh@logicgate@parseinputs{2}%
        \pgfmathloop%
        \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
        \else%
            \pgfutil@ifundefined{pgf@anchor@xnor gate US@input \pgfmathcounter}{%
                \expandafter\xdef\csname pgf@anchor@xnor gate US@input \pgfmathcounter\endcsname{%
                    \noexpand\pgf@lib@sh@logicgate@XOR@inputanchor{\pgfmathcounter}%
                }%
            }{}%
        \repeatpgfmathloop%
        \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
            \pgferror{An xnor gate must have two inputs}%
        \fi%
    }%
    \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
    \saveddimen\invertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    }%
    \saveddimen\halflinewidth{%
        \pgf@x.5\pgflinewidth%
    }%
    \saveddimen\outerinvertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
        \advance\pgf@x.5\pgflinewidth%
    }%
    \savedmacro\dimensions{\pgf@lib@sh@logicgates@dimensions@orUS}%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \inheritanchor[from=xor gate US]{mid east}%
    \inheritanchor[from=xor gate US]{mid west}%
    \anchor{base}{\basepoint}%
    \inheritanchor[from=xor gate US]{base east}%
    \inheritanchor[from=xor gate US]{base west}%
    \inheritanchor[from=xor gate US]{base}%
    \inheritanchor[from=nor gate US]{output}%
    \inheritanchor[from=xor gate US]{east}%
    \inheritanchor[from=xor gate US]{north east}%
    \inheritanchor[from=xor gate US]{south east}%
    \inheritanchor[from=xor gate US]{north}%
    \inheritanchor[from=xor gate US]{south}%
    \inheritanchor[from=xor gate US]{south west}%
    \inheritanchor[from=xor gate US]{north west}%
    \inheritanchor[from=xor gate US]{west}%
    \backgroundpath{%
        \dimensions%
        \pgf@xc\halfwidth%
        \pgf@yc\halfheight%
        \advance\pgf@xc-\outerxsep%
        \advance\pgf@yc-\outerysep%
        {%
            \pgftransformshift{\centerpoint}%
            \pgfpathmoveto{\pgfqpoint{-.16666\pgf@xc}{\pgf@yc}}%
            {%
                \pgf@yc2.0\pgf@yc%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{90}{30}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            {%
                \pgf@yc2.0\pgf@yc%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{-30}{-90}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            \pgfpathlineto{\pgfqpoint{-1.16666\pgf@xc}{-\pgf@yc}}%
            {%
                \pgf@yc2.66666\pgf@yc%
                \pgfpatharc{-22}{0}{+1.166666\pgf@yc and +\pgf@yc}%
            }
            {%
                \pgf@yc2.66666\pgf@yc%
                \pgfpatharc{0}{22}{+1.166666\pgf@yc and +\pgf@yc}%
            }%
            \pgfpathclose%
            {%
                \pgfpathcircle{%
                    \pgf@x-.166666\pgf@xc%
                    \pgf@yc2.0\pgf@yc%
                    \advance\pgf@x.866025\pgf@yc%
                    \advance\pgf@x\outerinvertedradius%
                    \pgf@y0pt%
                }{+\invertedradius}%
            }%
            \pgfutil@tempdima2.0\pgf@yc%
            \c@pgf@counta\numinputs%
            \advance\c@pgf@counta1\relax%
            \divide\pgfutil@tempdima\c@pgf@counta%
            \pgfmathloop%
            \ifnum\pgfmathcounter>\numinputs%
            \else%
                \advance\pgf@yc-\pgfutil@tempdima%
                \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-\pgfmathcounter\endcsname%
                    {%
                        \pgfpathcircle{%
                            \pgf@ya\halfside%
                            \pgf@yb2.0\pgf@ya%
                            \pgf@xa\pgf@yb%
                            \advance\pgf@yb-\halflinewidth%
                            \pgfmathdivide@{\pgfmath@tonumber{\pgf@yc}}{\pgfmath@tonumber{\pgf@yb}}%
                            \pgfmathasin@{\pgfmathresult}%
                            \pgfmathcos@{\pgfmathresult}%
                            \pgf@x-1.5\pgf@ya%
                            \advance\pgf@x-.866025\pgf@xa%
                            \advance\pgf@x\pgfmathresult\pgf@yb%
                            \advance\pgf@x-\invertedradius%
                            \pgf@y\pgf@yc%
                        }{+\invertedradius}%
                    }%
                \fi%
            \repeatpgfmathloop%
            \pgf@xc\halfside%
            \pgf@yc\halfside%
            \pgfpathmoveto{\pgfqpoint{-1.5\pgf@xc}{-\pgf@yc}}%
            \pgf@yc2.0\pgf@yc%
            \pgfmathloop%
            \ifnum\pgfmathcounter<61\relax%
                {%
                    \pgfextract@process\point{%
                        \pgfpointadd{%
                            \pgf@x\halfside%
                            \pgf@x-3.232051\pgf@x%
                            \pgf@y0pt%
                        }{%
                            \pgfpointpolar{\pgfmathcounter-30}{+\pgf@yc}%
                        }%
                    }%
                    \pgfpathlineto{\point}%
                    \pgfpathmoveto{\point}%
                }
            \repeatpgfmathloop%
        }%
    }%
    \inheritanchorborder[from=xor gate US]%
}%






\pgfdeclareshape{not gate US}{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@not gate US\endcsname{%
    \pgf@lib@sh@logicgate@parseinputs{1}%
    \ifnum\pgf@lib@sh@logicgate@numinputs=0\relax%
      \pgferror{A not gate must have one input}%
    \fi%
  }%
  \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
  \saveddimen\invertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
  }%
  \saveddimen\halflinewidth{%
    \pgf@x.5\pgflinewidth%
  }%
  \saveddimen\outerinvertedradius{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    \advance\pgf@x.5\pgflinewidth%
  }%
  \savedmacro\dimensions{\pgf@lib@sh@logicgates@dimensions@orUS}%
  \savedanchor\centerpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\midpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+0.5ex}%
  }%
  \savedanchor\basepoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt%
  }%
  \anchor{center}{\centerpoint}%
  \anchor{mid}{\midpoint}%
  \anchor{mid east}{%
    \midpoint%
    \pgfutil@tempdima\pgf@y%
    \csname pgf@anchor@not gate US@east\endcsname%
    \pgf@y\pgfutil@tempdima%
  }%
  \anchor{mid west}{%
    \dimensions%
    \pgf@xc\halfside%
    \pgf@xc-.833333\pgf@xc%
    \advance\pgf@xc-\outerxsep%
    \midpoint%
    \advance\pgf@x\pgf@xc%
  }%
  \anchor{base}{\basepoint}%
  \anchor{base east}{%
    \basepoint%
    \pgfutil@tempdima\pgf@y%
    \csname pgf@anchor@not gate US@east\endcsname%
    \pgf@y\pgfutil@tempdima%
  }%
  \anchor{base west}{%
    \dimensions%
    \pgf@xc\halfside%
    \pgf@xc-.833333\pgf@xc%
    \advance\pgf@xc-\outerxsep%
    \basepoint%
    \advance\pgf@x\pgf@xc%
  }%
  \inheritanchor[from=and gate US]{base}%
  \anchor{output}{%
    \dimensions%
    \pgf@xc\halfside%
    \centerpoint%
    \advance\pgf@x-.166666\pgf@xc%
    \pgf@xc2.0\pgf@xc%
    \advance\pgf@x.866025\pgf@xc%
    \advance\pgf@x\invertedradius%
    \advance\pgf@x\outerinvertedradius%
    \advance\pgf@x\outerxsep%
  }%
  \anchor{east}{%
    \dimensions%
    \tipanchor%
    \pgf@xa\pgf@x%
    \centerpoint%
    \advance\pgf@x\pgf@xa%
  }%
  \anchor{north}{%
    \dimensions%
    \ifpgfgateanchorsuseboundingrectangle%
      \csname pgf@anchor@not gate US@north west\endcsname%
      \pgf@ya\pgf@y%
      \centerpoint%
      \pgf@y\pgf@ya%
    \else%
      \pgfpointintersectionoflines{\centerpoint}{\centerpoint\advance\pgf@y1pt}%
      {\csname pgf@anchor@not gate US@north west\endcsname}%
      {%
        \pgfpointadd{\centerpoint}{%
          \tipanchor%
          \pgf@xa\outerxsep%
          \advance\pgf@x2.350943\pgf@xa%
        }%
      }%
    \fi%
  }%
  \anchor{south}{%
    \dimensions%
    \ifpgfgateanchorsuseboundingrectangle%
      \csname pgf@anchor@not gate US@south west\endcsname%
      \pgf@ya\pgf@y%
      \centerpoint%
      \pgf@y\pgf@ya%
    \else%
      \pgfpointintersectionoflines{\centerpoint}{\centerpoint\advance\pgf@y-1pt}%
      {\csname pgf@anchor@not gate US@south west\endcsname}%
      {%
        \pgfpointadd{\centerpoint}{%
          \tipanchor%
          \pgf@xa\outerxsep%
          \advance\pgf@x2.350943\pgf@xa%
        }%
      }%
    \fi%
  }%
  \anchor{south east}{%
    \dimensions%
    \ifpgfgateanchorsuseboundingrectangle%
      \csname pgf@anchor@not gate US@south west\endcsname%
      \pgf@ya\pgf@y%
      \pgf@process{%
        \dimensions%
        \tipanchor%
        \pgf@xa\pgf@x%
        \centerpoint%
        \advance\pgf@x\pgf@xa%
      }%
      \pgf@y\pgf@ya%
    \else%
      \pgfpointintersectionoflines{\centerpoint}{\centerpoint\advance\pgf@x1pt\advance\pgf@y-1pt}%
      {\csname pgf@anchor@not gate US@south west\endcsname}%
      {%
        \pgfpointadd{\centerpoint}{%
          \tipanchor%
          \pgf@xa\outerxsep%
          \advance\pgf@x2.350943\pgf@xa%
        }%
      }%
    \fi%
  }%
  \anchor{north east}{%
    \dimensions%
    \ifpgfgateanchorsuseboundingrectangle%
      \csname pgf@anchor@not gate US@north west\endcsname%
      \pgf@ya\pgf@y%
      \pgf@process{%
        \dimensions%
        \tipanchor%
        \pgf@xa\pgf@x%
        \centerpoint%
        \advance\pgf@x\pgf@xa%
      }%
      \pgf@y\pgf@ya%
    \else%
      \pgfpointintersectionoflines{\centerpoint}{\centerpoint\advance\pgf@x1pt\advance\pgf@y1pt}%
      {\csname pgf@anchor@not gate US@north west\endcsname}%
      {%
        \pgfpointadd{\centerpoint}{%
          \tipanchor%
          \pgf@xa\outerxsep%
          \advance\pgf@x2.350943\pgf@xa%
        }%
      }%
    \fi%
  }%
  \anchor{south west}{%
    \dimensions%
    \pgf@xa\halfside%
    \centerpoint%
    \advance\pgf@x-.833333\pgf@xa
    \advance\pgf@x-\outerxsep%
    \advance\pgf@y-1.166666\pgf@xa%
    \pgf@ya\outerysep%
    \advance\pgf@y-1.565\pgf@ya%
  }%
  \anchor{north west}{%
    \dimensions%
    \pgf@xa\halfside%
    \centerpoint%
    \advance\pgf@x-.833333\pgf@xa
    \advance\pgf@x-\outerxsep%
    \advance\pgf@y1.166666\pgf@xa%
    \pgf@ya\outerysep%
    \advance\pgf@y1.565\pgf@ya%
  }%
  \anchor{input}{%
    \dimensions%
    \pgf@lib@sh@logicgate@AND@inputanchor{1}%
    \pgf@xc\halfside%
    \advance\pgf@x.333333\pgf@xc%
  }%
  \anchor{west}{%
    \dimensions%
    \pgf@xc\halfside%
    \pgf@xc-.833333\pgf@xc%
    \advance\pgf@xc-\outerxsep%
    \centerpoint%
    \advance\pgf@x\pgf@xc%
  }%
  \backgroundpath{%
    \dimensions%
    \pgf@xc\halfwidth%
    \pgf@yc\halfheight%
    \advance\pgf@xc-\outerxsep%
    \advance\pgf@yc-\outerysep%
    {%
      \pgftransformshift{\centerpoint}%
      \pgfpathmoveto{\tipanchor}%
      \pgfpathlineto{\pgfqpoint{-.833333\pgf@xc}{1.166666\pgf@yc}}%
      \pgfpathlineto{\pgfqpoint{-.833333\pgf@xc}{-1.166666\pgf@yc}}%
      \pgfpathlineto{\tipanchor}%
      {%
        \pgfpathcircle{%
          \pgf@x-.166666\pgf@xc%
          \pgf@yc2.0\pgf@yc%
          \advance\pgf@x.866025\pgf@yc%
          \advance\pgf@x\outerinvertedradius%
          \pgf@y0pt%
        }{+\invertedradius}%
      }%
      \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-1\endcsname%
      {%
        \pgfpathcircle{%
          \pgf@xa\halfside%
          \pgf@x-.833333\pgf@xa%
          \advance\pgf@x-.5\pgflinewidth%
          \advance\pgf@x-\invertedradius%
          \pgf@y0pt%
        }{+\invertedradius}%
      }%
      \fi%
    }%
  }%
  \anchorborder{%
    \pgf@lib@gates@not@buffer@border{not gate US}
  }%
}%

\def\pgf@lib@gates@not@buffer@border#1{
  \pgfextract@process\externalpoint{}%
  \pgfextract@process\externalpoint{\pgfpointadd{\centerpoint}{\externalpoint}}%
  \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}%
  \ifx\pgfmathresult\pgf@lib@zero@text%
    \csname pgf@anchor@#1@output\endcsname%
  \else%
    \ifx\pgfmathresult\pgf@lib@onehundredeighty@text%
      \csname pgf@anchor@#1@input\endcsname%
    \else%
      \let\externalangle\pgfmathresult%
      \dimensions%
      \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@not gate US@north west\endcsname}%
      \ifdim\externalangle pt<\pgfmathresult pt%
        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
        {\csname pgf@anchor@not gate US@north west\endcsname}%
        {%
          \pgfpointadd{\centerpoint}{%
            \tipanchor%
            \pgf@xa\outerxsep%
            \advance\pgf@x2.350943\pgf@xa%
          }%
        }%
      \else%
        \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@not gate US@south west\endcsname}%
        \ifdim\externalangle pt<\pgfmathresult pt%
          \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
          {\csname pgf@anchor@not gate US@north west\endcsname}%
          {\csname pgf@anchor@not gate US@south west\endcsname}%
        \else%
          \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
          {\csname pgf@anchor@not gate US@south west\endcsname}%
          {%
            \pgfpointadd{\centerpoint}{%
              \tipanchor%
              \pgf@xa\outerxsep%
              \advance\pgf@x2.350943\pgf@xa%
            }%
          }%
        \fi%
      \fi%
    \fi%
  \fi%
}%


\def\pgf@lib@zero@text{0.0}%
\def\pgf@lib@onehundredeighty@text{180.0}%




\pgfdeclareshape{buffer gate US}{%
    \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@buffer gate US\endcsname{%
        \pgf@lib@sh@logicgate@parseinputs{1}%
        \ifnum\pgf@lib@sh@logicgate@numinputs=0\relax%
            \pgferror{A buffer gate must have one input}%
        \fi%
    }%
    \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
    \saveddimen\invertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    }%
    \saveddimen\halflinewidth{%
        \pgf@x.5\pgflinewidth%
    }%
    \saveddimen\outerinvertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
        \advance\pgf@x.5\pgflinewidth%
    }%
    \savedmacro\dimensions{\pgf@lib@sh@logicgates@dimensions@orUS}%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{%
        \midpoint%
        \pgfutil@tempdima\pgf@y%
        \csname pgf@anchor@buffer gate US@east\endcsname%
        \pgf@y\pgfutil@tempdima%
    }%
    \anchor{mid west}{%
        \dimensions%
        \pgf@xc\halfside%
        \pgf@xc-.833333\pgf@xc%
        \advance\pgf@xc-\outerxsep%
        \midpoint%
        \advance\pgf@x\pgf@xc%
    }%
    \anchor{base}{\basepoint}%
    \anchor{base east}{%
        \basepoint%
        \pgfutil@tempdima\pgf@y%
        \csname pgf@anchor@buffer gate US@east\endcsname%
        \pgf@y\pgfutil@tempdima%
    }%
    \inheritanchor[from=not gate US]{base west}%
    \inheritanchor[from=and gate US]{base}%
    \anchor{output}{\csname pgf@anchor@buffer gate US@east\endcsname}%
    \anchor{east}{%
        \dimensions%
        \pgfpointadd{\centerpoint}{%
            \tipanchor%
            \pgf@xa\outerxsep%
            \advance\pgf@x2.350943\pgf@xa%
        }%
    }%
    \anchor{north}{%
        \dimensions%
        \ifpgfgateanchorsuseboundingrectangle%
            \csname pgf@anchor@not gate US@north west\endcsname%
            \pgf@ya\pgf@y%
            \centerpoint%
            \pgf@y\pgf@ya%
        \else%
            \pgfpointintersectionoflines{\centerpoint}{\centerpoint\advance\pgf@y1pt}%
                {\csname pgf@anchor@buffer gate US@north west\endcsname}%
                {%
                    \pgfpointadd{\centerpoint}{%
                        \tipanchor%
                        \pgf@xa\outerxsep%
                        \advance\pgf@x2.350943\pgf@xa%
                    }%
                }%
        \fi%
    }%
    \anchor{south}{%
        \dimensions%
        \ifpgfgateanchorsuseboundingrectangle%
            \csname pgf@anchor@not gate US@south west\endcsname%
            \pgf@ya\pgf@y%
            \centerpoint%
            \pgf@y\pgf@ya%
        \else%
            \pgfpointintersectionoflines{\centerpoint}{\centerpoint\advance\pgf@y-1pt}%
                {\csname pgf@anchor@not gate US@south west\endcsname}%
                {%
                    \pgfpointadd{\centerpoint}{%
                        \tipanchor%
                        \pgf@xa\outerxsep%
                        \advance\pgf@x2.350943\pgf@xa%
                    }%
                }%
        \fi%
    }%
    \anchor{south east}{%
        \dimensions%
        \ifpgfgateanchorsuseboundingrectangle%
            \csname pgf@anchor@not gate US@south west\endcsname%
            \pgfutil@tempdima\pgf@y%
            \csname pgf@anchor@buffer gate US@east\endcsname%
            \pgf@y\pgfutil@tempdima%
        \else%
            \pgfpointintersectionoflines{\centerpoint}{\centerpoint\advance\pgf@x1pt\advance\pgf@y-1pt}%
                {\csname pgf@anchor@buffer gate US@south west\endcsname}%
                {%
                    \pgfpointadd{\centerpoint}{%
                        \tipanchor%
                        \pgf@xc\outerxsep%
                        \advance\pgf@x2.350943\pgf@xc%
                    }%
                }%
        \fi%
    }%
    \anchor{north east}{%
        \dimensions%
        \ifpgfgateanchorsuseboundingrectangle%
            \csname pgf@anchor@not gate US@north west\endcsname%
            \pgfutil@tempdima\pgf@y%
            \csname pgf@anchor@buffer gate US@east\endcsname%
            \pgf@y\pgfutil@tempdima%
        \else%
            \pgfpointintersectionoflines{\centerpoint}{\centerpoint\advance\pgf@x1pt\advance\pgf@y1pt}%
                {\csname pgf@anchor@buffer gate US@north west\endcsname}%
                {%
                    \pgfpointadd{\centerpoint}{%
                        \tipanchor%
                        \pgf@xa\outerxsep%
                        \advance\pgf@x2.350943\pgf@xa%
                    }%
                }%
        \fi%
    }%
    \inheritanchor[from=not gate US]{south west}%
    \inheritanchor[from=not gate US]{north west}%
    \inheritanchor[from=not gate US]{input}%
    \inheritanchor[from=not gate US]{west}%
    \backgroundpath{%
        \dimensions%
        \pgf@xc\halfwidth%
        \pgf@yc\halfheight%
        \advance\pgf@xc-\outerxsep%
        \advance\pgf@yc-\outerysep%
        {%
            \pgftransformshift{\centerpoint}%
            \pgfpathmoveto{\tipanchor}%
            \pgfpathlineto{\pgfqpoint{-.833333\pgf@xc}{1.166666\pgf@yc}}%
            \pgfpathlineto{\pgfqpoint{-.833333\pgf@xc}{-1.166666\pgf@yc}}%
            \pgfpathclose%
            \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-1\endcsname%
                {%
                    \pgfpathcircle{%
                        \pgf@xa\halfside%
                        \pgf@x-.833333\pgf@xa%
                        \advance\pgf@x-.5\pgflinewidth%
                        \advance\pgf@x-\invertedradius%
                        \pgf@y0pt%
                    }{+\invertedradius}%
                }%
            \fi%
        }%
    }%
  \anchorborder{%
    \pgf@lib@gates@not@buffer@border{buffer gate US}
  }%
}%





\pgfdeclareshape{and gate CDH}{%
    \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@and gate CDH\endcsname{%
        \pgf@lib@sh@logicgate@parseinputs{1024}%
        \pgfmathloop%
        \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
        \else%
            \pgfutil@ifundefined{pgf@anchor@and gate CDH@input \pgfmathcounter}{%
                \expandafter\xdef\csname pgf@anchor@and gate CDH@input \pgfmathcounter\endcsname{%
                    \noexpand\pgf@lib@sh@logicgate@AND@inputanchor{\pgfmathcounter}%
                }%
            }{}%
        \repeatpgfmathloop%
        \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
            \pgferror{An and gate must have at least two inputs}%
        \fi%
    }%
    \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
    \saveddimen\invertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    }%
    \saveddimen\outerinvertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
        \advance\pgf@x.5\pgflinewidth%
    }%
    \savedmacro\dimensions{\pgf@lib@sh@logicgates@dimensions@orUS}%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{%
        \csname pgf@anchor@and gate CDH@east\endcsname%
        \pgf@xa\pgf@x%
        \midpoint%
        \pgf@x\pgf@xa}%
    \anchor{mid west}{%
        \csname pgf@anchor@and gate CDH@west\endcsname%
        \pgf@xa\pgf@x%
        \midpoint%
        \pgf@x\pgf@xa}%
    \anchor{base}{\basepoint}%
    \anchor{base east}{%
        \csname pgf@anchor@and gate CDH@east\endcsname%
        \pgf@xa\pgf@x%
        \basepoint%
        \pgf@x\pgf@xa}%
    \anchor{base west}{%
        \csname pgf@anchor@and gate CDH@west\endcsname%
        \pgf@xa\pgf@x%
        \basepoint%
        \pgf@x\pgf@xa}%
    \anchor{east}{%
        \dimensions%
        \pgfpointadd{\centerpoint}{\tipanchor}%
    }%
    \anchor{output}{\csname pgf@anchor@and gate CDH@east\endcsname}%
    \anchor{north east}{%
        \dimensions%
        \ifpgfgateanchorsuseboundingrectangle%
            \tipanchor%
            \pgf@xa\pgf@x%
            \centerpoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\halfheight%
        \else%
            \centerpoint%
            \pgf@xa\halfwidth%
            \pgf@ya\halfheight%
            \pgf@xb\halfside%
            \advance\pgf@x-.166666\pgf@xb%
            \advance\pgf@xa\pgf@xb%
            \advance\pgf@x.5\pgf@xa%
            \advance\pgf@y-\pgf@xb%
            \advance\pgf@ya\pgf@xb%
            \advance\pgf@y.866025\pgf@ya%
        \fi%
    }%
    \anchor{south east}{%
        \dimensions%
        \ifpgfgateanchorsuseboundingrectangle%
            \tipanchor%
            \pgf@xa\pgf@x%
            \centerpoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y-\halfheight%
        \else
            \centerpoint%
            \pgf@xa\halfwidth%
            \pgf@ya\halfheight%
            \pgf@xb\halfside%
            \advance\pgf@x-.166666\pgf@xb%
            \advance\pgf@xa\pgf@xb%
            \advance\pgf@x.5\pgf@xa%
            \advance\pgf@y\pgf@xb%
            \advance\pgf@ya\pgf@xb%
            \advance\pgf@y-.866025\pgf@ya%
        \fi%
    }%
    \anchor{north}{%
        \dimensions%
        \centerpoint%
        \ifpgfgateanchorsuseboundingrectangle%
            \advance\pgf@y\halfheight%
        \else%
            \pgf@ya\halfheight%
            \advance\pgf@y.993043\pgf@ya%
        \fi%
    }%
    \anchor{south}{%
        \dimensions%
        \centerpoint%
        \ifpgfgateanchorsuseboundingrectangle%
            \advance\pgf@y-\halfheight%
        \else%
            \pgf@ya\halfheight%
            \advance\pgf@y-.993043\pgf@ya%
        \fi%
    }%
    \anchor{south west}{%
        \dimensions%
        \centerpoint%
        \pgf@xa\halfside%
        \advance\pgf@x-1.16666\pgf@xa%
        \advance\pgf@x-\outerxsep%
        \advance\pgf@y-\halfheight%
    }%
    \anchor{north west}{%
        \dimensions%
        \centerpoint%
        \pgf@xa\halfside%
        \advance\pgf@x-1.16666\pgf@xa%
        \advance\pgf@x-\outerxsep%
        \advance\pgf@y\halfheight%
    }%
    \anchor{west}{%
        \dimensions%
        \centerpoint%
        \pgf@xa\halfside%
        \advance\pgf@x-1.16666\pgf@xa%
        \advance\pgf@x-\outerxsep%
    }%
    \backgroundpath{%
        \dimensions%
        \pgf@xc\halfwidth%
        \pgf@yc\halfheight%
        \advance\pgf@xc-\outerxsep%
        \advance\pgf@yc-\outerysep%
        {%
            \pgftransformshift{\centerpoint}%
            \pgfpathmoveto{\pgfqpoint{-.16666\pgf@xc}{\pgf@yc}}%
            {%
                \pgf@yc2.0\pgf@yc%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{90}{30}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            {%
                \pgf@yc2.0\pgf@yc%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{-30}{-90}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            \pgfpathlineto{\pgfqpoint{-1.16666\pgf@xc}{-\pgf@yc}}%
            \pgfpathlineto{\pgfqpoint{-1.16666\pgf@xc}{\pgf@yc}}%
            \pgfpathclose%
            \pgfutil@tempdima2.0\pgf@yc%
            \c@pgf@counta\numinputs%
            \advance\c@pgf@counta1\relax%
            \divide\pgfutil@tempdima\c@pgf@counta%
            \pgfmathloop%
            \ifnum\pgfmathcounter>\numinputs%
            \else%
                \advance\pgf@yc-\pgfutil@tempdima%
                \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-\pgfmathcounter\endcsname%
                    {%
                        \pgfpathcircle{%
                            \pgf@xa\halfside%
                            \pgf@x-1.16666\pgf@xa%
                            \advance\pgf@x-.5\pgflinewidth%
                            \advance\pgf@x-\invertedradius%
                            \pgf@y\pgf@yc%
                        }{+\invertedradius}%
                    }%
                \fi%
            \repeatpgfmathloop%
        }%
    }%
    \anchorborder{%
        \pgfextract@process\externalpoint{}%
        \pgf@xa\pgf@x%
        \pgf@ya\pgf@y%
        \dimensions%
        \pgf@xb\halfside%
        \pgf@xb-.166666\pgf@xb%
        \ifdim\pgf@xa<\pgf@xb%
            \pgfpointadd{\centerpoint}{%
                \pgfpointborderrectangle{\externalpoint}{%
                    \pgf@xc\halfside%
                    \pgf@xc.166666\pgf@xc%
                    \advance\pgf@xc\halfwidth%
                    \pgfqpoint{\pgf@xc}{\halfheight}%
                }%
            }%
        \else%
            \ifdim\pgf@y=0pt\relax%
                \csname pgf@anchor@and gate CDH@east\endcsname%
            \else%
                \pgfextract@process\externalpoint{\pgfpointadd{\centerpoint}{\externalpoint}}%
                \pgf@xc\halfwidth%
                \advance\pgf@xc\halfside%
                \pgf@yc\halfheight%
                \advance\pgf@yc\halfside%
                \ifdim\pgf@ya<0pt%
                    \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
                    {%
                        \centerpoint%
                        \advance\pgf@y\halfside%
                        \advance\pgf@x\pgf@xb%
                    }%
                    {270}{330}{+\pgf@yc}%
                \else%
                    \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
                    {%
                        \centerpoint%
                        \advance\pgf@y-\halfside%
                        \advance\pgf@x\pgf@xb%
                    }%
                    {30}{90}{+\pgf@xc and +\pgf@yc}%
                \fi%
            \fi%
        \fi%
    }%
}%


\pgfdeclareshape{nand gate CDH}{%
    \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@nand gate CDH\endcsname{%
        \pgf@lib@sh@logicgate@parseinputs{1024}%
        \pgfmathloop%
        \ifnum\pgfmathcounter>\pgf@lib@sh@logicgate@numinputs%
        \else%
            \pgfutil@ifundefined{pgf@anchor@nand gate CDH@input \pgfmathcounter}{%
                \expandafter\xdef\csname pgf@anchor@nand gate CDH@input \pgfmathcounter\endcsname{%
                    \noexpand\pgf@lib@sh@logicgate@AND@inputanchor{\pgfmathcounter}%
                }%
            }{}%
        \repeatpgfmathloop%
        \ifnum\pgf@lib@sh@logicgate@numinputs<2\relax%
            \pgferror{A nand gate must have at least two inputs}%
        \fi%
    }%
    \savedmacro\numinputs{\let\numinputs\pgf@lib@sh@logicgate@numinputs}%
    \saveddimen\invertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
    }%
    \saveddimen\outerinvertedradius{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/logic gate inverted radius}}%
        \advance\pgf@x.5\pgflinewidth%
    }%
    \savedmacro\dimensions{\pgf@lib@sh@logicgates@dimensions@orUS}%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \inheritanchor[from=and gate CDH]{mid east}%
    \inheritanchor[from=and gate CDH]{mid west}%
    \anchor{base}{\basepoint}%
    \inheritanchor[from=and gate CDH]{base east}%
    \inheritanchor[from=and gate CDH]{base west}%
    \anchor{output}{%
        \dimensions
        \pgfpointadd{\centerpoint}{%
            \pgf@xa\halfside%
            \pgf@x-.166666\pgf@xa%
            \pgf@xb2.0\pgf@xa%
            \advance\pgf@x.866025\pgf@xb%
            \advance\pgf@x\invertedradius%
            \advance\pgf@x\outerinvertedradius%
            \advance\pgf@x\outerxsep%
            \pgf@y0pt%
        }%
    }%
    \inheritanchor[from=and gate CDH]{east}%
    \inheritanchor[from=and gate CDH]{north east}%
    \inheritanchor[from=and gate CDH]{south east}%
    \inheritanchor[from=and gate CDH]{north}%
    \inheritanchor[from=and gate CDH]{south}%
    \inheritanchor[from=and gate CDH]{south west}%
    \inheritanchor[from=and gate CDH]{north west}%
    \inheritanchor[from=and gate CDH]{west}%
    \backgroundpath{%
        \dimensions%
        \pgf@xc\halfwidth%
        \pgf@yc\halfheight%
        \advance\pgf@xc-\outerxsep%
        \advance\pgf@yc-\outerysep%
        {%
            \pgftransformshift{\centerpoint}%
            \pgfpathmoveto{\pgfqpoint{-.16666\pgf@xc}{\pgf@yc}}%
            {%
                \pgf@yc2.0\pgf@yc%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{90}{30}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            {%
                \pgf@yc2.0\pgf@yc%
                \edef\pgf@marshal{%
                    \noexpand\pgfpatharc{-30}{-90}{\the\pgf@yc}%
                }%
                \pgf@marshal%
            }
            \pgfpathlineto{\pgfqpoint{-1.16666\pgf@xc}{-\pgf@yc}}%
            \pgfpathlineto{\pgfqpoint{-1.16666\pgf@xc}{\pgf@yc}}%
            \pgfpathclose%
            {%
                \pgfpathcircle{%
                    \pgf@x-.166666\pgf@xc%
                    \pgf@yc2.0\pgf@yc%
                    \advance\pgf@x.866025\pgf@yc%
                    \advance\pgf@x\outerinvertedradius%
                    \pgf@y0pt%
                }{+\invertedradius}%
            }%
            \pgfutil@tempdima2.0\pgf@yc%
            \c@pgf@counta\numinputs%
            \advance\c@pgf@counta1\relax%
            \divide\pgfutil@tempdima\c@pgf@counta%
            \pgfmathloop%
            \ifnum\pgfmathcounter>\numinputs%
            \else%
                \advance\pgf@yc-\pgfutil@tempdima%
                \expandafter\ifx\expandafter\pgf@lib@sh@itext\csname input-\pgfmathcounter\endcsname%
                    {%
                        \pgfpathcircle{%
                            \pgf@xa\halfside%
                            \pgf@x-1.16666\pgf@xa%
                            \advance\pgf@x-.5\pgflinewidth%
                            \advance\pgf@x-\invertedradius%
                            \pgf@y\pgf@yc%
                        }{+\invertedradius}%
                    }%
                \fi%
            \repeatpgfmathloop%
        }%
    }%
    \inheritanchorborder[from=and gate CDH]%
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.logic.US.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.logic.code.tex ====


\pgfkeys{/pgf/.cd,%
  logic gate input sep/.initial=0.125cm,
  logic gate inputs/.initial={normal,normal},%
  logic gate inverted radius/.initial=2pt,
}%


\expandafter\ifx\csname pgf@lib@sh@logicgate@parseinputs\endcsname\relax%
\def\pgf@lib@sh@logicgate@parseinputs#1{%
  \edef\pgf@lib@sh@temp{\pgfkeysvalueof{/pgf/logic gate inputs}}%
  \c@pgf@counta#1\relax%
  \c@pgf@countb0\relax%
  \expandafter\pgfutil@in@\expandafter,\expandafter{\pgf@lib@sh@temp}%
  \ifpgfutil@in@%
    \let\pgf@lib@sh@next\pgf@lib@sh@logicgate@parseinputs@long%
  \else%
    \let\pgf@lib@sh@next\pgf@lib@sh@logicgate@parseinputs@short%
  \fi%
  \pgf@lib@sh@next%
}%
\def\pgf@lib@sh@itext{i}%
\def\pgf@lib@sh@invertedtext{inverted}%
\def\pgf@lib@sh@atchar{@}%
\def\pgf@lib@sh@gobbletilat#1@{}%
\def\pgf@lib@sh@gobbletilatcomma#1@,{}%
\def\pgf@lib@sh@logicgate@parseinputs@short{%
  \expandafter\pgf@lib@sh@logicgate@parseinputs@@short\pgf@lib@sh@temp @%
}%
\def\pgf@lib@sh@logicgate@parseinputs@@short#1{%
  \def\pgf@lib@sh@tmp{#1}%
  \ifx\pgf@lib@sh@tmp\pgf@lib@sh@atchar%
    \edef\pgf@lib@sh@logicgate@numinputs{\the\c@pgf@countb}%
    \let\pgf@lib@sh@next=\relax%
  \else%
    \ifnum\c@pgf@countb=\c@pgf@counta%
      \edef\pgf@lib@sh@logicgate@numinputs{\the\c@pgf@countb}%
      \let\pgf@lib@sh@next=\pgf@lib@sh@gobbletilat%
    \else%
      \advance\c@pgf@countb by1\relax%
      \expandafter\ifx\pgf@lib@sh@itext#1%
        \expandafter\pgf@sh@resavedmacro\expandafter{\csname input-\the\c@pgf@countb\endcsname}{%
          \expandafter\def\csname input-\the\c@pgf@countb\endcsname{i}}%
      \else%
        \expandafter\pgf@sh@resavedmacro\expandafter{\csname input-\the\c@pgf@countb\endcsname}{%
          \expandafter\def\csname input-\the\c@pgf@countb\endcsname{n}}%
      \fi%
      \let\pgf@lib@sh@next=\pgf@lib@sh@logicgate@parseinputs@@short%
    \fi%
  \fi%
  \pgf@lib@sh@next%
}%


\def\pgf@lib@sh@logicgate@parseinputs@long{%
  \expandafter\pgf@lib@sh@logicgate@parseinputs@@long\pgf@lib@sh@temp,@,%
}%
\def\pgf@lib@sh@logicgate@parseinputs@@long#1,{%
  \def\pgf@lib@sh@tmp{#1}%
  \ifx\pgf@lib@sh@tmp\pgf@lib@sh@atchar%
    \edef\pgf@lib@sh@logicgate@numinputs{\the\c@pgf@countb}%
    \let\pgf@lib@sh@next=\relax%
  \else%
    \ifnum\c@pgf@countb=\c@pgf@counta%
      \edef\pgf@lib@sh@logicgate@numinputs{\the\c@pgf@countb}%
      \let\pgf@lib@sh@next=\pgf@lib@sh@gobbletilatcomma%
    \else%
      \advance\c@pgf@countb by1\relax%
      \def\pgf@lib@sh@temp{#1}%
      \ifx\pgf@lib@sh@invertedtext\pgf@lib@sh@temp%
        \expandafter\pgf@sh@resavedmacro\expandafter{\csname input-\the\c@pgf@countb\endcsname}{%
          \expandafter\def\csname input-\the\c@pgf@countb\endcsname{i}}%
      \else%
        \expandafter\pgf@sh@resavedmacro\expandafter{\csname input-\the\c@pgf@countb\endcsname}{%
          \expandafter\def\csname input-\the\c@pgf@countb\endcsname{n}}%
      \fi%
      \let\pgf@lib@sh@next=\pgf@lib@sh@logicgate@parseinputs@@@long%
    \fi%
  \fi%
  \pgf@lib@sh@next%
}%
\def\pgf@lib@sh@logicgate@parseinputs@@@long{%
  \pgfutil@ifnextchar x{\pgf@lib@sh@logicgate@parseinputs@@long}%
    {\pgf@lib@sh@logicgate@parseinputs@@long}%
}%
\fi%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/circuits/pgflibraryshapes.gates.logic.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex ====

\ProvidesFileRCS{pgflibraryshapes.arrows.code.tex}



\pgfkeys{/pgf/.cd,
    single arrow tip angle/.initial=90,
    single arrow head extend/.initial=.25cm,
    single arrow head indent/.initial=0cm,
}%

\pgfdeclareshape{single arrow}{%
    \savedmacro\getsinglearrowpoints{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
        \edef\xoutersep{\the\pgf@x}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
        \edef\youtersep{\the\pgf@y}%
        \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@xa.5\wd\pgfnodeparttextbox%
        \advance\pgf@xa.5\pgflinewidth%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@ya.5\ht\pgfnodeparttextbox%
        \advance\pgf@ya.5\dp\pgfnodeparttextbox%
        \advance\pgf@ya.5\pgflinewidth%
        \ifpgfshapeborderusesincircle%
            \ifdim\pgf@xa<\pgf@ya%
                \pgf@xa\pgf@ya%
            \fi%
            \pgf@xa1.41421\pgf@xa%
            \pgf@ya\pgf@xa%
            \pgfmathsetmacro\rotate{\pgfkeysvalueof{/pgf/shape border rotate}}%
            \ifdim\xoutersep>\youtersep\relax%
                \let\youtersep\xoutersep%
            \else%
                \let\xoutersep\youtersep%
            \fi%
        \else%
            \pgfmathsetmacro\rotate{\pgfkeysvalueof{/pgf/shape border rotate}}%
            \pgfmathmod@{\rotate}{360}%
            \afterassignment\pgfmath@gobbletilpgfmath@%
            \expandafter\c@pgf@counta\pgfmathresult\relax\pgfmath@%
            \advance\c@pgf@counta45\relax%
            \divide\c@pgf@counta90\relax%
            \multiply\c@pgf@counta90\relax%
            \ifnum\c@pgf@counta<0\relax%
                \advance\c@pgf@counta360\relax%
            \fi%
            \edef\rotate{\the\c@pgf@counta}%
            \ifnum\c@pgf@counta=90\relax%
                \pgf@x\pgf@xa%
                \pgf@xa\pgf@ya%
                \pgf@ya\pgf@x%
                \let\pgfmathresult\xoutersep%
                \let\xoutersep\youtersep%
                \let\youtersep\pgfmathresult%
            \else%
                \ifnum\c@pgf@counta=270\relax%
                    \pgf@x\pgf@xa%
                    \pgf@xa\pgf@ya%
                    \pgf@ya\pgf@x%
                    \let\pgfmathresult\xoutersep%
                    \let\xoutersep\youtersep%
                    \let\youtersep\pgfmathresult%
                \fi%
            \fi%
        \fi%
        \addtosavedmacro\rotate%
        \pgfmathdivide{\pgfkeysvalueof{/pgf/single arrow tip angle}}{2}%
        \let\halftipangle\pgfmathresult%
        \pgfmathcosec@{\halftipangle}%
        \let\cosechalftipangle\pgfmathresult%
        \pgfmathcos@{\halftipangle}%
        \pgfutil@tempdima\pgfmathresult pt\relax%
        \pgfutil@tempdima\cosechalftipangle\pgfutil@tempdima%
        \edef\cothalftipangle{\pgfmath@tonumber{\pgfutil@tempdima}}%
        \pgfmathreciprocal@{\pgfmathresult}%
        \let\sechalftipangle\pgfmathresult%
        \pgfmathsin@{\halftipangle}%
        \pgfutil@tempdima\pgfmathresult pt\relax%
        \pgfutil@tempdima\sechalftipangle\pgfutil@tempdima%
        \edef\tanhalftipangle{\pgfmath@tonumber{\pgfutil@tempdima}}%
        \pgf@xb\pgf@ya%
        \pgf@xb\cothalftipangle\pgf@xb%
        \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/single arrow head extend}}%
        \pgf@yc\pgf@xc%
        \advance\pgf@xc\pgf@ya%
        \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum width}}%
        \ifdim\pgf@xc<.5\pgfutil@tempdimb%
            \pgfutil@tempdimb.5\pgfutil@tempdimb%
            \pgfmathdivide@{\pgfmath@tonumber{\pgfutil@tempdimb}}{\pgfmath@tonumber{\pgf@xc}}%
            \pgf@ya\pgfmathresult\pgf@ya%
            \pgf@xc\pgfmathresult\pgf@xc%
            \pgf@yc\pgfmathresult\pgf@yc%
            \pgf@xb\pgfmathresult\pgf@xb%
        \fi%
        \advance\pgf@xc-\pgf@ya%
        \pgf@xc\cothalftipangle\pgf@xc%
        \pgf@xa2.0\pgf@xa%
        \advance\pgf@xa\pgf@xb%
        \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@xa<\pgfutil@tempdimb%
            \pgf@xa\pgfutil@tempdimb%
        \fi%
        \advance\pgf@xa-\pgf@xb%
        \pgf@xa.5\pgf@xa%
        \pgfmathsetlength\pgfutil@tempdima{\pgfkeysvalueof{/pgf/single arrow head indent}}%
        \pgfsavepgf@process\centerpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y.5\ht\pgfnodeparttextbox%
            \advance\pgf@y-.5\dp\pgfnodeparttextbox%
        }%
        \pgfsavepgf@process\basepoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y0pt%
        }%
        \pgfsavepgf@process\midpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgfmathsetlength\pgf@y{+.5ex}%
        }%
        \pgfsavepgf@process\arrowtip{%
            \pgf@x\pgf@xa%
            \advance\pgf@x\pgf@xb%
            \pgf@y0pt\relax%
        }%
        \pgfsavepgf@process\beforearrowtip{%
            \pgf@x\pgf@xa%
            \advance\pgf@x-\pgf@xc%
            \pgf@y\pgf@ya%
            \advance\pgf@y\pgf@yc%
        }%
        \pgfsavepgf@process\beforearrowhead{%
            \pgf@x\pgf@xa%
            \advance\pgf@x-\pgf@xc%
            \advance\pgf@x\pgfutil@tempdima%
            \pgf@y\pgf@ya%
        }%
        \pgfsavepgf@process\afterarrowtail{%
            \pgf@x-\pgf@xa%
            \pgf@y\pgf@ya%
        }%
        \pgfsavepgf@process\arrowtipanchor{%
            \pgfpointadd{\centerpoint}{\arrowtip}%
            \pgf@xa\xoutersep\relax%
            \advance\pgf@x\cosechalftipangle\pgf@xa%
        }%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \edef\externalradius{\the\pgf@x}%
        \addtosavedmacro\externalradius%
        \pgfmathanglebetweenlines{\beforearrowtip}{\beforearrowhead}{\beforearrowtip}{\arrowtip}%
        \pgf@xa\xoutersep\relax%
        \pgfutil@tempdima\pgfmathresult pt\relax%
        \pgfutil@tempdima.5\pgfutil@tempdima%
        \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}%
        \pgf@xa\pgfmathresult\pgf@xa%
        \pgfutil@tempdima-\pgfutil@tempdima%
        \advance\pgfutil@tempdima180pt\relax%
        \advance\pgfutil@tempdima-\halftipangle pt\relax%
        \pgfsavepgf@process\beforearrowtipanchor{%
            \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgf@xa}%
            \pgf@xb\pgf@x%
            \pgf@yb\pgf@y%
            \pgf@process{\pgfpointadd{\centerpoint}{\beforearrowtip}}%
            \advance\pgf@x\pgf@xb%
            \advance\pgf@y\pgf@yb%
        }%
        \pgfmathanglebetweenpoints{\beforearrowhead}{\beforearrowtip}%
        \pgfutil@tempdima-\pgfmathresult pt\relax%
        \advance\pgfutil@tempdima180pt\relax%
        \pgfutil@tempdima.5\pgfutil@tempdima%
        \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}%
        \pgf@xa\xoutersep\relax%
        \pgf@xa\pgfmathresult\pgf@xa%
        \pgfutil@tempdima-\pgfutil@tempdima%
        \advance\pgfutil@tempdima180pt\relax%
        \pgfsavepgf@process\beforearrowheadanchor{%
            \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgf@xa}%
            \pgf@xb\pgf@x%
            \pgf@yb\pgf@y%
            \pgf@process{\pgfpointadd{\centerpoint}{\beforearrowhead}}%
            \advance\pgf@x\pgf@xb%
            \advance\pgf@y\pgf@yb%
        }%
        \pgfsavepgf@process\afterarrowtailanchor{%
            \pgfpointadd{\centerpoint}{\afterarrowtail}%
            \advance\pgf@x-\xoutersep\relax%
            \advance\pgf@y\youtersep\relax%
        }%
        \pgfmathanglebetweenpoints{\centerpoint}{\beforearrowtipanchor}%
        \let\center@angle@beforearrowtip\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\beforearrowheadanchor}%
        \let\center@angle@beforearrowhead\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\afterarrowtailanchor}%
        \let\center@angle@afterarrowtail\pgfmathresult%
        \addtosavedmacro\center@angle@beforearrowtip%
        \addtosavedmacro\center@angle@beforearrowhead%
        \addtosavedmacro\center@angle@afterarrowtail%
        \pgfmathanglebetweenpoints{\midpoint}{\beforearrowtipanchor}%
        \let\mid@angle@beforearrowtip\pgfmathresult%
        \pgfmathanglebetweenpoints{\midpoint}{\beforearrowheadanchor}%
        \let\mid@angle@beforearrowhead\pgfmathresult%
        \pgfmathanglebetweenpoints{\midpoint}{\afterarrowtailanchor}%
        \let\mid@angle@afterarrowtail\pgfmathresult%
        \addtosavedmacro\mid@angle@beforearrowtip%
        \addtosavedmacro\mid@angle@beforearrowhead%
        \addtosavedmacro\mid@angle@afterarrowtail%
        \pgfmathanglebetweenpoints{\basepoint}{\beforearrowtipanchor}%
        \let\base@angle@beforearrowtip\pgfmathresult%
        \pgfmathanglebetweenpoints{\basepoint}{\beforearrowheadanchor}%
        \let\base@angle@beforearrowhead\pgfmathresult%
        \pgfmathanglebetweenpoints{\basepoint}{\afterarrowtailanchor}%
        \let\base@angle@afterarrowtail\pgfmathresult%
        \addtosavedmacro\base@angle@beforearrowtip%
        \addtosavedmacro\base@angle@beforearrowhead%
        \addtosavedmacro\base@angle@afterarrowtail%
        \addtosavedmacro\arrowtipanchor%
        \addtosavedmacro\beforearrowtipanchor%
        \addtosavedmacro\beforearrowheadanchor%
        \addtosavedmacro\afterarrowtailanchor%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{%
        \getsinglearrowpoints%
        \let\pgf@singlearrow@referencepoint\midpoint%
        \csname pgf@anchor@single arrow@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{mid west}{%
        \getsinglearrowpoints%
        \let\pgf@singlearrow@referencepoint\midpoint%
        \csname pgf@anchor@single arrow@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{base}{\basepoint}%
    \anchor{base east}{%
        \getsinglearrowpoints%
        \let\pgf@singlearrow@referencepoint\basepoint%
        \csname pgf@anchor@single arrow@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{base west}{%
        \getsinglearrowpoints%
        \let\pgf@singlearrow@referencepoint\basepoint%
        \csname pgf@anchor@single arrow@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{north}{%
        \getsinglearrowpoints%
        \csname pgf@anchor@single arrow@border\endcsname{\pgfqpoint{0pt}{\externalradius}}%
    }%
    \anchor{south}{%
        \getsinglearrowpoints%
        \csname pgf@anchor@single arrow@border\endcsname{\pgfqpoint{0pt}{-\externalradius}}%
    }%
    \anchor{east}{%
        \getsinglearrowpoints%
        \csname pgf@anchor@single arrow@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{west}{%
        \getsinglearrowpoints%
        \csname pgf@anchor@single arrow@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{north east}{%
        \getsinglearrowpoints%
        \csname pgf@anchor@single arrow@border\endcsname{\pgfqpoint{\externalradius}{\externalradius}}%
    }%
    \anchor{south east}{%
        \getsinglearrowpoints%
        \csname pgf@anchor@single arrow@border\endcsname{\pgfqpoint{\externalradius}{-\externalradius}}%
    }%
    \anchor{south west}{%
        \getsinglearrowpoints%
        \csname pgf@anchor@single arrow@border\endcsname{\pgfqpoint{-\externalradius}{-\externalradius}}%
    }%
    \anchor{north west}{%
        \getsinglearrowpoints%
        \csname pgf@anchor@single arrow@border\endcsname{\pgfqpoint{-\externalradius}{\externalradius}}%
    }%
    \anchor{before head}{%
        \getsinglearrowpoints%
        \pgfmathrotatepointaround{\beforearrowheadanchor}{\centerpoint}{\rotate}%
    }%
    \anchor{before tip}{%
        \getsinglearrowpoints%
        \pgfmathrotatepointaround{\beforearrowtipanchor}{\centerpoint}{\rotate}%
    }%
    \anchor{tip}{%
        \getsinglearrowpoints%
        \pgfmathrotatepointaround{\arrowtipanchor}{\centerpoint}{\rotate}%
    }%
    \anchor{after tip}{%
        \getsinglearrowpoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \pgfpointdiff{\centerpoint}{\beforearrowtipanchor}%
                \pgf@y-\pgf@y%
            }{\centerpoint}}%
        {\centerpoint}{\rotate}%
    }%
    \anchor{after head}{%
        \getsinglearrowpoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \pgfpointdiff{\centerpoint}{\beforearrowheadanchor}%
                \pgf@y-\pgf@y%
            }{\centerpoint}}%
        {\centerpoint}{\rotate}%
    }%
    \anchor{before tail}{%
        \getsinglearrowpoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \pgfpointdiff{\centerpoint}{\afterarrowtailanchor}%
                \pgf@y-\pgf@y%
            }{\centerpoint}}%
        {\centerpoint}{\rotate}%
    }%
    \anchor{after tail}{%
        \getsinglearrowpoints%
        \pgfmathrotatepointaround{\afterarrowtailanchor}{\centerpoint}{\rotate}%
    }%
    \anchor{tail}{%
        \getsinglearrowpoints%
        \pgfpointlineattime{0.5}{%
            \pgfmathrotatepointaround{\afterarrowtailanchor}{\centerpoint}{\rotate}%
        }%
        {%
            \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \pgfpointdiff{\centerpoint}{\afterarrowtailanchor}%
                \pgf@y-\pgf@y%
            }{\centerpoint}}%
            {\centerpoint}{\rotate}%
        }%
    }%
    \backgroundpath{%
        {%
            \pgftransformshift{\centerpoint}%
            \pgftransformrotate{\rotate}%
            \pgfpathmoveto{\arrowtip}%
            \pgfpathlineto{\beforearrowtip}%
            \pgfpathlineto{\beforearrowhead}%
            \pgfpathlineto{\afterarrowtail}%
            \pgfpathlineto{\afterarrowtail\pgf@y-\pgf@y}%
            \pgfpathlineto{\beforearrowhead\pgf@y-\pgf@y}%
            \pgfpathlineto{\beforearrowtip\pgf@y-\pgf@y}%
        }%
        \pgfpathclose%
    }%
    \anchorborder{%
        \pgfsavepgf@process\externalpoint{}%
        \getsinglearrowpoints%
        \pgfutil@ifundefined{pgf@singlearrow@referencepoint}{\let\referencepoint\centerpoint}%
            {\let\referencepoint\pgf@singlearrow@referencepoint}%
        \pgfsavepgf@process\externalpoint{%
            \externalpoint%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \referencepoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya}%
        \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}%
        \pgfmathsubtract@{\pgfmathresult}{\rotate}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \let\externalangle\pgfmathresult%
        \pgf@x\externalangle pt\relax%
        \ifx\referencepoint\midpoint%
            \pgf@xa\mid@angle@beforearrowtip pt\relax%
            \pgf@xb\mid@angle@beforearrowhead pt\relax%
            \pgf@xc\mid@angle@afterarrowtail pt\relax%
        \else%
            \ifx\referencepoint\basepoint%
                \pgf@xa\base@angle@beforearrowtip pt\relax%
                \pgf@xb\base@angle@beforearrowhead pt\relax%
                \pgf@xc\base@angle@afterarrowtail pt\relax%
            \else%
                \pgf@xa\center@angle@beforearrowtip pt\relax%
                \pgf@xb\center@angle@beforearrowhead pt\relax%
                \pgf@xc\center@angle@afterarrowtail pt\relax%
            \fi%
        \fi%
        \ifdim\pgf@x<\pgf@xa%
            \let\firstpoint\arrowtipanchor%
            \let\secondpoint\beforearrowtipanchor%
        \else%
            \ifdim\pgf@x<\pgf@xb%
                \ifdim\pgf@xb<\pgf@xa%
                    \let\firstpoint\arrowtipanchor%
                    \let\secondpoint\beforearrowtipanchor%
                \else%
                    \let\firstpoint\beforearrowheadanchor%
                    \let\secondpoint\beforearrowtipanchor%
                \fi%
            \else%
                \ifdim\pgf@x<\pgf@xc%
                    \let\firstpoint\beforearrowheadanchor%
                    \let\secondpoint\afterarrowtailanchor%
                \else%
                    \pgf@xc-\pgf@xc%
                    \advance\pgf@xc360pt\relax%
                    \ifdim\pgf@x<\pgf@xc%
                        \let\firstpoint\afterarrowtailanchor%
                        \pgfsavepgf@process\secondpoint{%
                            \pgfpointadd{%
                                \pgfpointdiff{\centerpoint}{\afterarrowtailanchor}%
                                \pgf@y-\pgf@y%
                            }{\centerpoint}%
                        }%
                    \else%
                        \pgf@xa-\pgf@xa%
                        \advance\pgf@xa360pt\relax%
                        \pgf@xb-\pgf@xb%
                        \advance\pgf@xb360pt\relax%
                        \ifdim\pgf@x<\pgf@xa%
                            \ifdim\pgf@x<\pgf@xb%
                                \pgfsavepgf@process\firstpoint{%
                                    \pgfpointadd{%
                                            \pgfpointdiff{\centerpoint}{\afterarrowtailanchor}%
                                            \pgf@y-\pgf@y%
                                    }{\centerpoint}%
                                }%
                                \pgfsavepgf@process\secondpoint{%
                                    \pgfpointadd{%
                                        \pgfpointdiff{\centerpoint}{\beforearrowheadanchor}%
                                        \pgf@y-\pgf@y%
                                    }{\centerpoint}%
                                }%
                            \else%
                                \ifdim\pgf@xb<\pgf@xa%
                                    \pgfsavepgf@process\firstpoint{%
                                        \pgfpointadd{%
                                                \pgfpointdiff{\centerpoint}{\beforearrowheadanchor}%
                                                \pgf@y-\pgf@y%
                                        }{\centerpoint}%
                                    }%
                                \else%
                                    \pgfsavepgf@process\firstpoint{%
                                        \pgfpointadd{%
                                                \pgfpointdiff{\centerpoint}{\arrowtipanchor}%
                                                \pgf@y-\pgf@y%
                                        }{\centerpoint}%
                                    }%
                                \fi%
                                \pgfsavepgf@process\secondpoint{%
                                        \pgfpointadd{%
                                            \pgfpointdiff{\centerpoint}{\beforearrowtipanchor}%
                                            \pgf@y-\pgf@y%
                                        }{\centerpoint}%
                                    }%
                            \fi%
                        \else%
                            \pgfsavepgf@process\firstpoint{%
                                \pgfpointadd{%
                                    \pgfpointdiff{\centerpoint}{\beforearrowtipanchor}%
                                    \pgf@y-\pgf@y%
                                }{\centerpoint}%
                            }%
                            \let\secondpoint\arrowtipanchor%
                        \fi%
                    \fi%
                \fi%
            \fi%
        \fi%
        \pgfsavepgf@process\firstpoint{%
            \pgfmathrotatepointaround{\firstpoint}{\centerpoint}{\rotate}%
        }%
        \pgfsavepgf@process\secondpoint{%
            \pgfmathrotatepointaround{\secondpoint}{\centerpoint}{\rotate}%
        }%
        \pgfpointintersectionoflines{\referencepoint}{\externalpoint}%
            {\firstpoint}{\secondpoint}%
    }%
}%








\pgfkeys{/pgf/.cd,
    double arrow tip angle/.initial=90,
    double arrow head extend/.initial=.25cm,
    double arrow head indent/.initial=0cm,
}%

\pgfdeclareshape{double arrow}{%
    \savedmacro\getdoublearrowpoints{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
        \edef\xoutersep{\the\pgf@x}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
        \edef\youtersep{\the\pgf@y}%
        \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@xa.5\wd\pgfnodeparttextbox%
        \advance\pgf@xa.5\pgflinewidth%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@ya.5\ht\pgfnodeparttextbox%
        \advance\pgf@ya.5\dp\pgfnodeparttextbox%
        \advance\pgf@ya.5\pgflinewidth%
        \ifpgfshapeborderusesincircle%
            \ifdim\pgf@xa<\pgf@ya%
                \pgf@xa\pgf@ya%
            \fi%
            \pgf@xa1.41421\pgf@xa%
            \pgf@ya\pgf@xa%
            \pgfmathsetmacro\rotate{\pgfkeysvalueof{/pgf/shape border rotate}}%
            \ifdim\xoutersep>\youtersep\relax%
                \let\youtersep\xoutersep%
            \else%
                \let\xoutersep\youtersep%
            \fi%
        \else%
            \pgfmathsetmacro\rotate{\pgfkeysvalueof{/pgf/shape border rotate}}
            \pgfmathmod@{\rotate}{360}%
            \afterassignment\pgfmath@gobbletilpgfmath@%
            \expandafter\c@pgf@counta\pgfmathresult\relax\pgfmath@%
            \advance\c@pgf@counta45\relax%
            \divide\c@pgf@counta90\relax%
            \multiply\c@pgf@counta90\relax%
            \ifnum\c@pgf@counta<0\relax%
                \advance\c@pgf@counta360\relax%
            \fi%
            \edef\rotate{\the\c@pgf@counta}%
            \ifnum\c@pgf@counta=90\relax%
                \pgf@x\pgf@xa%
                \pgf@xa\pgf@ya%
                \pgf@ya\pgf@x%
                \let\pgfmathresult\xoutersep%
                \let\xoutersep\youtersep%
                \let\youtersep\pgfmathresult%
            \else%
                \ifnum\c@pgf@counta=270\relax%
                    \pgf@x\pgf@xa%
                    \pgf@xa\pgf@ya%
                    \pgf@ya\pgf@x%
                    \let\pgfmathresult\xoutersep%
                    \let\xoutersep\youtersep%
                    \let\youtersep\pgfmathresult%
                \fi%
            \fi%
        \fi%
        \addtosavedmacro\rotate%
        \pgfmathdivide{\pgfkeysvalueof{/pgf/double arrow tip angle}}{2}%
        \let\halftipangle\pgfmathresult%
        \pgfmathcosec@{\halftipangle}%
        \let\cosechalftipangle\pgfmathresult%
        \pgfmathcos@{\halftipangle}%
        \pgfutil@tempdima\pgfmathresult pt\relax%
        \pgfutil@tempdima\cosechalftipangle\pgfutil@tempdima%
        \edef\cothalftipangle{\pgfmath@tonumber{\pgfutil@tempdima}}%
        \pgfmathreciprocal@{\pgfmathresult}%
        \let\sechalftipangle\pgfmathresult%
        \pgfmathsin@{\halftipangle}%
        \pgfutil@tempdima\pgfmathresult pt\relax%
        \pgfutil@tempdima\sechalftipangle\pgfutil@tempdima%
        \edef\tanhalftipangle{\pgfmath@tonumber{\pgfutil@tempdima}}%
        \pgf@xb\pgf@ya%
        \pgf@xb\cothalftipangle\pgf@xb%
        \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/double arrow head extend}}%
        \pgf@yc\pgf@xc%
        \advance\pgf@xc\pgf@ya%
        \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum width}}%
        \ifdim\pgf@xc<.5\pgfutil@tempdimb%
            \pgfutil@tempdimb.5\pgfutil@tempdimb%
            \pgfmathdivide@{\pgfmath@tonumber{\pgfutil@tempdimb}}{\pgfmath@tonumber{\pgf@xc}}%
            \pgf@ya\pgfmathresult\pgf@ya%
            \pgf@xc\pgfmathresult\pgf@xc%
            \pgf@yc\pgfmathresult\pgf@yc%
            \pgf@xb\pgfmathresult\pgf@xb%
        \fi%
        \advance\pgf@xc-\pgf@ya%
        \pgf@xc\cothalftipangle\pgf@xc%
        \advance\pgf@xa\pgf@xb%
        \pgf@xa2.0\pgf@xa%
        \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@xa<\pgfutil@tempdimb%
            \pgf@xa\pgfutil@tempdimb%
        \fi%
        \pgf@xa.5\pgf@xa%
        \advance\pgf@xa-\pgf@xb%
        \pgfmathsetlength\pgfutil@tempdima{\pgfkeysvalueof{/pgf/double arrow head indent}}%
        \pgfsavepgf@process\centerpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y.5\ht\pgfnodeparttextbox%
            \advance\pgf@y-.5\dp\pgfnodeparttextbox%
        }%
        \pgfsavepgf@process\basepoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y0pt%
        }%
        \pgfsavepgf@process\midpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgfmathsetlength\pgf@y{+.5ex}%
        }%
        \pgfsavepgf@process\arrowtip{%
            \pgf@x\pgf@xa%
            \advance\pgf@x\pgf@xb%
            \pgf@y0pt\relax%
        }%
        \pgfsavepgf@process\beforearrowtip{%
            \pgf@x\pgf@xa%
            \advance\pgf@x-\pgf@xc%
            \pgf@y\pgf@ya%
            \advance\pgf@y\pgf@yc%
        }%
        \pgfsavepgf@process\beforearrowhead{%
            \pgf@x\pgf@xa%
            \advance\pgf@x-\pgf@xc%
            \advance\pgf@x\pgfutil@tempdima%
            \pgf@y\pgf@ya%
        }%
        \pgfsavepgf@process\arrowtipanchor{%
            \pgfpointadd{\centerpoint}{\arrowtip}%
            \pgf@xa\xoutersep\relax%
            \advance\pgf@x\cosechalftipangle\pgf@xa%
        }%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \edef\externalradius{\the\pgf@x}%
        \addtosavedmacro\externalradius%
        \pgfmathanglebetweenlines{\beforearrowtip}{\beforearrowhead}{\beforearrowtip}{\arrowtip}%
        \pgf@xa\xoutersep\relax%
        \pgfutil@tempdima\pgfmathresult pt\relax%
        \pgfutil@tempdima.5\pgfutil@tempdima%
        \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}%
        \pgf@xa\pgfmathresult\pgf@xa%
        \pgfutil@tempdima-\pgfutil@tempdima%
        \advance\pgfutil@tempdima180pt\relax%
        \advance\pgfutil@tempdima-\halftipangle pt\relax%
        \pgfsavepgf@process\beforearrowtipanchor{%
            \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgf@xa}%
            \pgf@xb\pgf@x%
            \pgf@yb\pgf@y%
            \pgf@process{\pgfpointadd{\centerpoint}{\beforearrowtip}}%
            \advance\pgf@x\pgf@xb%
            \advance\pgf@y\pgf@yb%
        }%
        \pgfmathanglebetweenpoints{\beforearrowhead}{\beforearrowtip}%
        \pgfutil@tempdima-\pgfmathresult pt\relax%
        \advance\pgfutil@tempdima180pt\relax%
        \pgfutil@tempdima.5\pgfutil@tempdima%
        \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}%
        \pgf@xa\xoutersep\relax%
        \pgf@xa\pgfmathresult\pgf@xa%
        \pgfutil@tempdima-\pgfutil@tempdima%
        \advance\pgfutil@tempdima180pt\relax%
        \pgfsavepgf@process\beforearrowheadanchor{%
            \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgf@xa}%
            \pgf@xb\pgf@x%
            \pgf@yb\pgf@y%
            \pgf@process{\pgfpointadd{\centerpoint}{\beforearrowhead}}%
            \advance\pgf@x\pgf@xb%
            \advance\pgf@y\pgf@yb%
        }%
        \pgfmathanglebetweenpoints{\centerpoint}{\beforearrowtipanchor}%
        \let\center@angle@beforearrowtip\pgfmathresult%
        \addtosavedmacro\center@angle@beforearrowtip%
        \pgfmathanglebetweenpoints{\midpoint}{\beforearrowtipanchor}%
        \let\mid@angle@beforearrowtip\pgfmathresult%
        \addtosavedmacro\mid@angle@beforearrowtip%
        \pgfmathanglebetweenpoints{\basepoint}{\beforearrowtipanchor}%
        \let\base@angle@beforearrowtip\pgfmathresult%
        \addtosavedmacro\base@angle@beforearrowtip%
        \addtosavedmacro\arrowtipanchor%
        \addtosavedmacro\beforearrowtipanchor%
        \addtosavedmacro\beforearrowheadanchor%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{%
        \getdoublearrowpoints%
        \let\pgf@singlearrow@referencepoint\midpoint%
        \csname pgf@anchor@double arrow@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{mid west}{%
        \getdoublearrowpoints%
        \let\pgf@singlearrow@referencepoint\midpoint%
        \csname pgf@anchor@double arrow@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{base}{\basepoint}%
    \anchor{base east}{%
        \getdoublearrowpoints%
        \let\pgf@singlearrow@referencepoint\basepoint%
        \csname pgf@anchor@double arrow@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{base west}{%
        \getdoublearrowpoints%
        \let\pgf@singlearrow@referencepoint\basepoint%
        \csname pgf@anchor@double arrow@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{north}{%
        \getdoublearrowpoints%
        \csname pgf@anchor@double arrow@border\endcsname{\pgfqpoint{0pt}{\externalradius}}%
    }%
    \anchor{south}{%
        \getdoublearrowpoints%
        \csname pgf@anchor@double arrow@border\endcsname{\pgfqpoint{0pt}{-\externalradius}}%
    }%
    \anchor{east}{%
        \getdoublearrowpoints%
        \csname pgf@anchor@double arrow@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{west}{%
        \getdoublearrowpoints%
        \csname pgf@anchor@double arrow@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{north east}{%
        \getdoublearrowpoints%
        \csname pgf@anchor@double arrow@border\endcsname{\pgfqpoint{\externalradius}{\externalradius}}%
    }%
    \anchor{south east}{%
        \getdoublearrowpoints%
        \csname pgf@anchor@double arrow@border\endcsname{\pgfqpoint{\externalradius}{-\externalradius}}%
    }%
    \anchor{south west}{%
        \getdoublearrowpoints%
        \csname pgf@anchor@double arrow@border\endcsname{\pgfqpoint{-\externalradius}{-\externalradius}}%
    }%
    \anchor{north west}{%
        \getdoublearrowpoints%
        \csname pgf@anchor@double arrow@border\endcsname{\pgfqpoint{-\externalradius}{\externalradius}}%
    }%
    \anchor{before head 1}{%
        \getdoublearrowpoints%
        \pgfmathrotatepointaround{\beforearrowheadanchor}{\centerpoint}{\rotate}%
    }%
    \anchor{before tip 1}{%
        \getdoublearrowpoints%
        \pgfmathrotatepointaround{\beforearrowtipanchor}{\centerpoint}{\rotate}%
    }%
    \anchor{tip 1}{%
        \getdoublearrowpoints%
        \pgfmathrotatepointaround{\arrowtipanchor}{\centerpoint}{\rotate}%
    }%
    \anchor{after tip 1}{%
        \getdoublearrowpoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \pgfpointdiff{\centerpoint}{\beforearrowtipanchor}%
                \pgf@y-\pgf@y%
            }{\centerpoint}}%
        {\centerpoint}{\rotate}%
    }%
    \anchor{after head 1}{%
        \getdoublearrowpoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \pgfpointdiff{\centerpoint}{\beforearrowheadanchor}%
                \pgf@y-\pgf@y%
            }{\centerpoint}}%
        {\centerpoint}{\rotate}%
    }%
    \anchor{before head 2}{%
        \getdoublearrowpoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \pgfpointdiff{\centerpoint}{\beforearrowheadanchor}%
                \pgf@x-\pgf@x%
                \pgf@y-\pgf@y%
            }{\centerpoint}}%
        {\centerpoint}{\rotate}%
    }%
    \anchor{before tip 2}{%
        \getdoublearrowpoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \pgfpointdiff{\centerpoint}{\beforearrowtipanchor}%
                \pgf@x-\pgf@x%
                \pgf@y-\pgf@y%
            }{\centerpoint}}%
        {\centerpoint}{\rotate}%
    }%
    \anchor{tip 2}{%
        \getdoublearrowpoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \pgfpointdiff{\centerpoint}{\arrowtipanchor}%
                \pgf@x-\pgf@x%
            }{\centerpoint}}%
        {\centerpoint}{\rotate}%
    }%
    \anchor{after tip 2}{%
        \getdoublearrowpoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \pgfpointdiff{\centerpoint}{\beforearrowtipanchor}%
                \pgf@x-\pgf@x%
            }{\centerpoint}}%
        {\centerpoint}{\rotate}%
    }%
    \anchor{after head 2}{%
        \getdoublearrowpoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \pgfpointdiff{\centerpoint}{\beforearrowheadanchor}%
                \pgf@x-\pgf@x%
            }{\centerpoint}}%
        {\centerpoint}{\rotate}%
    }%
    \backgroundpath{%
        {%
            \pgftransformshift{\centerpoint}%
            \pgftransformrotate{\rotate}%
            \pgfpathmoveto{\arrowtip}%
            \pgfpathlineto{\beforearrowtip}%
            \pgfpathlineto{\beforearrowhead}%
            \pgfpathlineto{\beforearrowhead\pgf@x-\pgf@x}%
            \pgfpathlineto{\beforearrowtip\pgf@x-\pgf@x}%
            \pgfpathlineto{\arrowtip\pgf@x-\pgf@x}%
            \pgfpathlineto{\beforearrowtip\pgf@x-\pgf@x\pgf@y-\pgf@y}%
            \pgfpathlineto{\beforearrowhead\pgf@x-\pgf@x\pgf@y-\pgf@y}%
            \pgfpathlineto{\beforearrowhead\pgf@y-\pgf@y}%
            \pgfpathlineto{\beforearrowtip\pgf@y-\pgf@y}%
        }%
        \pgfpathclose%
    }%
    \anchorborder{%
        \pgfsavepgf@process\externalpoint{}%
        \getdoublearrowpoints%
        \pgfutil@ifundefined{pgf@singlearrow@referencepoint}{\let\referencepoint\centerpoint}%
            {\let\referencepoint\pgf@singlearrow@referencepoint}%
        \pgfsavepgf@process\externalpoint{%
            \externalpoint%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \referencepoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya}%
        \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}%
        \pgfmathsubtract@{\pgfmathresult}{\rotate}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \let\externalangle\pgfmathresult%
        \pgf@x\externalangle pt\relax%
        \ifx\referencepoint\midpoint%
            \pgf@xa\mid@angle@beforearrowtip pt\relax%
        \else%
            \ifx\referencepoint\basepoint%
                \pgf@xa\base@angle@beforearrowtip pt\relax%
            \else%
                \pgf@xa\center@angle@beforearrowtip pt\relax%
            \fi%
        \fi%
        \ifdim\pgf@x<180pt\relax%
            \ifdim\pgf@x<\pgf@xa%
                \let\firstpoint\arrowtipanchor%
                \let\secondpoint\beforearrowtipanchor%
            \else%
                \pgf@xa-\pgf@xa%
                \advance\pgf@xa180pt\relax%
                \ifdim\pgf@x<\pgf@xa%
                    \let\firstpoint\beforearrowheadanchor%
                    \pgfsavepgf@process\secondpoint{%
                        \pgfpointadd{%
                            \pgfpointdiff{\centerpoint}{\beforearrowheadanchor}%
                            \pgf@x-\pgf@x
                            }{\centerpoint}}%
                \else%
                    \pgfsavepgf@process\firstpoint{%
                        \pgfpointadd{%
                            \pgfpointdiff{\centerpoint}{\beforearrowtipanchor}%
                            \pgf@x-\pgf@x
                            }{\centerpoint}}%
                    \pgfsavepgf@process\secondpoint{%
                        \pgfpointadd{%
                            \pgfpointdiff{\centerpoint}{\arrowtipanchor}%
                            \pgf@x-\pgf@x%
                            \pgf@y-\pgf@y%
                        }{\centerpoint}}%
                \fi%
            \fi%
        \else%
            \pgf@xa-\pgf@xa%
            \advance\pgf@xa360pt\relax%
            \ifdim\pgf@x<\pgf@xa%
                \pgf@xa-\pgf@xa%
                \advance\pgf@xa540pt\relax%
                \ifdim\pgf@x<\pgf@xa%
                    \pgfsavepgf@process\firstpoint{%
                        \pgfpointadd{%
                            \pgfpointdiff{\centerpoint}{\arrowtipanchor}%
                            \pgf@x-\pgf@x%
                        }{\centerpoint}}%
                    \pgfsavepgf@process\secondpoint{%
                        \pgfpointadd{%
                            \pgfpointdiff{\centerpoint}{\beforearrowtipanchor}%
                            \pgf@x-\pgf@x%
                            \pgf@y-\pgf@y%
                        }{\centerpoint}}%
                \else%
                    \pgfsavepgf@process\firstpoint{%
                        \pgfpointadd{%
                            \pgfpointdiff{\centerpoint}{\beforearrowheadanchor}%
                            \pgf@x-\pgf@x%
                            \pgf@y-\pgf@y%
                        }{\centerpoint}}%
                    \pgfsavepgf@process\secondpoint{%
                        \pgfpointadd{%
                            \pgfpointdiff{\centerpoint}{\beforearrowheadanchor}%
                            \pgf@y-\pgf@y%
                        }{\centerpoint}}%
                \fi%
            \else%
                \pgfsavepgf@process\firstpoint{%
                        \pgfpointadd{%
                            \pgfpointdiff{\beforearrowtipanchor}{\centerpoint}%
                            \pgf@x-\pgf@x%
                        }{\centerpoint}}%
                \let\secondpoint\arrowtipanchor%
            \fi%
        \fi%
        \pgfsavepgf@process\firstpoint{%
            \pgfmathrotatepointaround{\firstpoint}{\centerpoint}{\rotate}%
        }%
        \pgfsavepgf@process\secondpoint{%
            \pgfmathrotatepointaround{\secondpoint}{\centerpoint}{\rotate}%
        }%
        \pgfpointintersectionoflines{\referencepoint}{\externalpoint}%
            {\firstpoint}{\secondpoint}%
    }%
}%




\def\pgf@lib@arrowbox@parsearrowlength#1#2#3{%
    \edef\pgf@lib@temp{#3}%
    \edef\pgf@lib@marshal{%
        \noexpand\pgfutil@in@{none}{\pgf@lib@temp}%
    }%
    \pgf@lib@marshal%
    \ifpgfutil@in@%
        #10pt\relax%
    \else%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \expandafter#1\pgf@lib@temp\relax\pgfmath@%
        \edef\pgf@lib@marshal{%
            \noexpand\pgfutil@in@{from center}{\pgf@lib@temp}%
        }%
        \pgf@lib@marshal%
        \ifpgfutil@in@%
        \else%
            \ifdim#1>0pt\relax%
                \advance#1#2\relax%
            \fi%
        \fi%
    \fi}%

\def\pgf@lib@arrowbox@parsearrows#1{%
    \pgfkeys{/pgf/.cd,%
        arrow box west arrow=0pt,
        arrow box east arrow=0pt,
        arrow box south arrow=0pt,
        arrow box north arrow=0pt
    }%
    \def\pgf@lib@arrowbox@extend{0pt}%
    \edef\pgf@lib@temp{#1}%
    \expandafter\pgf@lib@arrowbox@@parsearrows\pgf@lib@temp,\pgf@lib@arrowbox@parsearrows,
}%


\def\pgf@lib@arrowbox@@parsearrows#1,{%
    \ifx\pgf@lib@arrowbox@parsearrows#1%
        \let\pgflib@next\relax%
    \else%
        \pgfutil@in@:{#1}%
        \ifpgfutil@in@%
            \pgf@lib@arrowbox@getextend#1\pgf@lib%
        \else%
            \def\pgf@lib@arrowbox@direction{#1}%
        \fi%
        \edef\pgf@marshal{%
            \noexpand\pgfkeys{/pgf/arrow box  \pgf@lib@arrowbox@direction\space arrow=\pgf@lib@arrowbox@extend}%
        }%
        \pgf@marshal%
        \let\pgflib@next\pgf@lib@arrowbox@@@parsearrows%
    \fi%
    \pgflib@next%
}%
\def\pgf@lib@arrowbox@@@parsearrows{%
    \pgfutil@ifnextchar x{\relax\pgf@lib@arrowbox@@parsearrows}{\relax\pgf@lib@arrowbox@@parsearrows}%
}%

\def\pgf@lib@arrowbox@getextend#1:#2\pgf@lib{%
    \def\pgf@lib@arrowbox@direction{#1}%
    \def\pgf@lib@arrowbox@extend{#2}%
}%

\pgfkeys{/pgf/.cd,
    arrow box west arrow/.initial=.5cm,
    arrow box east arrow/.initial=.5cm,
    arrow box south arrow/.initial=.5cm,
    arrow box north arrow/.initial=.5cm,
    arrow box shaft width/.initial=.125cm,
    arrow box head extend/.initial=.125cm,
    arrow box head indent/.initial=0cm,
    arrow box tip angle/.initial=90,
}%

\pgfdeclareshape{arrow box}{%
    \saveddimen\shaftwidth{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/arrow box shaft width}}%
    }%
    \savedmacro\arrowboxpoints{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum width}}%
        \ifdim\pgf@x<.5\pgf@xa%
            \pgf@x.5\pgf@xa%
        \fi%
        \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y.5\dp\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@y<.5\pgf@ya%
            \pgf@y.5\pgf@ya%
        \fi%
        \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
        \edef\halfboxwidth{\the\pgf@x}%
        \edef\halfboxheight{\the\pgf@y}%
        \pgfextract@process\arrowboxcorner{}%
        \addtosavedmacro\arrowboxcorner%
        \pgf@lib@arrowbox@parsearrowlength\pgf@x{\halfboxwidth}%
            {\pgfkeysvalueof{/pgf/arrow box west arrow}}%
        \edef\westextend{\the\pgf@x}%
        \addtosavedmacro\westextend%
        \pgf@lib@arrowbox@parsearrowlength\pgf@x{\halfboxwidth}%
            {\pgfkeysvalueof{/pgf/arrow box east arrow}}%
        \edef\eastextend{\the\pgf@x}%
        \addtosavedmacro\eastextend%
        \pgf@lib@arrowbox@parsearrowlength\pgf@x{\halfboxheight}%
            {\pgfkeysvalueof{/pgf/arrow box north arrow}}%
        \edef\northextend{\the\pgf@x}%
        \addtosavedmacro\northextend%
        \pgf@lib@arrowbox@parsearrowlength\pgf@x{\halfboxheight}%
            {\pgfkeysvalueof{/pgf/arrow box south arrow}}%
        \edef\southextend{\the\pgf@x}%
        \addtosavedmacro\southextend%
    }%
    \saveddimen\arrowheadextend{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/arrow box head extend}}%
    }%
    \saveddimen\arrowheadindent{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/arrow box head indent}}%
    }%
    \savedmacro\arrowtipmiterangle{%
        \pgfmathparse{\pgfkeysvalueof{/pgf/arrow box tip angle}}%
        \pgfmathdivide@{\pgfmathresult}{2}%
        \let\arrowtipmiterangle\pgfmathresult%
    }%
    \savedmacro\arrowheadangles{%
        \pgfmathparse{\pgfkeysvalueof{/pgf/arrow box tip angle}}%
        \pgfmathdivide@{\pgfmathresult}{2}%
        \let\arrowtipmiterangle\pgfmathresult%
        \addtosavedmacro\arrowtipmiterangle%
        \pgfmathcosec@{\arrowtipmiterangle}%
        \let\cosecarrowtipmiterangle\pgfmathresult%
        \addtosavedmacro\cosecarrowtipmiterangle%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/arrow box head extend}}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/arrow box head indent}}%
        \ifdim\pgf@y=0pt\relax%
            \def\pgfmathresult{90}%
        \else%
            \ifdim\pgf@y<0pt\relax%
                \pgfmathdivide@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
                \pgfmathatan@{\pgfmathresult}%
                \pgfmathadd@{\pgfmathresult}{180}%
            \else%
                \pgfmathdivide@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
                \pgfmathatan@{\pgfmathresult}%
            \fi%
        \fi%
        \pgfmathdivide@{\pgfmathresult}{2}%
        \let\beforearrowheadmiterangle\pgfmathresult%
        \addtosavedmacro\beforearrowheadmiterangle%
        \pgfmathcosec@{\beforearrowheadmiterangle}%
        \let\cosecbeforearrowheadmiterangle\pgfmathresult%
        \addtosavedmacro\cosecbeforearrowheadmiterangle%
        \pgfutil@tempdima-\arrowtipmiterangle pt\relax%
        \advance\pgfutil@tempdima90pt\relax%
        \pgfutil@tempdimb\beforearrowheadmiterangle pt\relax%
        \pgfutil@tempdimb2.0\pgfutil@tempdimb%
        \advance\pgfutil@tempdimb-90pt\relax%
        \advance\pgfutil@tempdima\pgfutil@tempdimb%
        \divide\pgfutil@tempdima2\relax%
        \edef\beforearrowtipmiterangle{\pgfmath@tonumber{\pgfutil@tempdima}}%
        \addtosavedmacro\beforearrowtipmiterangle%
        \pgfmathcosec@{\beforearrowtipmiterangle}%
        \let\cosecbeforearrowtipmiterangle\pgfmathresult%
        \addtosavedmacro\cosecbeforearrowtipmiterangle%
    }%
    \saveddimen\outerxsep{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
    }%
    \saveddimen\outerysep{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer ysep}}%
    }%
    \savedanchor\beforearrowtip{%
        \pgfmathparse{\pgfkeysvalueof{/pgf/arrow box tip angle}}%
        \pgfmathdivide@{\pgfmathresult}{2}%
        \pgfmathcot@{\pgfmathresult}%
        \let\cothalfangle\pgfmathresult%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/arrow box shaft width}}%
        \pgf@y.5\pgf@y%
        \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/arrow box head extend}}%
        \pgf@y\pgf@y%
        \pgf@x\cothalfangle\pgf@y%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt\relax%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+.5ex}%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{%
        \arrowboxpoints%
        \ifdim\eastextend>0pt\relax%
            \let\pgf@lib@shapes@arrowbox@referencepoint\midpoint%
            \csname pgf@anchor@arrow box@border\endcsname{\pgfqpoint{\eastextend}{0pt}}%
        \else%
            \arrowboxcorner%
            \pgf@xa\pgf@x%
            \midpoint%
            \advance\pgf@x\pgf@xa%
        \fi%
    }%
    \anchor{mid west}{%
        \arrowboxpoints%
        \ifdim\westextend>0pt\relax%
            \let\pgf@lib@shapes@arrowbox@referencepoint\midpoint%
            \csname pgf@anchor@arrow box@border\endcsname{\pgfqpoint{-\westextend}{0pt}}%
        \else%
            \arrowboxcorner%
            \pgf@xa\pgf@x%
            \midpoint%
            \advance\pgf@x-\pgf@xa%
        \fi%
    }%
    \anchor{base}{\basepoint}%
    \anchor{base east}{%
        \arrowboxpoints%
        \ifdim\eastextend>0pt\relax%
            \let\pgf@lib@shapes@arrowbox@referencepoint\basepoint%
            \csname pgf@anchor@arrow box@border\endcsname{\pgfqpoint{\eastextend}{0pt}}%
        \else%
            \arrowboxcorner%
            \pgf@xa\pgf@x%
            \basepoint%
            \advance\pgf@x\pgf@xa%
        \fi%
    }%
    \anchor{base west}{%
        \arrowboxpoints%
        \ifdim\westextend>0pt\relax%
            \let\pgf@lib@shapes@arrowbox@referencepoint\basepoint%
            \csname pgf@anchor@arrow box@border\endcsname{\pgfqpoint{-\westextend}{0pt}}%
        \else%
            \arrowboxcorner%
            \pgf@xa\pgf@x%
            \basepoint%
            \advance\pgf@x-\pgf@xa%
        \fi%
    }%
    \anchor{north}{%
        \arrowboxpoints%
        \ifdim\northextend>0pt\relax%
            \csname pgf@anchor@arrow box@north arrow tip\endcsname%
        \else%
            \pgfpointadd{\centerpoint}{\arrowboxcorner}%
            \pgf@ya\pgf@y%
            \centerpoint%
            \pgf@y\pgf@ya%
        \fi%
    }%
    \anchor{south}{%
        \arrowboxpoints%
        \ifdim\southextend>0pt\relax%
            \csname pgf@anchor@arrow box@south arrow tip\endcsname%
        \else%
            \pgfpointadd{\centerpoint}{\arrowboxcorner\pgf@y-\pgf@y}%
            \pgf@ya\pgf@y%
            \centerpoint%
            \pgf@y\pgf@ya%
        \fi%
    }%
    \anchor{east}{%
        \arrowboxpoints%
        \ifdim\eastextend>0pt\relax%
            \csname pgf@anchor@arrow box@east arrow tip\endcsname%
        \else%
            \pgfpointadd{\centerpoint}{\arrowboxcorner}%
            \pgf@xa\pgf@x%
            \centerpoint%
            \pgf@x\pgf@xa%
        \fi%
    }%
    \anchor{west}{%
        \arrowboxpoints%
        \ifdim\westextend>0pt\relax%
            \csname pgf@anchor@arrow box@west arrow tip\endcsname%
        \else%
            \pgfpointadd{\centerpoint}{\arrowboxcorner\pgf@x-\pgf@x}%
            \pgf@xa\pgf@x%
            \centerpoint%
            \pgf@x\pgf@xa%
        \fi%
    }%
    \anchor{north east}{%
        \arrowboxpoints%
        \pgfpointadd{\centerpoint}{\arrowboxcorner}%
    }%
    \anchor{north west}{%
        \arrowboxpoints%
        \pgfpointadd{\centerpoint}{\arrowboxcorner\pgf@x-\pgf@x}%
    }%
    \anchor{south west}{%
        \arrowboxpoints%
        \pgfpointadd{\centerpoint}{\arrowboxcorner\pgf@x-\pgf@x\pgf@y-\pgf@y}%
    }%
    \anchor{south east}{%
        \arrowboxpoints%
        \pgfpointadd{\centerpoint}{\arrowboxcorner\pgf@y-\pgf@y}%
    }%
    \anchor{before east arrow}{%
        \arrowboxpoints%
        \ifdim\eastextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \arrowboxcorner%
                \pgf@y\shaftwidth\relax%
                \pgf@y.5\pgf@y%
                \advance\pgf@y\outerysep\relax%
            }%
        \else%
            \csname pgf@anchor@arrow box@east\endcsname%
        \fi%
    }%
    \anchor{before east arrow head}{%
        \arrowboxpoints%
        \ifdim\eastextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima-\beforearrowheadmiterangle pt\relax%
                    \advance\pgfutil@tempdima180pt\relax%
                    \pgfutil@tempdimb\outerxsep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowheadmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@x-\pgf@x%
                    \advance\pgf@x\eastextend\relax%
                    \advance\pgf@x\arrowheadindent\relax%
                    \pgf@y\shaftwidth\relax%
                    \pgf@y.5\pgf@y%
                }%
            }%
        \else%
            \csname pgf@anchor@arrow box@east\endcsname%
        \fi%
    }%
    \anchor{before east arrow tip}{%
        \arrowboxpoints%
        \ifdim\eastextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima-\arrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima-\beforearrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima180pt\relax%
                    \pgfutil@tempdimb\outerysep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowtipmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@x-\pgf@x%
                    \advance\pgf@x\eastextend\relax%
                }%
            }%
        \else%
            \csname pgf@anchor@arrow box@east\endcsname%
        \fi%
    }%
    \anchor{east arrow tip}{%
        \arrowboxpoints%
        \ifdim\eastextend>0pt\relax%
            \centerpoint%
            \advance\pgf@x\eastextend\relax%
            \pgf@xa\outerxsep\relax%
            \pgfmathcosec@{\arrowtipmiterangle}%
            \advance\pgf@x\pgfmathresult\pgf@xa%
        \else%
            \csname pgf@anchor@arrow box@east\endcsname%
        \fi%
    }%
    \anchor{after east arrow tip}{%
        \arrowboxpoints%
        \ifdim\eastextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima-\arrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima-\beforearrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima180pt\relax%
                    \pgfutil@tempdimb\outerysep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowtipmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@x-\pgf@x%
                    \advance\pgf@x\eastextend\relax%
                }%
                \pgf@y-\pgf@y%
            }%
        \else%
            \csname pgf@anchor@arrow box@east\endcsname%
        \fi%
    }%
    \anchor{after east arrow head}{%
        \arrowboxpoints%
        \ifdim\eastextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima-\beforearrowheadmiterangle pt\relax%
                    \advance\pgfutil@tempdima180pt\relax%
                    \pgfutil@tempdimb\outerxsep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowheadmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@x-\pgf@x%
                    \advance\pgf@x\eastextend\relax%
                    \advance\pgf@x\arrowheadindent\relax%
                    \pgf@y\shaftwidth\relax%
                    \pgf@y.5\pgf@y%
                }%
                \pgf@y-\pgf@y%
            }%
        \else%
            \csname pgf@anchor@arrow box@east\endcsname%
        \fi%
    }%
    \anchor{after east arrow}{%
        \arrowboxpoints%
        \ifdim\eastextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \arrowboxcorner%
                \pgf@y\shaftwidth\relax%
                \pgf@y.5\pgf@y%
                \advance\pgf@y\outerysep\relax%
                \pgf@y-\pgf@y%
            }%
        \else%
            \csname pgf@anchor@arrow box@east\endcsname%
        \fi%
    }%
    \anchor{before west arrow}{%
        \arrowboxpoints%
        \ifdim\westextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \arrowboxcorner%
                \pgf@x-\pgf@x%
                \pgf@y\shaftwidth\relax%
                \pgf@y.5\pgf@y%
                \advance\pgf@y\outerysep\relax%
                \pgf@y-\pgf@y%
            }%
        \else%
            \csname pgf@anchor@arrow box@west\endcsname%
        \fi%
    }%
    \anchor{before west arrow head}{%
        \arrowboxpoints%
        \ifdim\westextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima-\beforearrowheadmiterangle pt\relax%
                    \advance\pgfutil@tempdima180pt\relax%
                    \pgfutil@tempdimb\outerxsep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowheadmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@x-\pgf@x%
                    \advance\pgf@x\westextend\relax%
                    \advance\pgf@x\arrowheadindent\relax%
                    \pgf@y\shaftwidth\relax%
                    \pgf@y.5\pgf@y%
                }%
                \pgf@x-\pgf@x%
                \pgf@y-\pgf@y%
            }%
        \else%
            \csname pgf@anchor@arrow box@west\endcsname%
        \fi%
    }%
    \anchor{before west arrow tip}{%
        \arrowboxpoints%
        \ifdim\westextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima-\arrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima-\beforearrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima180pt\relax%
                    \pgfutil@tempdimb\outerysep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowtipmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@x-\pgf@x%
                    \advance\pgf@x\westextend\relax%
                }%
                \pgf@x-\pgf@x%
                \pgf@y-\pgf@y%
            }%
        \else%
            \csname pgf@anchor@arrow box@west\endcsname%
        \fi%
    }%
    \anchor{west arrow tip}{%
        \arrowboxpoints%
        \ifdim\westextend>0pt\relax%
            \centerpoint%
            \advance\pgf@x-\westextend\relax%
            \pgf@xa\outerxsep\relax%
            \pgfmathcosec@{\arrowtipmiterangle}%
            \advance\pgf@x-\pgfmathresult\pgf@xa%
        \else%
            \csname pgf@anchor@arrow box@west\endcsname%
        \fi%
    }%
    \anchor{after west arrow tip}{%
        \arrowboxpoints%
        \ifdim\westextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima-\arrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima-\beforearrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima180pt\relax%
                    \pgfutil@tempdimb\outerysep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowtipmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@x-\pgf@x%
                    \advance\pgf@x\westextend\relax%
                }%
                \pgf@x-\pgf@x%
            }%
        \else%
            \csname pgf@anchor@arrow box@west\endcsname%
        \fi%
    }%
    \anchor{after west arrow head}{%
        \arrowboxpoints%
        \ifdim\westextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima-\beforearrowheadmiterangle pt\relax%
                    \advance\pgfutil@tempdima180pt\relax%
                    \pgfutil@tempdimb\outerxsep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowheadmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@x-\pgf@x%
                    \advance\pgf@x\westextend\relax%
                    \advance\pgf@x\arrowheadindent\relax%
                    \pgf@y\shaftwidth\relax%
                    \pgf@y.5\pgf@y%
                }%
                \pgf@x-\pgf@x%
            }%
        \else%
            \csname pgf@anchor@arrow box@west\endcsname%
        \fi%
    }%
    \anchor{after west arrow}{%
        \arrowboxpoints%
        \ifdim\westextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \arrowboxcorner%
                \pgf@y\shaftwidth\relax%
                \pgf@y.5\pgf@y%
                \advance\pgf@y\outerysep\relax%
                \pgf@x-\pgf@x%
            }%
        \else%
            \csname pgf@anchor@arrow box@west\endcsname%
        \fi%
    }%
    \anchor{before north arrow}{%
        \arrowboxpoints%
        \ifdim\northextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \arrowboxcorner%
                \pgf@x-\shaftwidth\relax%
                \pgf@x.5\pgf@x%
                \advance\pgf@x-\outerxsep\relax%
            }%
        \else%
            \csname pgf@anchor@arrow box@north\endcsname%
        \fi%
    }%
    \anchor{before north arrow head}{%
        \arrowboxpoints%
        \ifdim\northextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima-\beforearrowheadmiterangle pt\relax%
                    \advance\pgfutil@tempdima270pt\relax%
                    \pgfutil@tempdimb\outerysep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowheadmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@y-\pgf@x%
                    \advance\pgf@y\northextend\relax%
                    \advance\pgf@y\arrowheadindent\relax%
                    \pgf@x-\shaftwidth\relax%
                    \pgf@x.5\pgf@x%
                }%
            }%
        \else%
            \csname pgf@anchor@arrow box@north\endcsname%
        \fi%
    }%
    \anchor{before north arrow tip}{%
        \arrowboxpoints%
        \ifdim\northextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima\arrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima\beforearrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima-90pt\relax%
                    \pgfutil@tempdimb\outerxsep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowtipmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@xa\pgf@x%
                    \pgf@x\pgf@y%
                    \pgf@y-\pgf@xa%
                    \advance\pgf@y\northextend\relax%
                }%
                \pgf@x-\pgf@x%
            }%
        \else%
            \csname pgf@anchor@arrow box@north\endcsname%
        \fi%
    }%
    \anchor{north arrow tip}{%
        \arrowboxpoints%
        \ifdim\northextend>0pt\relax%
            \centerpoint%
            \advance\pgf@y\northextend\relax%
            \pgf@ya\outerysep\relax%
            \pgfmathcosec@{\arrowtipmiterangle}%
            \advance\pgf@y\pgfmathresult\pgf@ya%
        \else%
            \csname pgf@anchor@arrow box@north\endcsname%
        \fi%
    }%
    \anchor{after north arrow tip}{%
        \arrowboxpoints%
        \ifdim\northextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima\arrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima\beforearrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima-90pt\relax%
                    \pgfutil@tempdimb\outerxsep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowtipmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@xa\pgf@x%
                    \pgf@x\pgf@y%
                    \pgf@y-\pgf@xa%
                    \advance\pgf@y\northextend\relax%
                }%
            }%
        \else%
            \csname pgf@anchor@arrow box@north\endcsname%
        \fi%
    }%
    \anchor{after north arrow head}{%
        \arrowboxpoints%
        \ifdim\northextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima-\beforearrowheadmiterangle pt\relax%
                    \advance\pgfutil@tempdima270pt\relax%
                    \pgfutil@tempdimb\outerysep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowheadmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@y-\pgf@x%
                    \advance\pgf@y\northextend\relax%
                    \advance\pgf@y\arrowheadindent\relax%
                    \pgf@x-\shaftwidth\relax%
                    \pgf@x.5\pgf@x%
                }%
                \pgf@x-\pgf@x%
            }%
        \else%
            \csname pgf@anchor@arrow box@north\endcsname%
        \fi%
    }%
    \anchor{after north arrow}{%
        \arrowboxpoints%
        \ifdim\northextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \arrowboxcorner%
                \pgf@x\shaftwidth\relax%
                \pgf@x.5\pgf@x%
                \advance\pgf@x\outerxsep\relax%
            }%
        \else%
            \csname pgf@anchor@arrow box@north\endcsname%
        \fi%
    }%
    \anchor{before south arrow}{%
        \arrowboxpoints%
        \ifdim\southextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \arrowboxcorner%
                \pgf@x\shaftwidth\relax%
                \pgf@x.5\pgf@x%
                \advance\pgf@x\outerxsep\relax%
                \pgf@y-\pgf@y%
            }%
        \else%
            \csname pgf@anchor@arrow box@south\endcsname%
        \fi%
    }%
    \anchor{before south arrow head}{%
        \arrowboxpoints%
        \ifdim\northextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima-\beforearrowheadmiterangle pt\relax%
                    \advance\pgfutil@tempdima270pt\relax%
                    \pgfutil@tempdimb\outerysep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowheadmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@y-\pgf@x%
                    \advance\pgf@y\northextend\relax%
                    \advance\pgf@y\arrowheadindent\relax%
                    \pgf@x-\shaftwidth\relax%
                    \pgf@x.5\pgf@x%
                }%
                \pgf@x-\pgf@x%
                \pgf@y-\pgf@y%
            }%
        \else%
            \csname pgf@anchor@arrow box@south\endcsname%
        \fi%
    }%
    \anchor{before south arrow tip}{%
        \arrowboxpoints%
        \ifdim\northextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima\arrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima\beforearrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima-90pt\relax%
                    \pgfutil@tempdimb\outerxsep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowtipmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@xa\pgf@x%
                    \pgf@x\pgf@y%
                    \pgf@y-\pgf@xa%
                    \advance\pgf@y\northextend\relax%
                }%
                \pgf@y-\pgf@y%
            }%
        \else%
            \csname pgf@anchor@arrow box@south\endcsname%
        \fi%
    }%
    \anchor{south arrow tip}{%
        \arrowboxpoints%
        \ifdim\southextend>0pt\relax%
            \centerpoint%
            \advance\pgf@y-\southextend\relax%
            \pgf@ya\outerysep\relax%
            \pgfmathcosec@{\arrowtipmiterangle}%
            \advance\pgf@y-\pgfmathresult\pgf@ya%
        \else%
            \csname pgf@anchor@arrow box@east\endcsname%
        \fi%
    }%
    \anchor{after south arrow tip}{%
        \arrowboxpoints%
        \ifdim\northextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima\arrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima\beforearrowtipmiterangle pt\relax%
                    \advance\pgfutil@tempdima-90pt\relax%
                    \pgfutil@tempdimb\outerxsep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowtipmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@xa\pgf@x%
                    \pgf@x\pgf@y%
                    \pgf@y-\pgf@xa%
                    \advance\pgf@y\northextend\relax%
                }%
                \pgf@x-\pgf@x%
                \pgf@y-\pgf@y%
            }%
        \else%
            \csname pgf@anchor@arrow box@south\endcsname%
        \fi%
    }%
    \anchor{after south arrow head}{%
        \arrowboxpoints%
        \ifdim\northextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \pgfpointadd{%
                    \arrowheadangles%
                    \pgfutil@tempdima-\beforearrowheadmiterangle pt\relax%
                    \advance\pgfutil@tempdima270pt\relax%
                    \pgfutil@tempdimb\outerysep\relax%
                    \pgfutil@tempdimb\cosecbeforearrowheadmiterangle\pgfutil@tempdimb%
                    \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \beforearrowtip%
                    \pgf@y-\pgf@x%
                    \advance\pgf@y\northextend\relax%
                    \advance\pgf@y\arrowheadindent\relax%
                    \pgf@x-\shaftwidth\relax%
                    \pgf@x.5\pgf@x%
                }%
                \pgf@y-\pgf@y%
            }%
        \else%
            \csname pgf@anchor@arrow box@south\endcsname%
        \fi%
    }%
    \anchor{after south arrow}{%
        \arrowboxpoints%
        \ifdim\southextend>0pt\relax%
            \pgfpointadd{\centerpoint}{%
                \arrowboxcorner%
                \pgf@x-\shaftwidth\relax%
                \pgf@x.5\pgf@x%
                \advance\pgf@x-\outerxsep\relax%
                \pgf@y-\pgf@y%
            }%
        \else%
            \csname pgf@anchor@arrow box@south\endcsname%
        \fi%
    }%
    \backgroundpath{%
        \arrowboxpoints%
        \pgfextract@process\arrowboxcorner{%
            \arrowboxcorner%
            \pgfmathaddtolength\pgf@x{-\pgfkeysvalueof{/pgf/outer xsep}}%
            \pgfmathaddtolength\pgf@y{-\pgfkeysvalueof{/pgf/outer ysep}}%
        }%
        {%
            \pgftransformshift{\centerpoint}%
            \pgfpathmoveto{\arrowboxcorner}%
            \ifdim\eastextend>0pt\relax%
                \pgfpathlineto{%
                    \arrowboxcorner%
                    \pgf@y\shaftwidth\relax%
                    \pgf@y.5\pgf@y%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \pgf@x-\pgf@x%
                    \advance\pgf@x\eastextend\relax%
                    \advance\pgf@x\arrowheadindent\relax%
                    \pgf@y\shaftwidth\relax%
                    \pgf@y.5\pgf@y%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \pgf@x-\pgf@x%
                    \advance\pgf@x\eastextend\relax%
                }%
                \pgfpathlineto{%
                    \pgf@x\eastextend\relax%
                    \pgf@y0pt\relax%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \pgf@x-\pgf@x%
                    \advance\pgf@x\eastextend\relax%
                    \pgf@y-\pgf@y%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \pgf@x-\pgf@x%
                    \advance\pgf@x\eastextend\relax%
                    \advance\pgf@x\arrowheadindent\relax%
                    \pgf@y\shaftwidth\relax%
                    \pgf@y-.5\pgf@y%
                }%
                \pgfpathlineto{%
                    \arrowboxcorner%
                    \pgf@y\shaftwidth\relax%
                    \pgf@y-.5\pgf@y%
                }%
            \fi%
            \pgfpathlineto{\arrowboxcorner\pgf@y-\pgf@y}%
            \ifdim\southextend>0pt\relax%
                \pgfpathlineto{%
                    \arrowboxcorner%
                    \pgf@x\shaftwidth\relax%
                    \pgf@x.5\pgf@x%
                    \pgf@y-\pgf@y%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \pgf@y\pgf@x%
                    \advance\pgf@y-\southextend\relax%
                    \advance\pgf@y-\arrowheadindent\relax%
                    \pgf@x\shaftwidth\relax%
                    \pgf@x.5\pgf@x%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \pgf@xa\pgf@y%
                    \pgf@y\pgf@x%
                    \advance\pgf@y-\southextend\relax%
                    \pgf@x\pgf@xa%
                }%
                \pgfpathlineto{%
                    \pgf@x0pt\relax%
                    \pgf@y-\southextend\relax%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \pgf@xa\pgf@y%
                    \pgf@y\pgf@x%
                    \advance\pgf@y-\southextend\relax%
                    \pgf@x-\pgf@xa%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \pgf@y\pgf@x%
                    \advance\pgf@y-\southextend\relax%
                    \advance\pgf@y-\arrowheadindent\relax%
                    \pgf@x\shaftwidth\relax%
                    \pgf@x-.5\pgf@x%
                }%
                \pgfpathlineto{%
                    \arrowboxcorner%
                    \pgf@x\shaftwidth\relax%
                    \pgf@x-.5\pgf@x%
                    \pgf@y-\pgf@y%
                }%
            \fi%
            \pgfpathlineto{\arrowboxcorner\pgf@x-\pgf@x\pgf@y-\pgf@y}%
            \ifdim\westextend>0pt\relax%
                \pgfpathlineto{%
                    \arrowboxcorner%
                    \pgf@x-\pgf@x
                    \pgf@y\shaftwidth\relax%
                    \pgf@y-.5\pgf@y%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \advance\pgf@x-\westextend\relax%
                    \advance\pgf@x-\arrowheadindent\relax%
                    \pgf@y\shaftwidth\relax%
                    \pgf@y-.5\pgf@y%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \advance\pgf@x-\westextend\relax%
                    \pgf@y-\pgf@y%
                }%
                \pgfpathlineto{%
                    \pgf@x-\westextend\relax%
                    \pgf@y0pt\relax%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \advance\pgf@x-\westextend\relax%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \advance\pgf@x-\westextend\relax%
                    \advance\pgf@x-\arrowheadindent\relax%
                    \pgf@y\shaftwidth\relax%
                    \pgf@y.5\pgf@y%
                }%
                \pgfpathlineto{%
                    \arrowboxcorner%
                    \pgf@x-\pgf@x%
                    \pgf@y\shaftwidth\relax%
                    \pgf@y.5\pgf@y%
                }%
            \fi%
            \pgfpathlineto{\arrowboxcorner\pgf@x-\pgf@x}%
            \ifdim\northextend>0pt\relax%
                \pgfpathlineto{%
                    \arrowboxcorner%
                    \pgf@x\shaftwidth\relax%
                    \pgf@x-.5\pgf@x%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \pgf@y-\pgf@x%
                    \advance\pgf@y\northextend\relax%
                    \advance\pgf@y\arrowheadindent\relax%
                    \pgf@x\shaftwidth\relax%
                    \pgf@x-.5\pgf@x%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \pgf@xa\pgf@y%
                    \pgf@y-\pgf@x%
                    \advance\pgf@y\northextend\relax%
                    \pgf@x-\pgf@xa%
                }%
                \pgfpathlineto{%
                    \pgf@x0pt\relax%
                    \pgf@y\northextend\relax%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \pgf@xa\pgf@y%
                    \pgf@y-\pgf@x%
                    \advance\pgf@y\northextend\relax%
                    \pgf@x\pgf@xa%
                }%
                \pgfpathlineto{%
                    \beforearrowtip%
                    \pgf@y-\pgf@x%
                    \advance\pgf@y\northextend\relax%
                    \advance\pgf@y\arrowheadindent\relax%
                    \pgf@x\shaftwidth\relax%
                    \pgf@x.5\pgf@x%
                }%
                \pgfpathlineto{%
                    \arrowboxcorner%
                    \pgf@x\shaftwidth\relax%
                    \pgf@x.5\pgf@x%
                }%
            \fi%
            \pgfpathclose%
        }%
    }%
    \anchorborder{%
        \pgfextract@process\externalpoint{}%
        \pgfutil@ifundefined{pgf@lib@shapes@arrowbox@referencepoint}%
            {\let\referencepoint\centerpoint}{\let\referencepoint\pgf@lib@shapes@arrowbox@referencepoint}%
        \pgfextract@process\externalpoint{%
            \pgfpointadd{\referencepoint}{\externalpoint}%
        }%
        \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}%
        \let\externalangle\pgfmathresult%
        \pgfmathanglebetweenpoints{\referencepoint}%
            {\csname pgf@anchor@arrow box@west\endcsname}%
        \ifdim\externalangle pt<\pgfmathresult pt\relax%
            \pgfmathanglebetweenpoints{\referencepoint}%
                {\csname pgf@anchor@arrow box@north\endcsname}%
            \ifdim\externalangle pt<\pgfmathresult pt\relax%
                \pgfmathanglebetweenpoints{\referencepoint}%
                    {\csname pgf@anchor@arrow box@north east\endcsname}%
                \ifdim\externalangle pt<\pgfmathresult pt\relax%
                    \pgfmathanglebetweenpoints{\referencepoint}%
                        {\csname pgf@anchor@arrow box@before east arrow tip\endcsname}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \def\firstpoint{east arrow tip}%
                        \def\secondpoint{before east arrow tip}%
                    \else%
                        \pgfmathanglebetweenpoints{\referencepoint}%
                            {\csname pgf@anchor@arrow box@before east arrow\endcsname}%
                        \ifdim\externalangle pt<\pgfmathresult pt\relax%
                            \def\firstpoint{before east arrow head}%
                            \def\secondpoint{before east arrow}%
                        \else%
                            \def\firstpoint{before east arrow}%
                            \def\secondpoint{north east}%
                        \fi%
                    \fi%
                \else%
                    \pgfmathanglebetweenpoints{\referencepoint}%
                        {\csname pgf@anchor@arrow box@after north arrow tip\endcsname}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \pgfmathanglebetweenpoints{\referencepoint}%
                            {\csname pgf@anchor@arrow box@after north arrow\endcsname}%
                        \ifdim\externalangle pt<\pgfmathresult pt\relax%
                            \def\firstpoint{north east}%
                            \def\secondpoint{after north arrow}%
                        \else%
                            \def\firstpoint{after north arrow}%
                            \def\secondpoint{after north arrow head}%
                        \fi%
                    \else%
                        \def\firstpoint{after north arrow tip}%
                        \def\secondpoint{north arrow tip}%
                    \fi%
                \fi%
            \else%
                \pgfmathanglebetweenpoints{\referencepoint}%
                    {\csname pgf@anchor@arrow box@north west\endcsname}%
                \ifdim\externalangle pt<\pgfmathresult pt\relax%
                    \pgfmathanglebetweenpoints{\referencepoint}%
                        {\csname pgf@anchor@arrow box@before north arrow tip\endcsname}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \def\firstpoint{north arrow tip}%
                        \def\secondpoint{before north arrow tip}%
                    \else%
                        \pgfmathanglebetweenpoints{\referencepoint}%
                            {\csname pgf@anchor@arrow box@before north arrow\endcsname}%
                        \ifdim\externalangle pt<\pgfmathresult pt\relax%
                            \def\firstpoint{before north head}%
                            \def\secondpoint{before north arrow}%
                        \else%
                            \def\firstpoint{before north arrow}%
                            \def\secondpoint{north west}%
                        \fi%
                    \fi%
                \else%
                    \pgfmathanglebetweenpoints{\referencepoint}%
                        {\csname pgf@anchor@arrow box@after west arrow tip\endcsname}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \pgfmathanglebetweenpoints{\referencepoint}%
                            {\csname pgf@anchor@arrow box@after west arrow\endcsname}%
                        \ifdim\externalangle pt<\pgfmathresult pt\relax%
                            \def\firstpoint{north west}%
                            \def\secondpoint{after west arrow}%
                        \else%
                            \def\firstpoint{after west arrow}%
                            \def\secondpoint{after west arrow head}%
                        \fi%
                    \else%
                        \def\firstpoint{after west arrow tip}%
                        \def\secondpoint{west arrow tip}%
                    \fi%
                \fi%
            \fi%
        \else%
            \pgfmathanglebetweenpoints{\referencepoint}%
                {\csname pgf@anchor@arrow box@south arrow tip\endcsname}%
            \ifdim\externalangle pt<\pgfmathresult pt\relax%
                \pgfmathanglebetweenpoints{\referencepoint}%
                    {\csname pgf@anchor@arrow box@south west\endcsname}%
                \ifdim\externalangle pt<\pgfmathresult pt\relax%
                    \pgfmathanglebetweenpoints{\referencepoint}%
                        {\csname pgf@anchor@arrow box@before west arrow tip\endcsname}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \def\firstpoint{west arrow tip}%
                        \def\secondpoint{before west arrow tip}%
                    \else%
                        \pgfmathanglebetweenpoints{\referencepoint}%
                            {\csname pgf@anchor@arrow box@before west arrow\endcsname}%
                        \ifdim\externalangle pt<\pgfmathresult pt\relax%
                            \def\firstpoint{before west arrow head}%
                            \def\secondpoint{before west arrow}%
                        \else%
                            \def\firstpoint{before west arrow}%
                            \def\secondpoint{south west}%
                        \fi%
                    \fi%
                \else%
                    \pgfmathanglebetweenpoints{\referencepoint}%
                        {\csname pgf@anchor@arrow box@after south arrow tip\endcsname}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \pgfmathanglebetweenpoints{\referencepoint}%
                            {\csname pgf@anchor@arrow box@after south arrow\endcsname}%
                        \ifdim\externalangle pt<\pgfmathresult pt\relax%
                            \def\firstpoint{south west}%
                            \def\secondpoint{after south arrow}%
                        \else%
                            \def\firstpoint{after south arrow}%
                            \def\secondpoint{after south arrow head}%
                        \fi%
                    \else%
                        \def\firstpoint{after south arrow tip}%
                        \def\secondpoint{south arrow tip}%
                    \fi%
                \fi%
            \else%
                \pgfmathanglebetweenpoints{\referencepoint}%
                    {\csname pgf@anchor@arrow box@south east\endcsname}%
                \ifdim\externalangle pt<\pgfmathresult pt\relax%
                    \pgfmathanglebetweenpoints{\referencepoint}%
                        {\csname pgf@anchor@arrow box@before south arrow tip\endcsname}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \def\firstpoint{south arrow tip}%
                        \def\secondpoint{before south arrow tip}%
                    \else%
                        \pgfmathanglebetweenpoints{\referencepoint}%
                            {\csname pgf@anchor@arrow box@before south arrow\endcsname}%
                        \ifdim\externalangle pt<\pgfmathresult pt\relax%
                            \def\firstpoint{before south arrow head}%
                            \def\secondpoint{before south arrow}%
                        \else%
                            \def\firstpoint{before south arrow}%
                            \def\secondpoint{south east}%
                        \fi%
                    \fi%
                \else%
                    \pgfmathanglebetweenpoints{\referencepoint}%
                        {\csname pgf@anchor@arrow box@after east arrow tip\endcsname}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \pgfmathanglebetweenpoints{\referencepoint}%
                            {\csname pgf@anchor@arrow box@after east arrow\endcsname}%
                        \ifdim\externalangle pt<\pgfmathresult pt\relax%
                            \def\firstpoint{south east}%
                            \def\secondpoint{after east arrow}%
                        \else%
                            \def\firstpoint{after east arrow}%
                            \def\secondpoint{after east arrow head}%
                        \fi%
                    \else%
                        \def\firstpoint{after east arrow tip}%
                        \def\secondpoint{east arrow tip}%
                    \fi%
                \fi%
            \fi%
        \fi%
        \pgfpointintersectionoflines{\referencepoint}{\externalpoint}%
            {\csname pgf@anchor@arrow box@\firstpoint\endcsname}%
            {\csname pgf@anchor@arrow box@\secondpoint\endcsname}%
    }%
}%




\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex ====

\usepgflibrary{shapes.symbols}%

\newif\ifpgf@lib@callout@absolutepointer
\pgfkeys{/pgf/.cd,
    callout pointer arc/.initial=15,
    callout pointer width/.initial=.25cm,
    callout pointer start size/.initial=.2 of callout,
    callout pointer end size/.initial=.1 of callout,
    callout pointer segments/.initial=2,
    callout absolute pointer/.code={\pgf@lib@callout@makeabsolutepointer{#1}},
    callout relative pointer/.code={\pgf@lib@callout@makerelativepointer{#1}},
    callout pointer shorten/.initial=0cm,
}%



\def\pgf@lib@callout@makeabsolutepointer#1{%
    \pgf@lib@callout@absolutepointertrue%
    {%
        \pgftransformshift{#1}%
        \pgfmultipartnode{coordinate}{center}{pgf@lib@callout@pointer}{}%
    }%
}%

\def\pgf@lib@callout@makerelativepointer#1{%
    \pgf@lib@callout@absolutepointerfalse%
    \def\pgf@lib@callout@relativepointer{#1}%
}%
\pgfkeys{/pgf/callout relative pointer=\pgfpointpolar{300}{.5cm}}%


\pgfdeclareshape{ellipse callout}{%
    \savedmacro\ellipsecalloutpoints{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
        \ifdim\pgf@x>\pgf@y%
            \edef\outersep{\the\pgf@x}%
        \else%
            \edef\outersep{\the\pgf@y}%
        \fi%
        \addtosavedmacro\outersep%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@x1.4142136\pgf@x%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum width}}%
    \ifdim\pgf@x<.5\pgf@xa%
      \pgf@x.5\pgf@xa%
    \fi%
    \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y.5\dp\pgfnodeparttextbox%
    \pgf@y1.4142136\pgf@y%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@y<.5\pgf@ya%
      \pgf@y.5\pgf@ya%
    \fi%
    \edef\xpathradius{\the\pgf@x}%
    \edef\ypathradius{\the\pgf@y}%
    \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
    \edef\xradius{\the\pgf@x}%
    \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
    \edef\yradius{\the\pgf@y}%
    \addtosavedmacro\xradius%
    \addtosavedmacro\xpathradius%
    \addtosavedmacro\yradius%
    \addtosavedmacro\ypathradius%
      \pgfmathsetmacro\pointerarc{\pgfkeysvalueof{/pgf/callout pointer arc}}%
        \addtosavedmacro\pointerarc%
      \pgfextract@process\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
      }%
      \ifpgf@lib@callout@absolutepointer%
      \else%
        \pgfextract@process\calloutpointer{%
                \pgfextract@process\borderpoint{%
                    \expandafter\pgfpointborderellipse\expandafter{\pgf@lib@callout@relativepointer}{\pgfqpoint{\xpathradius}{\ypathradius}}%
                }%
                \pgfmathanglebetweenpoints{\pgfpointorigin}{\borderpoint}%
                \let\pointerangle\pgfmathresult%
                \expandafter\pgf@process\expandafter{\pgf@lib@callout@relativepointer}%
                \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
                \edef\pointerradius{\pgfmathresult pt}%
                \pgfpointadd{\borderpoint}{\pgfqpointpolar{\pointerangle}{\pointerradius}}%
                \pgf@xa\pgf@x%
                \pgf@ya\pgf@y%
                \centerpoint%
                \advance\pgf@x\pgf@xa%
                \advance\pgf@y\pgf@ya%
            }%
            \addtosavedmacro\calloutpointer%
            \pgf@lib@callouts@shortenpointer%
            \pgf@lib@ellipsecallout@getpoints%
        \addtosavedmacro\calloutpointeranchor%
        \addtosavedmacro\beforecalloutangle%
        \addtosavedmacro\aftercalloutangle%
    \fi%
  }%
  \savedanchor\centerpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\midpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+.5ex}%
  }%
  \savedanchor\basepoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt\relax%
  }%
  \anchor{center}{\centerpoint}%
  \anchor{mid}{\midpoint}%
  \anchor{mid east}{%
    \ellipsecalloutpoints%
    \pgfmathpointintersectionoflineandarc{\midpoint\advance\pgf@x\xradius}{\midpoint}%
        {\centerpoint}{270}{450}{\xradius and \yradius}%
  }%
  \anchor{mid west}{%
    \ellipsecalloutpoints%
    \pgfmathpointintersectionoflineandarc{\midpoint\advance\pgf@x-\xradius}{\midpoint}%
        {\centerpoint}{90}{270}{\xradius and \yradius}%
  }%
  \anchor{base}{\basepoint}%
  \anchor{base east}{%
    \ellipsecalloutpoints%
    \pgfmathpointintersectionoflineandarc{\basepoint\advance\pgf@x\xradius}{\basepoint}%
        {\centerpoint}{270}{450}{\xradius and \yradius}%
  }%
  \anchor{base west}{%
    \ellipsecalloutpoints%
    \pgfmathpointintersectionoflineandarc{\basepoint\advance\pgf@x-\xradius}{\basepoint}%
        {\centerpoint}{90}{270}{\xradius and \yradius}%
  }%
  \anchor{north}{%
    \ellipsecalloutpoints%
    \centerpoint%
    \advance\pgf@y\yradius\relax%
  }%
  \anchor{south}{%
    \ellipsecalloutpoints%
    \centerpoint%
    \advance\pgf@y-\yradius\relax%
  }%
  \anchor{east}{%
    \ellipsecalloutpoints%
    \centerpoint%
    \advance\pgf@x\xradius\relax%
  }%
  \anchor{west}{%
    \ellipsecalloutpoints%
    \centerpoint%
    \advance\pgf@x-\xradius\relax%
  }%
  \anchor{north west}{%
    \ellipsecalloutpoints%
    \pgf@xa\xradius\relax%
    \pgf@ya\yradius\relax%
    \centerpoint%
    \advance\pgf@y0.7071067\pgf@ya%
    \advance\pgf@x-0.7071067\pgf@xa%
  }%
  \anchor{north east}{%
    \ellipsecalloutpoints%
    \pgf@xa\xradius\relax%
    \pgf@ya\yradius\relax%
    \centerpoint%
    \advance\pgf@y0.7071067\pgf@ya%
    \advance\pgf@x0.7071067\pgf@xa%
  }%
  \anchor{south west}{%
    \ellipsecalloutpoints%
    \pgf@xa\xradius\relax%
    \pgf@ya\yradius\relax%
    \centerpoint%
    \advance\pgf@y-0.7071067\pgf@ya%
    \advance\pgf@x-0.7071067\pgf@xa%
  }%
  \anchor{south east}{%
    \ellipsecalloutpoints%
    \pgf@xa\xradius\relax%
    \pgf@ya\yradius\relax%
    \centerpoint%
    \advance\pgf@y-0.7071067\pgf@ya%
    \advance\pgf@x0.7071067\pgf@xa%
  }%
  \anchor{pointer}{%
    \ellipsecalloutpoints%
    \calloutpointeranchor%
    }%
  \backgroundpath{%
    \ellipsecalloutpoints%
    \ifpgf@lib@callout@absolutepointer%
        \pgfextract@process\calloutpointer{%
                \pgfpointanchor{pgf@lib@callout@pointer}{center}%
            }%
            \pgf@lib@callouts@shortenpointer%
            \pgf@lib@ellipsecallout@getpoints%
            \calloutpointeranchor%
            \ifx\pgf@node@name\pgfutil@empty%
            \else%
                \edef\pgf@sh@@temp{\noexpand\expandafter\noexpand\pgfutil@g@addto@macro\noexpand\csname pgf@sh@np@\pgf@node@name\noexpand\endcsname}%
                \edef\pgf@sh@@@temp{%
                    \noexpand\def\noexpand\calloutpointeranchor{%
                        \noexpand\pgf@x\the\pgf@x%
                        \noexpand\pgf@y\the\pgf@y%
                    }%
                }%
                \expandafter\pgf@sh@@temp\expandafter{\pgf@sh@@@temp}
            \fi%
        \fi%
        \pgfpathmoveto{\calloutpointer}%
        \pgfpathlineto{\aftercalloutpointer}%
        \ifdim\aftercalloutangle pt<\beforecalloutangle pt\relax%
            \pgfpatharc{\aftercalloutangle}{\beforecalloutangle}{\xpathradius and \ypathradius}%
        \else%
            \pgfpatharc{\aftercalloutangle}{360}{\xpathradius and \ypathradius}%
            \pgfpatharc{0}{\beforecalloutangle}{\xpathradius and \ypathradius}%
        \fi%
        \pgfpathclose%
  }%
  \anchorborder{%
    \pgfextract@process\externalpoint{}%
    \ellipsecalloutpoints%
    \pgfpointadd{\pgfpointborderellipse{\externalpoint}{\pgfpoint{\xradius}{\yradius}}%
    }{\centerpoint}%
  }%
}%

\def\pgf@lib@ellipsecallout@getpoints{%
    \pgfextract@process\borderpoint{%
        \pgfpointborderellipse{%
            \centerpoint%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \calloutpointer%
            \advance\pgf@x-\pgf@xa%
            \advance\pgf@y-\pgf@ya%
        }{\pgfqpoint{\xpathradius}{\ypathradius}}%
    }%
    \pgfmathangleonellipse{\borderpoint}{\xpathradius and \ypathradius}%
    \pgfutil@tempdima\pointerarc pt\relax%
    \pgfutil@tempdimb\pgfmathresult pt\relax%
    \advance\pgfutil@tempdimb-.5\pgfutil@tempdima%
    \ifdim\pgfutil@tempdimb<0pt\relax%
        \advance\pgfutil@tempdimb360pt\relax%
    \fi%
    \edef\beforecalloutangle{\pgfmath@tonumber{\pgfutil@tempdimb}}%
    \advance\pgfutil@tempdimb\pgfutil@tempdima%
    \ifdim\pgfutil@tempdimb<360pt\relax%
    \else%
        \advance\pgfutil@tempdimb-360pt\relax%
    \fi%
    \edef\aftercalloutangle{\pgfmath@tonumber{\pgfutil@tempdimb}}%
    \pgfextract@process\beforecalloutpointer{%
        \pgfpointadd{\centerpoint}{%
            \pgfpointpolar{\beforecalloutangle}{\xpathradius and \ypathradius}%
        }%
    }%
    \pgfextract@process\aftercalloutpointer{%
        \pgfpointadd{\centerpoint}{%
            \pgfpointpolar{\aftercalloutangle}{\xpathradius and \ypathradius}%
        }%
    }%
    \pgf@lib@callouts@pointeranchor%
}%



\pgfkeys{/pgf/callout pointer anchor aspect/.initial=1}%

\def\pgf@lib@callouts@pointeranchor{%
    \pgfutil@tempdimb\outersep\relax%
    \pgfmathanglebetweenlines{\calloutpointer}{\aftercalloutpointer}{\calloutpointer}{\beforecalloutpointer}%
    \pgfmathdivide@{\pgfmathresult}{2}%
    \pgfutil@tempdima\pgfmathresult pt\relax%
    \pgfmathcosec@{\pgfmathresult}%
    \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb%
    \pgfmathanglebetweenpoints{\calloutpointer}{\aftercalloutpointer}%
    \advance\pgfutil@tempdima\pgfmathresult pt\relax%
    \advance\pgfutil@tempdima180pt\relax%
    \pgfextract@process\calloutpointeranchor{%
        \pgfpointadd{%
            \pgfmathparse{\pgfkeysvalueof{/pgf/callout pointer anchor aspect}}%
            \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb%
            \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
        }{%
            \calloutpointer%
        }%
    }%
}%

\def\pgf@lib@callouts@shortenpointer{%
    \pgfextract@process\calloutpointer{%
        \pgfmathanglebetweenpoints{\calloutpointer}{\centerpoint}%
        \let\angle\pgfmathresult%
        \pgfmathsin@{\angle}%
        \let\sinpointerangle\pgfmathresult%
        \pgfmathcos@{\angle}%
        \let\cospointerangle\pgfmathresult%
        \pgfpointadd{\calloutpointer}{%
            \pgfmathsetlength\pgfutil@tempdima{\pgfkeysvalueof{/pgf/callout pointer shorten}}%
            \pgf@x\cospointerangle\pgfutil@tempdima%
            \pgf@y\sinpointerangle\pgfutil@tempdima%
        }%
    }%
}%


\pgfdeclareshape{rectangle callout}{%
    \savedmacro\rectanglecalloutpoints{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum width}}%
        \ifdim\pgf@x<.5\pgf@xa%
            \pgf@x.5\pgf@xa%
        \fi%
        \edef\xtemp{\the\pgf@x}%
        \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y.5\dp\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@y<.5\pgf@ya%
            \pgf@y.5\pgf@ya%
        \fi%
        \edef\ytemp{\the\pgf@y}%
        \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
        \edef\xlength{\the\pgf@x}%
        \edef\ylength{\the\pgf@y}%
        \addtosavedmacro\xlength%
        \addtosavedmacro\ylength%
        \pgfmathsetlengthmacro\pointerwidth{\pgfkeysvalueof{/pgf/callout pointer width}}%
        \addtosavedmacro\pointerwidth%
        \pgfextract@process\centerpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y.5\ht\pgfnodeparttextbox%
            \advance\pgf@y-.5\dp\pgfnodeparttextbox%
        }%
        \ifpgf@lib@callout@absolutepointer%
        \else%
            \pgfextract@process\calloutpointer{%
                \pgfextract@process\borderpoint{%
                    \expandafter\pgfpointborderrectangle\expandafter{\pgf@lib@callout@relativepointer}%
                        {\pgfqpoint{\xtemp}{\ytemp}}%
                }%
                \pgfmathanglebetweenpoints{\pgfpointorigin}{\borderpoint}%
                \let\pointerangle\pgfmathresult%
                \expandafter\pgf@process\expandafter{\pgf@lib@callout@relativepointer}%
                \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
                \edef\pointerradius{\pgfmathresult pt}%
                \pgfpointadd{\borderpoint}{\pgfqpointpolar{\pointerangle}{\pointerradius}}%
                \pgf@xa\pgf@x%
                \pgf@ya\pgf@y%
                \centerpoint%
                \advance\pgf@x\pgf@xa%
                \advance\pgf@y\pgf@ya%
            }%
            \pgf@lib@callouts@shortenpointer%
            \addtosavedmacro\calloutpointer%
            \pgf@lib@rectanglecallout@pointer%
            \addtosavedmacro\calloutpointeranchor%
            \addtosavedmacro\beforecalloutpointer%
            \addtosavedmacro\aftercalloutpointer%
            \addtosavedmacro\firstpoint%
            \addtosavedmacro\secondpoint%
            \addtosavedmacro\thirdpoint%
            \addtosavedmacro\fourthpoint%
        \fi%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt\relax%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+.5em}%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{%
        \rectanglecalloutpoints%
        \midpoint%
        \advance\pgf@x\xlength\relax%
    }%
    \anchor{mid west}{%
        \rectanglecalloutpoints%
        \midpoint%
        \advance\pgf@x-\xlength\relax%
    }%
    \anchor{base}{\basepoint}%
    \anchor{base east}{%
        \rectanglecalloutpoints%
        \basepoint%
        \advance\pgf@x\xlength\relax%
    }%
    \anchor{base west}{%
        \rectanglecalloutpoints%
        \basepoint%
        \advance\pgf@x-\xlength\relax%
    }%
    \anchor{north}{%
        \rectanglecalloutpoints%
        \centerpoint%
        \advance\pgf@y\ylength\relax%
    }%
    \anchor{south}{%
        \rectanglecalloutpoints%
        \centerpoint%
        \advance\pgf@y-\ylength\relax%
    }%
    \anchor{east}{%
        \rectanglecalloutpoints%
        \centerpoint%
        \advance\pgf@x\xlength\relax%
    }%
    \anchor{west}{%
        \rectanglecalloutpoints%
        \centerpoint%
        \advance\pgf@x-\xlength\relax%
    }%
    \anchor{north east}{%
        \rectanglecalloutpoints%
        \centerpoint%
        \advance\pgf@x\xlength\relax%
        \advance\pgf@y\ylength\relax%
    }%
    \anchor{south west}{%
        \rectanglecalloutpoints%
        \centerpoint%
        \advance\pgf@x-\xlength\relax%
        \advance\pgf@y-\ylength\relax%
    }%
    \anchor{south east}{%
        \rectanglecalloutpoints%
        \centerpoint%
        \advance\pgf@x\xlength\relax%
        \advance\pgf@y-\ylength\relax%
    }%
    \anchor{north west}{%
        \rectanglecalloutpoints%
        \centerpoint%
        \advance\pgf@x-\xlength\relax%
        \advance\pgf@y\ylength\relax%
    }%
    \anchor{pointer}{%
        \rectanglecalloutpoints%
        \calloutpointeranchor%
    }%
    \backgroundpath{%
        \rectanglecalloutpoints%
        \pgf@x\xlength\relax%
        \pgf@y\ylength\relax%
        \pgfmathaddtolength\pgf@x{-\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathaddtolength\pgf@y{-\pgfkeysvalueof{/pgf/outer ysep}}%
        \edef\xtemp{\the\pgf@x}%
        \edef\ytemp{\the\pgf@y}%
        \ifpgf@lib@callout@absolutepointer%
            \pgfextract@process\calloutpointer{%
                \pgfpointanchor{pgf@lib@callout@pointer}{center}%
            }%
            \pgf@lib@callouts@shortenpointer%
            \pgfmathsetlengthmacro\pointerwidth{\pgfkeysvalueof{/pgf/callout pointer width}}%
            \pgf@lib@rectanglecallout@pointer%
            \ifx\pgf@node@name\pgfutil@empty%
            \else%
                \edef\pgf@sh@@temp{\noexpand\expandafter\noexpand\pgfutil@g@addto@macro\noexpand\csname pgf@sh@np@\pgf@node@name\noexpand\endcsname}%
                \edef\pgf@sh@@@temp{%
                    \noexpand\def\noexpand\calloutpointeranchor{%
                        \noexpand\pgf@x\the\pgf@x%
                        \noexpand\pgf@y\the\pgf@y%
                    }%
                }%
                \expandafter\pgf@sh@@temp\expandafter{\pgf@sh@@@temp}%
            \fi%
        \fi%
        {%
            \pgfsetcornersarced{\pgfqpoint{0pt}{0pt}}%
            \pgfpathmoveto{\beforecalloutpointer}%
        }%
        \pgfpathlineto{\calloutpointer}%
        {%
            \pgfsetcornersarced{\pgfqpoint{0pt}{0pt}}%
            \pgfpathlineto{\aftercalloutpointer}%
        }%
        {%
            \pgftransformshift{\centerpoint}%
            \pgfpathlineto{\firstpoint}%
            \pgfpathlineto{\secondpoint}%
            \pgfpathlineto{\thirdpoint}%
            \pgfpathlineto{\fourthpoint}%
            {%
                \pgfsetcornersarced{\pgfqpoint{0pt}{0pt}}%
                \pgfpathclose%
            }%
        }
    }%
    \anchorborder{%
        \pgfextract@process\externalpoint{}%
        \rectanglecalloutpoints%
        \pgfpointadd{\centerpoint}%
        {%
            \pgfpointborderrectangle{\pgfpointadd{\centerpoint}{\externalpoint}}%
            {\pgfqpoint{\xlength}{\ylength}}%
        }%
    }%
}%



\def\pgf@lib@rectanglecallout@pointer{%
    \pgfextract@process\borderpoint{%
            \pgfpointborderrectangle{%
                \centerpoint%
                \pgf@xa\pgf@x%
                \pgf@ya\pgf@y%
                \calloutpointer%
                \advance\pgf@x-\pgf@xa%
                \advance\pgf@y-\pgf@ya%
            }{\pgfqpoint{\xtemp}{\ytemp}}%
        }%
    \pgfmathanglebetweenpoints{\pgfpointorigin}{\borderpoint}%
    \let\borderangle\pgfmathresult%
    \pgfutil@tempdima\pointerwidth\relax%
    \pgf@xa\xtemp\relax%
    \advance\pgf@xa-\pgfutil@tempdima%
    \pgf@ya\ytemp\relax%
    \advance\pgf@ya-\pgfutil@tempdima%
    \pgf@process{%
        \pgfutil@ifundefined{pgf@corner@arc}{\pgfpointorigin}{%
            \expandafter\pgfqpoint\pgf@corner@arc}%
    }%
    \advance\pgf@xa-\pgf@x%
    \advance\pgf@ya-\pgf@y%
    \borderpoint%
    \pgf@xb\pgf@x%
    \pgf@yb\pgf@y%
    \pgf@xc0pt\relax%
    \pgf@yc0pt\relax%
    \pgfmathanglebetweenpoints{\pgfpointorigin}{\pgfqpoint{\xtemp}{\ytemp}}%
    \ifdim\borderangle pt<\pgfmathresult pt\relax%
        \pgf@yc.5\pgfutil@tempdima%
        \ifdim\pgf@yb>\pgf@ya%
            \pgf@yb\pgf@ya%
        \fi%
        \edef\firstpoint{\noexpand\pgfqpoint{\xtemp}{\ytemp}}%
        \edef\secondpoint{\noexpand\pgfqpoint{-\xtemp}{\ytemp}}%
        \edef\thirdpoint{\noexpand\pgfqpoint{-\xtemp}{-\ytemp}}%
        \edef\fourthpoint{\noexpand\pgfqpoint{\xtemp}{-\ytemp}}%
    \else%
        \pgfmathanglebetweenpoints{\pgfpointorigin}{\pgfqpoint{-\xtemp}{\ytemp}}%
        \ifdim\borderangle pt<\pgfmathresult pt\relax%
            \pgf@xc-.5\pgfutil@tempdima%
            \ifdim\pgf@xb>\pgf@xa%
                \pgf@xb\pgf@xa%
            \else%
                \ifdim\pgf@xb<-\pgf@xa%
                    \pgf@xb-\pgf@xa%
                \fi%
            \fi%
            \edef\firstpoint{\noexpand\pgfqpoint{-\xtemp}{\ytemp}}%
            \edef\secondpoint{\noexpand\pgfqpoint{-\xtemp}{-\ytemp}}%
            \edef\thirdpoint{\noexpand\pgfqpoint{\xtemp}{-\ytemp}}%
            \edef\fourthpoint{\noexpand\pgfqpoint{\xtemp}{\ytemp}}%
        \else%
            \pgfmathanglebetweenpoints{\pgfpointorigin}{\pgfqpoint{-\xtemp}{-\ytemp}}%
            \ifdim\borderangle pt<\pgfmathresult pt\relax%
                \pgf@yc-.5\pgfutil@tempdima%
                \ifdim\pgf@yb>\pgf@ya%
                    \pgf@yb\pgf@ya%
                \else%
                    \ifdim\pgf@yb<-\pgf@ya%
                        \pgf@yb-\pgf@ya%
                    \fi%
                \fi%
                \edef\firstpoint{\noexpand\pgfqpoint{-\xtemp}{-\ytemp}}%
                \edef\secondpoint{\noexpand\pgfqpoint{\xtemp}{-\ytemp}}%
                \edef\thirdpoint{\noexpand\pgfqpoint{\xtemp}{\ytemp}}%
                \edef\fourthpoint{\noexpand\pgfqpoint{-\xtemp}{\ytemp}}%
            \else%
                \pgfmathanglebetweenpoints{\pgfpointorigin}{\pgfqpoint{\xtemp}{-\ytemp}}%
                \ifdim\borderangle pt<\pgfmathresult pt\relax%
                    \pgf@xc.5\pgfutil@tempdima%
                    \ifdim\pgf@xb>\pgf@xa%
                        \pgf@xb\pgf@xa%
                    \else%
                        \ifdim\pgf@xb<-\pgf@xa%
                            \pgf@xb-\pgf@xa%
                        \fi%
                    \fi%
                    \edef\firstpoint{\noexpand\pgfqpoint{\xtemp}{-\ytemp}}%
                    \edef\secondpoint{\noexpand\pgfqpoint{\xtemp}{\ytemp}}%
                    \edef\thirdpoint{\noexpand\pgfqpoint{-\xtemp}{\ytemp}}%
                    \edef\fourthpoint{\noexpand\pgfqpoint{-\xtemp}{-\ytemp}}%
                \else%
                    \pgf@yc.5\pgfutil@tempdima%
                    \ifdim\pgf@yb<-\pgf@ya%
                        \pgf@yb-\pgf@ya%
                    \fi%
                    \edef\firstpoint{\noexpand\pgfqpoint{\xtemp}{\ytemp}}%
                    \edef\secondpoint{\noexpand\pgfqpoint{-\xtemp}{\ytemp}}%
                    \edef\thirdpoint{\noexpand\pgfqpoint{-\xtemp}{-\ytemp}}%
                    \edef\fourthpoint{\noexpand\pgfqpoint{\xtemp}{-\ytemp}}%
                \fi%
            \fi%
        \fi%
    \fi%
    \pgfextract@process\beforecalloutpointer{%
        \centerpoint%
        \advance\pgf@x\pgf@xb%
        \advance\pgf@y\pgf@yb%
        \advance\pgf@x-\pgf@xc%
        \advance\pgf@y-\pgf@yc%
    }%
    \pgfextract@process\aftercalloutpointer{%
        \centerpoint%
        \advance\pgf@x\pgf@xb%
        \advance\pgf@y\pgf@yb%
        \advance\pgf@x\pgf@xc%
        \advance\pgf@y\pgf@yc%
    }%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@x>\pgf@y%
        \edef\outersep{\the\pgf@x}%
    \else%
        \edef\outersep{\the\pgf@y}%
    \fi%
    \pgf@lib@callouts@pointeranchor%
}%


\def\pgf@lib@callout@setpointersize#1{%
    \edef\pgf@lib@callout@temp{#1}%
    \edef\pgf@marshall{\noexpand\pgfutil@in@{of callout}{\pgf@lib@callout@temp}}%
    \pgf@marshall%
    \ifpgfutil@in@%
        \expandafter\pgf@xa\expandafter\pgf@lib@callout@setpointerrelativesize%
            \pgf@lib@callout@temp\pgf@lib@stop\pgf@x%
        \expandafter\pgf@ya\expandafter\pgf@lib@callout@setpointerrelativesize%
            \pgf@lib@callout@temp\pgf@lib@stop\pgf@y%
    \else%
        \edef\pgf@marshall{\noexpand\pgfutil@in@{and}{\pgf@lib@callout@temp}}%
        \pgf@marshall%
        \ifpgfutil@in@%
            \expandafter\pgf@lib@callout@setpointerbothsizes\pgf@lib@callout@temp\pgf@lib@stop%
        \else%
            \pgfmathsetlength\pgf@xa{#1}%
            \pgfmathsetlength\pgf@ya{#1}%
        \fi%
    \fi%
}%
\def\pgf@lib@callout@setpointerrelativesize#1of callout#2\pgf@lib@stop{#1}%
\def\pgf@lib@callout@setpointerbothsizes#1and#2\pgf@lib@stop{%
    \pgfmathsetlength\pgf@xa{#2}%
    \pgfmathsetlength\pgf@ya{#2}%
}%

\pgfdeclareshape{cloud callout}{%
    \savedanchor\calloutpointer{%
        \pgfutil@ifundefined{pgf@sh@s@cloud}{%
            \pgferror{I cannot find the cloud shape. Please load the `symbol shapes' library}}{}%
        \pgf@sh@s@cloud%
        \pgf@sh@savedmacros%
        \pgfextract@process\centerpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y.5\ht\pgfnodeparttextbox%
            \advance\pgf@y-.5\dp\pgfnodeparttextbox%
        }%
        \ifpgf@lib@callout@absolutepointer%
      \else%
        \pgfextract@process\calloutpointer{%
                \pgfextract@process\borderpoint{%
                    \expandafter\pgfpointborderellipse\expandafter{\pgf@lib@callout@relativepointer}%
                        {\pgfqpoint{\xouterradius}{\youterradius}}%
                }%
                \pgfmathanglebetweenpoints{\pgfpointorigin}{\borderpoint}%
                \let\pointerangle\pgfmathresult%
                \expandafter\pgf@process\expandafter{\pgf@lib@callout@relativepointer}%
                \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
                \edef\pointerradius{\pgfmathresult pt}%
                \pgfpointadd{\borderpoint}{\pgfqpointpolar{\pointerangle}{\pointerradius}}%
                \pgf@xa\pgf@x%
                \pgf@ya\pgf@y%
                \centerpoint%
                \advance\pgf@x\pgf@xa%
                \advance\pgf@y\pgf@ya%
            }%
            \pgf@lib@callouts@shortenpointer%
        \fi%
    }%
    \anchor{pointer}{%
        \calloutpointer%
    }%
    \inheritsavedanchors[from=cloud]%
    \inheritanchor[from=cloud]{center}%
    \inheritanchor[from=cloud]{base}%
    \inheritanchor[from=cloud]{mid}%
    \inheritanchor[from=cloud]{north}%
    \inheritanchor[from=cloud]{south}%
    \inheritanchor[from=cloud]{east}%
    \inheritanchor[from=cloud]{west}%
    \inheritanchor[from=cloud]{north east}%
    \inheritanchor[from=cloud]{south west}%
    \inheritanchor[from=cloud]{south east}%
    \inheritanchor[from=cloud]{north west}%
    \inheritanchorborder[from=cloud]%
    \backgroundpath{%
        \pgf@sh@bg@cloud%
        \ifpgf@lib@callout@absolutepointer%
        \pgfextract@process\calloutpointer{%
                \pgfpointanchor{pgf@lib@callout@pointer}{center}%
            }%
            \ifx\pgf@node@name\pgfutil@empty%
            \else%
                \edef\pgf@sh@@temp{\noexpand\expandafter\noexpand\pgfutil@g@addto@macro\noexpand\csname pgf@sh@np@\pgf@node@name\noexpand\endcsname}%
                \edef\pgf@sh@@@temp{%
                    \noexpand\def\noexpand\calloutpointeranchor{%
                        \noexpand\pgf@x\the\pgf@x%
                        \noexpand\pgf@y\the\pgf@y%
                    }%
                }%
                \expandafter\pgf@sh@@temp\expandafter{\pgf@sh@@@temp}
            \fi%
        \fi%
        \pgfextract@process\borderpoint{%
            \pgfpointadd{%
                \pgfpointborderellipse{\pgfpointdiff{\centerpoint}{\calloutpointer}}%
                        {\pgfqpoint{\xouterradius}{\youterradius}}%
            }{\centerpoint}%
        }%
        \pgf@lib@callouts@shortenpointer%
        \pgfmathanglebetweenpoints{\calloutpointer}{\centerpoint}%
        \let\angle\pgfmathresult%
        \pgfmathsin@{\angle}%
        \let\sinpointerangle\pgfmathresult%
        \pgfmathcos@{\angle}%
        \let\cospointerangle\pgfmathresult%
        \pgf@x\xouterradius\relax%
        \pgf@x2.0\pgf@x%
        \pgf@y\yinnerradius\relax%
        \pgf@y2.0\pgf@y%
        \pgf@lib@callout@setpointersize{\pgfkeysvalueof{/pgf/callout pointer start size}}%
        \pgf@xb\pgf@xa%
        \pgf@yb\pgf@ya%
        \pgf@lib@callout@setpointersize{\pgfkeysvalueof{/pgf/callout pointer end size}}%
        \advance\pgf@xb-\pgf@xa%
        \advance\pgf@yb-\pgf@ya%
        \pgfmathsetcount\c@pgf@counta{\pgfkeysvalueof{/pgf/callout pointer segments}}%
        \divide\pgf@xb\c@pgf@counta%
        \divide\pgf@yb\c@pgf@counta%
        \pgf@process{\pgfpointdiff{\borderpoint}{\calloutpointer}}%
        \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
        \pgfutil@tempdima\pgfmathresult pt\relax%
        \divide\pgfutil@tempdima\c@pgf@counta%
        \pgfutil@tempdimb0pt\relax%
        \pgfmathloop%
        \ifnum\pgfmathcounter>\c@pgf@counta%
        \else%
            {%
                \pgf@xa.5\pgf@xa%
                \pgf@ya.5\pgf@ya%
                \edef\tempxradius{\the\pgf@xa}%
                \edef\tempyradius{\the\pgf@ya}%
                \pgfpathellipse%
                    {%
                        \calloutpointer%
                        \advance\pgf@x\cospointerangle\pgfutil@tempdimb%
                        \advance\pgf@y\sinpointerangle\pgfutil@tempdimb%
                    }%
                    {\pgfqpoint{\tempxradius}{0pt}}{\pgfqpoint{0pt}{\tempyradius}}%
            }%
            \advance\pgf@xa\pgf@xb%
            \advance\pgf@ya\pgf@yb%
            \advance\pgfutil@tempdimb\pgfutil@tempdima%
        \repeatpgfmathloop%
    }%
    \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@cloud callout\endcsname{%
        \c@pgf@counta\puffs\relax%
        \pgfmathloop%
            \ifnum\c@pgf@counta>0\relax%
                \pgfutil@ifundefined{pgf@anchor@cloud callout@puff\space\the\c@pgf@counta}{%
                \expandafter\xdef\csname pgf@anchor@cloud callout@puff\space\the\c@pgf@counta\endcsname{%
                    \noexpand\pgf@sh@@cloudpuffanchor{\the\c@pgf@counta}%
                }%
            }{\c@pgf@counta0\relax}%
            \advance\c@pgf@counta-1\relax%
        \repeatpgfmathloop%
    }%
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.code.tex ====

\ProvidesFileRCS{pgflibraryshapes.code.tex}


\usepgflibrary{shapes.geometric}%
\usepgflibrary{shapes.misc}%
\usepgflibrary{shapes.symbols}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex ====

\ProvidesFileRCS{pgflibraryshapes.geometric.code.tex}

\pgfdeclareshape{ellipse}
{%
  \savedanchor\centerpoint{%
    \pgf@x=.5\wd\pgfnodeparttextbox%
    \pgf@y=.5\ht\pgfnodeparttextbox%
    \advance\pgf@y by-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\radius{%
    \pgf@y=.5\ht\pgfnodeparttextbox%
    \advance\pgf@y by.5\dp\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@y by\pgf@yb%
    \pgf@x=.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@x by\pgf@xb%
    \pgf@x=1.4142136\pgf@x%
    \pgf@y=1.4142136\pgf@y%
    \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@y<.5\pgf@yc%
      \pgf@y=.5\pgf@yc%
    \fi%
    \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/minimum width}}%
    \ifdim\pgf@x<.5\pgf@xc%
      \pgf@x=.5\pgf@xc%
    \fi%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \advance\pgf@x by\pgf@xb%
    \advance\pgf@y by\pgf@yb%
  }%

  \anchor{center}{\centerpoint}%
  \anchor{mid}{\centerpoint\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{base}{\centerpoint\pgf@y=0pt}%
  \anchor{north}
  {
    \pgf@process{\radius}
    \pgf@ya=\pgf@y%
    \pgf@process{\centerpoint}
    \advance\pgf@y by\pgf@ya
  }%
  \anchor{south}
  {
    \pgf@process{\radius}
    \pgf@ya=\pgf@y%
    \pgf@process{\centerpoint}
    \advance\pgf@y by-\pgf@ya
  }%
  \anchor{west}
  {
    \pgf@process{\radius}
    \pgf@xa=\pgf@x%
    \pgf@process{\centerpoint}
    \advance\pgf@x by-\pgf@xa
  }%
  \anchor{mid west}
  {%
    \pgf@process{\radius}
    \pgf@xa=\pgf@x%
    \pgf@process{\centerpoint}
    \advance\pgf@x by-\pgf@xa%
    \pgfmathsetlength\pgf@y{.5ex}
  }%
  \anchor{base west}
  {%
    \pgf@process{\radius}
    \pgf@xa=\pgf@x%
    \pgf@process{\centerpoint}
    \advance\pgf@x by-\pgf@xa%
    \pgf@y=0pt
  }%
  \anchor{north west}
  {
    \pgf@process{\radius}
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\centerpoint}
    \advance\pgf@x by-0.707107\pgf@xa
    \advance\pgf@y by0.707107\pgf@ya
  }%
  \anchor{south west}
  {
    \pgf@process{\radius}
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\centerpoint}
    \advance\pgf@x by-0.707107\pgf@xa
    \advance\pgf@y by-0.707107\pgf@ya
  }%
  \anchor{east}
  {%
    \pgf@process{\radius}
    \pgf@xa=\pgf@x%
    \pgf@process{\centerpoint}
    \advance\pgf@x by\pgf@xa
  }%
  \anchor{mid east}
  {%
    \pgf@process{\radius}
    \pgf@xa=\pgf@x%
    \pgf@process{\centerpoint}
    \advance\pgf@x by\pgf@xa%
    \pgfmathsetlength\pgf@y{.5ex}
  }%
  \anchor{base east}
  {%
    \pgf@process{\radius}
    \pgf@xa=\pgf@x%
    \pgf@process{\centerpoint}
    \advance\pgf@x by\pgf@xa%
    \pgf@y=0pt
  }%
  \anchor{north east}
  {
    \pgf@process{\radius}
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\centerpoint}
    \advance\pgf@x by0.707107\pgf@xa
    \advance\pgf@y by0.707107\pgf@ya
  }%
  \anchor{south east}
  {
    \pgf@process{\radius}
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\centerpoint}
    \advance\pgf@x by0.707107\pgf@xa
    \advance\pgf@y by-0.707107\pgf@ya
  }%
  \anchorborder{%
    \edef\pgf@marshal{%
      \noexpand\pgfpointborderellipse
      {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
      {\noexpand\radius}%
    }%
    \pgf@marshal%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \centerpoint%
    \advance\pgf@x by\pgf@xa%
    \advance\pgf@y by\pgf@ya%
  }%

  \backgroundpath
  {
    \pgf@process{\radius}%
    \pgfutil@tempdima=\pgf@x%
    \pgfutil@tempdimb=\pgf@y%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \advance\pgfutil@tempdima by-\pgf@xb%
    \advance\pgfutil@tempdimb by-\pgf@yb%
    \pgfpathellipse{\centerpoint}{\pgfqpoint{\pgfutil@tempdima}{0pt}}{\pgfqpoint{0pt}{\pgfutil@tempdimb}}%
  }%
}%





\pgfkeys{/pgf/.cd,
    aspect/.code={\pgfsetshapeaspect{#1}},%
    shape aspect/.initial=1,%
    shape aspect/.code={%
        \pgfkeys{/pgf/aspect={#1}}%
        \pgfkeyssetvalue{/pgf/shape aspect}{#1}
    }%
}%


\def\pgfsetshapeaspect#1{%
  \def\pgfshapeaspect{#1}%
  \pgfutil@tempdima=#1pt%
  \pgfutil@tempdima=.125\pgfutil@tempdima%
  \c@pgf@counta=\pgfutil@tempdima\relax%
  \pgfutil@tempdima=8192pt%
  \divide\pgfutil@tempdima by\c@pgf@counta%
  \edef\pgfshapeaspectinverse{\pgf@sys@tonumber{\pgfutil@tempdima}}%
}%

\pgfsetshapeaspect{1}%

\pgfdeclareshape{diamond}
{%
  \savedanchor\outernortheast{%
    \pgf@xa=.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@xa by\pgf@xc%
    \pgf@ya=.5\ht\pgfnodeparttextbox%
    \advance\pgf@ya by.5\dp\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@ya by\pgf@yc%
    \pgf@x=\pgf@xa%
    \advance\pgf@x by\pgfshapeaspect\pgf@ya%
    \pgf@y=\pgfshapeaspectinverse\pgf@xa%
    \advance\pgf@y by\pgf@ya%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgf@xb=.5\pgf@xb%
    \ifdim\pgf@x<\pgf@xb%
      \pgf@x=\pgf@xb%
    \fi%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
    \pgf@yb=.5\pgf@yb%
    \ifdim\pgf@y<\pgf@yb%
      \pgf@y=\pgf@yb%
    \fi%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \advance\pgf@x by\pgf@xa%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \advance\pgf@y by\pgf@ya%
  }%
  \savedanchor\text{%
    \pgf@x=-.5\wd\pgfnodeparttextbox%
    \pgf@y=-.5\ht\pgfnodeparttextbox%
    \advance\pgf@y by.5\dp\pgfnodeparttextbox%
  }%

  \anchor{text}{\text}%
  \anchor{center}{\pgfpointorigin}%
  \anchor{mid}{%
    \pgf@process{\text}%
    \pgf@x=0pt%
    \pgfmathsetlength\pgf@ya{.5ex}%
    \advance\pgf@y by\pgf@ya%
  }%
  \anchor{base}{\pgf@process{\text}\pgf@x=0pt}%
  \anchor{north}{\pgf@process{\outernortheast}\pgf@x=0pt}%
  \anchor{south}{\pgf@process{\outernortheast}\pgf@x=0pt\pgf@y=-\pgf@y}%
  \anchor{west}{\pgf@process{\outernortheast}\pgf@x=-\pgf@x\pgf@y=0pt}%
  \anchor{north west}{\pgf@process{\outernortheast}\pgf@x=-.5\pgf@x\pgf@y=.5\pgf@y}%
  \anchor{south west}{\pgf@process{\outernortheast}\pgf@x=-.5\pgf@x\pgf@y=-.5\pgf@y}%
  \anchor{east}{\pgf@process{\outernortheast}\pgf@y=0pt}%
  \anchor{north east}{\pgf@process{\outernortheast}\pgf@x=.5\pgf@x\pgf@y=.5\pgf@y}%
  \anchor{south east}{\pgf@process{\outernortheast}\pgf@x=.5\pgf@x\pgf@y=-.5\pgf@y}%
  \anchorborder{%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\outernortheast}%
    \ifdim\pgf@xa>0pt%
    \else%
      \pgf@x=-\pgf@x%
    \fi%
    \ifdim\pgf@ya>0pt%
    \else%
      \pgf@y=-\pgf@y%
    \fi%
    \edef\pgf@marshal{%
      \noexpand\pgfpointintersectionoflines
      {\noexpand\pgfpointorigin}
      {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}
      {\noexpand\pgfqpoint{\the\pgf@x}{0pt}}
      {\noexpand\pgfqpoint{0pt}{\the\pgf@y}}%
    }%
    \pgf@process{\pgf@marshal}%
  }%

  \backgroundpath{
    \pgf@process{\outernortheast}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgfmathsetlength{\pgf@xa}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@ya}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \advance\pgf@xc by-1.414213\pgf@xa%
    \advance\pgf@yc by-1.414213\pgf@ya%
    \pgfpathmoveto{\pgfqpoint{\pgf@xc}{0pt}}%
    \pgfpathlineto{\pgfqpoint{0pt}{\pgf@yc}}%
    \pgfpathlineto{\pgfqpoint{-\pgf@xc}{0pt}}%
    \pgfpathlineto{\pgfqpoint{0pt}{-\pgf@yc}}%
    \pgfpathclose%
  }%
}%






\newif\ifpgf@lib@shapes@starouterradiususesratio
\pgf@lib@shapes@starouterradiususesratiotrue


\pgfkeys{/pgf/.cd,
    star points/.initial=5,
    star point height/.initial=.5cm,
    star point height/.code={%
        \def\pgf@lib@temp{#1}%
        \pgfkeyslet{/pgf/star point height}{\pgf@lib@temp}%
        \pgf@lib@shapes@starouterradiususesratiofalse%
    },
    star point ratio/.initial=1.5,
    star point ratio/.code={%
        \def\pgf@lib@temp{#1}%
        \pgfkeyslet{/pgf/star point ratio}{\pgf@lib@temp}%
        \pgf@lib@shapes@starouterradiususesratiotrue%
    },%
    star rotate/.style={/pgf/shape border rotate={#1}},%
}%


\pgfdeclareshape{star}{%
    \savedmacro\totalstarpoints{%
        \pgfmathsetcounter{pgf@counta}{\pgfkeysvalueof{/pgf/star points}}%
        \multiply\c@pgf@counta2\relax%
        \edef\totalstarpoints{\the\c@pgf@counta}%
    }%
    \savedmacro\anglestep{%
        \pgfmathdivide{180}{\pgfkeysvalueof{/pgf/star points}}%
        \let\anglestep\pgfmathresult%
    }%
    \savedmacro\calculateradii{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y.5\dp\pgfnodeparttextbox%
        \ifdim\pgf@y>\pgf@x%
            \pgf@x\pgf@y%
        \fi%
        \pgf@x1.41421\pgf@x%
        \edef\innerradius{\the\pgf@x}%
        \ifpgf@lib@shapes@starouterradiususesratio%
            \pgfmathparse{\pgfkeysvalueof{/pgf/star point ratio}}%
            \expandafter\pgf@x\pgfmathresult\pgf@x%
        \else%
            \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/star point height}}%
        \fi%
        \pgf@xc\pgf@x%
        \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum width}}%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@ya>\pgf@xa%
            \pgf@xa\pgf@ya%
        \fi%
        \ifdim\pgf@x<.5\pgf@xa%
        \pgf@x.5\pgf@xa%
       \fi%
       \edef\outerradius{\the\pgf@x}%
       \ifdim\pgf@x>\pgf@xc%
        \ifpgf@lib@shapes@starouterradiususesratio%
            \pgfmathreciprocal{\pgfkeysvalueof{/pgf/star point ratio}}%
            \pgf@xa\pgfmathresult\pgf@x\relax%
            \edef\innerradius{\the\pgf@xa}%
            \else%
                \pgf@xa\pgf@x\relax%
                \pgfmathaddtolength\pgf@xa{-\pgfkeysvalueof{/pgf/star point height}}%
                \edef\innerradius{\the\pgf@xa}%
            \fi%
        \fi%
        \edef\outerradius{\the\pgf@x}%
        \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
        \ifdim\pgf@ya>\pgf@xa%
            \pgf@xa\pgf@ya%
        \fi
        \pgfmathdivide{180}{\pgfkeysvalueof{/pgf/star points}}%
        \let\angletofirstpoint\pgfmathresult%
        \pgfmathmultiply@{\angletofirstpoint}{2}%
        \let\angletosecondpoint\pgfmathresult%
        \pgfmathanglebetweenlines%
            {\pgfqpointpolar{\angletofirstpoint}{\outerradius}}%
            {\pgfqpointpolar{\angletosecondpoint}{\innerradius}}%
            {\pgfqpointpolar{\angletofirstpoint}{\outerradius}}%
            {\pgfqpointpolar{0}{\innerradius}}%
        \pgfmathdivide@{\pgfmathresult}{2}%
        \pgfmathcosec@{\pgfmathresult}%
        \pgf@x\outerradius\relax%
        \advance\pgf@x\pgfmathresult\pgf@xa%
        \edef\anchorouterradius{\the\pgf@x}%
        \pgfmathanglebetweenlines%
            {\pgfqpointpolar{\angletofirstpoint}{\innerradius}}%
            {\pgfqpointpolar{0}{\outerradius}}%
            {\pgfqpointpolar{\angletofirstpoint}{\innerradius}}%
            {\pgfqpointpolar{\angletosecondpoint}{\outerradius}}%
        \pgfmathdivide@{\pgfmathresult}{2}%
        \pgfmathcosec@{\pgfmathresult}%
        \pgf@x\innerradius\relax%
        \advance\pgf@x\pgfmathresult\pgf@xa%
        \edef\anchorinnerradius{\the\pgf@x}%
        \addtosavedmacro{\innerradius}%
        \addtosavedmacro{\outerradius}%
        \addtosavedmacro{\anchorinnerradius}%
        \addtosavedmacro{\anchorouterradius}%
    }%
    \savedmacro\startangle{%
        \pgfmathadd{90}{\pgfkeysvalueof{/pgf/shape border rotate}}%
        \let\startangle\pgfmathresult%
    }%
    \savedanchor{\centerpoint}{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor{\midpoint}{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+.5ex}%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\centerpoint\pgfmathsetlength\pgf@y{.5ex}}%
    \anchor{base}{\centerpoint\pgf@y=0pt}%
    \anchor{north}{%
        \calculateradii%
        \csname pgf@anchor@star@border\endcsname{\pgfqpoint{0pt}{\anchorouterradius}}}%
    \anchor{south}{%
        \calculateradii%
        \csname pgf@anchor@star@border\endcsname{\pgfqpoint{0pt}{-\anchorouterradius}}}%
    \anchor{east}{%
        \calculateradii%
        \csname pgf@anchor@star@border\endcsname{\pgfqpoint{\anchorouterradius}{0pt}}}%
    \anchor{west}{%
        \calculateradii%
        \csname pgf@anchor@star@border\endcsname{\pgfqpoint{-\anchorouterradius}{0pt}}}%
    \anchor{north east}{%
        \calculateradii%
        \csname pgf@anchor@star@border\endcsname{\pgfqpoint{\anchorouterradius}{\anchorouterradius}}}%
    \anchor{north west}{%
        \calculateradii%
        \csname pgf@anchor@star@border\endcsname{\pgfqpoint{-\anchorouterradius}{\anchorouterradius}}}%
    \anchor{south east}{%
        \calculateradii%
        \csname pgf@anchor@star@border\endcsname{\pgfqpoint{\anchorouterradius}{-\anchorouterradius}}}%
    \anchor{south west}{%
        \calculateradii%
        \csname pgf@anchor@star@border\endcsname{\pgfqpoint{-\anchorouterradius}{-\anchorouterradius}}}%
    \backgroundpath{%
        \calculateradii%
        \let\angle\startangle%
        \pgfpathmoveto{\pgfpointadd{\centerpoint}{\pgfqpointpolar{\startangle}{\outerradius}}}%
        \pgfmathloop%
            \pgfmathadd@{\angle}{\anglestep}%
            \let\angle\pgfmathresult%
        \ifnum\pgfmathcounter=\totalstarpoints%
            \pgfpathclose%
        \else%
            \ifodd\pgfmathcounter
                \pgfpathlineto{\pgfpointadd{\centerpoint}{\pgfqpointpolar{\angle}{\innerradius}}}%
            \else%
                \pgfpathlineto{\pgfpointadd{\centerpoint}{\pgfqpointpolar{\angle}{\outerradius}}}%
            \fi%
        \repeatpgfmathloop%
    }%
    \anchorborder{%
        \edef\externalx{\the\pgf@x}%
        \edef\externaly{\the\pgf@y}%
        \centerpoint%
        \pgf@xa\externalx\relax%
        \pgf@ya\externaly\relax%
        \advance\pgf@xa\pgf@x%
        \advance\pgf@ya\pgf@y%
        \edef\externalx{\the\pgf@xa}%
        \edef\externaly{\the\pgf@ya}%
        \pgfmathanglebetweenpoints{\centerpoint}{\pgfqpoint{\externalx}{\externaly}}%
        \pgfmathsubtract@{\pgfmathresult}{\startangle}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \pgfmathdivide@{\pgfmathresult}{\anglestep}%
        \pgfmathfloor@{\pgfmathresult}%
        \afterassignment\pgfmath@gobbletilpgfmath@
        \c@pgf@counta\pgfmathresult\relax\pgfmath@
        \pgfmathmultiply@{\pgfmathresult}{\anglestep}%
        \pgfmathadd@{\pgfmathresult}{\startangle}%
        \let\firstangle\pgfmathresult%
        \pgfmathadd@{\pgfmathresult}{\anglestep}%
        \let\secondangle\pgfmathresult%
        \calculateradii%
        \ifodd\c@pgf@counta
            \pgfpointintersectionoflines{\centerpoint}{\pgfpoint{+\externalx}{+\externaly}}%
                {%
                    \pgfpointadd{\centerpoint}%
                        {\pgfqpointpolar{+\firstangle}{+\anchorinnerradius}}%
                    }%
                    {%
                        \pgfpointadd{\centerpoint}%
                            {\pgfqpointpolar{+\secondangle}{+\anchorouterradius}}%
                    }%
        \else%
            \pgfpointintersectionoflines{\centerpoint}{\pgfpoint{+\externalx}{+\externaly}}%
                {%
                    \pgfpointadd{\centerpoint}%
                        {\pgfqpointpolar{+\firstangle}{+\anchorouterradius}}%
                    }%
                    {%
                        \pgfpointadd{\centerpoint}%
                            {\pgfqpointpolar{+\secondangle}{+\anchorinnerradius}}%
                    }%
        \fi%
    }%
    \pgfutil@g@addto@macro\pgf@sh@s@star{%
        \c@pgf@counta\totalstarpoints\relax%
        \divide\c@pgf@counta2\relax%
        \pgfmathloop%
            \ifnum\c@pgf@counta>0\relax%
                \c@pgf@countb\c@pgf@counta\relax%
                \advance\c@pgf@countb-1\relax%
                \pgfutil@ifundefined{pgf@anchor@star@inner point\space\the\c@pgf@counta}{%
                    \expandafter\xdef\csname pgf@anchor@star@inner point\space\the\c@pgf@counta\endcsname{%
                        \noexpand\calculateradii%
                        \noexpand\pgfmathmultiply@{\the\c@pgf@countb}{\noexpand\anglestep}%
                        \noexpand\pgfmathmultiply@{\noexpand\pgfmathresult}{2}%
                        \noexpand\pgfmathadd@{\noexpand\pgfmathresult}{\noexpand\anglestep}%
                        \noexpand\pgfmathadd@{\noexpand\pgfmathresult}{\noexpand\startangle}%
                        \noexpand\let\noexpand\angle\noexpand\pgfmathresult%
                        \noexpand\pgfpointadd{\noexpand\centerpoint}%
                            {\noexpand\pgfqpointpolar{\noexpand\angle}{\noexpand\anchorinnerradius}}%
                    }%
                    \expandafter\xdef\csname pgf@anchor@star@outer point\space\the\c@pgf@counta\endcsname{%
                        \noexpand\calculateradii%
                        \noexpand\pgfmathmultiply@{\the\c@pgf@countb}{\noexpand\anglestep}%
                        \noexpand\pgfmathmultiply@{\noexpand\pgfmathresult}{2}%
                        \noexpand\pgfmathadd@{\noexpand\pgfmathresult}{\noexpand\startangle}%
                        \noexpand\let\noexpand\angle\noexpand\pgfmathresult%
                        \noexpand\pgfpointadd{\noexpand\centerpoint}%
                            {\noexpand\pgfqpointpolar{\noexpand\angle}{\noexpand\anchorouterradius}}%
                    }%
                }{\c@pgf@counta0\relax}%
            \advance\c@pgf@counta-1\relax%
        \repeatpgfmathloop%
    }%
}%




\pgfkeys{/pgf/.cd,
    regular polygon sides/.initial=5,
    regular polygon rotate/.style={/pgf/shape border rotate={#1}}%
}%


\pgfdeclareshape{regular polygon}{%
    \savedmacro\sides{%
        \pgfmathtruncatemacro\sides{\pgfkeysvalueof{/pgf/regular polygon sides}}%
    }%
    \savedmacro\anglestep{%
        \pgfmathdivide{360}{\pgfkeysvalueof{/pgf/regular polygon sides}}%
        \let\anglestep\pgfmathresult%
    }%
    \savedmacro\calculateradii{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y.5\dp\pgfnodeparttextbox%
        \ifdim\pgf@y>\pgf@x%
            \pgf@x\pgf@y%
        \fi%
        \pgf@x1.41421\pgf@x%
        \pgfmathdivide{180}{\pgfkeysvalueof{/pgf/regular polygon sides}}%
        \pgfmathsec@{\pgfmathresult}%
        \pgf@x\pgfmathresult\pgf@x%
        \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum width}}%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@ya>\pgf@xa%
            \pgf@xa\pgf@ya%
        \fi%
        \ifdim\pgf@x<.5\pgf@xa%
            \pgf@x.5\pgf@xa%
        \fi%
        \edef\radius{\the\pgf@x}%
        \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
        \ifdim\pgf@ya>\pgf@xa%
            \pgf@xa\pgf@ya%
        \fi
        \pgfmathdivide{180}{\pgfkeysvalueof{/pgf/regular polygon sides}}%
        \pgfmathsubtract@{90}{\pgfmathresult}%
        \pgfmathcosec@{\pgfmathresult}%
        \advance\pgf@x\pgfmathresult\pgf@xa%
        \edef\anchorradius{\the\pgf@x}%
        \addtosavedmacro{\radius}%
        \addtosavedmacro{\anchorradius}%
    }%
    \savedmacro\startangle{%
        \pgfmathdivide{360}{\pgfkeysvalueof{/pgf/regular polygon sides}}%
        \let\anglestep\pgfmathresult%
        \pgfmathtruncatemacro\sides{\pgfkeysvalueof{/pgf/regular polygon sides}}%
        \expandafter\ifodd\sides\relax%
            \edef\pgfmathresult{90}%
        \else%
            \pgfmathdivide@{\anglestep}{2}%
            \pgfmathsubtract@{90}{\pgfmathresult}%
        \fi%
        \pgfmathadd{\pgfmathresult}{\pgfkeysvalueof{/pgf/shape border rotate}}%
        \let\startangle\pgfmathresult%
    }%
    \savedanchor{\centerpoint}{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor{\midpoint}{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+.5ex}%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \anchor{base}{\centerpoint\pgf@y=0pt}%
    \anchor{north}{%
        \calculateradii%
        \csname pgf@anchor@regular polygon@border\endcsname{\pgfqpoint{0pt}{\anchorradius}}}%
    \anchor{south}{%
        \calculateradii%
        \csname pgf@anchor@regular polygon@border\endcsname{\pgfqpoint{0pt}{-\anchorradius}}}%
    \anchor{east}{%
        \calculateradii%
        \csname pgf@anchor@regular polygon@border\endcsname{\pgfqpoint{\anchorradius}{0pt}}}%
    \anchor{west}{%
        \calculateradii%
        \csname pgf@anchor@regular polygon@border\endcsname{\pgfqpoint{-\anchorradius}{0pt}}}%
    \anchor{north east}{%
        \calculateradii%
        \csname pgf@anchor@regular polygon@border\endcsname{\pgfqpoint{\anchorradius}{\anchorradius}}}%
    \anchor{north west}{%
        \calculateradii%
        \csname pgf@anchor@regular polygon@border\endcsname{\pgfqpoint{-\anchorradius}{\anchorradius}}}%
    \anchor{south east}{%
        \calculateradii%
        \csname pgf@anchor@regular polygon@border\endcsname{\pgfqpoint{\anchorradius}{-\anchorradius}}}%
    \anchor{south west}{%
        \calculateradii%
        \csname pgf@anchor@regular polygon@border\endcsname{\pgfqpoint{-\anchorradius}{-\anchorradius}}}%
    \backgroundpath{%
        \calculateradii%
        \pgfpathmoveto{%
            \pgfpointadd{\centerpoint}{\pgfqpointpolar{\startangle}{\radius}}%
        }%
        \let\angle\startangle%
        \pgfmathloop%
            \ifnum\pgfmathcounter=\sides\relax%
                \pgfpathclose%
            \else%
                \pgfmathadd@{\angle}{\anglestep}%
                \let\angle\pgfmathresult%
                \pgfpathlineto{%
                    \pgfpointadd{\centerpoint}{\pgfqpointpolar{\angle}{\radius}}%
                }%
        \repeatpgfmathloop%
    }%
    \anchorborder{%
        \edef\externalx{\the\pgf@x}%
        \edef\externaly{\the\pgf@y}%
        \centerpoint%
        \pgf@xa\externalx\relax%
        \pgf@ya\externaly\relax%
        \advance\pgf@xa\pgf@x%
        \advance\pgf@ya\pgf@y%
        \edef\externalx{\the\pgf@xa}%
        \edef\externaly{\the\pgf@ya}%
        \pgfmathanglebetweenpoints{\centerpoint}{\pgfqpoint{\externalx}{\externaly}}%
        \pgfmathsubtract@{\pgfmathresult}{\startangle}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \pgfmathdivide@{\pgfmathresult}{\anglestep}%
        \pgfmathfloor@{\pgfmathresult}%
        \pgfmathmultiply@{\pgfmathresult}{\anglestep}%
        \pgfmathadd@{\pgfmathresult}{\startangle}%
        \let\firstangle\pgfmathresult%
        \pgfmathadd@{\pgfmathresult}{\anglestep}%
        \let\secondangle\pgfmathresult%
        \calculateradii%
        \pgfpointintersectionoflines{\centerpoint}{\pgfpoint{+\externalx}{+\externaly}}%
            {%
                \pgfpointadd{\centerpoint}%
                    {\pgfqpointpolar{+\firstangle}{+\anchorradius}}%
                }%
                {%
                    \pgfpointadd{\centerpoint}%
                        {\pgfqpointpolar{+\secondangle}{+\anchorradius}}%
                }%
    }%
    \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@regular polygon\endcsname{%
        \c@pgf@counta\sides\relax%
        \pgfmathloop%
            \ifnum\c@pgf@counta>0\relax%
                \pgfutil@ifundefined{pgf@anchor@regular polygon@corner\space\the\c@pgf@counta}{%
                \expandafter\xdef\csname pgf@anchor@regular polygon@corner\space\the\c@pgf@counta\endcsname{%
                    \noexpand\calculateradii%
                    \noexpand\pgfmathsubtract@{\the\c@pgf@counta}{1}%
                    \noexpand\pgfmathmultiply@{\noexpand\pgfmathresult}{\noexpand\anglestep}%
                    \noexpand\pgfmathadd@{\noexpand\pgfmathresult}{\noexpand\startangle}%
                    \noexpand\let\noexpand\angle\noexpand\pgfmathresult%
                    \noexpand\pgfpointadd{\noexpand\centerpoint}%
                        {\noexpand\pgfqpointpolar{\noexpand\angle}{\noexpand\anchorradius}}%
                }%
                \expandafter\xdef\csname pgf@anchor@regular polygon@side\space\the\c@pgf@counta\endcsname{%
                    \noexpand\calculateradii%
                    \noexpand\pgfmathsubtract@{\the\c@pgf@counta}{1}%
                    \noexpand\pgfmathmultiply@{\noexpand\pgfmathresult}{\noexpand\anglestep}%
                    \noexpand\pgfmathadd@{\noexpand\pgfmathresult}{\noexpand\startangle}%
                    \noexpand\let\noexpand\firstangle\noexpand\pgfmathresult%
                    \noexpand\pgfmathadd@{\noexpand\pgfmathresult}{\noexpand\anglestep}%
                    \noexpand\let\noexpand\secondangle\noexpand\pgfmathresult%
                    \noexpand\pgfpointlineattime{0.5}%
                        {\noexpand\pgfpointadd{\noexpand\centerpoint}%
                            {\noexpand\pgfqpointpolar{\noexpand\firstangle}{\noexpand\anchorradius}}}%
                        {\noexpand\pgfpointadd{\noexpand\centerpoint}%
                            {\noexpand\pgfqpointpolar{\noexpand\secondangle}{\noexpand\anchorradius}}}%
                }%
            }{\c@pgf@counta0\relax}%
            \advance\c@pgf@counta-1\relax%
        \repeatpgfmathloop%
    }%
}%




\pgfkeys{/pgf/.cd,
    trapezium left angle/.initial=60,
    trapezium right angle/.initial=60,
    trapezium angle/.style={
        /pgf/trapezium left angle={#1},
        /pgf/trapezium right angle={#1}
    },%
    trapezium stretches/.is if=pgf@lib@sh@trapeziumstretches,%
    trapezium stretches body/.is if=pgf@lib@sh@trapeziumstretchesbody,%
}%

\newif\ifpgf@lib@sh@trapeziumstretchesbody
\newif\ifpgf@lib@sh@trapeziumstretches


\pgfdeclareshape{trapezium}{%
    \savedmacro\installtrapeziumparameters{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y.5\dp\pgfnodeparttextbox%
        \ifpgfshapeborderusesincircle%
            \pgfmathsetmacro\rotate{\pgfkeysvalueof{/pgf/shape border rotate}}%
            \ifdim\pgf@x<\pgf@y%
                \pgf@x\pgf@y%
            \fi%
            \pgf@x1.41421\pgf@x%
            \pgf@y\pgf@x%
        \else%
            \pgfmathmod{\pgfkeysvalueof{/pgf/shape border rotate}}{360}%
            \afterassignment\pgfmath@gobbletilpgfmath@%
            \expandafter\c@pgf@counta\pgfmathresult\relax\pgfmath@%
            \advance\c@pgf@counta45\relax%
            \divide\c@pgf@counta90\relax%
            \multiply\c@pgf@counta90\relax%
            \ifnum\c@pgf@counta<0\relax%
                \advance\c@pgf@counta360\relax%
            \fi%
            \edef\rotate{\the\c@pgf@counta}%
            \ifnum\c@pgf@counta=90\relax%
                \pgf@xc\pgf@x%
                \pgf@x\pgf@y%
                \pgf@y\pgf@xc%
            \else%
                \ifnum\c@pgf@counta=270\relax%
                    \pgf@xc\pgf@x%
                    \pgf@x\pgf@y%
                    \pgf@y\pgf@xc%
                \fi%
            \fi%
        \fi%
        \pgfmathmod{\pgfkeysvalueof{/pgf/trapezium left angle}}{360}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \let\leftangle\pgfmathresult%
        \ifdim\leftangle pt=0pt\relax%
            \def\pgfmathresult{0}%
        \else%
            \pgfmathcot@{\leftangle}%
        \fi%
        \pgf@xa2\pgf@y%
        \pgf@xa\pgfmathresult\pgf@xa%
        \pgfmathmod{\pgfkeysvalueof{/pgf/trapezium right angle}}{360}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \let\rightangle\pgfmathresult%
        \ifdim\rightangle pt=0pt\relax%
            \def\pgfmathresult{0}%
        \else%
            \pgfmathcot@{\rightangle}%
        \fi%
        \pgf@xb2\pgf@y%
        \pgf@xb\pgfmathresult\pgf@xb%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@y<.5\pgf@ya%
            \ifpgf@lib@sh@trapeziumstretches%
                \pgf@y.5\pgf@ya%
            \else%
                \ifpgf@lib@sh@trapeziumstretchesbody%
                    \pgf@y.5\pgf@ya%
                \else%
                    \pgfmathreciprocal@{\pgfmath@tonumber{\pgf@y}}%
                    \pgf@yb.5\pgf@ya%
                    \pgf@yb\pgfmathresult\pgf@yb%
                    \pgf@y.5\pgf@ya%
                    \pgf@x\pgfmath@tonumber{\pgf@yb}\pgf@x%
                    \pgf@xa\pgfmath@tonumber{\pgf@yb}\pgf@xa%
                    \pgf@xb\pgfmath@tonumber{\pgf@yb}\pgf@xb%
                \fi%
            \fi%
        \fi%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum width}}%
        \pgf@xc2\pgf@x%
        \ifdim\pgf@xa<0pt\relax%
            \advance\pgf@xc-\pgf@xa%
        \else%
            \advance\pgf@xc\pgf@xa%
        \fi%
        \ifdim\pgf@xb<0pt\relax%
            \advance\pgf@xc-\pgf@xb%
        \else%
            \advance\pgf@xc\pgf@xb%
        \fi%
        \ifdim\pgf@xc<\pgf@ya%
            \ifpgf@lib@sh@trapeziumstretchesbody%
                \pgf@xc-\pgf@xc%
                \advance\pgf@xc\pgf@ya%
                \advance\pgf@x.5\pgf@xc%
            \else%
                \pgfmathreciprocal@{\pgfmath@tonumber{\pgf@xc}}%
                \pgf@ya\pgfmathresult\pgf@ya%
                \pgf@x\pgfmath@tonumber{\pgf@ya}\pgf@x%
                \pgf@xa\pgfmath@tonumber{\pgf@ya}\pgf@xa%
                \pgf@xb\pgfmath@tonumber{\pgf@ya}\pgf@xb%
                \ifpgf@lib@sh@trapeziumstretches%
                \else%
                    \pgf@y\pgfmath@tonumber{\pgf@ya}\pgf@y%
                \fi%
            \fi%
        \fi%
        \edef\halfheight{\the\pgf@y}%
        \edef\halfwidth{\the\pgf@x}%
        \edef\leftextension{\the\pgf@xa}%
        \edef\rightextension{\the\pgf@xb}%
        \pgf@xc2\pgf@x%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
        \ifdim\pgf@y>\pgf@x%
            \pgf@x\pgf@y%
        \fi%
        \edef\outersep{\the\pgf@x}%
        \advance\pgf@xc2.0\pgf@x%
        \pgf@yc\halfheight\relax%
        \multiply\pgf@yc2\relax%
        \advance\pgf@yc2.0\pgf@x%
        \ifdim\pgf@xc<\pgf@yc%
            \edef\externalradius{\the\pgf@yc}%
        \else%
            \edef\externalradius{\the\pgf@xc}%
        \fi%
        \pgfextract@process\centerpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y.5\ht\pgfnodeparttextbox%
            \advance\pgf@y-.5\dp\pgfnodeparttextbox%
        }%
        \pgfextract@process\basepoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y0pt\relax%
        }%
        \pgfextract@process\midpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgfmathsetlength\pgf@y{+.5ex}%
        }%
        \pgfextract@process\lowerleftpoint{%
            \centerpoint%
            \advance\pgf@x-\halfwidth\relax%
            \ifdim\leftextension>0pt\relax%
                \advance\pgf@x-\leftextension\relax%
            \fi%
            \advance\pgf@y-\halfheight\relax%
        }%
        \pgfextract@process\upperleftpoint{%
            \centerpoint%
            \advance\pgf@x-\halfwidth\relax%
            \ifdim\leftextension<0pt\relax%
                \advance\pgf@x\leftextension\relax%
            \fi%
            \advance\pgf@y\halfheight\relax%
        }%
        \pgfextract@process\upperrightpoint{%
            \centerpoint%
            \advance\pgf@x\halfwidth\relax%
            \ifdim\rightextension<0pt\relax%
                \advance\pgf@x-\rightextension\relax%
            \fi%
            \advance\pgf@y\halfheight\relax%
        }%
        \pgfextract@process\lowerrightpoint{%
            \centerpoint%
            \advance\pgf@x\halfwidth\relax%
            \ifdim\rightextension>0pt\relax%
                \advance\pgf@x\rightextension\relax%
            \fi%
            \advance\pgf@y-\halfheight\relax%
        }%
        \pgfextract@process\lowerleftmiter{%
            \pgfmathanglebetweenlines{\lowerleftpoint}{\lowerrightpoint}{\lowerleftpoint}{\upperleftpoint}%
            \pgfmathmultiply@{\pgfmathresult}{.5}%
            \pgfmathtan@{\pgfmathresult}%
            \pgfmathreciprocal@{\pgfmathresult}%
            \pgf@x-\outersep\relax%
            \pgf@x\pgfmathresult\pgf@x%
            \pgf@y-\outersep\relax%
        }%
        \pgfextract@process\upperleftmiter{%
            \pgfmathanglebetweenlines{\upperleftpoint}{\lowerleftpoint}{\upperleftpoint}{\upperrightpoint}%
            \pgfmathmultiply@{\pgfmathresult}{.5}%
            \pgfmathtan@{\pgfmathresult}%
            \pgfmathreciprocal@{\pgfmathresult}%
            \pgf@x-\outersep\relax%
            \pgf@x\pgfmathresult\pgf@x%
            \pgf@y\outersep\relax%
        }%
        \pgfextract@process\upperrightmiter{%
            \pgfmathanglebetweenlines{\upperrightpoint}{\upperleftpoint}{\upperrightpoint}{\lowerrightpoint}%
            \pgfmathmultiply@{\pgfmathresult}{.5}%
            \pgfmathtan@{\pgfmathresult}%
            \pgfmathreciprocal@{\pgfmathresult}%
            \pgf@x\outersep\relax%
            \pgf@x\pgfmathresult\pgf@x%
            \pgf@y\outersep\relax%
        }%
        \pgfextract@process\lowerrightmiter{%
            \pgfmathanglebetweenlines{\lowerrightpoint}{\upperrightpoint}{\lowerrightpoint}{\lowerleftpoint}%
            \pgfmathmultiply@{\pgfmathresult}{.5}%
            \pgfmathtan@{\pgfmathresult}%
            \pgfmathreciprocal@{\pgfmathresult}%
            \pgf@x\outersep\relax%
            \pgf@x\pgfmathresult\pgf@x%
            \pgf@y-\outersep\relax%
        }%
        \pgfextract@process\lowerleftborderpoint{%
            \pgfpointadd{\lowerleftpoint}{\lowerleftmiter}%
        }%
        \pgfextract@process\upperleftborderpoint{%
            \pgfpointadd{\upperleftpoint}{\upperleftmiter}%
        }%
        \pgfextract@process\upperrightborderpoint{%
            \pgfpointadd{\upperrightpoint}{\upperrightmiter}%
        }%
        \pgfextract@process\lowerrightborderpoint{%
            \pgfpointadd{\lowerrightpoint}{\lowerrightmiter}%
        }%
        \pgfmathanglebetweenpoints{\centerpoint}{\lowerleftborderpoint}%
        \let\angletolowerleft\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\upperleftborderpoint}%
        \let\angletoupperleft\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\upperrightborderpoint}%
        \let\angletoupperright\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\lowerrightborderpoint}%
        \let\angletolowerright\pgfmathresult%
        \pgfextract@process\rotatedbasepoint{%
            \pgfmathrotatepointaround{\basepoint}{\centerpoint}{-\rotate}%
        }%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\lowerleftborderpoint}%
        \let\baseangletolowerleft\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\upperleftborderpoint}%
        \let\baseangletoupperleft\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\upperrightborderpoint}%
        \let\baseangletoupperright\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\lowerrightborderpoint}%
        \let\baseangletolowerright\pgfmathresult%
        \pgfextract@process\rotatedmidpoint{%
            \pgfmathrotatepointaround{\midpoint}{\centerpoint}{-\rotate}%
        }%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\lowerleftborderpoint}%
        \let\midangletolowerleft\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\upperleftborderpoint}%
        \let\midangletoupperleft\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\upperrightborderpoint}%
        \let\midangletoupperright\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\lowerrightborderpoint}%
        \let\midangletolowerright\pgfmathresult%
        \pgfextract@process\lowerleftborderpoint{%
            \pgfmathrotatepointaround%
                {\lowerleftborderpoint}%
                {\centerpoint}%
                {\rotate}%
        }%
        \pgfextract@process\upperleftborderpoint{%
            \pgfmathrotatepointaround%
                {\upperleftborderpoint}%
                {\centerpoint}%
                {\rotate}%
        }%
        \pgfextract@process\upperrightborderpoint{%
            \pgfmathrotatepointaround%
                {\upperrightborderpoint}%
                {\centerpoint}%
                {\rotate}%
        }%
        \pgfextract@process\lowerrightborderpoint{%
            \pgfmathrotatepointaround%
                {\lowerrightborderpoint}%
                {\centerpoint}%
                {\rotate}%
        }%
        \pgfextract@process\lowerleftpoint{%
            \pgfmathrotatepointaround{\lowerleftpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\upperleftpoint{%
            \pgfmathrotatepointaround{\upperleftpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\upperrightpoint{%
            \pgfmathrotatepointaround{\upperrightpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\lowerrightpoint{%
            \pgfmathrotatepointaround{\lowerrightpoint}{\centerpoint}{\rotate}%
        }%
        \addtosavedmacro{\lowerleftpoint}%
        \addtosavedmacro{\upperleftpoint}%
        \addtosavedmacro{\upperrightpoint}%
        \addtosavedmacro{\lowerrightpoint}%
        \addtosavedmacro{\lowerleftborderpoint}%
        \addtosavedmacro{\upperleftborderpoint}%
        \addtosavedmacro{\upperrightborderpoint}%
        \addtosavedmacro{\lowerrightborderpoint}%
        \addtosavedmacro{\angletolowerleft}%
        \addtosavedmacro{\angletoupperleft}%
        \addtosavedmacro{\angletoupperright}%
        \addtosavedmacro{\angletolowerright}%
        \addtosavedmacro{\baseangletolowerleft}%
        \addtosavedmacro{\baseangletoupperleft}%
        \addtosavedmacro{\baseangletoupperright}%
        \addtosavedmacro{\baseangletolowerright}%
        \addtosavedmacro{\midangletolowerleft}%
        \addtosavedmacro{\midangletoupperleft}%
        \addtosavedmacro{\midangletoupperright}%
        \addtosavedmacro{\midangletolowerright}%
        \addtosavedmacro{\rotate}%
        \addtosavedmacro{\externalradius}%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt\relax%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+.5ex}%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{base}{\basepoint}%
    \anchor{base east}{%
        \installtrapeziumparameters%
        \let\pgf@trapeziumanchorborderreferencepoint\basepoint%
        \csname pgf@anchor@trapezium@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{base west}{%
        \installtrapeziumparameters%
        \let\pgf@trapeziumanchorborderreferencepoint\basepoint%
        \csname pgf@anchor@trapezium@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{%
        \installtrapeziumparameters%
        \let\pgf@trapeziumanchorborderreferencepoint\midpoint%
        \csname pgf@anchor@trapezium@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{mid west}{%
        \installtrapeziumparameters%
        \let\pgf@trapeziumanchorborderreferencepoint\midpoint%
        \csname pgf@anchor@trapezium@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{north}{%
        \installtrapeziumparameters%
        \csname pgf@anchor@trapezium@border\endcsname{\pgfqpoint{0pt}{\externalradius}}%
    }%
    \anchor{south}{%
        \installtrapeziumparameters%
        \csname pgf@anchor@trapezium@border\endcsname{\pgfqpoint{0pt}{-\externalradius}}%
    }%
    \anchor{east}{%
        \installtrapeziumparameters%
        \csname pgf@anchor@trapezium@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{west}{%
        \installtrapeziumparameters%
        \csname pgf@anchor@trapezium@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{north east}{%
        \installtrapeziumparameters%
        \csname pgf@anchor@trapezium@border\endcsname{\pgfqpoint{\externalradius}{\externalradius}}%
    }%
    \anchor{south west}{%
        \installtrapeziumparameters%
        \csname pgf@anchor@trapezium@border\endcsname{\pgfqpoint{-\externalradius}{-\externalradius}}%
    }%
    \anchor{south east}{%
        \installtrapeziumparameters%
        \csname pgf@anchor@trapezium@border\endcsname{\pgfqpoint{\externalradius}{-\externalradius}}%
    }%
    \anchor{north west}{%
        \installtrapeziumparameters%
        \csname pgf@anchor@trapezium@border\endcsname{\pgfqpoint{-\externalradius}{\externalradius}}%
    }%
    \anchor{bottom left corner}{%
        \installtrapeziumparameters%
        \lowerleftborderpoint%
    }%
    \anchor{top left corner}{%
        \installtrapeziumparameters%
        \upperleftborderpoint%
    }%
    \anchor{top right corner}{%
        \installtrapeziumparameters%
        \upperrightborderpoint%
    }%
    \anchor{bottom right corner}{%
        \installtrapeziumparameters%
        \lowerrightborderpoint%
    }%
    \anchor{left side}{%
        \installtrapeziumparameters%
        \pgfpointlineattime{0.5}{\lowerleftborderpoint}{\upperleftborderpoint}%
    }%
    \anchor{right side}{%
        \installtrapeziumparameters%
        \pgfpointlineattime{0.5}{\lowerrightborderpoint}{\upperrightborderpoint}%
    }%
    \anchor{top side}{%
        \installtrapeziumparameters%
        \pgfpointlineattime{0.5}{\upperleftborderpoint}{\upperrightborderpoint}%
    }%
    \anchor{bottom side}{%
        \installtrapeziumparameters%
        \pgfpointlineattime{0.5}{\lowerleftborderpoint}{\lowerrightborderpoint}%
    }%
    \backgroundpath{%
        \installtrapeziumparameters%
        \pgfpathmoveto{\lowerleftpoint}%
        \pgfpathlineto{\upperleftpoint}%
        \pgfpathlineto{\upperrightpoint}%
        \pgfpathlineto{\lowerrightpoint}%
        \pgfpathclose%
    }%
    \anchorborder{%
        \edef\externalx{\the\pgf@x}%
        \edef\externaly{\the\pgf@y}%
        \pgfutil@ifundefined{pgf@trapeziumanchorborderreferencepoint}%
            {\let\referencepoint\centerpoint}%
            {\let\referencepoint\pgf@trapeziumanchorborderreferencepoint}%
        \referencepoint%
        \pgf@xa\externalx\relax%
        \pgf@ya\externaly\relax%
        \advance\pgf@xa\pgf@x%
        \advance\pgf@ya\pgf@y%
        \edef\externalx{\the\pgf@xa}%
        \edef\externaly{\the\pgf@ya}%
        \installtrapeziumparameters%
        \pgfmathanglebetweenpoints{\referencepoint}{\pgfqpoint{\externalx}{\externaly}}%
        \pgfmathsubtract@{\pgfmathresult}{\rotate}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \let\externalangle\pgfmathresult%
        \ifx\referencepoint\basepoint%
            \let\angletoupperright\baseangletoupperright%
            \let\angletoupperleft\baseangletoupperleft%
            \let\angletolowerright\baseangletolowerright%
            \let\angletolowerleft\baseangletolowerleft%
        \else%
            \ifx\referencepoint\midpoint%
                \let\angletoupperright\midangletoupperright%
                \let\angletoupperleft\midangletoupperleft%
                \let\angletolowerright\midangletolowerright%
                \let\angletolowerleft\midangletolowerleft%
        \fi\fi%
        \ifdim\externalangle pt<\angletoupperright pt\relax%
            \let\firstpoint\upperrightborderpoint%
            \let\secondpoint\lowerrightborderpoint%
        \else%
            \ifdim\externalangle pt<\angletoupperleft pt\relax%
                \let\firstpoint\upperleftborderpoint%
                \let\secondpoint\upperrightborderpoint%
            \else%
                \ifdim\externalangle pt<\angletolowerleft pt\relax%
                    \let\firstpoint\upperleftborderpoint%
                    \let\secondpoint\lowerleftborderpoint%
                \else%
                    \ifdim\externalangle pt<\angletolowerright pt\relax%
                        \let\firstpoint\lowerleftborderpoint%
                        \let\secondpoint\lowerrightborderpoint%
                    \else%
                        \let\firstpoint\upperrightborderpoint%
                        \let\secondpoint\lowerrightborderpoint%
                    \fi%
                \fi%
            \fi%
        \fi%
        \pgfpointintersectionoflines{\referencepoint}{\pgfqpoint{\externalx}{\externaly}}%
                {\firstpoint}{\secondpoint}%
    }%
}%




\pgfdeclareshape{semicircle}{%
    \savedmacro\installsemicircleparameters{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
        \ifdim\pgf@x<\pgf@y%
            \pgf@x\pgf@y%
        \fi%
        \edef\outersep{\the\pgf@x}%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@x+.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@y+.5\ht\pgfnodeparttextbox%
        \advance\pgf@y+.5\dp\pgfnodeparttextbox%
        \ifpgfshapeborderusesincircle%
            \pgfmathsetmacro\rotate{\pgfkeysvalueof{/pgf/shape border rotate}}%
            \ifdim\pgf@x<\pgf@y%
                \pgf@x\pgf@y%
            \fi%
            \pgf@x1.41421\pgf@x%
            \edef\halfheight{\the\pgf@x}%
            \advance\pgf@x\pgf@x%
        \else%
            \pgfmathmod{\pgfkeysvalueof{/pgf/shape border rotate}}{360}%
            \afterassignment\pgfmath@gobbletilpgfmath@%
            \expandafter\c@pgf@counta\pgfmathresult\relax\pgfmath@%
            \advance\c@pgf@counta45\relax%
            \divide\c@pgf@counta90\relax%
            \multiply\c@pgf@counta90\relax%
            \ifnum\c@pgf@counta<0\relax%
                \advance\c@pgf@counta360\relax%
            \fi%
            \edef\rotate{\the\c@pgf@counta}%
            \ifnum\c@pgf@counta=90\relax%
                \pgf@xc\pgf@x%
                \pgf@x\pgf@y%
                \pgf@y\pgf@xc%
            \else%
                \ifnum\c@pgf@counta=270\relax%
                    \pgf@xc\pgf@x%
                    \pgf@x\pgf@y%
                    \pgf@y\pgf@xc%
                \fi%
            \fi%
            \advance\pgf@y\pgf@y%
            \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
            \pgf@x\pgfmathresult pt\relax%
            \pgf@y.5\pgf@y%
            \edef\halfheight{\the\pgf@y}%
        \fi%
        \edef\defaultradius{\the\pgf@x}%
        \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum width}}%
        \ifdim\pgf@x<.5\pgf@xa%
            \pgf@x.5\pgf@xa%
        \fi%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@x<\pgf@ya%
            \pgf@x\pgf@ya%
        \fi%
        \edef\semicircleradius{\the\pgf@x}%
        \pgfextract@process\centerpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y.5\ht\pgfnodeparttextbox%
            \advance\pgf@y+-.5\dp\pgfnodeparttextbox%
        }%
        \pgfextract@process\basepoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y0pt\relax%
        }%
        \pgfextract@process\midpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgfmathsetlength\pgf@y{+.5ex}%
        }%
        \pgfextract@process\semicirclecenterpoint{%
            \centerpoint%
            \pgf@ya\semicircleradius\relax%
            \advance\pgf@ya-\defaultradius\relax%
            \pgf@ya.4\pgf@ya%
            \advance\pgf@y-\pgf@ya%
            \pgf@ya\halfheight\relax%
            \advance\pgf@y-\pgf@ya%
        }%
        \pgf@x\semicircleradius\relax%
        \advance\pgf@x\outersep\relax%
        \edef\semicircleradius{\the\pgf@x}%
        \pgfpointdiff{\centerpoint}{\semicirclecenterpoint}%
        \ifdim\pgf@y<0pt\pgf@y-\pgf@y\fi%
        \edef\centerpointdiff{\the\pgf@y}%
        \pgfextract@process\arcstartborder{%
            \semicirclecenterpoint%
            \advance\pgf@x\semicircleradius\relax%
        }%
        \pgfextract@process\arcendborder{%
            \semicirclecenterpoint%
            \advance\pgf@x-\semicircleradius\relax%
        }%
        \pgfextract@process\arcstartcorner{%
            \arcstartborder%
            \advance\pgf@y-\outersep\relax%
        }%
        \pgfextract@process\arcendcorner{%
            \arcendborder%
            \advance\pgf@y-\outersep\relax%
        }
        \pgfmathanglebetweenpoints{\centerpoint}{\arcstartborder}%
        \let\angletoarcstartborder\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\arcendborder}%
        \let\angletoarcendborder\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\arcstartcorner}%
        \let\angletoarcstartcorner\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\arcendcorner}%
        \let\angletoarcendcorner\pgfmathresult%
        \pgfextract@process\rotatedbasepoint{%
            \pgfmathrotatepointaround{\basepoint}{\centerpoint}{-\rotate}%
        }%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\arcstartborder}%
        \let\baseangletoarcstartborder\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\arcendborder}%
        \let\baseangletoarcendborder\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\arcstartcorner}%
        \let\baseangletoarcstartcorner\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\arcendcorner}%
        \let\baseangletoarcendcorner\pgfmathresult%
        \pgfextract@process\rotatedmidpoint{%
            \pgfmathrotatepointaround{\midpoint}{\centerpoint}{-\rotate}%
        }%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\arcstartborder}%
        \let\midangletoarcstartborder\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\arcendborder}%
        \let\midangletoarcendborder\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\arcstartcorner}%
        \let\midangletoarcstartcorner\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\arcendcorner}%
        \let\midangletoarcendcorner\pgfmathresult%
        \pgfextract@process\semicirclecenterpoint{%
            \pgfmathrotatepointaround{\semicirclecenterpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\arcstartborder{%
            \pgfmathrotatepointaround{\arcstartborder}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\arcendborder{%
            \pgfmathrotatepointaround{\arcendborder}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\arcstartcorner{%
            \pgfmathrotatepointaround{\arcstartcorner}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\arcendcorner{%
            \pgfmathrotatepointaround{\arcendcorner}{\centerpoint}{\rotate}%
        }%
        \pgfpointdiff{\basepoint}{\semicirclecenterpoint}%
        \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
        \edef\basesemicirclecenterdiff{\pgfmathresult pt}%
        \pgfpointdiff{\midpoint}{\semicirclecenterpoint}%
        \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
        \edef\midsemicirclecenterdiff{\pgfmathresult pt}%
        \addtosavedmacro{\rotate}%
        \addtosavedmacro{\outersep}%
        \addtosavedmacro{\semicircleradius}%
        \addtosavedmacro{\arcstartborder}%
        \addtosavedmacro{\arcendborder}%
        \addtosavedmacro{\arcstartcorner}%
        \addtosavedmacro{\arcendcorner}%
        \addtosavedmacro{\semicirclecenterpoint}%
        \addtosavedmacro{\angletoarcstartborder}%
        \addtosavedmacro{\angletoarcendborder}%
        \addtosavedmacro{\angletoarcstartcorner}%
        \addtosavedmacro{\angletoarcendcorner}%
        \addtosavedmacro{\centerpointdiff}%
        \addtosavedmacro{\basesemicirclecenterdiff}%
        \addtosavedmacro{\midsemicirclecenterdiff}%
        \addtosavedmacro{\baseangletoarcstartborder}%
        \addtosavedmacro{\baseangletoarcendborder}%
        \addtosavedmacro{\baseangletoarcstartcorner}%
        \addtosavedmacro{\baseangletoarcendcorner}%
        \addtosavedmacro{\midangletoarcstartborder}%
        \addtosavedmacro{\midangletoarcendborder}%
        \addtosavedmacro{\midangletoarcstartcorner}%
        \addtosavedmacro{\midangletoarcendcorner}%
    }%
    \savedanchor{\centerpoint}{%
        \pgfmathsetlength\pgf@x{+.5\wd\pgfnodeparttextbox}%
        \pgfmathsetlength\pgf@y{+.5\ht\pgfnodeparttextbox}%
        \pgfmathaddtolength\pgf@y{-.5\dp\pgfnodeparttextbox}%
    }%
    \savedanchor{\basepoint}{%
        \pgfmathsetlength\pgf@x{+.5\wd\pgfnodeparttextbox}%
        \pgf@y0pt\relax%
    }%
    \savedanchor{\midpoint}{%
        \pgfmathsetlength\pgf@x{+.5\wd\pgfnodeparttextbox}%
        \pgfmathsetlength\pgf@y{+.5ex}%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{base}{\basepoint}%
    \anchor{base west}{%
        \installsemicircleparameters%
        \let\pgf@semicirclereferencepoint\basepoint%
        \csname pgf@anchor@semicircle@border\endcsname{\pgfqpoint{-\semicircleradius}{0pt}}%
    }%
    \anchor{base east}{%
        \installsemicircleparameters%
        \let\pgf@semicirclereferencepoint\basepoint%
        \csname pgf@anchor@semicircle@border\endcsname{\pgfqpoint{\semicircleradius}{0pt}}%
    }%
    \anchor{mid}{\midpoint}%
    \anchor{mid west}{%
        \installsemicircleparameters%
        \let\pgf@semicirclereferencepoint\midpoint%
        \csname pgf@anchor@semicircle@border\endcsname{\pgfqpoint{-\semicircleradius}{0pt}}%
    }%
    \anchor{mid east}{%
        \installsemicircleparameters%
        \let\pgf@semicirclereferencepoint\midpoint%
        \csname pgf@anchor@semicircle@border\endcsname{\pgfqpoint{\semicircleradius}{0pt}}%
    }%
    \anchor{apex}{%
        \installsemicircleparameters%
        \pgfmathadd@{\rotate}{90}%
        \let\angle\pgfmathresult%
        \pgfpointadd{\semicirclecenterpoint}{\pgfqpointpolar{\angle}{\semicircleradius}}%
    }%
    \anchor{arc start}{%
        \installsemicircleparameters%
        \arcstartcorner%
    }%
    \anchor{arc end}{%
        \installsemicircleparameters%
        \arcendcorner%
    }%
    \anchor{chord center}{%
        \installsemicircleparameters%
        \pgfpointlineattime{0.5}{\arcstartcorner}{\arcendcorner}%
    }%
    \anchor{north}{%
        \installsemicircleparameters%
        \csname pgf@anchor@semicircle@border\endcsname{\pgfqpointpolar{90}{\semicircleradius}}%
    }%
    \anchor{south}{%
        \installsemicircleparameters%
        \csname pgf@anchor@semicircle@border\endcsname{\pgfqpointpolar{270}{\semicircleradius}}%
    }%
    \anchor{east}{%
        \installsemicircleparameters%
        \csname pgf@anchor@semicircle@border\endcsname{\pgfqpointpolar{0}{\semicircleradius}}%
    }%
    \anchor{west}{%
        \installsemicircleparameters%
        \csname pgf@anchor@semicircle@border\endcsname{\pgfqpointpolar{180}{\semicircleradius}}%
    }%
    \anchor{north west}{%
        \installsemicircleparameters%
        \csname pgf@anchor@semicircle@border\endcsname{\pgfqpointpolar{135}{\semicircleradius}}%
    }%
    \anchor{south west}{%
        \installsemicircleparameters%
        \csname pgf@anchor@semicircle@border\endcsname{\pgfqpointpolar{225}{\semicircleradius}}%
    }%
    \anchor{north east}{%
        \installsemicircleparameters%
        \csname pgf@anchor@semicircle@border\endcsname{\pgfqpointpolar{45}{\semicircleradius}}%
    }%
    \anchor{south east}{%
        \installsemicircleparameters%
        \csname pgf@anchor@semicircle@border\endcsname{\pgfqpointpolar{315}{\semicircleradius}}%
    }%
    \backgroundpath{%
        \installsemicircleparameters%
        \pgf@x\semicircleradius\relax%
        \advance\pgf@x-\outersep\relax%
        \edef\semicircleradius{\the\pgf@x}%
        \pgfpathmoveto{\pgfpointadd{\semicirclecenterpoint}{\pgfqpointpolar{\rotate}{\semicircleradius}}}%
        {%
            \pgftransformrotate{\rotate}%
            \pgfpatharc{0}{180}{\semicircleradius}%
            \pgfpathclose%
        }%
    }%
    \anchorborder{%
        \edef\externalx{\the\pgf@x}%
        \edef\externaly{\the\pgf@y}%
        \pgfutil@ifundefined{pgf@semicirclereferencepoint}%
            {\let\referencepoint\centerpoint}%
            {\let\referencepoint\pgf@semicirclereferencepoint}%
        \referencepoint%
        \pgf@xa\externalx\relax%
        \pgf@ya\externaly\relax%
        \advance\pgf@xa\pgf@x%
        \advance\pgf@ya\pgf@y%
        \edef\externalx{\the\pgf@xa}%
        \edef\externaly{\the\pgf@ya}%
        \installsemicircleparameters%
        \pgfmathanglebetweenpoints{\referencepoint}{\pgfqpoint{\externalx}{\externaly}}%
        \let\externalangle\pgfmathresult%
        \pgfmathsubtract@{\pgfmathresult}{\rotate}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \let\angle\pgfmathresult%
        \ifx\referencepoint\basepoint%
            \let\angletoarcstartborder\baseangletoarcstartborder%
            \let\angletoarcendborder\baseangletoarcendborder%
            \let\angletoarcstartcorner\baseangletoarcstartcorner%
            \let\angletoarcendcorner\baseangletoarcendcorner%
            \let\centerpointdiff\basesemicirclecenterdiff%
        \else%
            \ifx\referencepoint\midpoint%
                \let\angletoarcstartborder\midangletoarcstartborder%
                \let\angletoarcendborder\midangletoarcendborder%
                \let\angletoarcstartcorner\midangletoarcstartcorner%
                \let\angletoarcendcorner\midangletoarcendcorner%
                \let\centerpointdiff\midsemicirclecenterdiff%
        \fi\fi%
        \ifdim\angle pt>\angletoarcstartborder pt\relax%
            \let\firstpoint\pgfutil@empty%
            \let\secondpoint\pgfutil@empty%
        \else%
            \ifdim\angle pt>\angletoarcstartcorner pt\relax%
                \let\firstpoint\arcstartcorner%
                \let\secondpoint\arcstartborder%
            \else%
                \ifdim\angle pt>\angletoarcendcorner pt\relax%
                    \let\firstpoint\arcendcorner%
                    \let\secondpoint\arcstartcorner%
                \else%
                    \ifdim\angle pt>\angletoarcendborder pt\relax%
                        \let\firstpoint\arcendborder%
                        \let\secondpoint\arcendcorner%
                    \else%
                        \let\firstpoint\pgfutil@empty%
                        \let\secondpoint\pgfutil@empty%
                    \fi%
                \fi%
            \fi%
        \fi%
        \ifx\firstpoint\pgfutil@empty
            \pgfmathanglebetweenlines{\referencepoint}{\pgfqpoint{\externalx}{\externaly}}%
                {\semicirclecenterpoint}{\referencepoint}%
            \pgfmathsin@{\pgfmathresult}%
            \let\sineangle\pgfmathresult%
            \pgf@x\semicircleradius\relax%
            \pgfmathreciprocal@{\pgfmath@tonumber{\pgf@x}}%
            \let\reciprocalradius\pgfmathresult%
            \pgf@x\centerpointdiff\relax%
            \pgf@x\sineangle\pgf@x%
            \pgf@x\reciprocalradius\pgf@x%
            \pgfmathasin@{\pgfmath@tonumber{\pgf@x}}%
            \pgf@x\pgfmathresult pt\relax%
            \advance\pgf@x\externalangle pt\relax%
            \edef\angle{\pgfmath@tonumber{\pgf@x}}%
            \pgfpointadd{\semicirclecenterpoint}{\pgfqpointpolar{\angle}{\semicircleradius}}%
        \else%
            \pgfpointintersectionoflines{\referencepoint}{\pgfqpoint{\externalx}{\externaly}}%
                {\firstpoint}{\secondpoint}%
        \fi%
    }%
}%


\pgfkeys{/pgf/.cd,
    isosceles triangle apex angle/.initial=45,
    isosceles triangle stretches/.is if=pgf@lib@sh@isosceslestrianglestretches
}%
\newif\ifpgf@lib@sh@isosceslestrianglestretches

\pgfdeclareshape{isosceles triangle}{%
    \savedmacro\trianglepoints{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/isosceles triangle apex angle}}%
        \divide\pgf@x2\relax%
        \edef\halfapexangle{\pgfmath@tonumber{\pgf@x}}%
        \addtosavedmacro\halfapexangle%
        \pgfmathtan@{\halfapexangle}%
        \let\tanhalfapexangle\pgfmathresult%
        \pgfmathcot@{\halfapexangle}%
        \let\cothalfapexangle\pgfmathresult%
        \pgfmathsin@{\halfapexangle}%
        \let\sinhalfapexangle\pgfmathresult%
        \pgfmathreciprocal@{\pgfmathresult}%
        \let\cosechalfapexangle\pgfmathresult%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y.5\dp\pgfnodeparttextbox%
        \ifpgfshapeborderusesincircle%
            \pgfmathsetmacro\rotate{\pgfkeysvalueof{/pgf/shape border rotate}}%
            \ifdim\pgf@x<\pgf@y%
                \pgf@x\pgf@y%
            \else%
                \pgf@y\pgf@x%
            \fi%
            \pgf@x1.414213\pgf@x%
            \pgf@y1.414213\pgf@y%
            \pgf@xa\pgf@x%
            \advance\pgf@xa\cosechalfapexangle\pgf@x%
            \pgf@ya\tanhalfapexangle\pgf@xa%
        \else%
            \pgfmathmod{\pgfkeysvalueof{/pgf/shape border rotate}}{360}%
            \ifdim\pgfmathresult pt<0pt\relax%
                \pgfmathadd@{\pgfmathresult}{360}%
            \fi%
            \pgfmathsetcount\c@pgf@counta{+\pgfmathresult}%
            \advance\c@pgf@counta45\relax%
            \divide\c@pgf@counta90\relax%
            \multiply\c@pgf@counta90\relax%
            \edef\rotate{\the\c@pgf@counta}%
            \ifnum\c@pgf@counta=90\relax%
                \pgf@xa\pgf@x%
                \pgf@x\pgf@y%
                \pgf@y\pgf@xa%
            \else%
                \ifnum\c@pgf@counta=270\relax%
                    \pgf@xa\pgf@x%
                    \pgf@x\pgf@y%
                    \pgf@y\pgf@xa%
                \fi%
            \fi%
            \pgf@xa2.0\pgf@x%
            \pgf@ya\tanhalfapexangle\pgf@xa%
            \advance\pgf@xa\cothalfapexangle\pgf@y%
            \advance\pgf@ya\pgf@y%
        \fi%
        \addtosavedmacro\rotate%
        \ifdim\pgf@xa=0pt\relax%
            \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum height}}%
        \fi%
        \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum width}}%
        \ifdim\pgf@ya<.5\pgf@yb%
            \ifpgf@lib@sh@isosceslestrianglestretches%
                \pgf@ya.5\pgf@yb%
                \pgfmathdivide@{\pgfmath@tonumber{\pgf@ya}}{\pgfmath@tonumber{\pgf@xa}}%
                \pgfmathatan@{\pgfmathresult}%
                \let\halfapexangle\pgfmathresult%
            \else%
                \pgf@ya.5\pgf@yb%
                \pgf@xa\cothalfapexangle\pgf@ya%
            \fi%
        \fi%
        \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@xa<\pgf@xb%
            \ifpgf@lib@sh@isosceslestrianglestretches%
                \pgf@xa\pgf@xb%
                \pgfmathdivide@{\pgfmath@tonumber{\pgf@ya}}{\pgfmath@tonumber{\pgf@xa}}%
                \pgfmathatan@{\pgfmathresult}%
                \let\halfapexangle\pgfmathresult%
            \else%
                \pgf@xa\pgf@xb%
                \pgf@ya\tanhalfapexangle\pgf@xa%
            \fi%
        \fi%
        \ifpgfshapeborderusesincircle%
            \pgf@xc\pgf@xa%
            \pgfmathsin@{\halfapexangle}%
            \pgf@xc\pgfmathresult\pgf@xc%
            \pgf@yc1pt\relax%
            \advance\pgf@yc\pgfmathresult pt\relax%
            \pgfmathdivide@{\pgfmath@tonumber{\pgf@xc}}{\pgfmath@tonumber{\pgf@yc}}
            \pgfutil@tempdima\pgfmathresult pt\relax%
        \else%
            \pgf@xc\pgf@ya%
            \advance\pgf@xc-\pgf@y%
            \pgfmathcos@{\halfapexangle}%
            \pgf@xc\pgfmathresult\pgf@xc%
            \pgfmathsin@{\halfapexangle}%
            \advance\pgf@xc-\pgfmathresult\pgf@x%
            \advance\pgf@xc-\pgfmathresult\pgf@x%
            \pgf@yc\pgfmathresult pt\relax%
            \advance\pgf@yc1pt\relax%
            \pgfmathdivide@{\pgfmath@tonumber{\pgf@xc}}{\pgfmath@tonumber{\pgf@yc}}%
            \pgfutil@tempdima\pgfmathresult pt\relax%
            \advance\pgfutil@tempdima\pgf@x%
        \fi%
        \pgfextract@process\apex{%
            \pgf@y0pt%
            \pgf@x\pgf@xa%
            \advance\pgf@x-\pgfutil@tempdima%
        }%
        \addtosavedmacro\apex%
        \pgfextract@process\lowerleft{%
            \pgf@y\pgf@ya%
            \pgf@x-\pgfutil@tempdima%
        }%
        \addtosavedmacro\lowerleft%
        \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/outer ysep}}%
        \ifdim\pgf@xb<\pgf@yb%
            \pgf@xb\pgf@yb%
        \fi%
        \pgfextract@process\apexanchor{%
            \apex%
            \advance\pgf@x\cosechalfapexangle\pgf@xb%
        }%
        \addtosavedmacro\apexanchor%
        \pgf@yc-\halfapexangle pt\relax%
        \advance\pgf@yc90pt\relax%
        \divide\pgf@yc2\relax%
        \pgfmathcot@{\pgfmath@tonumber{\pgf@yc}}%
        \pgfextract@process\lowerleftanchor{%
            \lowerleft%
            \advance\pgf@y\pgfmathresult\pgf@xb%
            \advance\pgf@x-\pgf@xb%
        }%
        \addtosavedmacro\lowerleftanchor%
        \pgfextract@process\lowerrightanchor{%
            \lowerleftanchor%
            \pgf@y-\pgf@y%
        }%
        \addtosavedmacro\lowerrightanchor%
    }%
    \anchor{apex}{%
        \trianglepoints%
        \pgfpointadd{\centerpoint}{%
            \pgfmathrotatepointaround{\apexanchor}{\pgfpointorigin}{\rotate}%
        }%
    }%
    \anchor{left corner}{%
        \trianglepoints%
        \pgfpointadd{\centerpoint}{%
            \pgfmathrotatepointaround{\lowerleftanchor}{\pgfpointorigin}{\rotate}%
        }%
    }%
    \anchor{right corner}{%
        \trianglepoints%
        \pgfpointadd{\centerpoint}{%
            \pgfmathrotatepointaround{\lowerrightanchor}{\pgfpointorigin}{\rotate}%
        }%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \anchor{mid west}{%
        \trianglepoints%
        \let\pgf@isoscelestriangle@referencepoint\midpoint%
        \csname pgf@anchor@isosceles triangle@border\endcsname{\pgfqpoint{-1pt}{0pt}}%
    }%
    \anchor{mid east}{%
        \trianglepoints%
        \let\pgf@isoscelestriangle@referencepoint\midpoint%
        \csname pgf@anchor@isosceles triangle@border\endcsname{\pgfqpoint{1pt}{0pt}}%
    }%
    \anchor{base}{\basepoint}%
    \anchor{base west}{%
        \trianglepoints%
        \let\pgf@isoscelestriangle@referencepoint\basepoint%
        \csname pgf@anchor@isosceles triangle@border\endcsname{\pgfqpoint{-1pt}{0pt}}%
    }%
    \anchor{base east}{%
        \trianglepoints%
        \let\pgf@isoscelestriangle@referencepoint\basepoint%
        \csname pgf@anchor@isosceles triangle@border\endcsname{\pgfqpoint{1pt}{0pt}}%
    }%
    \anchor{north}{%
        \trianglepoints%
        \csname pgf@anchor@isosceles triangle@border\endcsname{\pgfqpoint{0pt}{1pt}}%
    }%
    \anchor{south}{%
        \trianglepoints%
        \csname pgf@anchor@isosceles triangle@border\endcsname{\pgfqpoint{0pt}{-1pt}}%
    }%
    \anchor{east}{%
        \trianglepoints%
        \csname pgf@anchor@isosceles triangle@border\endcsname{\pgfqpoint{1pt}{0pt}}%
    }%
    \anchor{west}{%
        \trianglepoints%
        \csname pgf@anchor@isosceles triangle@border\endcsname{\pgfqpoint{-1pt}{0pt}}%
    }%
    \anchor{north east}{%
        \trianglepoints%
        \csname pgf@anchor@isosceles triangle@border\endcsname{\pgfqpoint{1pt}{1pt}}%
    }%
    \anchor{south west}{%
        \trianglepoints%
        \csname pgf@anchor@isosceles triangle@border\endcsname{\pgfqpoint{-1pt}{-1pt}}%
    }%
    \anchor{south east}{%
        \trianglepoints%
        \csname pgf@anchor@isosceles triangle@border\endcsname{\pgfqpoint{1pt}{-1pt}}%
    }%
    \anchor{north west}{%
        \trianglepoints%
        \csname pgf@anchor@isosceles triangle@border\endcsname{\pgfqpoint{-1pt}{1pt}}%
    }%
    \anchor{left side}{%
        \trianglepoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{\pgfpointlineattime{0.5}{\lowerleftanchor}{\apexanchor}}{\centerpoint}}%
                {\centerpoint}{\rotate}%
    }%
    \anchor{right side}{%
        \trianglepoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{\pgfpointlineattime{0.5}{\lowerrightanchor}{\apexanchor}}{\centerpoint}}%
                {\centerpoint}{\rotate}%
    }%
    \anchor{lower side}{%
        \trianglepoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{\pgfpointlineattime{0.5}{\lowerleftanchor}{\lowerrightanchor}}{\centerpoint}}%
                {\centerpoint}{\rotate}%
    }%
    \backgroundpath{%
        \trianglepoints%
        {%
            \pgftransformshift{\centerpoint}%
            \pgftransformrotate{\rotate}%
            \pgfpathmoveto{\apex}%
            \pgfpathlineto{\lowerleft}%
            \pgfpathlineto{\lowerleft\pgf@y-\pgf@y}%
            \pgfpathclose%
        }%
    }%
    \anchorborder{%
        \pgfutil@ifundefined{pgf@isoscelestriangle@referencepoint}{\let\referencepoint\centerpoint}%
            {\let\referencepoint\pgf@isoscelestriangle@referencepoint}%
        \pgfextract@process\externalpoint{%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \referencepoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \trianglepoints%
        \pgfmathanglebetweenpoints{\referencepoint}{\externalpoint}%
        \pgfmathsubtract@{\pgfmathresult}{\rotate}%
            \pgfmathmod@{\pgfmathresult}{360}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \let\externalangle\pgfmathresult%
        \pgfmathanglebetweenpoints{\referencepoint}{\pgfpointadd{\centerpoint}{\lowerrightanchor}}%
        \ifdim\externalangle pt<\pgfmathresult pt\relax%
            \pgfmathanglebetweenpoints{\referencepoint}{\pgfpointadd{\centerpoint}{\lowerleftanchor}}%
            \ifdim\externalangle pt<\pgfmathresult pt\relax%
                \pgfmathanglebetweenpoints{\referencepoint}{\pgfpointadd{\centerpoint}{\apexanchor}}%
                \ifdim\externalangle pt>\pgfmathresult pt\relax%
                    \let\firstpoint\apexanchor%
                    \let\secondpoint\lowerleftanchor%
                \else%
                    \let\firstpoint\apexanchor%
                    \let\secondpoint\lowerrightanchor%
                \fi%
            \else%
                \let\firstpoint\lowerleftanchor%
                \let\secondpoint\lowerrightanchor%
            \fi%
        \else%
            \let\firstpoint\lowerrightanchor%
            \let\secondpoint\apexanchor%
        \fi%
        \pgfpointintersectionoflines{\referencepoint}{\externalpoint}%
            {\pgfmathrotatepointaround{\pgfpointadd{\centerpoint}{\firstpoint}}{\centerpoint}{\rotate}}%
            {\pgfmathrotatepointaround{\pgfpointadd{\centerpoint}{\secondpoint}}{\centerpoint}{\rotate}}%
    }%
}%




\pgfkeys{/pgf/.cd,
    kite upper vertex angle/.initial=120,
    kite lower vertex angle/.initial=60,
    kite vertex angles/.code={%
        \pgfutil@in@{and}{#1}%
        \ifpgfutil@in@%
            \def\pgf@marshal##1and##2\@@{%
                \pgfkeys{/pgf/kite upper vertex angle={##1}}%
                \pgfkeys{/pgf/kite lower vertex angle={##2}}%
            }%
            \expandafter\pgf@marshal#1\@@%
        \else%
            \pgfkeys{/pgf/kite upper vertex angle={#1}}%
            \pgfkeys{/pgf/kite lower vertex angle={#1}}%
        \fi%
    }%
}%

\pgfdeclareshape{kite}{%
    \savedmacro\installkiteparameters{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
        \ifdim\pgf@x<\pgf@y%
            \pgf@x\pgf@y%
        \fi%
        \edef\outersep{\the\pgf@x}%
        \pgfextract@process\centerpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y.5\ht\pgfnodeparttextbox%
            \advance\pgf@y-.5\dp\pgfnodeparttextbox%
        }%
        \pgfextract@process\basepoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y0pt\relax%
        }%
        \pgfextract@process\midpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgfmathsetlength\pgf@y{+.5ex}%
        }%
        \pgfmathdivide{\pgfkeysvalueof{/pgf/kite upper vertex angle}}{2}%
        \let\halfuppervertexangle\pgfmathresult%
        \pgfmathdivide{\pgfkeysvalueof{/pgf/kite lower vertex angle}}{2}%
        \let\halflowervertexangle\pgfmathresult%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y.5\dp\pgfnodeparttextbox%
        \ifpgfshapeborderusesincircle%
            \pgfmathsetmacro\rotate{\pgfkeysvalueof{/pgf/shape border rotate}}%
            \ifdim\pgf@x<\pgf@y%
                \pgf@x\pgf@y%
            \fi%
            \pgf@x1.41421\pgf@x%
            \pgfmathsin@{\halfuppervertexangle}%
            \let\sinehalfuppervertexangle\pgfmathresult%
            \pgfmathreciprocal@{\pgfmathresult}%
            \let\cosechalfuppervertexangle\pgfmathresult%
            \pgf@ya\pgfmathresult\pgf@x%
            \pgfmathsin@{\halflowervertexangle}%
            \let\sinehalflowervertexangle\pgfmathresult%
            \pgfmathreciprocal@{\pgfmathresult}%
            \pgf@yb\pgfmathresult\pgf@x%
            \pgf@yc\pgf@x%
            \pgfmathadd@{\halfuppervertexangle}{\halflowervertexangle}%
            \pgfmathcosec@{\pgfmathresult}%
            \pgf@yc\pgfmathresult\pgf@yc%
            \pgfmathadd@{\sinehalfuppervertexangle}{\sinehalflowervertexangle}%
        \pgf@yc\pgfmathresult\pgf@yc%
            \pgfmathcos@{\halfuppervertexangle}%
            \pgf@yc\pgfmathresult\pgf@yc%
            \pgf@yc-\cosechalfuppervertexangle\pgf@yc%
            \advance\pgf@yc\cosechalfuppervertexangle\pgf@x%
            \edef\deltay{\the\pgf@yc}%
            \advance\pgf@ya-\pgf@yc%
            \advance\pgf@yb\pgf@yc%
            \pgfmathtan@{\halfuppervertexangle}%
            \pgf@xa\pgfmathresult\pgf@ya%
        \else%
            \multiply\pgf@x2\relax%
            \multiply\pgf@y2\relax%
            \pgfmathmod{\pgfkeysvalueof{/pgf/shape border rotate}}{360}%
            \afterassignment\pgfmath@gobbletilpgfmath@%
            \expandafter\c@pgf@counta\pgfmathresult\relax\pgfmath@%
            \advance\c@pgf@counta45\relax%
            \divide\c@pgf@counta90\relax%
            \multiply\c@pgf@counta90\relax%
            \ifnum\c@pgf@counta<0\relax%
                \advance\c@pgf@counta360\relax%
            \fi%
            \edef\rotate{\the\c@pgf@counta}%
            \ifnum\c@pgf@counta=90\relax%
                \pgf@xc\pgf@x%
                \pgf@x\pgf@y%
                \pgf@y\pgf@xc%
            \else%
                \ifnum\c@pgf@counta=270\relax%
                    \pgf@xc\pgf@x%
                    \pgf@x\pgf@y%
                    \pgf@y\pgf@xc%
                \fi%
            \fi%
            \pgfmathadd@{\halfuppervertexangle}{\halflowervertexangle}%
            \pgfmathsin@{\pgfmathresult}%
            \pgfmathreciprocal@{\pgfmathresult}%
            \pgf@ya\pgfmathresult\pgf@y%
            \pgfmathcos@{\halfuppervertexangle}%
            \pgf@ya\pgfmathresult\pgf@ya%
            \pgfmathsin@{\halflowervertexangle}%
            \pgf@ya\pgfmathresult\pgf@ya%
            \pgf@yb\pgf@y%
            \advance\pgf@yb-\pgf@ya%
            \pgf@yc.5\pgf@y%
            \advance\pgf@yc-\pgf@ya%
            \edef\deltay{\the\pgf@yc}%
            \pgfmathtan@{\halfuppervertexangle}%
            \pgf@xa.5\pgf@x%
            \advance\pgf@xa\pgfmathresult\pgf@ya%
            \pgf@xb.5\pgf@x%
            \pgfmathreciprocal@{\pgfmathresult}%
            \advance\pgf@ya\pgfmathresult\pgf@xb%
            \pgfmathtan@{\halflowervertexangle}%
            \pgfmathreciprocal@{\pgfmathresult}%
            \advance\pgf@yb\pgfmathresult\pgf@xb%
        \fi%
        \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/minimum height}}%
        \pgf@y\pgf@ya%
        \advance\pgf@y\pgf@yb%
        \ifdim\pgf@y<\pgf@yc%
            \pgfmathreciprocal@{\pgfmath@tonumber{\pgf@y}}%
            \pgf@yc\pgfmathresult\pgf@yc%
            \pgf@xa\pgfmath@tonumber{\pgf@yc}\pgf@xa%
            \pgf@ya\pgfmath@tonumber{\pgf@yc}\pgf@ya%
            \pgf@yb\pgfmath@tonumber{\pgf@yc}\pgf@yb%
        \fi%
        \pgf@x2.0\pgf@xa%
        \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/minimum width}}%
        \ifdim\pgf@x<\pgf@xc%
            \pgfmathreciprocal@{\pgfmath@tonumber{\pgf@x}}%
            \pgf@xc\pgfmathresult\pgf@xc%
            \pgf@xa\pgfmath@tonumber{\pgf@xc}\pgf@xa%
            \pgf@ya\pgfmath@tonumber{\pgf@xc}\pgf@ya%
            \pgf@yb\pgfmath@tonumber{\pgf@xc}\pgf@yb%
        \fi%
        \edef\kitehalfwidth{\the\pgf@xa}%
        \edef\kiteheight{\the\pgf@ya}%
        \edef\kitedepth{\the\pgf@yb}%
        \pgfextract@process\toppoint{%
            \centerpoint%
            \advance\pgf@y\deltay\relax%
            \advance\pgf@y\kiteheight%
        }%
        \pgfextract@process\bottompoint{%
            \centerpoint%
            \advance\pgf@y\deltay\relax%
            \advance\pgf@y-\kitedepth%
        }%
        \pgfextract@process\leftpoint{%
            \centerpoint%
            \advance\pgf@y\deltay\relax%
            \advance\pgf@x-\kitehalfwidth%
        }%
        \pgfextract@process\rightpoint{%
            \centerpoint%
            \advance\pgf@y\deltay\relax%
                \advance\pgf@x\kitehalfwidth%
        }%
        \pgfmathsin@{\halfuppervertexangle}%
        \pgfmathreciprocal@{\pgfmathresult}%
        \pgf@y\outersep\relax%
        \pgf@y\pgfmathresult\pgf@y%
        \edef\topmiter{\the\pgf@y}%
        \pgfmathsin@{\halflowervertexangle}%
        \pgfmathreciprocal@{\pgfmathresult}%
        \pgf@y\outersep\relax%
        \pgf@y\pgfmathresult\pgf@y%
        \edef\bottommiter{\the\pgf@y}%
        \pgfmathsubtract@{180}{\halflowervertexangle}%
        \pgfmathsubtract@{\pgfmathresult}{\halfuppervertexangle}%
        \pgfmathdivide@{\pgfmathresult}{2}%
        \pgfmathsin@{\pgfmathresult}%
        \pgfmathreciprocal@{\pgfmathresult}%
        \pgf@xa\outersep\relax%
        \pgf@xa\pgfmathresult\pgf@xa%
        \pgfmathsubtract@{\halfuppervertexangle}{\halflowervertexangle}%
        \pgfmathdivide@{\pgfmathresult}{2}%
        \let\angle\pgfmathresult%
        \pgfextract@process\rightmiter{%
            \pgfqpointpolar{\angle}{\the\pgf@xa}%
        }%
        \pgfmathsubtract@{180}{\angle}%
        \let\angle\pgfmathresult%
        \pgfextract@process\leftmiter{%
            \pgfqpointpolar{\angle}{\the\pgf@xa}%
        }%
        \pgfextract@process\topborderpoint{%
            \toppoint%
            \advance\pgf@y\topmiter\relax%
        }%
        \pgfextract@process\bottomborderpoint{%
            \bottompoint%
            \advance\pgf@y-\bottommiter\relax%
        }%
        \pgfextract@process\leftborderpoint{%
            \leftpoint%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \leftmiter%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \pgfextract@process\rightborderpoint{%
            \rightpoint%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \rightmiter%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \pgfmathanglebetweenpoints{\centerpoint}{\topborderpoint}%
        \let\angletotoppoint\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\leftborderpoint}%
        \let\angletoleftpoint\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\bottomborderpoint}%
        \let\angletobottompoint\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\rightborderpoint}%
        \let\angletorightpoint\pgfmathresult%
        \pgfextract@process\rotatedbasepoint{%
            \pgfmathrotatepointaround{\basepoint}{\centerpoint}{-\rotate}%
        }%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\topborderpoint}%
        \let\baseangletotoppoint\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\leftborderpoint}%
        \let\baseangletoleftpoint\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\bottomborderpoint}%
        \let\baseangletobottompoint\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\rightborderpoint}%
        \let\baseangletorightpoint\pgfmathresult%
        \pgfextract@process\rotatedmidpoint{%
            \pgfmathrotatepointaround{\midpoint}{\centerpoint}{-\rotate}%
        }%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\topborderpoint}%
        \let\midangletotoppoint\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\leftborderpoint}%
        \let\midangletoleftpoint\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\bottomborderpoint}%
        \let\midangletobottompoint\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\rightborderpoint}%
        \let\midangletorightpoint\pgfmathresult%
        \pgfextractx\pgf@xa{\pgfpointdiff{\leftborderpoint}{\rightborderpoint}}%
        \ifdim\pgf@xa<0pt\relax%
            \pgf@xa-\pgf@xa%
        \fi%
        \pgfextracty\pgf@ya{\pgfpointdiff{\topborderpoint}{\bottomborderpoint}}%
        \ifdim\pgf@ya<0pt\relax%
            \pgf@ya-\pgf@ya%
        \fi%
        \ifdim\pgf@ya>\pgf@xa%
            \edef\externalradius{\the\pgf@ya}%
        \else%
            \edef\externalradius{\the\pgf@xa}%
        \fi%
        \pgfextract@process\toppoint{%
            \pgfmathrotatepointaround{\toppoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\bottompoint{%
            \pgfmathrotatepointaround{\bottompoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\leftpoint{%
            \pgfmathrotatepointaround{\leftpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\rightpoint{%
            \pgfmathrotatepointaround{\rightpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\topborderpoint{%
            \pgfmathrotatepointaround{\topborderpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\bottomborderpoint{%
            \pgfmathrotatepointaround{\bottomborderpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\leftborderpoint{%
            \pgfmathrotatepointaround{\leftborderpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\rightborderpoint{%
            \pgfmathrotatepointaround{\rightborderpoint}{\centerpoint}{\rotate}%
        }%
        \addtosavedmacro{\rotate}%
        \addtosavedmacro{\externalradius}%
        \addtosavedmacro\toppoint%
        \addtosavedmacro\bottompoint%
        \addtosavedmacro\leftpoint%
        \addtosavedmacro\rightpoint%
        \addtosavedmacro\topborderpoint%
        \addtosavedmacro\bottomborderpoint%
        \addtosavedmacro\leftborderpoint%
        \addtosavedmacro\rightborderpoint%
        \addtosavedmacro\angletotoppoint%
        \addtosavedmacro\angletobottompoint%
        \addtosavedmacro\angletoleftpoint%
        \addtosavedmacro\angletorightpoint%
        \addtosavedmacro\baseangletotoppoint%
        \addtosavedmacro\baseangletobottompoint%
        \addtosavedmacro\baseangletoleftpoint%
        \addtosavedmacro\baseangletorightpoint%
        \addtosavedmacro\midangletotoppoint%
        \addtosavedmacro\midangletobottompoint%
        \addtosavedmacro\midangletoleftpoint%
        \addtosavedmacro\midangletorightpoint%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt\relax%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+.5ex}%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{base}{\basepoint}%
    \anchor{base west}{%
        \installkiteparameters%
        \let\pgf@kiteanchorborderreferencepoint\basepoint%
        \csname pgf@anchor@kite@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{base east}{%
        \installkiteparameters%
        \let\pgf@kiteanchorborderreferencepoint\basepoint%
        \csname pgf@anchor@kite@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{mid}{\midpoint}%
    \anchor{mid west}{%
        \installkiteparameters%
        \let\pgf@kiteanchorborderreferencepoint\midpoint%
        \csname pgf@anchor@kite@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{mid east}{%
        \installkiteparameters%
        \let\pgf@kiteanchorborderreferencepoint\midpoint%
        \csname pgf@anchor@kite@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{north}{%
        \installkiteparameters%
        \csname pgf@anchor@kite@border\endcsname{\pgfqpoint{0pt}{\externalradius}}%
    }%
    \anchor{south}{%
        \installkiteparameters%
        \csname pgf@anchor@kite@border\endcsname{\pgfqpoint{0pt}{-\externalradius}}%
    }%
    \anchor{east}{%
        \installkiteparameters%
        \csname pgf@anchor@kite@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{west}{%
        \installkiteparameters%
        \csname pgf@anchor@kite@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{north east}{%
        \installkiteparameters%
        \csname pgf@anchor@kite@border\endcsname{\pgfqpoint{\externalradius}{\externalradius}}%
    }%
    \anchor{south west}{%
        \installkiteparameters%
        \csname pgf@anchor@kite@border\endcsname{\pgfqpoint{-\externalradius}{-\externalradius}}%
    }%
    \anchor{south east}{%
        \installkiteparameters%
        \csname pgf@anchor@kite@border\endcsname{\pgfqpoint{\externalradius}{-\externalradius}}%
    }%
    \anchor{north west}{%
        \installkiteparameters%
        \csname pgf@anchor@kite@border\endcsname{\pgfqpoint{-\externalradius}{\externalradius}}%
    }%
    \anchor{upper vertex}{%
        \installkiteparameters%
        \topborderpoint}%
    \anchor{lower vertex}{%
        \installkiteparameters%
        \bottomborderpoint}%
    \anchor{left vertex}{%
        \installkiteparameters%
        \leftborderpoint}%
    \anchor{right vertex}{%
        \installkiteparameters%
        \rightborderpoint}%
    \anchor{upper left side}{%
        \installkiteparameters%
        \pgfpointlineattime{0.5}{\topborderpoint}{\leftborderpoint}}%
    \anchor{lower left side}{%
        \installkiteparameters%
        \pgfpointlineattime{0.5}{\bottomborderpoint}{\leftborderpoint}}%
    \anchor{upper right side}{%
        \installkiteparameters%
        \pgfpointlineattime{0.5}{\topborderpoint}{\rightborderpoint}}%
    \anchor{lower right side}{%
        \installkiteparameters%
        \pgfpointlineattime{0.5}{\bottomborderpoint}{\rightborderpoint}}%
    \backgroundpath{%
        \installkiteparameters%
        \pgfpathmoveto{\toppoint}%
        \pgfpathlineto{\leftpoint}%
        \pgfpathlineto{\bottompoint}%
        \pgfpathlineto{\rightpoint}%
        \pgfpathclose%
    }%
    \anchorborder{%
        \edef\externalx{\the\pgf@x}%
        \edef\externaly{\the\pgf@y}%
        \pgfutil@ifundefined{pgf@kiteanchorborderreferencepoint}%
            {\let\referencepoint\centerpoint}%
            {\let\referencepoint\pgf@kiteanchorborderreferencepoint}%
        \referencepoint%
        \pgf@xa\externalx\relax%
        \pgf@ya\externaly\relax%
        \advance\pgf@xa\pgf@x%
        \advance\pgf@ya\pgf@y%
        \edef\externalx{\the\pgf@xa}%
        \edef\externaly{\the\pgf@ya}%
        \installkiteparameters%
        \pgfmathanglebetweenpoints{\referencepoint}{\pgfqpoint{\externalx}{\externaly}}%
        \pgfmathsubtract@{\pgfmathresult}{\rotate}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \let\externalangle\pgfmathresult%
        \ifx\referencepoint\basepoint%
            \let\angletotoppoint\baseangletotoppoint%
            \let\angletobottompoint\baseangletobottompoint%
            \let\angletoleftpoint\baseangletoleftpoint%
            \let\angletorightpoint\baseangletorightpoint%
        \else%
            \ifx\referencepoint\midpoint%
                \let\angletotoppoint\midangletotoppoint%
                \let\angletobottompoint\midangletobottompoint%
                \let\angletoleftpoint\midangletoleftpoint%
                \let\angletorightpoint\midangletorightpoint%
        \fi\fi%
        \ifdim\angletorightpoint pt<\angletotoppoint pt\relax%
            \ifdim\externalangle pt<\angletorightpoint pt\relax%
                \let\firstpoint\rightborderpoint%
                \let\secondpoint\bottomborderpoint%
            \else%
                \ifdim\externalangle pt<\angletotoppoint pt\relax%
                    \let\firstpoint\rightborderpoint%
                    \let\secondpoint\topborderpoint%
                \else%
                    \ifdim\externalangle pt<\angletoleftpoint pt\relax%
                        \let\firstpoint\topborderpoint%
                        \let\secondpoint\leftborderpoint%
                    \else%
                        \ifdim\externalangle pt<\angletobottompoint pt\relax%
                            \let\firstpoint\leftborderpoint%
                            \let\secondpoint\bottomborderpoint%
                        \else%
                            \let\firstpoint\rightborderpoint%
                            \let\secondpoint\bottomborderpoint%
                        \fi%
                    \fi%
                \fi%
            \fi%
        \else%
            \ifdim\externalangle pt<\angletotoppoint pt\relax%
                \let\firstpoint\rightborderpoint%
                \let\secondpoint\topborderpoint%
            \else%
                \ifdim\externalangle pt<\angletoleftpoint pt\relax%
                    \let\firstpoint\leftborderpoint%
                    \let\secondpoint\topborderpoint%
                \else%
                    \ifdim\externalangle pt<\angletobottompoint pt\relax%
                        \let\firstpoint\bottomborderpoint%
                        \let\secondpoint\leftborderpoint%
                    \else%
                        \ifdim\externalangle pt<\angletorightpoint pt\relax%
                            \let\firstpoint\rightborderpoint%
                            \let\secondpoint\bottomborderpoint%
                        \else%
                            \let\firstpoint\rightborderpoint%
                            \let\secondpoint\topborderpoint%
                        \fi%
                    \fi%
                \fi%
            \fi%
        \fi%
        \pgfpointintersectionoflines{\referencepoint}{\pgfqpoint{\externalx}{\externaly}}%
                {\firstpoint}{\secondpoint}%
    }%
}%





\pgfkeys{/pgf/.cd,
    dart tip angle/.initial=45,
    dart tail angle/.initial=135,
}%

\pgfdeclareshape{dart}{%
    \savedmacro\installdartparameters{%
        \pgfmathdivide{\pgfkeysvalueof{/pgf/dart tip angle}}{2}%
        \let\halftipangle\pgfmathresult%
        \pgfmathdivide{\pgfkeysvalueof{/pgf/dart tail angle}}{2}%
        \let\halftailangle\pgfmathresult%
        \pgfmathcot@{\halftipangle}%
        \let\cothalftipangle\pgfmathresult%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
        \ifdim\pgf@x<\pgf@y%
            \pgf@x\pgf@y%
        \fi%
        \edef\outersep{\the\pgf@x}%
        \pgfextract@process\centerpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y.5\ht\pgfnodeparttextbox%
            \advance\pgf@y-.5\dp\pgfnodeparttextbox%
        }%
        \pgfextract@process\basepoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y0pt\relax%
        }%
        \pgfextract@process\midpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgfmathsetlength\pgf@y{+.5ex}%
        }%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y.5\dp\pgfnodeparttextbox%
        \ifpgfshapeborderusesincircle%
            \pgfmathsetmacro\rotate{\pgfkeysvalueof{/pgf/shape border rotate}}%
            \ifdim\pgf@x<\pgf@y%
                \pgf@x\pgf@y%
            \fi%
            \pgf@x1.41421\pgf@x%
            \pgf@xa\cothalftipangle\pgf@x%
            \advance\pgf@xa\pgf@x%
        \else%
            \pgfmathmod{\pgfkeysvalueof{/pgf/shape border rotate}}{360}%
            \afterassignment\pgfmath@gobbletilpgfmath@%
            \expandafter\c@pgf@counta\pgfmathresult\relax\pgfmath@%
            \advance\c@pgf@counta45\relax%
            \divide\c@pgf@counta90\relax%
            \multiply\c@pgf@counta90\relax%
            \ifnum\c@pgf@counta<0\relax%
                \advance\c@pgf@counta360\relax%
            \fi%
            \edef\rotate{\the\c@pgf@counta}%
            \ifnum\c@pgf@counta=90\relax%
                \pgf@xc\pgf@x%
                \pgf@x\pgf@y%
                \pgf@y\pgf@xc%
            \else%
                \ifnum\c@pgf@counta=270\relax%
                    \pgf@xc\pgf@x%
                    \pgf@x\pgf@y%
                    \pgf@y\pgf@xc%
                \fi%
            \fi%
            \pgf@xa\cothalftipangle\pgf@y%
            \advance\pgf@xa2.0\pgf@x%
        \fi%
        \pgfmathsubtract@{\halftailangle}{\halftipangle}%
        \pgfmathcosec@{\pgfmathresult}%
        \pgf@ya\pgfmathresult\pgf@xa%
        \pgfmathsin@{\halftipangle}%
        \pgf@ya\pgfmathresult\pgf@ya%
        \pgfmathcos@{\halftipangle}%
        \pgf@ya\pgfmathresult\pgf@ya%
        \pgf@xb\cothalftipangle\pgf@ya%
        \pgf@xc-\pgf@xa%
        \advance\pgf@xc\pgf@xb%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@xb<\pgf@y%
            \pgfmathreciprocal@{\pgfmath@tonumber{\pgf@xb}}%
            \pgf@y\pgfmathresult\pgf@y%
            \pgf@xa\pgfmath@tonumber{\pgf@y}\pgf@xa%
            \pgf@xc\pgfmath@tonumber{\pgf@y}\pgf@xc%
            \pgf@ya\pgfmath@tonumber{\pgf@y}\pgf@ya%
            \pgf@x\pgfmath@tonumber{\pgf@y}\pgf@x%
        \fi%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/minimum width}}%
        \pgf@y.5\pgf@y%
        \ifdim\pgf@ya<\pgf@y%
            \pgfmathreciprocal@{\pgfmath@tonumber{\pgf@ya}}%
            \pgf@ya\pgf@y%
            \pgf@y\pgfmathresult\pgf@y%
            \pgf@xa\pgfmath@tonumber{\pgf@y}\pgf@xa%
            \pgf@xc\pgfmath@tonumber{\pgf@y}\pgf@xc%
            \pgf@x\pgfmath@tonumber{\pgf@y}\pgf@x%
        \fi%
        \edef\dartlength{\the\pgf@xa}%
        \edef\deltax{\the\pgf@x}%
        \edef\taillength{\the\pgf@xc}%
        \edef\halftailseparation{\the\pgf@ya}
        \pgfextract@process\tippoint{%
            \centerpoint%
            \advance\pgf@x\dartlength\relax%
            \advance\pgf@x-\deltax\relax%
        }%
        \pgfextract@process\tailcenterpoint{%
            \centerpoint%
            \advance\pgf@x-\deltax\relax%
        }%
        \pgfextract@process\lefttailpoint{%
            \centerpoint%
            \advance\pgf@x-\deltax\relax%
            \advance\pgf@x-\taillength\relax%
            \advance\pgf@y\halftailseparation\relax%
        }%
        \pgfextract@process\righttailpoint{%
            \centerpoint%
            \advance\pgf@x-\deltax\relax%
            \advance\pgf@x-\taillength\relax%
            \advance\pgf@y-\halftailseparation\relax%
        }%
        \pgfextract@process\tipmiter{%
            \pgfmathcosec@{\halftipangle}%
            \pgf@x\outersep\relax%
            \pgf@x\pgfmathresult\pgf@x%
            \pgf@y0pt\relax%
        }%
        \pgfextract@process\tailcentermiter{%
            \pgfmathcosec@{\halftailangle}%
            \pgf@x-\outersep\relax%
            \pgf@x\pgfmathresult\pgf@x%
            \pgf@y0pt\relax%
        }%
        \pgfmathsubtract@{\halftailangle}{\halftipangle}%
        \pgfmathdivide@{\pgfmathresult}{2}%
        \let\angle\pgfmathresult%
        \pgfmathcosec@{\pgfmathresult}%
        \pgf@x\outersep\relax%
        \pgf@x\pgfmathresult\pgf@x%
        \pgfmathadd@{\angle}{90}%
        \pgfmathsubtract{\pgfmathresult}{\halftailangle}%
        \pgfmathsincos@{\pgfmathresult}%
        \pgf@ya\pgfmathresultx\pgf@x%
        \pgf@xa\pgfmathresulty\pgf@x%
        \pgfextract@process\lefttailmiter{%
            \pgf@x-\pgf@xa%
            \pgf@y\pgf@ya%
        }%
        \pgfextract@process\righttailmiter{%
            \pgf@x-\pgf@xa%
            \pgf@y-\pgf@ya%
        }%
        \pgfextract@process\tipborderpoint{%
            \pgfpointadd{\tippoint}{\tipmiter}
        }%
        \pgfextract@process\tailcenterborderpoint{%
            \pgfpointadd{\tailcenterpoint}{\tailcentermiter}%
        }%
        \pgfextract@process\lefttailborderpoint{%
            \pgfpointadd{\lefttailpoint}{\lefttailmiter}%
        }%
        \pgfextract@process\righttailborderpoint{%
            \pgfpointadd{\righttailpoint}{\righttailmiter}%
        }%
        \pgfmathanglebetweenpoints{\centerpoint}{\tipborderpoint}%
        \let\angletotip\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\tailcenterborderpoint}%
        \let\angletotailcenter\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\lefttailborderpoint}%
        \let\angletolefttail\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\righttailborderpoint}%
        \let\angletorighttail\pgfmathresult%
        \pgfextract@process\rotatedbasepoint{%
            \pgfmathrotatepointaround{\basepoint}{\centerpoint}{-\rotate}%
        }%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\tipborderpoint}%
        \let\baseangletotip\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\tailcenterborderpoint}%
        \let\baseangletotailcenter\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\lefttailborderpoint}%
        \let\baseangletolefttail\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedbasepoint}{\righttailborderpoint}%
        \let\baseangletorighttail\pgfmathresult%
        \pgfextract@process\rotatedmidpoint{%
            \pgfmathrotatepointaround{\midpoint}{\centerpoint}{-\rotate}%
        }%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\tipborderpoint}%
        \let\midangletotip\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\tailcenterborderpoint}%
        \let\midangletotailcenter\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\lefttailborderpoint}%
        \let\midangletolefttail\pgfmathresult%
        \pgfmathanglebetweenpoints{\rotatedmidpoint}{\righttailborderpoint}%
        \let\midangletorighttail\pgfmathresult%
        \pgfextract@process\tippoint{%
            \pgfmathrotatepointaround{\tippoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\tailcenterpoint{%
            \pgfmathrotatepointaround{\tailcenterpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\lefttailpoint{%
            \pgfmathrotatepointaround{\lefttailpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\righttailpoint{%
            \pgfmathrotatepointaround{\righttailpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextractx\pgf@xa{\pgfpointdiff{\lefttailborderpoint}{\tipborderpoint}}%
        \pgfextracty\pgf@ya{\pgfpointdiff{\lefttailborderpoint}{\righttailborderpoint}}%
        \ifdim\pgf@xa<0pt\relax%
            \pgf@xa-\pgf@xa%
        \fi%
        \ifdim\pgf@ya<0pt\relax%
            \pgf@ya-\pgf@ya%
        \fi%
        \ifdim\pgf@xa>\pgf@ya%
            \edef\externalradius{\the\pgf@xa}%
        \else%
            \edef\externalradius{\the\pgf@ya}%
        \fi%
        \pgfextract@process\tipborderpoint{%
            \pgfmathrotatepointaround{\tipborderpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\tailcenterborderpoint{%
            \pgfmathrotatepointaround{\tailcenterborderpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\lefttailborderpoint{%
            \pgfmathrotatepointaround{\lefttailborderpoint}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\righttailborderpoint{%
            \pgfmathrotatepointaround{\righttailborderpoint}{\centerpoint}{\rotate}%
        }%
        \addtosavedmacro{\rotate}%
        \addtosavedmacro{\externalradius}%
        \addtosavedmacro{\tippoint}%
        \addtosavedmacro{\tailcenterpoint}%
        \addtosavedmacro{\lefttailpoint}%
        \addtosavedmacro{\righttailpoint}%
        \addtosavedmacro{\tipborderpoint}%
        \addtosavedmacro{\tailcenterborderpoint}%
        \addtosavedmacro{\lefttailborderpoint}%
        \addtosavedmacro{\righttailborderpoint}%
        \addtosavedmacro{\angletotip}%
        \addtosavedmacro{\angletotailcenter}%
        \addtosavedmacro{\angletolefttail}%
        \addtosavedmacro{\angletorighttail}%
        \addtosavedmacro{\baseangletotip}%
        \addtosavedmacro{\baseangletotailcenter}%
        \addtosavedmacro{\baseangletolefttail}%
        \addtosavedmacro{\baseangletorighttail}%
        \addtosavedmacro{\midangletotip}%
        \addtosavedmacro{\midangletotailcenter}%
        \addtosavedmacro{\midangletolefttail}%
        \addtosavedmacro{\midangletorighttail}%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt\relax%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+.5ex}%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{base}{\basepoint}%
    \anchor{base west}{%
        \installdartparameters%
        \let\pgf@dartanchorborderreferencepoint\basepoint%
        \csname pgf@anchor@dart@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{base east}{%
        \installdartparameters%
        \let\pgf@dartanchorborderreferencepoint\basepoint%
        \csname pgf@anchor@dart@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{mid}{\midpoint}%
    \anchor{mid west}{%
        \installdartparameters%
        \let\pgf@dartanchorborderreferencepoint\midpoint%
        \csname pgf@anchor@dart@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{mid east}{%
        \installdartparameters%
        \let\pgf@dartanchorborderreferencepoint\midpoint%
        \csname pgf@anchor@dart@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{north}{%
        \installdartparameters%
        \csname pgf@anchor@dart@border\endcsname{\pgfqpoint{0pt}{\externalradius}}%
    }%
    \anchor{south}{%
        \installdartparameters%
        \csname pgf@anchor@dart@border\endcsname{\pgfqpoint{0pt}{-\externalradius}}%
    }%
    \anchor{east}{%
        \installdartparameters%
        \csname pgf@anchor@dart@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{west}{%
        \installdartparameters%
        \csname pgf@anchor@dart@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{north east}{%
        \installdartparameters%
        \csname pgf@anchor@dart@border\endcsname{\pgfqpoint{\externalradius}{\externalradius}}%
    }%
    \anchor{south west}{%
        \installdartparameters%
        \csname pgf@anchor@dart@border\endcsname{\pgfqpoint{-\externalradius}{-\externalradius}}%
    }%
    \anchor{south east}{%
        \installdartparameters%
        \csname pgf@anchor@dart@border\endcsname{\pgfqpoint{\externalradius}{-\externalradius}}%
    }%
    \anchor{north west}{%
        \installdartparameters%
        \csname pgf@anchor@dart@border\endcsname{\pgfqpoint{-\externalradius}{\externalradius}}%
    }%
    \anchor{tip}{%
        \installdartparameters%
        \tipborderpoint}%
    \anchor{left tail}{%
        \installdartparameters%
        \lefttailborderpoint}%
    \anchor{right tail}{%
        \installdartparameters%
        \righttailborderpoint}%
    \anchor{tail center}{%
        \installdartparameters%
        \tailcenterborderpoint}%
    \anchor{left side}{%
        \installdartparameters%
        \pgfpointlineattime{0.5}{\tipborderpoint}{\lefttailborderpoint}}%
    \anchor{right side}{%
        \installdartparameters%
        \pgfpointlineattime{0.5}{\tipborderpoint}{\righttailborderpoint}}%
    \backgroundpath{%
        \installdartparameters%
        \pgfpathmoveto{\tippoint}%
        \pgfpathlineto{\lefttailpoint}%
        \pgfpathlineto{\tailcenterpoint}%
        \pgfpathlineto{\righttailpoint}%
        \pgfpathclose%
    }%
    \anchorborder{%
        \edef\externalx{\the\pgf@x}%
        \edef\externaly{\the\pgf@y}%
        \pgfutil@ifundefined{pgf@dartanchorborderreferencepoint}%
            {\let\referencepoint\centerpoint}%
            {\let\referencepoint\pgf@dartanchorborderreferencepoint}%
        \referencepoint%
        \pgf@xa\externalx\relax%
        \pgf@ya\externaly\relax%
        \advance\pgf@xa\pgf@x%
        \advance\pgf@ya\pgf@y%
        \edef\externalx{\the\pgf@xa}%
        \edef\externaly{\the\pgf@ya}%
        \installdartparameters%
        \pgfmathanglebetweenpoints{\referencepoint}{\pgfqpoint{\externalx}{\externaly}}%
        \pgfmathsubtract@{\pgfmathresult}{\rotate}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \let\externalangle\pgfmathresult%
        \ifx\referencepoint\basepoint%
            \let\angletotip\baseangletotip%
            \let\angletotailcenter\baseangletotailcenter%
            \let\angletolefttail\baseangletolefttail%
            \let\angletorighttail\baseangletorighttail%
        \else%
            \ifx\referencepoint\midpoint%
                \let\angletotip\midangletotip%
                \let\angletotailcenter\midangletotailcenter%
                \let\angletolefttail\midangletolefttail%
                \let\angletorighttail\midangletorighttail%
        \fi\fi%
        \ifdim\externalangle pt<\angletotip pt\relax%
            \let\firstpoint\tipborderpoint%
            \let\secondpoint\righttailborderpoint%
        \else%
            \ifdim\externalangle pt<\angletolefttail pt\relax%
                \let\firstpoint\lefttailborderpoint%
                \let\secondpoint\tipborderpoint%
            \else%
                \ifdim\externalangle pt<\angletotailcenter pt\relax%
                    \let\firstpoint\lefttailborderpoint%
                    \let\secondpoint\tailcenterborderpoint%
                \else%
                    \ifdim\externalangle pt<\angletorighttail pt\relax%
                        \let\firstpoint\righttailborderpoint%
                        \let\secondpoint\tailcenterborderpoint%
                    \else%
                        \let\firstpoint\tipborderpoint%
                        \let\secondpoint\righttailborderpoint%
                    \fi%
                \fi%
            \fi%
        \fi%
        \pgfpointintersectionoflines{\referencepoint}{\pgfqpoint{\externalx}{\externaly}}%
                {\firstpoint}{\secondpoint}%
    }%
}%



\pgfkeys{/pgf/circular sector angle/.initial=60}%

\pgfdeclareshape{circular sector}{%
    \savedmacro\installcircularsectorparameters{%
        \pgfextract@process\centerpoint{%
            \pgf@x.5\wd\pgfnodeparttextbox%
            \pgf@y.5\ht\pgfnodeparttextbox%
            \advance\pgf@y-.5\dp\pgfnodeparttextbox%
        }%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
        \ifdim\pgf@x<\pgf@y%
            \pgf@x\pgf@y%
        \fi%
        \edef\outersep{\the\pgf@x}%
        \pgfmathmod{\pgfkeysvalueof{/pgf/circular sector angle}}{360}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \let\angle\pgfmathresult%
        \pgfmathdivide@{\pgfmathresult}{2}%
        \let\halfangle\pgfmathresult%
        \pgfmathsin@{\halfangle}%
        \let\sinehalfangle\pgfmathresult%
        \pgfmathreciprocal@{\pgfmathresult}%
        \let\cosechalfangle\pgfmathresult%
        \pgfmathabs@{\halfangle}%
        \pgfmathcos@{\pgfmathresult}%
        \let\coshalfangle\pgfmathresult%
        \pgf@x\pgfmathresult pt\relax%
        \pgf@x\cosechalfangle\pgf@x%
        \edef\cothalfangle{\pgfmath@tonumber{\pgf@x}}%
        \pgf@x\outersep\relax%
        \pgf@x\cosechalfangle\pgf@x%
        \edef\centermiter{\the\pgf@x}%
        \pgfmathsubtract@{180}{\halfangle}%
        \let\startangle\pgfmathresult%
        \pgfmathadd@{180}{\halfangle}%
        \let\endangle\pgfmathresult%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y.5\dp\pgfnodeparttextbox%
        \ifpgfshapeborderusesincircle%
            \pgfmathsetmacro\rotate{\pgfkeysvalueof{/pgf/shape border rotate}}%
            \ifdim\pgf@x<\pgf@y%
                \pgf@x\pgf@y%
            \fi%
            \pgf@x1.41421\pgf@x%
            \pgf@xa\cosechalfangle\pgf@x%
            \pgf@xb\pgf@xa%
            \advance\pgf@xa\pgf@x%
        \else%
            \pgfmathmod{\pgfkeysvalueof{/pgf/shape border rotate}}{360}%
            \afterassignment\pgfmath@gobbletilpgfmath@%
            \expandafter\c@pgf@counta\pgfmathresult\relax\pgfmath@%
            \advance\c@pgf@counta45\relax%
            \divide\c@pgf@counta90\relax%
            \multiply\c@pgf@counta90\relax%
            \ifnum\c@pgf@counta<0\relax%
                \advance\c@pgf@counta360\relax%
            \fi%
            \edef\rotate{\the\c@pgf@counta}%
            \ifnum\c@pgf@counta=90\relax%
                \pgf@xc\pgf@x%
                \pgf@x\pgf@y%
                \pgf@y\pgf@xc%
            \else%
                \ifnum\c@pgf@counta=270\relax%
                    \pgf@xc\pgf@x%
                    \pgf@x\pgf@y%
                    \pgf@y\pgf@xc%
                \fi%
            \fi%
            \pgf@xa\cosechalfangle\pgf@y%
            \pgf@xa\coshalfangle\pgf@xa%
            \advance\pgf@xa\pgf@x%
            \pgf@xb\pgf@xa%
            \advance\pgf@xa\pgf@x%
            \pgfmathveclen@{\pgfmath@tonumber{\pgf@xa}}{\pgfmath@tonumber{\pgf@y}}%
            \pgf@xa\pgfmathresult pt\relax%
        \fi%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/minimum width}}%
        \pgf@x.5\pgf@x%
        \pgfmathsec@{\halfangle}%
        \pgf@xc\pgfmathresult\pgf@xb%
        \ifdim\pgf@xc<0pt\relax%
            \pgf@xc-\pgf@xc%
        \fi%
        \ifdim\pgf@xc<\pgf@x%
            \pgfmathreciprocal{\pgfmath@tonumber{\pgf@xc}}%
            \pgf@xc\pgfmathresult\pgf@x%
            \pgf@xa\pgfmath@tonumber{\pgf@xc}\pgf@xa%
            \pgf@xb\pgfmath@tonumber{\pgf@xc}\pgf@xb%
        \fi%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@xa<\pgf@y%
            \pgfmathreciprocal{\pgfmath@tonumber{\pgf@xa}}%
            \pgf@xc\pgfmathresult\pgf@y%
            \pgf@xa\pgf@y%
            \pgf@xb\pgfmath@tonumber{\pgf@xc}\pgf@xb%
        \fi%
        \edef\centeroffset{\the\pgf@xb}%
        \edef\radius{\the\pgf@xa}%
        \advance\pgf@xa\outersep\relax%
        \edef\borderradius{\the\pgf@xa}%
        \pgf@x\outersep\relax%
        \pgf@x\cosechalfangle\pgf@x%
        \pgf@x\coshalfangle\pgf@x%
        \advance\pgf@xa\pgf@x%
        \edef\cornerradius{\the\pgf@xa}%
        \pgfextract@process\sectorcenter{%
            \centerpoint%
            \advance\pgf@x\centeroffset%
        }%
        \pgfextract@process\arcstart{%
            \pgfqpointpolar{\startangle}{\radius}%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \sectorcenter%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \pgfextract@process\sectorcenterborder{%
            \sectorcenter%
            \advance\pgf@x\centermiter\relax%
        }%
        \pgfextract@process\arcstartborder{%
            \pgfqpointpolar{\startangle}{\borderradius}%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \sectorcenter%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \pgfextract@process\arcendborder{%
            \pgfqpointpolar{\endangle}{\borderradius}%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \sectorcenter%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \pgfextract@process\arcstartcorner{%
            \pgfqpointpolar{\startangle}{\cornerradius}%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \sectorcenterborder%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \pgfextract@process\arcendcorner{%
            \pgfqpointpolar{\endangle}{\cornerradius}%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \sectorcenterborder%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \pgfmathanglebetweenpoints{\centerpoint}{\sectorcenterborder}%
        \let\angletosectorcenterborder\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\arcstartborder}%
        \let\angletoarcstartborder\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\arcendborder}%
        \let\angletoarcendborder\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\arcstartcorner}%
        \let\angletoarcstartcorner\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\arcendcorner}%
        \let\angletoarcendcorner\pgfmathresult%
        \pgfextract@process\sectorcenter{%
            \pgfmathrotatepointaround{\sectorcenter}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\arcstart{%
            \pgfmathrotatepointaround{\arcstart}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\sectorcenterborder{%
            \pgfmathrotatepointaround{\sectorcenterborder}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\arcstartborder{%
            \pgfmathrotatepointaround{\arcstartborder}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\arcendborder{%
            \pgfmathrotatepointaround{\arcendborder}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\arcstartcorner{%
            \pgfmathrotatepointaround{\arcstartcorner}{\centerpoint}{\rotate}%
        }%
        \pgfextract@process\arcendcorner{%
            \pgfmathrotatepointaround{\arcendcorner}{\centerpoint}{\rotate}%
        }%
        \pgfmathadd@{\startangle}{\rotate}%
        \let\startangle\pgfmathresult%
        \pgfmathadd@{\endangle}{\rotate}%
        \let\endangle\pgfmathresult%
        \addtosavedmacro{\rotate}%
        \addtosavedmacro{\centeroffset}%
        \addtosavedmacro{\radius}%
        \addtosavedmacro{\borderradius}%
        \addtosavedmacro{\cornerradius}%
        \addtosavedmacro{\endangle}%
        \addtosavedmacro{\startangle}%
        \addtosavedmacro{\sectorcenter}%
        \addtosavedmacro{\arcstart}%
        \addtosavedmacro{\sectorcenterborder}%
        \addtosavedmacro{\arcstartborder}%
        \addtosavedmacro{\arcendborder}%
        \addtosavedmacro{\arcstartcorner}%
        \addtosavedmacro{\arcendcorner}%
        \addtosavedmacro{\angletosectorcenterborder}%
        \addtosavedmacro{\angletoarcstartborder}%
        \addtosavedmacro{\angletoarcendborder}%
        \addtosavedmacro{\angletoarcstartcorner}%
        \addtosavedmacro{\angletoarcendcorner}%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt\relax%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+.5ex}%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{base}{\basepoint}%
    \anchor{mid}{\midpoint}%
    \anchor{arc start}{%
        \installcircularsectorparameters%
        \arcstartcorner%
    }%
    \anchor{arc end}{%
        \installcircularsectorparameters%
        \arcendcorner%
    }%
    \anchor{sector center}{%
        \installcircularsectorparameters%
        \sectorcenterborder%
    }%
    \anchor{arc center}{%
        \installcircularsectorparameters%
        \pgfmathadd@{\rotate}{180}%
        \let\angle\pgfmathresult%
        \csname pgf@anchor@circular sector@border\endcsname{\pgfqpointpolar{\angle}{\cornerradius}}%
    }%
    \anchor{north}{%
        \installcircularsectorparameters%
        \csname pgf@anchor@circular sector@border\endcsname{\pgfqpoint{0pt}{\cornerradius}}%
    }%
    \anchor{south}{%
        \installcircularsectorparameters%
        \csname pgf@anchor@circular sector@border\endcsname{\pgfqpoint{0pt}{-\cornerradius}}%
    }%
    \anchor{east}{%
        \installcircularsectorparameters%
        \csname pgf@anchor@circular sector@border\endcsname{\pgfqpoint{\cornerradius}{0pt}}%
    }%
    \anchor{west}{%
        \installcircularsectorparameters%
        \csname pgf@anchor@circular sector@border\endcsname{\pgfqpoint{-\cornerradius}{0pt}}%
    }%
    \anchor{north west}{%
        \installcircularsectorparameters%
        \csname pgf@anchor@circular sector@border\endcsname{\pgfqpoint{-\cornerradius}{\cornerradius}}%
    }%
    \anchor{south west}{%
        \installcircularsectorparameters%
        \csname pgf@anchor@circular sector@border\endcsname{\pgfqpoint{-\cornerradius}{-\cornerradius}}%
    }%
    \anchor{north east}{%
        \installcircularsectorparameters%
        \csname pgf@anchor@circular sector@border\endcsname{\pgfqpoint{\cornerradius}{\cornerradius}}%
    }%
    \anchor{south east}{%
        \installcircularsectorparameters%
        \csname pgf@anchor@circular sector@border\endcsname{\pgfqpoint{\cornerradius}{-\cornerradius}}%
    }%
    \backgroundpath{%
        \installcircularsectorparameters%
        \pgfpathmoveto{\sectorcenter}%
        \pgfpathlineto{\arcstart}%
        \ifdim\endangle pt>360pt\relax%
            \ifdim\startangle pt>360pt\relax%
                \pgfpatharc{\startangle}{\endangle}{\radius}%
            \else%
                \pgfpatharc{\startangle}{360}{\radius}%
                \pgfpatharc{0}{\endangle}{\radius}%
            \fi%
        \else%
            \pgfpatharc{\startangle}{\endangle}{\radius}%
        \fi%
        \pgfpathclose%
    }%
    \anchorborder{%
        \edef\externalx{\the\pgf@x}%
        \edef\externaly{\the\pgf@y}%
        \centerpoint%
        \pgf@xa\externalx\relax%
        \pgf@ya\externaly\relax%
        \advance\pgf@xa\pgf@x%
        \advance\pgf@ya\pgf@y%
        \edef\externalx{\the\pgf@xa}%
        \edef\externaly{\the\pgf@ya}%
        \installcircularsectorparameters%
        \pgfmathanglebetweenpoints{\centerpoint}{\pgfqpoint{\externalx}{\externaly}}%
        \let\externalangle\pgfmathresult%
        \pgfmathsubtract@{\pgfmathresult}{\rotate}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \let\angle\pgfmathresult%
        \ifdim\angle pt>\angletoarcendcorner pt\relax%
            \let\firstpoint\arcendcorner%
            \let\secondpoint\sectorcenterborder%
        \else%
            \ifdim\angle pt>\angletoarcendborder pt\relax%
                \let\firstpoint\arcendborder%
                \let\secondpoint\arcendcorner%
            \else%
                \ifdim\angle pt>\angletoarcstartborder pt\relax%
                    \let\firstpoint\pgfutil@empty%
                    \let\secondpoint\pgfutil@empty%
                \else%
                    \ifdim\angle pt>\angletoarcstartcorner pt\relax%
                        \let\firstpoint\arcstartborder
                        \let\secondpoint\arcstartcorner
                    \else%
                        \let\firstpoint\sectorcenterborder%
                        \let\secondpoint\arcstartcorner%
                    \fi%
                \fi%
            \fi%
        \fi%
        \ifx\firstpoint\pgfutil@empty
            \pgfmathanglebetweenlines{\centerpoint}{\pgfqpoint{\externalx}{\externaly}}%
                {\sectorcenter}{\centerpoint}%
            \pgfmathsin@{\pgfmathresult}%
            \let\sineangle\pgfmathresult%
            \pgf@x\borderradius\relax%
            \pgfmathreciprocal@{\pgfmath@tonumber{\pgf@x}}%
            \let\reciprocalradius\pgfmathresult%
            \pgf@x\centeroffset\relax%
            \pgf@x\sineangle\pgf@x%
            \pgf@x\reciprocalradius\pgf@x%
            \pgfmathasin@{\pgfmath@tonumber{\pgf@x}}%
            \pgf@x\pgfmathresult pt\relax%
            \advance\pgf@x\externalangle pt\relax%
            \edef\angle{\pgfmath@tonumber{\pgf@x}}%
            \pgfpointadd{\sectorcenter}{\pgfqpointpolar{\angle}{\borderradius}}%
        \else%
            \pgfpointintersectionoflines{\centerpoint}{\pgfqpoint{\externalx}{\externaly}}%
                {\firstpoint}{\secondpoint}%
        \fi%
    }%
}%




\newif\ifpgfcylinderusescustomfill
\pgfkeys{/pgf/.cd,
    cylinder uses custom fill/.is if=pgfcylinderusescustomfill,
    cylinder end fill/.initial=white,
    cylinder body fill/.initial=white,
}%


\pgfdeclareshape{cylinder}{%
    \savedmacro\getcylinderpoints{%
        \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}%
        \pgf@x\pgf@xc%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}%
        \pgf@y\pgf@yc%
        \advance\pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y.5\dp\pgfnodeparttextbox%
        \ifpgfshapeborderusesincircle%
            \pgfmathsetmacro\rotate{\pgfkeysvalueof{/pgf/shape border rotate}}%
            \ifdim\pgf@x<\pgf@y%
                \pgf@x\pgf@y%
            \else%
                \pgf@y\pgf@x%
            \fi%
            \pgf@x1.414213\pgf@x%
            \pgf@y1.414213\pgf@y%
        \else%
            \pgfmathmod{\pgfkeysvalueof{/pgf/shape border rotate}}{360}%
            \ifdim\pgfmathresult pt<0pt\relax%
                \pgfmathadd@{\pgfmathresult}{360}%
            \fi%
            \pgfmathsetcount\c@pgf@counta{+\pgfmathresult}%
            \advance\c@pgf@counta45\relax%
            \divide\c@pgf@counta90\relax%
            \multiply\c@pgf@counta90\relax%
            \edef\rotate{\the\c@pgf@counta}%
            \ifnum\c@pgf@counta=90\relax%
                \pgf@xa\pgf@x%
                \pgf@x\pgf@y%
                \pgf@y\pgf@xa%
                \pgf@yc\pgf@xc%
            \else%
                \ifnum\c@pgf@counta=270\relax%
                    \pgf@xa\pgf@x%
                    \pgf@x\pgf@y%
                    \pgf@y\pgf@xa%
                    \pgf@yc\pgf@xc%
                \fi%
            \fi%
        \fi%
        \addtosavedmacro\rotate%
        \pgf@xa\pgf@x%
        \pgf@ya\pgf@y%
        \pgfutil@tempdima\pgfshapeaspect\pgf@ya%
        \pgfutil@tempdimb\pgf@ya%
        \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/minimum width}}%
        \ifdim\pgfutil@tempdimb<.5\pgf@xc\relax%
            \pgfutil@tempdimb.5\pgf@xc%
            \pgf@ya\pgfutil@tempdimb%
        \fi%
        \pgf@yb\pgfutil@tempdimb%
        \advance\pgf@yb-\pgf@yc%
        \pgfmathdivide@{\pgfmath@tonumber{\pgf@yb}}{\pgfmath@tonumber{\pgfutil@tempdimb}}%
        \pgfmathasin@{\pgfmathresult}%
        \pgfmathcos@{\pgfmathresult}%
        \let\angle\pgfmathresult%
        \pgf@xb\pgfmathresult\pgfutil@tempdima%
        \pgf@x.5\pgflinewidth%
        \advance\pgf@x2.0\pgf@xa%
        \advance\pgf@x3.0\pgfutil@tempdima%
        \advance\pgf@x-\pgf@xb%
        \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@x<\pgf@xc%
            \advance\pgf@xc-\pgf@x%
            \advance\pgf@xa.5\pgf@xc%
        \fi%
        \pgf@x\pgfutil@tempdima\relax%
        \pgf@y\pgfutil@tempdimb\relax%
        \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/outer ysep}}%
        \ifdim\pgf@xc>\pgf@yc%
            \advance\pgf@x\pgf@xc%
            \advance\pgf@y\pgf@xc%
            \edef\outersep{\the\pgf@xc}%
        \else%
            \advance\pgf@x\pgf@yc%
            \advance\pgf@y\pgf@yc%
            \edef\outersep{\the\pgf@yc}%
        \fi%
        \edef\xradius{\the\pgf@x}%
        \edef\yradius{\the\pgf@y}%
        \addtosavedmacro\xradius%
        \addtosavedmacro\yradius%
        \addtosavedmacro\outersep%
        \pgfextract@process\cylindercenter{%
            \pgf@x\pgfutil@tempdima%
            \advance\pgf@x.5\pgflinewidth%
            \advance\pgf@x\pgf@xb%
            \pgf@x.5\pgf@x%
            \pgf@y0pt%
        }%
        \addtosavedmacro\cylindercenter%
        \pgfextract@process\beforetop{%
            \pgf@x\pgf@xa%
            \advance\pgf@x\pgfutil@tempdima%
            \advance\pgf@x.5\pgflinewidth%
            \pgf@y\pgf@ya%
        }%
        \pgfextract@process\afterbottom{%
            \pgf@x-\pgf@xa%
            \advance\pgf@x\pgf@xb%
            \pgf@y\pgf@ya%
        }%
        \addtosavedmacro\beforetop%
        \addtosavedmacro\afterbottom%
        \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/outer ysep}}%
        \pgfextract@process\beforetopanchor{%
            \beforetop%
            \advance\pgf@y\pgf@yc%
        }%
        \pgfextract@process\afterbottomanchor{%
            \afterbottom%
            \advance\pgf@y\pgf@yc%
        }%
        \addtosavedmacro\beforetopanchor%
        \addtosavedmacro\afterbottomanchor%
        \beforetopanchor%
        \advance\pgf@x\xradius\relax%
        \ifdim\pgf@x>\pgf@y%
            \edef\externalradius{\the\pgf@x}%
        \else%
            \edef\externalradius{\the\pgf@y}%
        \fi%
        \addtosavedmacro\externalradius%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{shape center}{%
        \getcylinderpoints%
        \pgfmathrotatepointaround{\pgfpointadd{\cylindercenter}{\centerpoint}}%
            {\centerpoint}{\rotate}%
    }%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{%
        \getcylinderpoints%
        \let\pgf@cylinder@referencepoint\midpoint%
        \pgf@anchor@cylinder@border{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{mid west}{%
        \getcylinderpoints%
        \let\pgf@cylinder@referencepoint\midpoint%
        \pgf@anchor@cylinder@border{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{base}{\basepoint}%
    \anchor{base east}{%
        \getcylinderpoints%
        \let\pgf@cylinder@referencepoint\basepoint%
        \pgf@anchor@cylinder@border{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{base west}{%
        \getcylinderpoints%
        \let\pgf@cylinder@referencepoint\basepoint%
        \pgf@anchor@cylinder@border{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{north}{%
        \getcylinderpoints%
        \pgf@anchor@cylinder@border{\pgfqpoint{0pt}{\externalradius}}%
    }%
    \anchor{south}{%
        \getcylinderpoints%
        \pgf@anchor@cylinder@border{\pgfqpoint{0pt}{-\externalradius}}%
    }%
    \anchor{east}{%
        \getcylinderpoints%
        \pgf@anchor@cylinder@border{\pgfqpoint{\externalradius}{0pt}}%
    }%
    \anchor{west}{%
        \getcylinderpoints%
        \pgf@anchor@cylinder@border{\pgfqpoint{-\externalradius}{0pt}}%
    }%
    \anchor{north east}{%
        \getcylinderpoints%
        \pgf@anchor@cylinder@border{\pgfqpoint{\externalradius}{\externalradius}}%
    }%
    \anchor{south west}{%
        \getcylinderpoints%
        \pgf@anchor@cylinder@border{\pgfqpoint{-\externalradius}{-\externalradius}}%
    }%
    \anchor{south east}{%
        \getcylinderpoints%
        \pgf@anchor@cylinder@border{\pgfqpoint{\externalradius}{-\externalradius}}%
    }%
    \anchor{north west}{%
        \getcylinderpoints%
        \pgf@anchor@cylinder@border{\pgfqpoint{-\externalradius}{\externalradius}}%
    }%
    \anchor{before top}{%
        \getcylinderpoints%
        \pgfmathrotatepointaround{\pgfpointadd{\beforetopanchor}{\centerpoint}}{\centerpoint}{\rotate}%
    }%
    \anchor{top}{%
        \getcylinderpoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \beforetop%
                \pgf@y0pt\relax%
                \advance\pgf@x\xradius\relax%
            }{\centerpoint}}{\centerpoint}{\rotate}%
    }%
    \anchor{after top}{%
        \getcylinderpoints%
        \pgfmathrotatepointaround{\pgfpointadd{\beforetopanchor\pgf@y-\pgf@y}{\centerpoint}}{\centerpoint}{\rotate}%
    }%
    \anchor{before bottom}{%
        \getcylinderpoints%
        \pgfmathrotatepointaround{\pgfpointadd{\afterbottomanchor\pgf@y-\pgf@y}{\centerpoint}}{\centerpoint}{\rotate}%
    }%
    \anchor{bottom}{%
        \getcylinderpoints%
        \pgfmathrotatepointaround{%
            \pgfpointadd{%
                \afterbottom%
                \pgf@y0pt\relax%
                \advance\pgf@x-\xradius\relax%
            }{\centerpoint}}{\centerpoint}{\rotate}%
    }%
    \anchor{after bottom}{%
        \getcylinderpoints%
        \pgfmathrotatepointaround{\pgfpointadd{\afterbottomanchor}{\centerpoint}}{\centerpoint}{\rotate}%
    }%
    \backgroundpath{%
        \getcylinderpoints%
        {%
            \pgf@x\xradius\relax%
            \advance\pgf@x-\outersep\relax%
            \edef\xradius{\the\pgf@x}%
            \pgf@y\yradius\relax%
            \advance\pgf@y-\outersep\relax%
            \edef\yradius{\the\pgf@y}%
            \pgftransformshift{\centerpoint}%
            \pgftransformrotate{\rotate}%
            \pgfpathmoveto{\afterbottom}%
            \pgfpatharc{90}{270}{\xradius and \yradius}%
            \pgfpathlineto{\beforetop\pgf@y-\pgf@y}%
            \pgfpatharc{-90}{90}{\xradius and \yradius}%
            \pgfpathclose%
            \pgfpathmoveto{\beforetop}%
            \pgfpatharc{90}{270}{\xradius and \yradius}%
        }%
    }%
    \behindbackgroundpath{%
        \ifpgfcylinderusescustomfill%
            \getcylinderpoints%
            \pgf@x\xradius\relax%
            \advance\pgf@x-\outersep\relax%
            \edef\xradius{\the\pgf@x}%
            \pgf@y\yradius\relax%
            \advance\pgf@y-\outersep\relax%
            \edef\yradius{\the\pgf@y}%
            {%
                \pgftransformshift{\centerpoint}%
                \pgftransformrotate{\rotate}%
                \pgfpathmoveto{\afterbottom}%
                \pgfpatharc{90}{270}{\xradius and \yradius}%
                \pgfpathlineto{\beforetop\pgf@y-\pgf@y}%
                \pgfpatharc{270}{90}{\xradius and \yradius}%
                \pgfpathclose%
                \expandafter\pgfsetfillcolor\expandafter{\pgfkeysvalueof{/pgf/cylinder body fill}}%
                \pgfusepath{fill}%
                \pgfpathmoveto{\beforetop}%
                \pgfpatharc{90}{-270}{\xradius and \yradius}%
                \pgfpathclose
                \expandafter\pgfsetfillcolor\expandafter{\pgfkeysvalueof{/pgf/cylinder end fill}}%
                \pgfusepath{fill}%
            }%
        \fi%
    }%
    \anchorborder{%
        \pgfextract@process\externalpoint{}%
        \getcylinderpoints%
        \pgfutil@ifundefined{pgf@cylinder@referencepoint}{\let\referencepoint\centerpoint}{%
            \let\referencepoint\pgf@cylinder@referencepoint}%
        \pgfextract@process\externalpoint{%
            \externalpoint%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \referencepoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}%
        \pgfmathsubtract@{\pgfmathresult}{\rotate}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathadd@{\pgfmathresult}{360}%
        \fi%
        \let\externalangle\pgfmathresult%
        \pgfmathanglebetweenpoints{\referencepoint}{\pgfpointadd{\afterbottomanchor}{\centerpoint}}%
        \ifdim\externalangle pt<\pgfmathresult pt\relax%
            \pgfmathanglebetweenpoints{\referencepoint}{\pgfpointadd{\beforetopanchor}{\centerpoint}}%
            \ifdim\externalangle pt<\pgfmathresult pt\relax%
                \pgfmathrotatepointaround{%
                    \pgfmathpointintersectionoflineandarc%
                        {\pgfmathrotatepointaround{\externalpoint}{\centerpoint}{-\rotate}}%
                        {\pgfmathrotatepointaround{\referencepoint}{\centerpoint}{-\rotate}}%
                        {%
                            \beforetop%
                            \pgf@xa\pgf@x%
                            \centerpoint%
                            \advance\pgf@x\pgf@xa%
                        }%
                        {0}{90}{\xradius and \yradius}%
                    }{\centerpoint}{\rotate}%
            \else%
                \pgfpointintersectionoflines{%
                    \pgfmathrotatepointaround{\pgfpointadd{\afterbottomanchor}{\centerpoint}}%
                        {\centerpoint}{\rotate}}{%
                    \pgfmathrotatepointaround{\pgfpointadd{\beforetopanchor}{\centerpoint}}%
                        {\centerpoint}{\rotate}}%
                    {\referencepoint}{\externalpoint}%
            \fi%
        \else%
            \pgfmathanglebetweenpoints{\referencepoint}{\pgfpointadd{\afterbottomanchor\pgf@y-\pgf@y}{\centerpoint}}%
            \ifdim\externalangle pt>\pgfmathresult pt\relax%
                \pgfmathanglebetweenpoints{\referencepoint}{\pgfpointadd{\beforetopanchor\pgf@y-\pgf@y}{\centerpoint}}%
                \ifdim\externalangle pt>\pgfmathresult pt\relax%
                    \pgfmathrotatepointaround{%
                        \pgfmathpointintersectionoflineandarc%
                            {\pgfmathrotatepointaround{\externalpoint}{\centerpoint}{-\rotate}}%
                            {\pgfmathrotatepointaround{\referencepoint}{\centerpoint}{-\rotate}}%
                            {%
                                \beforetop%
                                \pgf@xa\pgf@x%
                                \centerpoint
                                \advance\pgf@x\pgf@xa%
                            }%
                            {270}{360}{\xradius and \yradius}%
                        }{\centerpoint}{\rotate}%
                \else%
                    \pgfpointintersectionoflines{%
                        \pgfmathrotatepointaround{\pgfpointadd{\afterbottomanchor\pgf@y-\pgf@y}{\centerpoint}}%
                            {\centerpoint}{\rotate}}{%
                        \pgfmathrotatepointaround{\pgfpointadd{\beforetopanchor\pgf@y-\pgf@y}{\centerpoint}}%
                            {\centerpoint}{\rotate}}%
                        {\referencepoint}{\externalpoint}%
                \fi%
            \else%
                \pgfmathrotatepointaround{%
                    \pgfmathpointintersectionoflineandarc%
                        {\pgfmathrotatepointaround{\externalpoint}{\centerpoint}{-\rotate}}%
                        {\pgfmathrotatepointaround{\referencepoint}{\centerpoint}{-\rotate}}%
                        {%
                            \afterbottom%
                            \pgf@xa\pgf@x%
                            \centerpoint
                            \advance\pgf@x\pgf@xa%
                        }%
                        {90}{270}{\xradius and \yradius}%
                    }{\centerpoint}{\rotate}%
            \fi%
        \fi%
    }%
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex ====

\ProvidesFileRCS{pgflibraryshapes.misc.code.tex}


\pgfdeclareshape{cross out}
{%
  \inheritsavedanchors[from=rectangle]%
  \inheritanchorborder[from=rectangle]%
  \inheritanchor[from=rectangle]{north}%
  \inheritanchor[from=rectangle]{north west}%
  \inheritanchor[from=rectangle]{north east}%
  \inheritanchor[from=rectangle]{center}%
  \inheritanchor[from=rectangle]{west}%
  \inheritanchor[from=rectangle]{east}%
  \inheritanchor[from=rectangle]{mid}%
  \inheritanchor[from=rectangle]{mid west}%
  \inheritanchor[from=rectangle]{mid east}%
  \inheritanchor[from=rectangle]{base}%
  \inheritanchor[from=rectangle]{base west}%
  \inheritanchor[from=rectangle]{base east}%
  \inheritanchor[from=rectangle]{south}%
  \inheritanchor[from=rectangle]{south west}%
  \inheritanchor[from=rectangle]{south east}%
  \foregroundpath{
    \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
    \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
    \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
    \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@ya}}
    \pgfsetarrowsstart{}
    \pgfsetarrowsend{}
 }%
}%


\pgfdeclareshape{strike out}
{%
  \inheritsavedanchors[from=rectangle]%
  \inheritanchorborder[from=rectangle]%
  \inheritanchor[from=rectangle]{north}%
  \inheritanchor[from=rectangle]{north west}%
  \inheritanchor[from=rectangle]{north east}%
  \inheritanchor[from=rectangle]{center}%
  \inheritanchor[from=rectangle]{west}%
  \inheritanchor[from=rectangle]{east}%
  \inheritanchor[from=rectangle]{mid}%
  \inheritanchor[from=rectangle]{mid west}%
  \inheritanchor[from=rectangle]{mid east}%
  \inheritanchor[from=rectangle]{base}%
  \inheritanchor[from=rectangle]{base west}%
  \inheritanchor[from=rectangle]{base east}%
  \inheritanchor[from=rectangle]{south}%
  \inheritanchor[from=rectangle]{south west}%
  \inheritanchor[from=rectangle]{south east}%
  \foregroundpath{
    \pgfpathmoveto{\southwest}
    \pgfpathlineto{\northeast}
    \pgfsetarrowsstart{}
    \pgfsetarrowsend{}
 }%
}%




\pgfkeys{/pgf/.cd,
    rounded rectangle west arc/.initial=convex,
    rounded rectangle east arc/.initial=convex,
    rounded rectangle left arc/.style={/pgf/rounded rectangle west arc={#1}},%
    rounded rectangle right arc/.style={/pgf/rounded rectangle east arc={#1}},%
    rounded rectangle arc length/.initial=180%
}%

\def\pgf@lib@sh@misc@rr@text@concave{concave}%
\def\pgf@lib@sh@misc@rr@text@convex{convex}%

\pgfdeclareshape{rounded rectangle}{%
    \savedmacro\westarc{%
        \edef\westarc{\pgfkeysvalueof{/pgf/rounded rectangle west arc}}%
    }%
    \savedmacro\eastarc{%
        \edef\eastarc{\pgfkeysvalueof{/pgf/rounded rectangle east arc}}%
    }%
    \savedmacro\roundedrectanglepoints{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/rounded rectangle arc length}}%
        \pgf@x=.5\pgf@x%
        \edef\halfarcangle{\pgfmath@tonumber{\pgf@x}}%
        \addtosavedmacro\halfarcangle%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \edef\innerxsep{\the\pgf@x}%
        \pgf@xa=0.5\wd\pgfnodeparttextbox%
        \edef\halftextwidth{\the\pgf@xa}%
        \addtosavedmacro\halftextwidth%
        \advance\pgf@x by\pgf@xa%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \edef\innerysep{\the\pgf@y}%
        \pgf@ya=.5\ht\pgfnodeparttextbox%
        \advance\pgf@ya by.5\dp\pgfnodeparttextbox%
        \edef\halftextheight{\the\pgf@ya}%
        \addtosavedmacro\halftextheight%
        \advance\pgf@y by\pgf@ya%
        \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@y<.5\pgf@yb%
          \pgf@y=.5\pgf@yb%
        \fi%
        \edef\halfheight{\the\pgf@y}%
        \addtosavedmacro\halfheight%
        \pgfmathcosec@{\halfarcangle}%
        \pgf@ya=\pgfmathresult\pgf@y%
        \edef\radius{\the\pgf@ya}%
        \addtosavedmacro\radius%
        \pgfmathcos@{\halfarcangle}%
        \pgf@xa=\pgf@ya%
        \advance\pgf@xa by-\pgfmathresult\pgf@ya%
        \pgfmathdivide{\halftextheight}{\radius}%
        \pgfmathasin@{\pgfmathresult}%
        \pgfmathcos@{\pgfmathresult}%
        \pgf@xb=\pgf@ya%
        \advance\pgf@xb by-\pgfmathresult\pgf@ya%
        \edef\westarc{\pgfkeysvalueof{/pgf/rounded rectangle west arc}}%
        \edef\eastarc{\pgfkeysvalueof{/pgf/rounded rectangle east arc}}%
        \pgfutil@tempdima=2.0\pgf@x%
        \ifx\westarc\pgf@lib@sh@misc@rr@text@concave%
            \advance\pgfutil@tempdima by\pgf@xa%
        \else%
            \ifx\westarc\pgf@lib@sh@misc@rr@text@convex%
                \advance\pgfutil@tempdima by\pgf@xb%
            \fi%
        \fi%
        \ifx\eastarc\pgf@lib@sh@misc@rr@text@concave%
            \advance\pgfutil@tempdima by\pgf@xa%
        \else%
            \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex%
                \advance\pgfutil@tempdima by\pgf@xb%
            \fi%
        \fi%
        \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum width}}%
        \ifdim\pgfutil@tempdima<\pgfutil@tempdimb%
            \advance\pgfutil@tempdimb by-\pgfutil@tempdima%
            \divide\pgfutil@tempdimb by2\relax%
            \edef\xoffset{\the\pgfutil@tempdimb}%
        \else%
            \let\xoffset=\innerxsep%
        \fi%
        \pgf@x=\halftextwidth\relax%
        \advance\pgf@x by\xoffset\relax%
        \pgf@xc=\pgf@ya%
        \advance\pgf@xc by-\pgf@xb%
        \ifdim\pgf@xc>\pgf@x\relax%
            \advance\pgf@xc by-\pgf@x%
            \advance\pgf@xc by\xoffset\relax%
            \edef\xoffset{\the\pgf@xc}%
        \fi%
        \addtosavedmacro\xoffset%
        \pgf@x=\halftextwidth\relax%
        \advance\pgf@x by\xoffset\relax%
        \edef\halfwidth{\the\pgf@x}%
        \addtosavedmacro\halfwidth%
        \edef\arcwidth{\the\pgf@xa}%
        \addtosavedmacro\arcwidth%
        \edef\chordwidth{\the\pgf@xb}%
        \addtosavedmacro\chordwidth%
        \pgfmathsetlengthmacro\outerxsep{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathsetlengthmacro\outerysep{\pgfkeysvalueof{/pgf/outer ysep}}%
        \addtosavedmacro\outerxsep%
        \addtosavedmacro\outerysep%
        \ifdim\halfarcangle pt=90pt\relax%
            \def\concavexshift{0pt}%
        \else%
            \pgfmathsubtract@{90}{\halfarcangle}%
            \pgfmathdivide@{\pgfmathresult}{2}%
            \let\angletemp=\pgfmathresult%
            \pgf@x=\outerxsep\relax%
            \pgfmathcosec@{\angletemp}%
            \pgf@x=\pgfmathresult\pgf@x%
            \pgfmathcos@{\angletemp}%
            \pgf@x=\pgfmathresult\pgf@x%
            \edef\concavexshift{\the\pgf@x}%
        \fi%
        \addtosavedmacro\concavexshift%
        \ifdim\halfarcangle pt=90pt\relax%
            \def\convexxshift{0pt}%
        \else%
            \pgfmathadd@{90}{\halfarcangle}%
            \pgfmathdivide@{\pgfmathresult}{2}%
            \let\angletemp=\pgfmathresult%
            \pgf@x=\outerxsep\relax%
            \pgfmathcosec@{\angletemp}%
            \pgf@x=\pgfmathresult\pgf@x%
            \pgfmathcos@{\angletemp}%
            \pgf@x=\pgfmathresult\pgf@x%
            \edef\convexxshift{\the\pgf@x}%
        \fi%
        \addtosavedmacro\convexxshift%
    }%
    \saveddimen\halflinewidth{\pgf@x.5\pgflinewidth}%
    \savedanchor\centerpoint{%
        \pgf@x=.5\wd\pgfnodeparttextbox%
        \pgf@y=.5\ht\pgfnodeparttextbox%
        \advance\pgf@y by-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x=.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x=.5\wd\pgfnodeparttextbox%
        \pgf@y=0pt\relax%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \anchor{mid west}{%
        \csname pgf@anchor@rounded rectangle@west\endcsname%
        \pgf@xc=\pgf@x%
        \midpoint%
        \pgf@x=\pgf@xc%
    }%
    \anchor{mid east}{%
        \csname pgf@anchor@rounded rectangle@east\endcsname%
        \pgf@xc=\pgf@x%
        \midpoint%
        \pgf@x=\pgf@xc%
    }%
    \anchor{base}{\basepoint}%
    \anchor{base west}{%
        \csname pgf@anchor@rounded rectangle@west\endcsname%
        \pgf@xc=\pgf@x%
        \basepoint%
        \pgf@x=\pgf@xc%
    }%
    \anchor{base east}{%
        \csname pgf@anchor@rounded rectangle@east\endcsname%
        \pgf@xc=\pgf@x%
        \basepoint%
        \pgf@x=\pgf@xc%
    }%
    \anchor{north}{%
        \roundedrectanglepoints%
        \pgfpointadd{\centerpoint}{\pgfpoint{+0pt}{\halfheight+\outerysep}}%
    }%
    \anchor{south}{%
        \roundedrectanglepoints%
        \pgfpointadd{\centerpoint}{\pgfpoint{+0pt}{-\halfheight-\outerysep}}%
    }%
    \anchor{west}{%
        \roundedrectanglepoints%
        \pgfpointadd{\centerpoint}{%
            \ifx\westarc\pgf@lib@sh@misc@rr@text@concave%
                \pgfpoint{-\halfwidth-\arcwidth-\concavexshift}{+0pt}%
            \else%
                \ifx\westarc\pgf@lib@sh@misc@rr@text@convex%
                    \pgfpoint{-\halfwidth-\chordwidth-\outerxsep}{+0pt}%
                \else%
                    \pgfpoint{-\halfwidth-\outerxsep}{+0pt}%
                \fi%
            \fi%
        }%
    }%
    \anchor{north west}{%
        \roundedrectanglepoints%
        \ifx\westarc\pgf@lib@sh@misc@rr@text@convex%
            \pgfpointadd{\centerpoint}{\pgfpoint{-\halfwidth-\chordwidth+\arcwidth-\convexxshift}{+0pt}}%
        \else%
            \csname pgf@anchor@rounded rectangle@west\endcsname%
        \fi%
        \pgf@xc=\pgf@x%
        \csname pgf@anchor@rounded rectangle@north\endcsname%
        \pgf@x=\pgf@xc%
    }%
    \anchor{south west}{%
        \roundedrectanglepoints%
        \ifx\westarc\pgf@lib@sh@misc@rr@text@convex%
            \pgfpointadd{\centerpoint}{\pgfpoint{-\halfwidth-\chordwidth+\arcwidth-\convexxshift}{+0pt}}%
        \else%
            \csname pgf@anchor@rounded rectangle@west\endcsname%
        \fi%
        \pgf@xc=\pgf@x%
        \csname pgf@anchor@rounded rectangle@south\endcsname%
        \pgf@x=\pgf@xc%
    }%
    \anchor{east}{%
        \roundedrectanglepoints%
        \pgfpointadd{\centerpoint}{%
            \ifx\eastarc\pgf@lib@sh@misc@rr@text@concave%
                \pgfpoint{\halfwidth+\arcwidth+\concavexshift}{+0pt}%
            \else%
                \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex%
                    \pgfpoint{\halfwidth+\chordwidth+\outerxsep}{+0pt}%
                \else%
                    \pgfpoint{\halfwidth+\outerxsep}{+0pt}%
                \fi%
            \fi%
        }%
    }%
    \anchor{north east}{%
        \roundedrectanglepoints%
        \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex%
            \pgfpointadd{\centerpoint}{\pgfpoint{\halfwidth+\chordwidth-\arcwidth+\convexxshift}{+0pt}}%
        \else%
            \csname pgf@anchor@rounded rectangle@east\endcsname%
        \fi%
        \pgf@xc=\pgf@x%
        \csname pgf@anchor@rounded rectangle@north\endcsname%
        \pgf@x=\pgf@xc%
    }%
    \anchor{south east}{%
        \roundedrectanglepoints%
        \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex%
            \pgfpointadd{\centerpoint}{\pgfpoint{\halfwidth+\chordwidth-\arcwidth+\convexxshift}{+0pt}}%
        \else%
            \csname pgf@anchor@rounded rectangle@east\endcsname%
        \fi%
        \pgf@xc=\pgf@x%
        \csname pgf@anchor@rounded rectangle@south\endcsname%
        \pgf@x=\pgf@xc%
    }%
    \backgroundpath{%
        {%
            \roundedrectanglepoints%
            \pgftransformshift{\centerpoint}%
            \pgfpathmoveto{\pgfpoint{0pt}{\halfheight}}%
            \ifx\eastarc\pgf@lib@sh@misc@rr@text@concave%
                \pgfpathlineto{\pgfpoint{\halfwidth+\arcwidth}{+\halfheight}}%
                \pgfpatharc{180-\halfarcangle}{180+\halfarcangle}{+\radius}%
            \else%
                \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex%
                    \pgfpathlineto{\pgfpoint{\halfwidth+\chordwidth-\arcwidth}{+\halfheight}}%
                    \pgfpatharc{+\halfarcangle}{+-\halfarcangle}{+\radius}%
                \else%
                    \pgfpathlineto{\pgfqpoint{\halfwidth}{\halfheight}}%
                    \pgfpathlineto{\pgfqpoint{\halfwidth}{-\halfheight}}%
                \fi%
            \fi%
            \ifx\westarc\pgf@lib@sh@misc@rr@text@concave%
                \pgfpathlineto{\pgfpoint{-\halfwidth-\arcwidth}{+-\halfheight}}%
                \pgfpatharc{+-\halfarcangle}{+\halfarcangle}{+\radius}%
            \else%
                \ifx\westarc\pgf@lib@sh@misc@rr@text@convex%
                    \pgfpathlineto{\pgfpoint{-\halfwidth-\chordwidth+\arcwidth}{+-\halfheight}}%
                    \pgfpatharc{180+\halfarcangle}{180-\halfarcangle}{+\radius}%
                \else%
                    \pgfpathlineto{\pgfqpoint{-\halfwidth}{-\halfheight}}%
                    \pgfpathlineto{\pgfqpoint{-\halfwidth}{\halfheight}}%
                \fi%
            \fi%
            \pgfpathclose%
        }%
    }%
    \anchorborder{%
    \pgfextract@process\externalpoint{%
        \pgfextract@process\externalpoint{}%
            \pgfpointadd{\centerpoint}{\externalpoint}%
        }%
        \roundedrectanglepoints%
        \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}%
        \let\externalangle=\pgfmathresult%
        \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@rounded rectangle@north west\endcsname}%
        \ifdim\externalangle pt<\pgfmathresult pt\relax%
            \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@rounded rectangle@north east\endcsname}%
            \ifdim\externalangle pt<\pgfmathresult pt\relax%
                \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex%
                    \pgfextract@process\arccenter{%
                        \pgfpointadd{\centerpoint}{\pgfpoint{\halfwidth+\chordwidth-\radius}{+0pt}}%
                    }%
                    \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
                        {\arccenter}{0}{\halfarcangle}{\radius+\outerxsep and \radius+\outerysep}%
                \else%
                    \pgfpointintersectionoflines%
                        {\csname pgf@anchor@rounded rectangle@north east\endcsname}%
                        {\csname pgf@anchor@rounded rectangle@south east\endcsname}%
                        {\externalpoint}{\centerpoint}%
                \fi%
            \else%
                \pgfpointintersectionoflines%
                    {\csname pgf@anchor@rounded rectangle@north east\endcsname}%
                    {\csname pgf@anchor@rounded rectangle@north west\endcsname}%
                    {\externalpoint}{\centerpoint}%
            \fi%
        \else%
            \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@rounded rectangle@south west\endcsname}%
            \ifdim\externalangle pt<\pgfmathresult pt\relax%
                \ifx\westarc\pgf@lib@sh@misc@rr@text@convex%
                    \pgfextract@process\arccenter{%
                        \pgfpointadd{\centerpoint}{\pgfpoint{-\halfwidth-\chordwidth+\radius}{+0pt}}%
                    }%
                    \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
                        {\arccenter}{180-\halfarcangle}{180+\halfarcangle}{\radius+\outerxsep and \radius+\outerysep}%
                \else%
                    \pgfpointintersectionoflines%
                        {\csname pgf@anchor@rounded rectangle@north west\endcsname}%
                        {\csname pgf@anchor@rounded rectangle@south west\endcsname}%
                        {\externalpoint}{\centerpoint}%
                \fi%
            \else%
                \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@rounded rectangle@south east\endcsname}%
                \ifdim\externalangle pt<\pgfmathresult pt\relax%
                    \pgfpointintersectionoflines%
                        {\csname pgf@anchor@rounded rectangle@south east\endcsname}%
                        {\csname pgf@anchor@rounded rectangle@south west\endcsname}%
                        {\externalpoint}{\centerpoint}%
                \else%
                    \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex%
                        \pgfextract@process\arccenter{%
                            \pgfpointadd{\centerpoint}{\pgfpoint{\halfwidth+\chordwidth-\radius}{+0pt}}%
                        }%
                        \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
                            {\arccenter}{360-\halfarcangle}{360}{\radius+\outerxsep and \radius+\outerysep}%
                    \else%
                        \pgfpointintersectionoflines%
                            {\csname pgf@anchor@rounded rectangle@north east\endcsname}%
                            {\csname pgf@anchor@rounded rectangle@south east\endcsname}%
                            {\externalpoint}{\centerpoint}%
                    \fi%
                \fi%
            \fi%
        \fi%
    }%
}%




\pgfkeys{/pgf/chamfered rectangle corners/.store in=\pgf@lib@sh@misc@cr@corners}%
\pgfkeys{/tikz/chamfered rectangle corners/.store in=\pgf@lib@sh@misc@cr@corners}%

\def\pgf@lib@sh@misc@cr@chamferall{chamfer all}%
\def\pgf@lib@sh@misc@cr@chamfer{chamfer}%
\let\pgf@lib@sh@misc@cr@corners\pgf@lib@sh@misc@cr@chamferall


\def\pgf@lib@sh@misc@cr@getcorners{%
    \let\northeastcorner\pgfutil@empty%
    \let\southeastcorner\pgfutil@empty%
    \let\southwestcorner\pgfutil@empty%
    \let\northwestcorner\pgfutil@empty%
    \expandafter\pgfutil@in@\expandafter{\pgf@lib@sh@misc@cr@corners}{chamfer all}%
    \ifpgfutil@in@%
        \let\northeastcorner\pgf@lib@sh@misc@cr@round%
        \let\southeastcorner\pgf@lib@sh@misc@cr@round%
        \let\southwestcorner\pgf@lib@sh@misc@cr@round%
        \let\northwestcorner\pgf@lib@sh@misc@cr@round%
        \let\pgf@next\relax%
    \else%
        \let\pgf@next\pgf@lib@sh@misc@cr@parsecorners%
    \fi%
    \pgf@next}%

\def\pgf@lib@sh@misc@cr@parsecorners{%
    \expandafter\pgf@@chamferedrectangle@parsecorners\pgf@lib@sh@misc@cr@corners,\pgf@stop,%
}%

\def\pgf@@chamferedrectangle@parsecorners#1,{%
    \ifx#1\pgf@stop%
        \let\pgf@next\relax%
    \else%
        \pgfutil@in@{@#1@}{@north east@@top left@}%
        \ifpgfutil@in@%
            \let\northeastcorner\pgf@lib@sh@misc@cr@chamfer%
        \else%
            \pgfutil@in@{@#1@}{@south east@@bottom right@}%
            \ifpgfutil@in@%
                \let\southeastcorner\pgf@lib@sh@misc@cr@chamfer%
            \else%
                \pgfutil@in@{@#1@}{@south west@@bottom left@}%
                \ifpgfutil@in@%
                    \let\southwestcorner\pgf@lib@sh@misc@cr@chamfer%
                \else%
                    \pgfutil@in@{@#1@}{@north west@@top right@}%
                    \ifpgfutil@in@%
                        \let\northwestcorner\pgf@lib@sh@misc@cr@round%
                    \fi%
                \fi%
            \fi%
        \fi%
        \let\pgf@next\pgf@@@chamferedrectangle@parsecorners%
    \fi%
    \pgf@next%
}%
\def\pgf@@@chamferedrectangle@parsecorners{%
    \pgfutil@ifnextchar x{\pgf@@chamferedrectangle@parsecorners}{\pgf@@chamferedrectangle@parsecorners}%
}%

\pgfkeys{/pgf/.cd,
    chamfered rectangle angle/.initial=45,%
    chamfered rectangle xsep/.initial=.666ex,%
    chamfered rectangle ysep/.initial=.666ex%
}%
 \pgfkeys{/pgf/chamfered rectangle sep/.style={%
    /pgf/chamfered rectangle xsep={#1},/pgf/chamfered rectangle ysep={#1}}%
}%




\pgfdeclareshape{chamfered rectangle}{%
    \savedmacro\getchamferedrectanglepoints{%
        \pgf@lib@sh@misc@cr@getcorners%
        \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/inner xsep}}%
        \advance\pgf@xa.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@ya.5\ht\pgfnodeparttextbox%
        \advance\pgf@ya.5\dp\pgfnodeparttextbox%
        \pgfmathsetlength\pgfutil@tempdima{\pgfkeysvalueof{/pgf/chamfered rectangle angle}}%
        \ifdim\pgfutil@tempdima<89pt\relax%
            \ifdim\pgfutil@tempdima<1pt\relax%
                \pgfutil@tempdima1pt\relax%
            \fi%
        \else%
            \pgfutil@tempdima89pt\relax%
        \fi%
        \pgfutil@tempdima-\pgfutil@tempdima%
        \advance\pgfutil@tempdima90pt\relax%
        \pgfmathtan@{\pgfmath@tonumber{\pgfutil@tempdima}}%
        \let\tanangle\pgfmathresult%
        \pgfmathcot@{\pgfmath@tonumber{\pgfutil@tempdima}}%
        \let\cotangle\pgfmathresult%
        \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/chamfered rectangle xsep}}%
        \pgf@yc\tanangle\pgf@xb%
        \ifdim\pgf@yc>\pgf@ya%
            \pgf@yc\pgf@ya%
            \pgf@xb\cotangle\pgf@yc%
        \fi%
        \pgfmathcot@{\pgfmath@tonumber{\pgfutil@tempdima}}%
        \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/chamfered rectangle ysep}}%
        \pgf@xc\cotangle\pgf@yb%
            \ifdim\pgf@xc>\pgf@xa%
            \pgf@xc\pgf@xa%
            \pgf@yb\tanangle\pgf@xc%
        \fi%
        \pgfutil@tempdima\pgf@xa%
        \advance\pgfutil@tempdima\pgf@xb%
        \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum width}}%
        \ifdim\pgfutil@tempdima<.5\pgfutil@tempdimb%
            \pgf@xa.5\pgfutil@tempdimb%
            \advance\pgf@xa-\pgf@xb%
        \fi%
        \pgfutil@tempdima\pgf@ya%
        \advance\pgfutil@tempdima\pgf@yb%
        \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgfutil@tempdima<.5\pgfutil@tempdimb%
            \pgf@ya.5\pgfutil@tempdimb%
            \advance\pgf@ya-\pgf@yb%
        \fi%
        \pgfextract@process\centerpoint{%
            \pgfmathsetlength\pgf@x{+.5\wd\pgfnodeparttextbox}%
            \pgfmathsetlength\pgf@y{+.5\ht\pgfnodeparttextbox}%
            \pgfmathaddtolength\pgf@y{+-.5\dp\pgfnodeparttextbox}%
        }%
        \pgfextract@process\beforenortheast{%
            \centerpoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@x\pgf@xb%
            \advance\pgf@y\pgf@ya%
            \advance\pgf@y-\pgf@yc%
        }%
        \pgfextract@process\northeast{%
            \centerpoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
            \ifx\northeastcorner\pgfutil@empty%
                \advance\pgf@x\pgf@xb%
                \advance\pgf@y\pgf@yb%
            \fi%
        }%
        \pgfextract@process\afternortheast{%
            \centerpoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@x-\pgf@xc%
            \advance\pgf@y\pgf@ya%
            \advance\pgf@y\pgf@yb%
        }%
        \pgfextract@process\northwest{%
            \centerpoint%
            \advance\pgf@x-\pgf@xa%
            \advance\pgf@y\pgf@ya%
            \ifx\northwestcorner\pgfutil@empty%
                \advance\pgf@x-\pgf@xb%
                \advance\pgf@y\pgf@yb%
            \fi%
        }%
        \pgfextract@process\beforesouthwest{%
            \centerpoint%
            \advance\pgf@x-\pgf@xa%
            \advance\pgf@x-\pgf@xb%
            \advance\pgf@y-\pgf@ya%
            \advance\pgf@y\pgf@yc%
        }%
        \pgfextract@process\southwest{%
            \centerpoint%
            \advance\pgf@x-\pgf@xa%
            \advance\pgf@y-\pgf@ya%
            \ifx\southwestcorner\pgfutil@empty%
                \advance\pgf@x-\pgf@xb%
                \advance\pgf@y-\pgf@yb%
            \fi%
        }%
        \pgfextract@process\aftersouthwest{%
            \centerpoint%
            \advance\pgf@x-\pgf@xa%
            \advance\pgf@x\pgf@xc%
            \advance\pgf@y-\pgf@ya%
            \advance\pgf@y-\pgf@yb%
        }%
        \pgfextract@process\southeast{%
            \centerpoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y-\pgf@ya%
            \ifx\southeastcorner\pgfutil@empty%
                \advance\pgf@x\pgf@xb%
                \advance\pgf@y-\pgf@yb%
            \fi%
        }%
        \pgfmathanglebetweenlines{\beforenortheast}{\afternortheast}{\beforenortheast}%
            {\beforesouthwest\pgf@ya\pgf@y\beforenortheast\pgf@y\pgf@ya}%
        \pgfutil@tempdima\pgfmathresult pt\relax%
        \ifdim\pgfutil@tempdima>180pt\relax%
            \advance\pgfutil@tempdima-180pt\relax%
        \fi%
        \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/outer xsep}}%
        \ifdim\pgfutil@tempdima<90pt\relax%
            \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}%
            \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb%
            \pgfutil@tempdima0pt\relax%
        \else%
            \pgfutil@tempdima.5\pgfutil@tempdima%
            \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}%
            \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb%
            \pgfutil@tempdima-\pgfutil@tempdima%
            \advance\pgfutil@tempdima90pt\relax%
        \fi%
        \pgfextract@process\before@ne@anchor{%
            \beforenortheast%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \pgfutil@tempdima-\pgfutil@tempdima%
        \advance\pgfutil@tempdima180pt\relax%
        \pgfextract@process\before@sw@anchor{%
            \beforesouthwest%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \pgfqpointpolar{-\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \pgfmathanglebetweenlines{\afternortheast}{\aftersouthwest\pgf@xa\pgf@x\afternortheast\pgf@x\pgf@xa}%
            {\afternortheast}{\beforenortheast}%
        \pgfutil@tempdima\pgfmathresult pt\relax%
        \ifdim\pgfutil@tempdima>270pt\relax%
            \advance\pgfutil@tempdima-270pt\relax%
        \fi%
        \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/outer ysep}}%
        \ifdim\pgfutil@tempdima<90pt\relax%
            \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}%
            \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb%
            \pgfutil@tempdima90pt\relax%
        \else%
            \pgfutil@tempdima.5\pgfutil@tempdima%
            \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}%
            \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb%
        \fi%
        \pgfextract@process\after@ne@anchor{%
            \afternortheast%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \pgfutil@tempdima-\pgfutil@tempdima%
        \advance\pgfutil@tempdima180pt\relax%
        \pgfextract@process\after@sw@anchor{%
            \aftersouthwest
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \pgfqpointpolar{-\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \addtosavedmacro\before@ne@anchor%
        \addtosavedmacro\after@ne@anchor%
        \addtosavedmacro\before@sw@anchor%
        \addtosavedmacro\after@sw@anchor%
        \pgfextract@process\ne@anchor{%
            \ifx\northeastcorner\pgfutil@empty%
                \northeast%
                \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
                \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
            \else%
                \pgfpointlineattime{0.5}{\before@ne@anchor}{\after@ne@anchor}%
            \fi%
        }%
        \pgfextract@process\nw@anchor{%
            \ifx\northwestcorner\pgfutil@empty%
                \northwest%
                \pgfmathaddtolength\pgf@x{-\pgfkeysvalueof{/pgf/outer xsep}}%
                \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
            \else%
                \pgfpointlineattime{0.5}{%
                    \before@ne@anchor%
                    \pgf@ya\pgf@y
                    \before@sw@anchor%
                    \pgf@y\pgf@ya%
                }{%
                    \after@ne@anchor%
                    \pgf@ya\pgf@y
                    \after@sw@anchor%
                    \pgf@y\pgf@ya%
                }%
            \fi%
        }%
        \pgfextract@process\sw@anchor{%
            \ifx\southwestcorner\pgfutil@empty%
                \southwest%
                \pgfmathaddtolength\pgf@x{-\pgfkeysvalueof{/pgf/outer xsep}}%
                \pgfmathaddtolength\pgf@y{-\pgfkeysvalueof{/pgf/outer ysep}}%
            \else%
                \pgfpointlineattime{0.5}{\before@sw@anchor}{\after@sw@anchor}%
            \fi%
        }%
        \pgfextract@process\se@anchor{%
            \ifx\southeastcorner\pgfutil@empty%
                \southeast%
                \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
                \pgfmathaddtolength\pgf@y{-\pgfkeysvalueof{/pgf/outer ysep}}%
            \else%
                \pgfpointlineattime{0.5}{%
                    \before@ne@anchor%
                    \pgf@xa\pgf@x
                    \before@sw@anchor%
                    \pgf@x\pgf@xa%
                }{%
                    \after@ne@anchor%
                    \pgf@xa\pgf@x
                    \after@sw@anchor%
                    \pgf@x\pgf@xa%
                }%
            \fi%
        }%
        \addtosavedmacro\ne@anchor%
        \addtosavedmacro\nw@anchor%
        \addtosavedmacro\sw@anchor%
        \addtosavedmacro\se@anchor%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y.5\ht\pgfnodeparttextbox%
        \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+.5ex}%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{%
        \getchamferedrectanglepoints%
        \midpoint%
        \pgf@ya\pgf@y%
        \pgf@process{%
            \before@sw@anchor%
            \pgf@ya\pgf@y%
            \before@ne@anchor%
            \pgf@y\pgf@ya%
        }%
        \ifdim\pgf@ya<\pgf@y%
            \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}%
                {\before@sw@anchor\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}%
                {\after@sw@anchor\pgf@ya\pgf@y\after@ne@anchor\pgf@y\pgf@ya}%
        \else%
            \pgf@process{\before@ne@anchor}%
            \ifdim\pgf@ya<\pgf@y%
                \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}%
                    {\before@sw@anchor\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}%
                    {\before@ne@anchor}%
            \else%
                \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}%
                    {\before@ne@anchor}%
                    {\after@ne@anchor}%
            \fi%
        \fi%
    }%
    \anchor{mid west}{%
        \getchamferedrectanglepoints%
        \midpoint%
        \pgf@ya\pgf@y%
        \pgf@process{\before@sw@anchor}%
        \ifdim\pgf@ya<\pgf@y%
            \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
                {\before@sw@anchor}{\after@sw@anchor}%
        \else%
            \pgf@process{\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
            \ifdim\pgf@ya<\pgf@y%
                \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
                    {\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
                    {\before@sw@anchor}%
            \else%
                \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
                    {\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
                    {\after@ne@anchor\pgf@ya\pgf@y\after@sw@anchor\pgf@y\pgf@ya}%
            \fi%
        \fi%
    }%
    \anchor{base}{\basepoint}%
    \anchor{base east}{%
        \getchamferedrectanglepoints%
        \basepoint%
        \pgf@ya\pgf@y%
        \pgf@process{%
            \before@sw@anchor%
            \pgf@ya\pgf@y%
            \before@ne@anchor%
            \pgf@y\pgf@ya%
        }%
        \ifdim\pgf@ya<\pgf@y%
            \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}%
                {\before@sw@anchor\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}%
                {\after@sw@anchor\pgf@ya\pgf@y\after@ne@anchor\pgf@y\pgf@ya}%
        \else%
            \pgf@process{\before@ne@anchor}%
            \ifdim\pgf@ya<\pgf@y%
                \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}%
                    {\before@sw@anchor\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}%
                    {\before@ne@anchor}%
            \else%
                \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}%
                    {\before@ne@anchor}%
                    {\after@ne@anchor}%
            \fi%
        \fi%
    }%
    \anchor{base west}{%
        \getchamferedrectanglepoints%
        \basepoint%
        \pgf@ya\pgf@y%
        \pgf@process{\before@sw@anchor}%
        \ifdim\pgf@ya<\pgf@y%
            \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
                {\before@sw@anchor}{\after@sw@anchor}%
        \else%
            \pgf@process{\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
            \ifdim\pgf@ya<\pgf@y%
                \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
                    {\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
                    {\before@sw@anchor}%
            \else%
                \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
                    {\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
                    {\after@ne@anchor\pgf@ya\pgf@y\after@sw@anchor\pgf@y\pgf@ya}%
            \fi%
        \fi%
    }%
    \anchor{before north east}{\getchamferedrectanglepoints\before@ne@anchor}%
    \anchor{north east}{\getchamferedrectanglepoints\ne@anchor}%
    \anchor{after north east}{\getchamferedrectanglepoints\after@ne@anchor}%
    \anchor{north}{%
        \getchamferedrectanglepoints%
        \centerpoint%
        \pgf@xa\pgf@x%
        \after@ne@anchor%
        \pgf@x\pgf@xa}%
    \anchor{before north west}{%
        \getchamferedrectanglepoints%
        \after@sw@anchor%
        \pgf@xa\pgf@x%
        \after@ne@anchor%
        \pgf@x\pgf@xa}%
    \anchor{north west}{\getchamferedrectanglepoints\nw@anchor}%
    \anchor{after north west}{%
        \getchamferedrectanglepoints%
        \before@sw@anchor%
        \pgf@xa\pgf@x%
        \before@ne@anchor%
        \pgf@x\pgf@xa}%
    \anchor{west}{%
        \getchamferedrectanglepoints%
        \centerpoint%
        \pgf@ya\pgf@y%
        \before@sw@anchor%
        \pgf@y\pgf@ya}%
    \anchor{before south west}{\getchamferedrectanglepoints\before@sw@anchor}%
    \anchor{south west}{\getchamferedrectanglepoints\sw@anchor}%
    \anchor{after south west}{\getchamferedrectanglepoints\after@sw@anchor}%
        \anchor{south}{%
        \getchamferedrectanglepoints%
        \centerpoint%
        \pgf@xa\pgf@x%
        \after@sw@anchor%
        \pgf@x\pgf@xa}%
    \anchor{before south east}{%
        \getchamferedrectanglepoints%
        \after@sw@anchor%
        \pgf@ya\pgf@y%
        \after@ne@anchor%
        \pgf@y\pgf@ya}%
    \anchor{south east}{\getchamferedrectanglepoints\se@anchor}%
    \anchor{after south east}{%
        \getchamferedrectanglepoints%
        \before@sw@anchor%
        \pgf@ya\pgf@y%
        \before@ne@anchor%
        \pgf@y\pgf@ya}%
    \anchor{east}{%
        \getchamferedrectanglepoints%
        \centerpoint%
        \pgf@ya\pgf@y%
        \before@ne@anchor%
        \pgf@y\pgf@ya}%
    \backgroundpath{%
        \pgfpathmoveto{\beforenortheast}%
        \pgfpathlineto{\northeast}%
        \pgfpathlineto{\afternortheast}%
        \pgfpathlineto{\aftersouthwest\pgf@xa\pgf@x\afternortheast\pgf@x\pgf@xa}%
        \pgfpathlineto{\northwest}%
        \pgfpathlineto{\beforesouthwest\pgf@xa\pgf@x\beforenortheast\pgf@x\pgf@xa}%
        \pgfpathlineto{\beforesouthwest}%
        \pgfpathlineto{\southwest}%
        \pgfpathlineto{\aftersouthwest}%
        \pgfpathlineto{\aftersouthwest\pgf@ya\pgf@y\afternortheast\pgf@y\pgf@ya}%
        \pgfpathlineto{\southeast}%
        \pgfpathlineto{\beforesouthwest\pgf@ya\pgf@y\beforenortheast\pgf@y\pgf@ya}%
        \pgfpathclose%
    }%
    \anchorborder{%
        \pgfextract@process\externalpoint{%
            \pgf@xa\pgf@x%
            \pgf@ya\pgf@y%
            \centerpoint%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
        }%
        \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}%
        \let\externalangle\pgfmathresult%
        \getchamferedrectanglepoints%
        \pgfmathanglebetweenpoints{\centerpoint}{\centerpoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}%
        \ifdim\externalangle pt<\pgfmathresult pt\relax%
            \pgfmathanglebetweenpoints{\centerpoint}{\centerpoint\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}%
            \ifdim\externalangle pt<\pgfmathresult pt\relax%
                \pgfmathanglebetweenpoints{\centerpoint}{\ne@anchor}%
                \ifdim\externalangle pt<\pgfmathresult pt\relax%
                    \pgfmathanglebetweenpoints{\centerpoint}{\before@ne@anchor}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\centerpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}{\before@ne@anchor}%
                    \else%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\before@ne@anchor}{\ne@anchor}%
                    \fi%
                \else%
                    \pgfmathanglebetweenpoints{\centerpoint}{\after@ne@anchor}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                            \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\ne@anchor}{\after@ne@anchor}%
                    \else%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\after@ne@anchor}{\centerpoint\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}%
                    \fi%
                \fi%
            \else%
                \pgfmathanglebetweenpoints{\centerpoint}{\nw@anchor}%
                \ifdim\externalangle pt<\pgfmathresult pt\relax%
                    \pgfmathanglebetweenpoints{\centerpoint}{\after@sw@anchor\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\centerpoint\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}%
                            {\after@sw@anchor\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}%
                    \else%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\after@sw@anchor\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}%
                            {\nw@anchor}%
                    \fi%
                \else%
                    \pgfmathanglebetweenpoints{\centerpoint}{\before@sw@anchor\pgf@xa\pgf@x\before@ne@anchor\pgf@x\pgf@xa}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\nw@anchor}{\before@sw@anchor\pgf@xa\pgf@x\before@ne@anchor\pgf@x\pgf@xa}%
                    \else%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\before@sw@anchor\pgf@xa\pgf@x\before@ne@anchor\pgf@x\pgf@xa}%
                            {\before@sw@anchor\pgf@xa\pgf@x\centerpoint\pgf@x\pgf@xa}%
                    \fi%
                \fi%
            \fi%
        \else%
            \pgfmathanglebetweenpoints{\centerpoint}{\centerpoint\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}%
            \ifdim\externalangle pt<\pgfmathresult pt\relax%
                \pgfmathanglebetweenpoints{\centerpoint}{\sw@anchor}%
                \ifdim\externalangle pt<\pgfmathresult pt\relax%
                    \pgfmathanglebetweenpoints{\centerpoint}{\before@sw@anchor}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\before@sw@anchor\pgf@xa\pgf@x\centerpoint\pgf@x\pgf@xa}%
                            {\before@sw@anchor}%
                    \else%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\before@sw@anchor}{\sw@anchor}%
                    \fi%
                \else%
                    \pgfmathanglebetweenpoints{\centerpoint}{\after@sw@anchor}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\sw@anchor}{\after@sw@anchor}%
                    \else%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\after@sw@anchor}{\centerpoint\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}%
                    \fi%
                \fi%
            \else%
                \pgfmathanglebetweenpoints{\centerpoint}{\se@anchor}%
                \ifdim\externalangle pt<\pgfmathresult pt\relax%
                    \pgfmathanglebetweenpoints{\centerpoint}{\after@ne@anchor\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\after@ne@anchor\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}%
                            {\centerpoint\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}%
                    \else%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\after@ne@anchor\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}{\se@anchor}
                    \fi%
                \else%
                    \pgfmathanglebetweenpoints{\centerpoint}{\before@ne@anchor\pgf@xa\pgf@x\before@sw@anchor\pgf@x\pgf@xa}%
                    \ifdim\externalangle pt<\pgfmathresult pt\relax%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\se@anchor}{\before@ne@anchor\pgf@xa\pgf@x\before@sw@anchor\pgf@x\pgf@xa}%
                    \else%
                        \pgfpointintersectionoflines{\centerpoint}{\externalpoint}%
                            {\before@ne@anchor\pgf@xa\pgf@x\before@sw@anchor\pgf@x\pgf@xa}%
                            {\centerpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}%
                    \fi%
                \fi%
            \fi%
        \fi%
    }%
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex ====

\ProvidesFileRCS{pgflibraryshapes.multipart.code.tex}

\newbox\pgfnodepartlowerbox


\pgfdeclareshape{circle split}
{%
  \nodeparts{text,lower}%

  \savedanchor\centerpoint{%
    \pgf@x=.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength{\pgf@y}{\pgfkeysvalueof{/pgf/inner ysep}}%
    \pgf@y=-\pgf@y%
    \advance\pgf@y by-\dp\pgfnodeparttextbox%
    \advance\pgf@y by-.5\pgflinewidth%
  }%
  \savedanchor\loweranchor{%
    \pgf@x=-.5\wd\pgfnodepartlowerbox%
    \advance\pgf@x by.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength{\pgf@y}{\pgfkeysvalueof{/pgf/inner ysep}}%
    \pgf@y=-2\pgf@y%
    \advance\pgf@y by-\ht\pgfnodepartlowerbox%
    \advance\pgf@y by-.5\pgflinewidth%
    \advance\pgf@y by-\dp\pgfnodeparttextbox%
    \advance\pgf@y by-.5\pgflinewidth%
  }%

  \saveddimen\radius{%
        \pgf@ya=.5\ht\pgfnodeparttextbox%
        \advance\pgf@ya by.5\dp\pgfnodeparttextbox%
        \pgf@yb=.5\ht\pgfnodepartlowerbox%
        \advance\pgf@yb by.5\dp\pgfnodepartlowerbox%
        \ifdim\pgf@ya>\pgf@yb\relax%
            \pgf@ya2.0\pgf@ya\relax%
        \else%
            \pgf@ya2.0\pgf@yb\relax%
        \fi%
        \advance\pgf@ya by.5\pgflinewidth%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@ya by2\pgf@yb%
    \pgf@xa=.5\wd\pgfnodeparttextbox%
    \ifdim\pgf@xa<.5\wd\pgfnodepartlowerbox%
      \pgf@xa=.5\wd\pgfnodepartlowerbox%
    \fi%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@xa by\pgf@xb%
    \pgf@process{\pgfpointnormalised{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
    \ifdim\pgf@x>\pgf@y%
        \c@pgf@counta=\pgf@x%
        \ifnum\c@pgf@counta=0\relax%
        \else%
          \divide\c@pgf@counta by 255\relax%
          \pgf@xa=16\pgf@xa\relax%
          \divide\pgf@xa by\c@pgf@counta%
          \pgf@xa=16\pgf@xa\relax%
        \fi%
      \else%
        \c@pgf@counta=\pgf@y%
        \ifnum\c@pgf@counta=0\relax%
        \else%
          \divide\c@pgf@counta by 255\relax%
          \pgf@ya=16\pgf@ya\relax%
          \divide\pgf@ya by\c@pgf@counta%
          \pgf@xa=16\pgf@ya\relax%
        \fi%
    \fi%
    \pgf@x=\pgf@xa%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@x<.5\pgf@xb%
        \pgf@x=.5\pgf@xb%
    \fi%
    \ifdim\pgf@x<.5\pgf@yb%
        \pgf@x=.5\pgf@yb%
    \fi%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@xb<\pgf@yb%
      \advance\pgf@x by\pgf@yb%
    \else%
      \advance\pgf@x by\pgf@xb%
    \fi%
  }%

  \inheritanchorborder[from=circle]%
  \inheritanchor[from=circle]{north}%
  \inheritanchor[from=circle]{north west}%
  \inheritanchor[from=circle]{north east}%
  \inheritanchor[from=circle]{center}%
  \inheritanchor[from=circle]{west}%
  \inheritanchor[from=circle]{east}%
  \inheritanchor[from=circle]{mid}%
  \inheritanchor[from=circle]{mid west}%
  \inheritanchor[from=circle]{mid east}%
  \inheritanchor[from=circle]{base}%
  \inheritanchor[from=circle]{base west}%
  \inheritanchor[from=circle]{base east}%
  \inheritanchor[from=circle]{south}%
  \inheritanchor[from=circle]{south west}%
  \inheritanchor[from=circle]{south east}%
  \anchor{lower}{\loweranchor}%

  \inheritbackgroundpath[from=circle]%
  \beforebackgroundpath{
    \pgfutil@tempdima=\radius%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@xb<\pgf@yb%
      \advance\pgfutil@tempdima by-\pgf@yb%
    \else%
      \advance\pgfutil@tempdima by-\pgf@xb%
    \fi%
    \advance\pgfutil@tempdima by-.5\pgflinewidth%
    \pgfsetshortenstart{0pt}%
    \pgfsetshortenend{0pt}%
    \pgfsetarrows{-}%
    \pgfpathmoveto{\pgfpointadd{\centerpoint}{\pgfqpoint{-1\pgfutil@tempdima}{0pt}}}%
    \pgfpathlineto{\pgfpointadd{\centerpoint}{\pgfqpoint{\pgfutil@tempdima}{0pt}}}%
    \pgfusepath{stroke}%
  }%
}%



\pgfdeclareshape{circle solidus}{%
  \nodeparts{text,lower}%
  \savedanchor\centerpoint{%
    \pgf@x=0.5\wd\pgfnodeparttextbox%
    \advance\pgf@x by0.5\dp\pgfnodeparttextbox%
    \advance\pgf@x by0.5\ht\pgfnodeparttextbox%
    \pgf@y=-\pgf@x%
    \advance\pgf@y by\ht\pgfnodeparttextbox%
    \advance\pgf@x by0.3536\pgflinewidth%
    \advance\pgf@y by-0.3536\pgflinewidth%
    \pgfmathsetlength{\pgf@xa}{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@x by\pgf@xa%
    \pgfmathsetlength{\pgf@ya}{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@y by-\pgf@ya%
  }%
  \savedanchor\loweranchor{%
    \pgf@x=0.5\wd\pgfnodeparttextbox%
    \advance\pgf@x by0.5\dp\pgfnodeparttextbox%
    \advance\pgf@x by0.5\ht\pgfnodeparttextbox%
    \pgf@y=-\pgf@x%
    \advance\pgf@y by\ht\pgfnodeparttextbox%
    \advance\pgf@x by0.5\ht\pgfnodepartlowerbox%
    \advance\pgf@x by0.5\dp\pgfnodepartlowerbox%
    \advance\pgf@x by-0.5\wd\pgfnodepartlowerbox%
    \advance\pgf@y by-0.5\ht\pgfnodepartlowerbox%
    \advance\pgf@y by0.5\dp\pgfnodepartlowerbox%
    \advance\pgf@y by-0.5\wd\pgfnodepartlowerbox%
    \advance\pgf@x by0.7071\pgflinewidth%
    \advance\pgf@y by-0.7071\pgflinewidth%
    \pgfmathsetlength{\pgf@xa}{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@x by2\pgf@xa%
    \pgfmathsetlength{\pgf@ya}{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@y by-2\pgf@ya%
  }%
  \saveddimen\radius{%
    \pgf@x=\ht\pgfnodeparttextbox%
    \advance\pgf@x by\dp\pgfnodeparttextbox%
    \advance\pgf@x by\wd\pgfnodeparttextbox%
    \pgf@y=\ht\pgfnodepartlowerbox%
    \advance\pgf@y by\dp\pgfnodepartlowerbox%
    \advance\pgf@y by\wd\pgfnodepartlowerbox%
    \ifdim\pgf@x<\pgf@y%
      \pgf@x=\pgf@y%
    \fi%
    \pgf@x=0.7071\pgf@x%
    \advance\pgf@x by0.5\pgflinewidth%
    \pgfmathsetlength{\pgf@xa}{\pgfkeysvalueof{/pgf/inner xsep}}%
    \pgfmathsetlength{\pgf@ya}{\pgfkeysvalueof{/pgf/inner ysep}}%
    \pgfmathaddtolength{\pgf@x}{veclen(2\pgf@xa,2\pgf@ya)}%
    \pgfmathsetlength{\pgf@xa}{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgfmathsetlength{\pgf@ya}{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@x<.5\pgf@xa%
      \pgf@x=.5\pgf@xa%
    \fi%
    \ifdim\pgf@x<.5\pgf@ya%
      \pgf@x=.5\pgf@ya%
    \fi%
    \pgfmathsetlength{\pgf@xa}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@ya}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@xa<\pgf@ya%
      \advance\pgf@x by\pgf@ya%
    \else%
      \advance\pgf@x by\pgf@xa%
    \fi%
  }%
  \inheritanchorborder[from=circle]%
  \inheritanchor[from=circle]{north}%
  \inheritanchor[from=circle]{north west}%
  \inheritanchor[from=circle]{north east}%
  \inheritanchor[from=circle]{center}%
  \inheritanchor[from=circle]{west}%
  \inheritanchor[from=circle]{east}%
  \inheritanchor[from=circle]{mid}%
  \inheritanchor[from=circle]{mid west}%
  \inheritanchor[from=circle]{mid east}%
  \inheritanchor[from=circle]{base}%
  \inheritanchor[from=circle]{base west}%
  \inheritanchor[from=circle]{base east}%
  \inheritanchor[from=circle]{south}%
  \inheritanchor[from=circle]{south west}%
  \inheritanchor[from=circle]{south east}%
  \anchor{lower}{\loweranchor}%
  \inheritbackgroundpath[from=circle]%
  \beforebackgroundpath{%
    \pgfutil@tempdima=\radius%
    \pgfmathsetlength{\pgf@xa}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@ya}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@xa<\pgf@ya%
      \advance\pgfutil@tempdima by-\pgf@ya%
    \else%
      \advance\pgfutil@tempdima by-\pgf@xa%
    \fi%
    \advance\pgfutil@tempdima by-.5\pgflinewidth%
    \pgfsetshortenstart{0pt}%
    \pgfsetshortenend{0pt}%
    \pgfsetarrows{-}%
    \pgfpathmoveto{\pgfpointadd{\centerpoint}{\pgfqpoint{-0.437\pgfutil@tempdima}{-0.437\pgfutil@tempdima}}}%
    \pgfpathlineto{\pgfpointadd{\centerpoint}{\pgfqpoint{0.437\pgfutil@tempdima}{0.437\pgfutil@tempdima}}}%
    \pgfusepath{stroke}%
  }%
}%


\def\pgf@lib@sh@newbox{\csname newbox\endcsname}%

\def\pgf@lib@sh@toalpha#1{%
    \ifcase#1\relax%
        \or one\or two\or three\or four\or five\or six\or seven\or eight\or nine\or ten%
        \or eleven\or twelve\or thirteen\or fourteen\or fifteen%
        \or sixteen\or seventeen\or eighteen\or nineteen\or twenty%
    \else%
        twenty%
    \fi%
}%


\def\pgf@lib@sh@getalpha#1#2{\expandafter\edef\expandafter#1\expandafter{\pgf@lib@sh@toalpha{#2}}}%

\newbox\pgfnodeparttwobox
\newbox\pgfnodepartthreebox
\newbox\pgfnodepartfourbox

\let\pgfnodepartonebox=\pgfnodeparttextbox
\let\pgfnodepartsecondbox=\pgfnodeparttwobox
\let\pgfnodepartthirdbox=\pgfnodepartthreebox
\let\pgfnodepartfourthbox=\pgfnodepartfourbox

\def\pgf@lib@sh@allocateboxes#1{%
    \c@pgf@counta=#1\relax%
    \pgfmathloop%
        \ifnum\c@pgf@counta>4\relax%
        \pgfutil@ifundefined{pgfnodepart\pgf@lib@sh@toalpha{\c@pgf@counta}box}%
        {%
            \expandafter\pgf@lib@sh@newbox\csname pgfnodepart\pgf@lib@sh@toalpha{\c@pgf@counta}box\endcsname%
        }%
        {}%
        \advance\c@pgf@counta by-1\relax%
    \repeatpgfmathloop%
}%

\def\pgf@lib@sh@rs@lefttext{left}%
\def\pgf@lib@sh@rs@righttext{right}%
\def\pgf@lib@sh@rs@centertext{center}%
\def\pgf@lib@sh@rs@bottomtext{bottom}%
\def\pgf@lib@sh@rs@toptext{top}%
\def\pgf@lib@sh@rs@basetext{base}%
\def\pgf@lib@sh@rs@nonetext{none}%


\newif\ifpgfrectanglesplithorizontal
\newif\ifpgfrectanglesplitdrawsplits\pgfrectanglesplitdrawsplitstrue
\newif\ifpgfrectanglesplitignoreemptyparts
\newif\ifpgfrectanglesplitusecustomfill

\let\pgf@lib@sh@rs@every@emptypart=\pgfutil@empty
\let\pgf@lib@sh@rs@every@part=\pgfutil@empty
\def\pgf@lib@sh@rs@list@fill{none}%

\pgfkeys{/pgf/.cd,
    rectangle split parts/.initial=4,
    rectangle split part align/.initial=center,
    rectangle split horizontal/.is if=pgfrectanglesplithorizontal,
    rectangle split ignore empty parts/.is if=pgfrectanglesplitignoreemptyparts,
    rectangle split empty part width/.code={%
        \pgfmathsetlength\pgf@x{#1}
        \edef\pgf@lib@sh@rs@temp{\noexpand\vrule width\the\pgf@x height0ptdepth0pt\relax}%
        \def\pgf@lib@sh@rs@@temp{\def\pgf@lib@sh@rs@every@emptypart}%
        \expandafter\expandafter\expandafter\pgf@lib@sh@rs@@temp\expandafter\expandafter\expandafter{%
            \expandafter\pgf@lib@sh@rs@every@emptypart\pgf@lib@sh@rs@temp}%
    },%
    rectangle split empty part width=1ex,
    rectangle split empty part height/.code={%
        \pgfmathsetlength\pgf@x{#1}
        \edef\pgf@lib@sh@rs@temp{\noexpand\vrule width0ptheight\the\pgf@x depth0pt\relax}%
        \def\pgf@lib@sh@rs@@temp{\def\pgf@lib@sh@rs@every@emptypart}%
        \expandafter\expandafter\expandafter\pgf@lib@sh@rs@@temp\expandafter\expandafter\expandafter{%
            \expandafter\pgf@lib@sh@rs@every@emptypart\pgf@lib@sh@rs@temp}%
    },%
    rectangle split empty part height=1ex,
    rectangle split empty part depth/.code={%
        \pgfmathsetlength\pgf@x{#1}
        \edef\pgf@lib@sh@rs@temp{\noexpand\vrule width0ptheight0ptdepth\the\pgf@x\relax}%
        \def\pgf@lib@sh@rs@@temp{\def\pgf@lib@sh@rs@every@emptypart}%
        \expandafter\expandafter\expandafter\pgf@lib@sh@rs@@temp\expandafter\expandafter\expandafter{%
            \expandafter\pgf@lib@sh@rs@every@emptypart\pgf@lib@sh@rs@temp}%
    },%
    rectangle split empty part depth=0ex,
    rectangle split every empty part/.store in=\pgf@lib@sh@rs@every@emptypart,
    rectangle split part fill/.code=\def\pgf@lib@sh@rs@list@fill{#1}\pgfrectanglesplitusecustomfilltrue,
    rectangle split uses custom fill/.is if=pgfrectanglesplitusecustomfill,
    rectangle split draw splits/.is if=pgfrectanglesplitdrawsplits,
    rectangle split allocate boxes/.code=\pgf@lib@sh@allocateboxes{#1},
}%


\def\pgf@lib@sh@rs@process@list#1#2{%
    \c@pgf@counta=1\relax%
    \c@pgf@countb=#2\relax%
    \edef\pgf@lib@sh@rs@temp{#1}%
    \expandafter\pgf@lib@sh@rs@@process@list\pgf@lib@sh@rs@temp,\pgf@stop,
}%

\def\pgf@lib@sh@rs@@process@list{%
    \pgfutil@ifnextchar x{\pgf@lib@sh@rs@@@process@list}%
        {\pgf@lib@sh@rs@@@process@list}
}%

\def\pgf@lib@sh@rs@@@process@list#1,{%
    \ifx#1\pgf@stop%
        \let\pgf@next\pgf@lib@sh@rs@@@@process@list%
    \else%
        \pgf@lib@sh@getalpha\pgf@lib@sh@rs@number{\c@pgf@counta}%
        \def\pgf@lib@sh@rs@lastalign{#1}%
        \pgfutil@namedef{pgf@lib@sh@rs@\pgf@lib@sh@toalpha{\c@pgf@counta}@item}{#1}%
        \let\pgf@next\pgf@lib@sh@rs@@process@list%
        \advance\c@pgf@counta by1\relax%
    \fi%
    \pgf@next}%

\def\pgf@lib@sh@rs@@@@process@list{%
    \pgfmathloop%
        \ifnum\c@pgf@counta>\c@pgf@countb%
        \else%
            \expandafter\edef\csname pgf@lib@sh@rs@\pgf@lib@sh@toalpha{\c@pgf@counta}@item\endcsname%
                {\pgf@lib@sh@rs@lastalign}%
            \advance\c@pgf@counta by1\relax%
    \repeatpgfmathloop%
}%

\pgf@lib@sh@allocateboxes{20}%

\pgfdeclareshape{rectangle split}{%
    \savedmacro\rectanglesplitparameters{%
        \pgfmathsetcount\c@pgf@counta{\pgfkeysvalueof{/pgf/rectangle split parts}}%
        \edef\parts{\the\c@pgf@counta}%
        \addtosavedmacro\parts%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \edef\innerxsep{\the\pgf@x}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \edef\innerysep{\the\pgf@y}%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
        \edef\outerxsep{\the\pgf@x}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
        \edef\outerysep{\the\pgf@y}%
        \addtosavedmacro\outerxsep%
        \addtosavedmacro\outerysep%
        \pgf@x=0pt\relax%
        \pgf@y=0pt\relax%
        \pgfutil@tempdima=0pt\relax%
        \pgfutil@tempdimb=0pt\relax%
        \pgfmathloop%
            \ifnum\pgfmathcounter>\parts%
            \else%
                \pgf@lib@sh@getalpha\pgf@lib@sh@rs@number{\pgfmathcounter}%
                \expandafter\let\expandafter\pgf@lib@sh@box\expandafter=%
                    \csname pgfnodepart\pgf@lib@sh@rs@number box\endcsname%
                \pgf@xa=\wd\pgf@lib@sh@box%
                \pgf@ya=\ht\pgf@lib@sh@box%
                \pgf@yb=\dp\pgf@lib@sh@box%
                \expandafter\def\csname pgf@lib@sh@rs@empty@\pgf@lib@sh@rs@number\endcsname{\relax}%
                \ifdim\pgf@xa=0pt\relax%
                    \ifdim\pgf@ya=0pt\relax%
                        \ifdim\pgf@yb=0pt\relax%
                            \ifpgfrectanglesplitignoreemptyparts%
                                \expandafter\let\csname pgf@lib@sh@rs@empty@\pgf@lib@sh@rs@number\endcsname=\pgfutil@empty%
                            \else%
                                \setbox\pgf@lib@sh@box=\hbox{{\pgf@lib@sh@rs@every@emptypart}}%
                                \pgf@xa=\wd\pgf@lib@sh@box%
                                \pgf@ya=\ht\pgf@lib@sh@box%
                                \pgf@yb=\dp\pgf@lib@sh@box%
                            \fi%
                        \fi%
                    \fi%
                \fi%
                \expandafter\edef\csname pgf@lib@sh@rs@width@\pgf@lib@sh@rs@number\endcsname{\the\pgf@xa}%
                \expandafter\edef\csname pgf@lib@sh@rs@height@\pgf@lib@sh@rs@number\endcsname{\the\pgf@ya}%
                \expandafter\edef\csname pgf@lib@sh@rs@depth@\pgf@lib@sh@rs@number\endcsname{\the\pgf@yb}%
                \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@empty@\pgf@lib@sh@rs@number\endcsname%
                \ifdim\pgf@xa>\pgf@x%
                    \pgf@x=\pgf@xa%
                \fi%
                \ifdim\pgf@ya>\pgfutil@tempdima%
                    \pgfutil@tempdima=\pgf@ya%
                \fi%
                \ifdim\pgf@yb>\pgfutil@tempdimb%
                    \pgfutil@tempdimb=\pgf@yb%
                \fi%
                \pgf@yc=\pgfutil@tempdima%
                \advance\pgf@yc by\pgfutil@tempdimb%
                \ifdim\pgf@yc>\pgf@y%
                    \pgf@y=\pgf@yc%
                \fi%
        \repeatpgfmathloop%
        \edef\pgf@lib@sh@rs@max@width{\the\pgf@x}%
        \edef\pgf@lib@sh@rs@max@totalheight{\the\pgf@y}%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/minimum width}}%
        \advance\pgf@x by-\innerxsep\relax%
        \advance\pgf@x by-\innerxsep\relax%
        \pgf@xa=\pgf@x%
        \advance\pgf@xa by-\pgf@lib@sh@rs@max@width\relax%
        \ifdim\pgf@xa>0pt\relax%
            \edef\pgf@lib@sh@rs@max@width{\the\pgf@x}%
        \fi%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/minimum height}}%
        \advance\pgf@y by-\innerysep\relax%
        \advance\pgf@y by-\innerysep\relax%
        \pgf@ya=\pgf@y%
        \advance\pgf@ya by-\pgf@lib@sh@rs@max@totalheight\relax%
        \ifdim\pgf@ya>0pt\relax%
            \edef\pgf@lib@sh@rs@max@totalheight{\the\pgf@y}%
        \fi%
        \pgf@lib@sh@rs@process@list{\pgfkeysvalueof{/pgf/rectangle split part align}}{\parts}%
        \ifpgfrectanglesplithorizontal%
            \pgf@x=0pt\relax%
            \pgfmathloop%
                \ifnum\pgfmathcounter>\parts%
                \else%
                    \pgf@lib@sh@getalpha\pgf@lib@sh@rs@number{\pgfmathcounter}%
                    \expandafter\let\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname=\pgfutil@empty%
                    \expandafter\ifx\csname pgf@lib@sh@rs@empty@\pgf@lib@sh@rs@number\endcsname\pgfutil@empty%
                        \ifpgfrectanglesplitignoreemptyparts%
                            \expandafter\let\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname=%
                                \pgf@lib@sh@rs@lastanchor%
                        \fi%
                    \fi%
                    \expandafter\ifx\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname\pgfutil@empty%
                        \expandafter\ifx\csname pgf@lib@sh@rs@\pgf@lib@sh@rs@number @item\endcsname%
                                \pgf@lib@sh@rs@bottomtext%
                            \pgf@y=\csname pgf@lib@sh@rs@depth@\pgf@lib@sh@rs@number\endcsname\relax%
                        \else%
                            \expandafter\ifx\csname pgf@lib@sh@rs@\pgf@lib@sh@rs@number @item\endcsname%
                                    \pgf@lib@sh@rs@toptext%
                                \pgf@y=-\csname pgf@lib@sh@rs@height@\pgf@lib@sh@rs@number\endcsname\relax%
                                \advance\pgf@y by\pgf@lib@sh@rs@max@totalheight\relax%
                            \else%
                                \expandafter\ifx\csname pgf@lib@sh@rs@\pgf@lib@sh@rs@number @item\endcsname%
                                        \pgf@lib@sh@rs@basetext%
                                    \pgf@y=\pgf@lib@sh@rs@max@totalheight\relax%
                                    \advance\pgf@y by-\pgfutil@tempdima%
                                    \advance\pgf@y by\pgfutil@tempdimb%
                                    \divide\pgf@y by2\relax%
                                \else%
                                    \pgf@y=\pgf@lib@sh@rs@max@totalheight\relax%
                                    \advance\pgf@y by-\csname pgf@lib@sh@rs@height@\pgf@lib@sh@rs@number\endcsname\relax%
                                    \advance\pgf@y by\csname pgf@lib@sh@rs@depth@\pgf@lib@sh@rs@number\endcsname\relax%
                                    \divide\pgf@y by2\relax%
                                \fi%
                            \fi%
                        \fi%
                        \ifnum\pgfmathcounter=1\relax%
                            \edef\pgf@lib@sh@rs@yoffset{\the\pgf@y}%
                            \pgf@y=0pt\relax%
                            \pgfextract@process\pgf@lib@sh@rs@anchor@one{}%
                            \addtosavedmacro\pgf@lib@sh@rs@anchor@one%
                            \let\pgf@lib@sh@rs@lastanchor=\pgf@lib@sh@rs@anchor@one%
                            \let\pgf@lib@sh@rs@lastnumber=\pgf@lib@sh@rs@number%
                        \else
                            \advance\pgf@y by-\pgf@lib@sh@rs@yoffset\relax%
                            \advance\pgf@x by\csname pgf@lib@sh@rs@width@\pgf@lib@sh@rs@lastnumber\endcsname\relax%
                            \advance\pgf@x by\innerxsep\relax%
                            \advance\pgf@x by\pgflinewidth%
                            \advance\pgf@x by\innerxsep\relax%
                            \expandafter\pgfextract@process\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname{}%
                            \expandafter\let\expandafter\pgf@lib@sh@rs@lastanchor\expandafter=%
                                \csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname%
                            \let\pgf@lib@sh@rs@lastnumber=\pgf@lib@sh@rs@number%
                            \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname%
                        \fi%
                    \fi%
            \repeatpgfmathloop%
            \pgfextract@process\northeast{%
                \pgf@lib@sh@rs@lastanchor%
                \advance\pgf@x by\csname pgf@lib@sh@rs@width@\pgf@lib@sh@rs@lastnumber\endcsname\relax%
                \advance\pgf@x by\innerxsep\relax%
                \advance\pgf@x by\outerxsep\relax%
                \pgf@y=\pgf@lib@sh@rs@max@totalheight\relax%
                \advance\pgf@y by-\pgf@lib@sh@rs@yoffset\relax%
                \advance\pgf@y by\innerysep\relax%
                \advance\pgf@y by\outerysep\relax%
            }%
            \addtosavedmacro\northeast%
            \pgfextract@process\southwest{%
                \pgf@lib@sh@rs@anchor@one%
                \advance\pgf@x by-\innerxsep\relax%
                \advance\pgf@x by-\outerxsep\relax%
                \pgf@y=-\pgf@lib@sh@rs@yoffset\relax%
                \advance\pgf@y by-\innerysep\relax%
                \advance\pgf@y by-\outerysep\relax%
            }%
            \addtosavedmacro\southwest%
            \pgfextract@process\centerpoint{%
                \pgfpointadd{\southwest}{\northeast}%
                \divide\pgf@x by2\relax%
                \divide\pgf@y by2\relax%
            }%
            \addtosavedmacro\centerpoint%
            \pgfmathloop%
                \ifnum\pgfmathcounter>\parts%
                \else%
                    \pgf@lib@sh@getalpha\pgf@lib@sh@rs@number{\pgfmathcounter}%
                    \expandafter\ifx\csname pgf@lib@sh@rs@empty@\pgf@lib@sh@rs@number\endcsname\pgfutil@empty%
                    \else%
                        \csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname%
                        \pgf@xa=\pgf@x%
                        \pgf@xb=\csname pgf@lib@sh@rs@width@\pgf@lib@sh@rs@number\endcsname\relax%
                        \advance\pgf@xa by0.5\pgf@xb%
                        \expandafter\pgfextract@process\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @south\endcsname{%
                            \southwest%
                            \pgf@x=\pgf@xa%
                        }%
                        \expandafter\pgfextract@process\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @north\endcsname{%
                            \northeast%
                            \pgf@x=\pgf@xa%
                        }%
                        \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @north\endcsname%
                        \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @south\endcsname%
                        \ifnum\pgfmathcounter=\parts%
                        \else%
                            \advance\pgf@xa by0.5\pgf@xb%
                            \advance\pgf@xa by\innerxsep\relax%
                            \advance\pgf@xa by.5\pgflinewidth%
                            \expandafter\pgfextract@process\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split@south\endcsname{%
                                \southwest%
                                \pgf@x=\pgf@xa%
                            }%
                            \expandafter\pgfextract@process\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split@north\endcsname{%
                                \northeast%
                                \pgf@x=\pgf@xa%
                            }%
                            \expandafter\pgfextract@process\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split\endcsname{%
                                \centerpoint%
                                \pgf@x=\pgf@xa%
                            }%
                            \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split@north\endcsname%
                            \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split@south\endcsname%
                            \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split\endcsname%
                        \fi%
                    \fi%
            \repeatpgfmathloop%
        \else%
            \pgf@y=0pt\relax%
            \pgfmathloop%
                \ifnum\pgfmathcounter>\parts%
                \else%
                    \pgf@lib@sh@getalpha\pgf@lib@sh@rs@number{\pgfmathcounter}%
                    \expandafter\let\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname=\pgfutil@empty%
                    \expandafter\ifx\csname pgf@lib@sh@rs@empty@\pgf@lib@sh@rs@number\endcsname\pgfutil@empty%
                        \ifpgfrectanglesplitignoreemptyparts%
                            \expandafter\let\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname=%
                                \pgf@lib@sh@rs@lastanchor%
                        \fi%
                    \fi%
                    \expandafter\ifx\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname\pgfutil@empty%
                        \expandafter\ifx\csname pgf@lib@sh@rs@\pgf@lib@sh@rs@number @item\endcsname%
                                \pgf@lib@sh@rs@lefttext%
                            \pgf@x=0pt\relax%
                        \else%
                            \expandafter\ifx\csname pgf@lib@sh@rs@\pgf@lib@sh@rs@number @item\endcsname%
                                    \pgf@lib@sh@rs@righttext%
                                \pgf@x=-\csname pgf@lib@sh@rs@width@\pgf@lib@sh@rs@number\endcsname\relax%
                                \advance\pgf@x by\pgf@lib@sh@rs@max@width\relax%
                            \else%
                                \pgf@x=-\csname pgf@lib@sh@rs@width@\pgf@lib@sh@rs@number\endcsname\relax%
                                \advance\pgf@x by\pgf@lib@sh@rs@max@width\relax%
                                \divide\pgf@x by2\relax%
                        \fi%
                    \fi%
                    \ifnum\pgfmathcounter=1\relax%
                        \edef\pgf@lib@sh@rs@xoffset{\the\pgf@x}%
                        \pgf@x=0pt\relax%
                        \pgfextract@process\pgf@lib@sh@rs@anchor@one{}%
                        \addtosavedmacro\pgf@lib@sh@rs@anchor@one%
                        \let\pgf@lib@sh@rs@lastanchor=\pgf@lib@sh@rs@anchor@one%
                        \let\pgf@lib@sh@rs@lastnumber=\pgf@lib@sh@rs@number%
                    \else
                        \advance\pgf@x by-\pgf@lib@sh@rs@xoffset\relax%
                        \advance\pgf@y by-\csname pgf@lib@sh@rs@depth@\pgf@lib@sh@rs@lastnumber\endcsname\relax%
                        \advance\pgf@y by-\innerysep\relax%
                        \advance\pgf@y by-\pgflinewidth%
                        \advance\pgf@y by-\innerysep\relax%
                        \advance\pgf@y by-\csname pgf@lib@sh@rs@height@\pgf@lib@sh@rs@number\endcsname\relax%
                        \expandafter\pgfextract@process\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname{}%
                        \expandafter\let\expandafter\pgf@lib@sh@rs@lastanchor\expandafter=%
                            \csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname%
                        \let\pgf@lib@sh@rs@lastnumber=\pgf@lib@sh@rs@number%
                        \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname%
                    \fi%
                \fi%
            \repeatpgfmathloop%
            \pgfextract@process\northeast{%
                \pgf@x=\pgf@lib@sh@rs@max@width\relax%
                \advance\pgf@x by-\pgf@lib@sh@rs@xoffset\relax%
                \advance\pgf@x by\innerxsep\relax%
                \advance\pgf@x by\outerxsep\relax%
                \pgf@y=\pgf@lib@sh@rs@height@one\relax%
                \advance\pgf@y by\innerysep\relax%
                \advance\pgf@y by\outerysep\relax%
                \advance\pgf@y by.5\pgflinewidth%
            }%
            \addtosavedmacro\northeast%
            \pgfextract@process\southwest{%
                \pgf@lib@sh@rs@lastanchor%
                \pgf@x=-\pgf@lib@sh@rs@xoffset\relax%
                \advance\pgf@x by-\innerxsep\relax%
                \advance\pgf@x by-\outerxsep\relax%
                \advance\pgf@y by-\csname pgf@lib@sh@rs@depth@\pgf@lib@sh@rs@lastnumber\endcsname\relax%
                \advance\pgf@y by-\innerysep\relax%
                \advance\pgf@y by-\outerysep\relax%
                \advance\pgf@y by-.5\pgflinewidth%
            }%
            \addtosavedmacro\southwest%
            \pgfextract@process\centerpoint{%
                \pgfpointadd{\southwest}{\northeast}%
                \divide\pgf@x by2\relax%
                \divide\pgf@y by2\relax%
            }%
            \addtosavedmacro\centerpoint%
            \pgfmathloop%
                \ifnum\pgfmathcounter>\parts%
                \else%
                    \pgf@lib@sh@getalpha\pgf@lib@sh@rs@number{\pgfmathcounter}%
                    \expandafter\ifx\csname pgf@lib@sh@rs@empty@\pgf@lib@sh@rs@number\endcsname\pgfutil@empty%
                    \else%
                        \csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname%
                        \pgf@ya=\csname pgf@lib@sh@rs@height@\pgf@lib@sh@rs@number\endcsname\relax%
                        \advance\pgf@y by0.5\pgf@ya%
                        \pgf@ya=\csname pgf@lib@sh@rs@depth@\pgf@lib@sh@rs@number\endcsname\relax%
                        \advance\pgf@y by-0.5\pgf@ya%
                        \pgf@ya=\pgf@y%
                        \expandafter\pgfextract@process\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @west\endcsname{%
                            \southwest%
                            \pgf@y=\pgf@ya%
                        }%
                        \expandafter\pgfextract@process\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @east\endcsname{%
                            \northeast%
                            \pgf@y=\pgf@ya%
                        }%
                        \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @east\endcsname%
                        \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @west\endcsname%
                        \ifnum\pgfmathcounter=\parts%
                        \else%
                            \csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number\endcsname%
                            \pgf@ya=\pgf@y%
                            \advance\pgf@ya by-\csname pgf@lib@sh@rs@depth@\pgf@lib@sh@rs@number\endcsname\relax%
                            \advance\pgf@ya by-\innerysep\relax%
                            \advance\pgf@ya by-.5\pgflinewidth%
                            \expandafter\pgfextract@process\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split@west\endcsname{%
                                \southwest%
                                \pgf@y=\pgf@ya%
                            }%
                            \expandafter\pgfextract@process\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split@east\endcsname{%
                                \northeast%
                                \pgf@y=\pgf@ya%
                            }%
                            \expandafter\pgfextract@process\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split\endcsname{%
                                \centerpoint%
                                \pgf@y=\pgf@ya%
                            }%
                            \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split@east\endcsname%
                            \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split@west\endcsname%
                            \expandafter\addtosavedmacro\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split\endcsname%
                        \fi%
                    \fi%
            \repeatpgfmathloop%
        \fi%
    }%
    \savedanchor\basepoint{%
        \pgf@x=0.5\wd\pgfnodeparttextbox%
        \pgf@y=0pt\relax%
    }%
    \savedanchor\midpoint{%
        \pgf@x=0.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{+0.5ex}%
    }%
    \anchor{center}{%
        \rectanglesplitparameters%
        \centerpoint%
    }%
    \anchor{base}{\basepoint}%
    \anchor{base east}{%
        \rectanglesplitparameters%
        \northeast%
        \pgf@y=0pt\relax%
    }%
    \anchor{base west}{%
        \rectanglesplitparameters%
        \southwest%
        \pgf@y=0pt\relax%
    }%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{%
        \rectanglesplitparameters%
        \northeast%
        \pgf@xa=\pgf@x%
        \midpoint%
        \pgf@x=\pgf@xa%
    }%
    \anchor{mid west}{%
        \rectanglesplitparameters%
        \southwest%
        \pgf@xa=\pgf@x%
        \midpoint%
        \pgf@x=\pgf@xa%
    }%
    \anchor{north}{%
        \rectanglesplitparameters%
        \centerpoint%
        \pgf@xa=\pgf@x%
        \northeast%
        \pgf@x=\pgf@xa%
    }%
    \anchor{south}{%
        \rectanglesplitparameters%
        \centerpoint%
        \pgf@xa=\pgf@x%
        \southwest%
        \pgf@x=\pgf@xa%
    }%
    \anchor{east}{%
        \rectanglesplitparameters%
        \centerpoint%
        \pgf@ya=\pgf@y%
        \northeast%
        \pgf@y=\pgf@ya%
    }%
    \anchor{west}{%
        \rectanglesplitparameters%
        \centerpoint%
        \pgf@ya=\pgf@y%
        \southwest%
        \pgf@y=\pgf@ya%
    }%
    \anchor{north east}{%
        \rectanglesplitparameters%
        \northeast%
    }%
    \anchor{north west}{%
        \rectanglesplitparameters%
        \northeast%
        \pgf@ya=\pgf@y%
        \southwest%
        \pgf@y=\pgf@ya%
    }%
    \anchor{south west}{%
        \rectanglesplitparameters%
        \southwest%
    }%
    \anchor{south east}{%
        \rectanglesplitparameters%
        \southwest%
        \pgf@ya=\pgf@y%
        \northeast%
        \pgf@y=\pgf@ya%
    }%
    \behindbackgroundpath{%
        \ifpgfrectanglesplitusecustomfill%
            \pgf@lib@sh@rs@process@list{\pgf@lib@sh@rs@list@fill}{\parts}%
            {%
                \ifpgfrectanglesplithorizontal%
                    \expandafter\let\expandafter\pgf@lib@sh@rs@fill@bottomleft\expandafter=%
                        \csname pgf@anchor@rectangle split@south west\endcsname%
                    \pgfmathloop%
                        \ifnum\pgfmathcounter>\parts%
                        \else%
                            \pgf@lib@sh@getalpha\pgf@lib@sh@rs@number{\pgfmathcounter}%
                            \ifnum\pgfmathcounter=\parts%
                                \expandafter\let\expandafter\pgf@lib@sh@rs@fill@topright\expandafter=%
                                    \csname pgf@anchor@rectangle split@north east\endcsname%
                            \else%
                                \expandafter\let\expandafter\pgf@lib@sh@rs@fill@topright\expandafter=%
                                    \csname pgf@anchor@rectangle split@\pgf@lib@sh@rs@number\space split north\endcsname%
                            \fi%
                            \expandafter\ifx\csname pgf@lib@sh@rs@empty@\pgf@lib@sh@rs@number\endcsname\pgfutil@empty%
                            \else%
                                \expandafter\ifx\csname pgf@lib@sh@rs@\pgf@lib@sh@rs@number @item\endcsname\pgf@lib@sh@rs@nonetext%
                                \else%
                                    \pgfextract@process\pgf@lib@sh@rs@fill@bottomleft{%
                                        \pgf@lib@sh@rs@fill@bottomleft%
                                        \advance\pgf@y by\outerysep\relax%
                                        \ifnum\pgfmathcounter=1\relax%
                                            \advance\pgf@x by\outerxsep\relax%
                                        \fi%
                                    }%
                                    \pgfextract@process\pgf@lib@sh@rs@fill@topright{%
                                        \pgf@lib@sh@rs@fill@topright%
                                        \advance\pgf@y by-\outerysep\relax%
                                        \ifnum\pgfmathcounter=\parts\relax%
                                            \advance\pgf@x by-\outerxsep\relax%
                                        \fi%
                                    }%
                                    \ifnum\pgfmathcounter>1\relax%
                                        \begingroup\pgfsetcornersarced{\pgfpointorigin}%
                                    \fi%
                                    \pgfpathmoveto{%
                                        \pgf@lib@sh@rs@fill@topright%
                                        \pgf@xa=\pgf@x%
                                        \pgf@lib@sh@rs@fill@bottomleft%
                                        \pgf@x=\pgf@xa%
                                    }%
                                    \pgfpathlineto{\pgf@lib@sh@rs@fill@bottomleft}%
                                    \pgfpathlineto{%
                                        \pgf@lib@sh@rs@fill@bottomleft%
                                        \pgf@xa=\pgf@x%
                                        \pgf@lib@sh@rs@fill@topright%
                                        \pgf@x=\pgf@xa%
                                    }%
                                    \ifnum\pgfmathcounter>1\relax%
                                        \endgroup%
                                    \fi%
                                    \ifnum\pgfmathcounter<\parts%
                                        \begingroup\pgfsetcornersarced{\pgfpointorigin}%
                                    \fi%
                                    \pgfpathlineto{\pgf@lib@sh@rs@fill@topright}%
                                    \pgfpathclose%
                                    \ifnum\pgfmathcounter<\parts%
                                        \endgroup%
                                    \fi%
                                    \pgfsetfillcolor{\csname pgf@lib@sh@rs@\pgf@lib@sh@rs@number @item\endcsname}%
                                    \pgfusepath{fill}%
                                \fi%
                            \fi%
                            \pgfextract@process\pgf@lib@sh@rs@fill@bottomleft{%
                                \pgf@lib@sh@rs@fill@bottomleft%
                                \pgf@ya=\pgf@y%
                                \pgf@lib@sh@rs@fill@topright%
                                \pgf@y=\pgf@ya%
                                \advance\pgf@y by-\outerysep%
                            }%
                    \repeatpgfmathloop%
                \else%
                    \expandafter\let\expandafter\pgf@lib@sh@rs@fill@topright\expandafter=%
                        \csname pgf@anchor@rectangle split@north east\endcsname%
                    \pgfmathloop%
                        \ifnum\pgfmathcounter>\parts%
                        \else%
                            \pgf@lib@sh@getalpha\pgf@lib@sh@rs@number{\pgfmathcounter}%
                            \ifnum\pgfmathcounter=\parts%
                                \expandafter\let\expandafter\pgf@lib@sh@rs@fill@bottomleft\expandafter=%
                                    \csname pgf@anchor@rectangle split@south west\endcsname%
                            \else%
                                \expandafter\let\expandafter\pgf@lib@sh@rs@fill@bottomleft\expandafter=%
                                    \csname pgf@anchor@rectangle split@\pgf@lib@sh@rs@number\space split west\endcsname%
                            \fi%
                            \expandafter\ifx\csname pgf@lib@sh@rs@empty@\pgf@lib@sh@rs@number\endcsname\pgfutil@empty%
                            \else%
                                \expandafter\ifx\csname pgf@lib@sh@rs@\pgf@lib@sh@rs@number @item\endcsname\pgf@lib@sh@rs@nonetext%
                                \else%
                                    \pgfextract@process\pgf@lib@sh@rs@fill@bottomleft{%
                                        \pgf@lib@sh@rs@fill@bottomleft%
                                        \advance\pgf@x by\outerxsep\relax%
                                        \ifnum\parts=1\relax%
                                            \advance\pgf@y by\outerysep\relax%
                                        \else%
                                            \ifnum\pgfmathcounter=\parts
                                                \advance\pgf@y by\outerysep\relax%
                                            \fi%
                                        \fi%
                                    }%
                                    \pgfextract@process\pgf@lib@sh@rs@fill@topright{%
                                        \pgf@lib@sh@rs@fill@topright%
                                        \advance\pgf@x by-\outerxsep\relax%
                                        \ifnum\parts=1\relax%
                                            \advance\pgf@y by-\outerysep\relax%
                                        \else%
                                            \ifnum\pgfmathcounter=1\relax%
                                                \advance\pgf@y by-\outerysep\relax%
                                            \fi%
                                        \fi%
                                    }%
                                    \pgfpathmoveto{\pgf@lib@sh@rs@fill@bottomleft}%
                                    \ifnum\pgfmathcounter>1\relax%
                                        \begingroup\pgfsetcornersarced{\pgfpointorigin}%
                                    \fi%
                                    \pgfpathlineto{%
                                        \pgf@lib@sh@rs@fill@bottomleft%
                                        \pgf@xa=\pgf@x%
                                        \pgf@lib@sh@rs@fill@topright%
                                        \pgf@x=\pgf@xa%
                                    }%
                                    \pgfpathlineto{\pgf@lib@sh@rs@fill@topright}%
                                    \ifnum\pgfmathcounter>1\relax%
                                        \endgroup%
                                    \fi%
                                    \ifnum\pgfmathcounter<\parts%
                                        \begingroup\pgfsetcornersarced{\pgfpointorigin}%
                                    \fi%
                                    \pgfpathlineto{%
                                        \pgf@lib@sh@rs@fill@topright%
                                        \pgf@xa=\pgf@x%
                                        \pgf@lib@sh@rs@fill@bottomleft%
                                        \pgf@x=\pgf@xa%
                                    }%
                                    \pgfpathclose%
                                    \ifnum\pgfmathcounter<\parts%
                                        \endgroup%
                                    \fi%
                                    \pgfsetfillcolor{\csname pgf@lib@sh@rs@\pgf@lib@sh@rs@number @item\endcsname}%
                                    \pgfusepath{fill}%
                                \fi%
                            \fi%
                            \pgfextract@process\pgf@lib@sh@rs@fill@topright{%
                                \pgf@lib@sh@rs@fill@topright%
                                \pgf@xa=\pgf@x%
                                \pgf@lib@sh@rs@fill@bottomleft%
                                \pgf@x=\pgf@xa%
                                \advance\pgf@x by\outerxsep\relax%
                            }%
                    \repeatpgfmathloop%
                \fi%
            }%
        \fi%
    }%
    \backgroundpath{%
        \begingroup%
            \pgfextract@process\southwest{%
                \southwest%
                \advance\pgf@x by\outerxsep\relax%
                \advance\pgf@y by\outerysep\relax%
            }%
            \pgfextract@process\northeast{%
                \northeast%
                \advance\pgf@x by-\outerxsep\relax%
                \advance\pgf@y by-\outerysep\relax%
            }%
            \pgfpathrectangle{\southwest}{\pgfpointdiff{\southwest}{\northeast}}%
        \endgroup%
        \ifpgfrectanglesplitdrawsplits%
            \pgfmathloop%
                \ifnum\pgfmathcounter=\parts%
                \else%
                    \pgf@lib@sh@getalpha\pgf@lib@sh@rs@number{\pgfmathcounter}%
                    \expandafter\ifx\csname pgf@lib@sh@rs@empty@\pgf@lib@sh@rs@number\endcsname\pgfutil@empty%
                    \else%
                        \pgfpathmoveto{%
                            \ifpgfrectanglesplithorizontal%
                                \csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split@north\endcsname%
                                \advance\pgf@y by-\outerysep\relax%
                            \else%
                                \csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split@east\endcsname%
                                \advance\pgf@x by-\outerxsep\relax%
                            \fi%
                        }%
                        \pgfpathlineto{%
                            \ifpgfrectanglesplithorizontal%
                                \csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split@south\endcsname%
                                \advance\pgf@y by\outerysep\relax%
                            \else%
                                \csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@number @split@west\endcsname%
                                \advance\pgf@x by\outerxsep\relax%
                            \fi%
                        }%
                    \fi%
            \repeatpgfmathloop%
        \fi%
    }%
    \anchorborder{%
        \pgfutil@tempdima\pgf@x%
        \pgfutil@tempdimb\pgf@y%
        \rectanglesplitparameters%
        \pgfpointdiff{\southwest}{\northeast}%
        \pgf@x.5\pgf@x%
        \pgf@y.5\pgf@y%
        \edef\pgf@marshall{%
            \noexpand\pgfpointborderrectangle{%
                    \noexpand\pgfqpoint{\the\pgfutil@tempdima}{\the\pgfutil@tempdimb}%
                }%
                {%
                    \noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}%
                }%
        }%
        \pgf@marshall%
        \pgf@xa\pgf@x%
        \pgf@ya\pgf@y%
        \centerpoint%
        \advance\pgf@x\pgf@xa%
        \advance\pgf@y\pgf@ya%
    }%
    \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@rectangle split\endcsname{%
        \let\pgf@lib@sh@rs@temp=\pgfutil@empty%
        \pgfmathloop%
            \ifnum\pgfmathcounter=\parts%
                \expandafter\edef\csname pgf@sh@boxes@rectangle split\endcsname%
                    {\pgf@lib@sh@rs@temp\pgf@lib@sh@toalpha{\pgfmathcounter}}%
            \else%
                \edef\pgf@lib@sh@rs@temp{\pgf@lib@sh@rs@temp\pgf@lib@sh@toalpha{\pgfmathcounter},}%
        \repeatpgfmathloop%
    }%
}%

\pgfutil@for\pgf@lib@sh@rs@temp:={one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thirteen,fourteen,fifteen,sixteen,seventeen,eighteen,nineteen,twenty}\do{%
    \expandafter\xdef\csname pgf@anchor@rectangle split@\pgf@lib@sh@rs@temp\endcsname{%
        \noexpand\rectanglesplitparameters%
        \noexpand\pgfutil@ifundefined{pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp}{\noexpand\pgf@lib@sh@rs@anchor@one}%
            {\noexpand\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp\noexpand\endcsname}%
    }%
    \expandafter\xdef\csname pgf@anchor@rectangle split@\pgf@lib@sh@rs@temp\space split\endcsname{%
        \noexpand\rectanglesplitparameters%
        \noexpand\pgfutil@ifundefined{pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @split}%
        {\noexpand\centerpoint}%
        {\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @split\noexpand\endcsname}%
    }%
    \expandafter\xdef\csname pgf@anchor@rectangle split@\pgf@lib@sh@rs@temp\space split north\endcsname{%
        \noexpand\rectanglesplitparameters%
        \noexpand\pgfutil@ifundefined{pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @split@north}%
        {\noexpand\csname pgf@anchor@rectangle split@north\noexpand\endcsname}%
        {\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @split@north\noexpand\endcsname}%
    }%
    \expandafter\xdef\csname pgf@anchor@rectangle split@\pgf@lib@sh@rs@temp\space split south\endcsname{%
        \noexpand\rectanglesplitparameters%
        \noexpand\pgfutil@ifundefined{pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @split@south}%
        {\noexpand\csname pgf@anchor@rectangle split@south\noexpand\endcsname}%
        {\noexpand\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @split@south\noexpand\endcsname}%
    }%
    \expandafter\xdef\csname pgf@anchor@rectangle split@\pgf@lib@sh@rs@temp\space north\endcsname{%
        \noexpand\rectanglesplitparameters%
        \noexpand\pgfutil@ifundefined{pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @north}%
        {\noexpand\csname pgf@anchor@rectangle split@north\noexpand\endcsname}%
        {\noexpand\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @north\noexpand\endcsname}%
    }%
    \expandafter\xdef\csname pgf@anchor@rectangle split@\pgf@lib@sh@rs@temp\space south\endcsname{%
        \noexpand\rectanglesplitparameters%
        \noexpand\pgfutil@ifundefined{pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @south}%
        {\noexpand\csname pgf@anchor@rectangle split@south\noexpand\endcsname}%
        {\noexpand\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @south\noexpand\endcsname}%
    }%
    \expandafter\xdef\csname pgf@anchor@rectangle split@\pgf@lib@sh@rs@temp\space split east\endcsname{%
        \noexpand\rectanglesplitparameters%
        \noexpand\pgfutil@ifundefined{pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @split@east}%
        {\noexpand\csname pgf@anchor@rectangle split@east\noexpand\endcsname}%
        {\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @split@east\noexpand\endcsname}%
    }%
    \expandafter\xdef\csname pgf@anchor@rectangle split@\pgf@lib@sh@rs@temp\space split west\endcsname{%
        \noexpand\rectanglesplitparameters%
        \noexpand\pgfutil@ifundefined{pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @split@west}%
        {\noexpand\csname pgf@anchor@rectangle split@west\noexpand\endcsname}%
        {\noexpand\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @split@west\noexpand\endcsname}%
    }%
    \expandafter\xdef\csname pgf@anchor@rectangle split@\pgf@lib@sh@rs@temp\space east\endcsname{%
        \noexpand\rectanglesplitparameters%
        \noexpand\pgfutil@ifundefined{pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @east}%
        {\noexpand\csname pgf@anchor@rectangle split@east\noexpand\endcsname}%
        {\noexpand\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @east\noexpand\endcsname}%
    }%
    \expandafter\xdef\csname pgf@anchor@rectangle split@\pgf@lib@sh@rs@temp\space west\endcsname{%
        \noexpand\rectanglesplitparameters%
        \noexpand\pgfutil@ifundefined{pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @west}%
        {\noexpand\csname pgf@anchor@rectangle split@west\noexpand\endcsname}%
        {\noexpand\csname pgf@lib@sh@rs@anchor@\pgf@lib@sh@rs@temp @west\noexpand\endcsname}%
    }%
}%


\pgfutil@namelet{pgf@anchor@rectangle split@text east}{pgf@anchor@rectangle split@one east}%
\pgfutil@namelet{pgf@anchor@rectangle split@text west}{pgf@anchor@rectangle split@one west}%
\pgfutil@namelet{pgf@anchor@rectangle split@text split}{pgf@anchor@rectangle split@one split}%
\pgfutil@namelet{pgf@anchor@rectangle split@text split east}{pgf@anchor@rectangle split@one split east}%
\pgfutil@namelet{pgf@anchor@rectangle split@text split west}{pgf@anchor@rectangle split@one split west}%

\pgfutil@namelet{pgf@anchor@rectangle split@second}{pgf@anchor@rectangle split@two}%
\pgfutil@namelet{pgf@anchor@rectangle split@second east}{pgf@anchor@rectangle split@two east}%
\pgfutil@namelet{pgf@anchor@rectangle split@second west}{pgf@anchor@rectangle split@two west}%
\pgfutil@namelet{pgf@anchor@rectangle split@second split}{pgf@anchor@rectangle split@two split}%
\pgfutil@namelet{pgf@anchor@rectangle split@second split east}{pgf@anchor@rectangle split@two split east}%
\pgfutil@namelet{pgf@anchor@rectangle split@second split west}{pgf@anchor@rectangle split@two split west}%

\pgfutil@namelet{pgf@anchor@rectangle split@third}{pgf@anchor@rectangle split@three}%
\pgfutil@namelet{pgf@anchor@rectangle split@third east}{pgf@anchor@rectangle split@three east}%
\pgfutil@namelet{pgf@anchor@rectangle split@third west}{pgf@anchor@rectangle split@three west}%
\pgfutil@namelet{pgf@anchor@rectangle split@third split}{pgf@anchor@rectangle split@three split}%
\pgfutil@namelet{pgf@anchor@rectangle split@third split east}{pgf@anchor@rectangle split@three split east}%
\pgfutil@namelet{pgf@anchor@rectangle split@third split west}{pgf@anchor@rectangle split@three split west}%

\pgfutil@namelet{pgf@anchor@rectangle split@fourth}{pgf@anchor@rectangle split@four}%
\pgfutil@namelet{pgf@anchor@rectangle split@fourth east}{pgf@anchor@rectangle split@four east}%
\pgfutil@namelet{pgf@anchor@rectangle split@fourth west}{pgf@anchor@rectangle split@four west}%
\pgfutil@namelet{pgf@anchor@rectangle split@fourth split}{pgf@anchor@rectangle split@four split}%
\pgfutil@namelet{pgf@anchor@rectangle split@fourth split east}{pgf@anchor@rectangle split@four split east}%
\pgfutil@namelet{pgf@anchor@rectangle split@fourth split west}{pgf@anchor@rectangle split@four split west}%




\pgfdeclareshape{ellipse split}{%
    \nodeparts{text,lower}%
    \savedanchor\radii{%
        \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \pgf@y2.0\pgf@y%
        \advance\pgf@y.5\pgflinewidth%
        \pgf@xa.5\wd\pgfnodeparttextbox%
        \pgf@xb.5\wd\pgfnodepartlowerbox%
        \advance\pgf@xa\pgf@x%
        \advance\pgf@xb\pgf@x%
        \pgf@ya\ht\pgfnodeparttextbox%
        \advance\pgf@ya\dp\pgfnodeparttextbox%
        \pgf@yb\ht\pgfnodepartlowerbox%
        \advance\pgf@yb\dp\pgfnodepartlowerbox%
        \advance\pgf@ya\pgf@y%
        \advance\pgf@yb\pgf@y%
        \ifdim\pgf@xa>\pgf@xb%
            \pgf@x1.414213\pgf@xa%
        \else%
            \pgf@x1.414213\pgf@xb%
        \fi%
        \ifdim\pgf@ya>\pgf@yb%
            \pgf@y1.414213\pgf@ya%
        \else%
            \pgf@y1.414213\pgf@yb%
        \fi%
        \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum width}}%
        \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
        \ifdim\pgf@x<.5\pgf@xa%
            \pgf@x.5\pgf@xa%
        \fi%
        \ifdim\pgf@y<.5\pgf@ya%
            \pgf@y.5\pgf@ya%
        \fi%
        \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
    }%
    \savedanchor\lower{%
        \pgf@x-.5\wd\pgfnodepartlowerbox%
        \advance\pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
        \pgf@y-2.0\pgf@y%
        \advance\pgf@y-\pgflinewidth%
        \advance\pgf@y-\dp\pgfnodeparttextbox%
        \advance\pgf@y-\ht\pgfnodepartlowerbox%
    }%
    \savedanchor\centerpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{-\pgfkeysvalueof{/pgf/inner ysep}}%
        \advance\pgf@y-\dp\pgfnodeparttextbox%
        \advance\pgf@y-.5\pgflinewidth%
    }%
    \savedanchor\basepoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgf@y0pt\relax%
    }%
    \savedanchor\midpoint{%
        \pgf@x.5\wd\pgfnodeparttextbox%
        \pgfmathsetlength\pgf@y{.5ex}%
    }%
    \anchor{center}{\centerpoint}%
    \anchor{lower}{\lower}%
    \anchor{mid}{\midpoint}%
    \anchor{mid east}{\radii\pgf@xa\pgf@x\midpoint\advance\pgf@x\pgf@xa}%
    \anchor{mid west}{\radii\pgf@xa\pgf@x\midpoint\advance\pgf@x-\pgf@xa}%
    \anchor{base}{\basepoint}%
    \anchor{base east}{\radii\pgf@xa\pgf@x\basepoint\advance\pgf@x\pgf@xa}%
    \anchor{base west}{\radii\pgf@xa\pgf@x\basepoint\advance\pgf@x-\pgf@xa}%
    \anchor{north}{\pgfpointadd{\centerpoint}{\radii\pgf@x0pt}}%
    \anchor{south}{\pgfpointadd{\centerpoint}{\radii\pgf@x0pt\pgf@y-\pgf@y}}%
    \anchor{east}{\pgfpointadd{\centerpoint}{\radii\pgf@y0pt}}%
    \anchor{west}{\pgfpointadd{\centerpoint}{\radii\pgf@x-\pgf@x\pgf@y0pt}}%
    \anchor{north west}{\pgfpointadd{\centerpoint}{\radii\pgf@x-0.707106\pgf@x\pgf@y0.707106\pgf@y}}%
    \anchor{south west}{\pgfpointadd{\centerpoint}{\radii\pgf@x-0.707106\pgf@x\pgf@y-0.707106\pgf@y}}%
    \anchor{north east}{\pgfpointadd{\centerpoint}{\radii\pgf@x0.707106\pgf@x\pgf@y0.707106\pgf@y}}%
    \anchor{south east}{\pgfpointadd{\centerpoint}{\radii\pgf@x0.707106\pgf@x\pgf@y-0.707106\pgf@y}}%
    \backgroundpath{%
        \radii%
        \pgfmathaddtolength\pgf@x{-\pgfkeysvalueof{/pgf/outer xsep}}%
        \pgfmathaddtolength\pgf@y{-\pgfkeysvalueof{/pgf/outer ysep}}%
        \pgfutil@tempdima\pgf@x%
        \pgfutil@tempdimb\pgf@y%
        \pgfpathellipse{\centerpoint}{\pgfqpoint{\the\pgfutil@tempdima}{0pt}}{\pgfqpoint{0pt}{\the\pgfutil@tempdimb}}%
        \pgfpathmoveto{\centerpoint\advance\pgf@x-\pgfutil@tempdima}%
        \pgfpathlineto{\centerpoint\advance\pgf@x\pgfutil@tempdima}%
    }%
    \anchorborder{%
        \pgfextract@process\externalpoint{}%
        \radii%
        \edef\pgf@marshal{%
            \noexpand\pgfpointadd{\noexpand\pgfpointborderellipse{\noexpand\externalpoint}%
                {\noexpand\pgfpoint{\the\pgf@x}{\the\pgf@y}}}{\noexpand\centerpoint}%
        }%
       \pgf@marshal%
    }%
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex ====

\ProvidesFileRCS{pgflibraryshapes.symbols.code.tex}

\pgfdeclareshape{forbidden sign}
{%
  \inheritsavedanchors[from=circle]%
  \inheritanchorborder[from=circle]%
  \inheritanchor[from=circle]{north}%
  \inheritanchor[from=circle]{north west}%
  \inheritanchor[from=circle]{north east}%
  \inheritanchor[from=circle]{center}%
  \inheritanchor[from=circle]{west}%
  \inheritanchor[from=circle]{east}%
  \inheritanchor[from=circle]{mid}%
  \inheritanchor[from=circle]{mid west}%
  \inheritanchor[from=circle]{mid east}%
  \inheritanchor[from=circle]{base}%
  \inheritanchor[from=circle]{base west}%
  \inheritanchor[from=circle]{base east}%
  \inheritanchor[from=circle]{south}%
  \inheritanchor[from=circle]{south west}%
  \inheritanchor[from=circle]{south east}%
  \inheritbackgroundpath[from=circle]%
  \foregroundpath{
    \centerpoint%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgfutil@tempdima=\radius%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@xb<\pgf@yb%
      \advance\pgfutil@tempdima by-\pgf@yb%
    \else%
      \advance\pgfutil@tempdima by-\pgf@xb%
    \fi%
    \pgfpathmoveto{\pgfpointadd{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\pgfqpoint{-0.707107\pgfutil@tempdima}{-0.707107\pgfutil@tempdima}}}
    \pgfpathlineto{\pgfpointadd{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\pgfqpoint{0.707107\pgfutil@tempdima}{0.707107\pgfutil@tempdima}}}
    \pgfsetarrowsstart{}
    \pgfsetarrowsend{}
  }%
}%


\pgfdeclareshape{correct forbidden sign}
{%
  \inheritsavedanchors[from=circle]%
  \inheritanchorborder[from=circle]%
  \inheritanchor[from=circle]{north}%
  \inheritanchor[from=circle]{north west}%
  \inheritanchor[from=circle]{north east}%
  \inheritanchor[from=circle]{center}%
  \inheritanchor[from=circle]{west}%
  \inheritanchor[from=circle]{east}%
  \inheritanchor[from=circle]{mid}%
  \inheritanchor[from=circle]{mid west}%
  \inheritanchor[from=circle]{mid east}%
  \inheritanchor[from=circle]{base}%
  \inheritanchor[from=circle]{base west}%
  \inheritanchor[from=circle]{base east}%
  \inheritanchor[from=circle]{south}%
  \inheritanchor[from=circle]{south west}%
  \inheritanchor[from=circle]{south east}%
  \inheritbackgroundpath[from=circle]%
  \foregroundpath{
    \centerpoint%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgfutil@tempdima=\radius%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@xb<\pgf@yb%
      \advance\pgfutil@tempdima by-\pgf@yb%
    \else%
      \advance\pgfutil@tempdima by-\pgf@xb%
    \fi%
    \pgfpathmoveto{\pgfpointadd{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\pgfqpoint{0.707107\pgfutil@tempdima}{-0.707107\pgfutil@tempdima}}}
    \pgfpathlineto{\pgfpointadd{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\pgfqpoint{-0.707107\pgfutil@tempdima}{0.707107\pgfutil@tempdima}}}
    \pgfsetarrowsstart{}
    \pgfsetarrowsend{}
  }%
}%





\pgfkeys{/pgf/random starburst/%
  .code={%
    \ifx\pgfkeysnovalue#1%
      \pgfmathgeneratepseudorandomnumber%
    \else%
      \pgfmathtruncatemacro\pgfmathresult{#1}%
    \fi%
    \pgfkeyslet{/pgf/random starburst}{\pgfmathresult}%
  }%
}%
\pgfkeys{/pgf/random starburst=100}%

\pgfkeys{/pgf/starburst point height/.value required}%
\pgfkeys{/pgf/starburst point height/.code={%
    \pgfmathparse{#1}%
    \edef\pgfmathresult{\pgfmathresult pt}%
    \pgfkeyslet{/pgf/starburst point height}{\pgfmathresult}%
  }%
}%
\pgfkeys{/pgf/starburst point height=.5cm}%

\pgfkeys{/pgf/starburst points/.value required}%
\pgfkeys{/pgf/starburst points/.code={%
    \pgfmathtruncatemacro\pgfmathresult{#1}%
    \pgfkeyslet{/pgf/starburst points}{\pgfmathresult}%
  }%
}%
\pgfkeys{/pgf/starburst points=17}%

\pgfdeclareshape{starburst}{%
  \savedmacro\anglestep{%
    \pgfmathdivide@{180}{\pgfkeysvalueof{/pgf/starburst points}}%
    \let\anglestep\pgfmathresult%
  }%
  \savedmacro\calculatestarburstpoints{%
    \pgfmathdivide@{180}{\pgfkeysvalueof{/pgf/starburst points}}%
    \let\anglestep\pgfmathresult%
    \pgfmathsetcounter{pgf@counta}{\pgfkeysvalueof{/pgf/starburst points}}%
    \multiply\c@pgf@counta2\relax%
    \edef\totalpoints{\the\c@pgf@counta}%
    \addtosavedmacro{\totalpoints}%
    \pgfextract@process\centerpoint{%
      \pgfmathsetlength\pgf@x{+.5\wd\pgfnodeparttextbox}%
      \pgfmathsetlength\pgf@y{+.5\ht\pgfnodeparttextbox}%
      \pgfmathaddtolength\pgf@y{+-.5\dp\pgfnodeparttextbox}%
    }%
    \pgfmathsetlength\pgf@x{+\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@y{+\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@x<\pgf@y%
      \pgf@x\pgf@y%
    \fi%
    \edef\outersep{\the\pgf@x}%
    \pgfmathsetlength\pgf@x{+\pgfkeysvalueof{/pgf/inner xsep}}%
    \pgfmathaddtolength\pgf@x{+.5\wd\pgfnodeparttextbox}%
    \pgfmathsetlength\pgf@y{+\pgfkeysvalueof{/pgf/inner ysep}}%
    \pgfmathaddtolength\pgf@y{+.5\ht\pgfnodeparttextbox}%
    \pgfmathaddtolength\pgf@y{+.5\dp\pgfnodeparttextbox}%
    \ifpgfshapeborderusesincircle%
      \pgfkeysgetvalue{/pgf/shape border rotate}{\rotate}%
      \ifdim\pgf@y>\pgf@x%
        \pgf@x\pgf@y%
      \fi%
      \pgf@x1.41421\pgf@x%
      \pgf@y\pgf@x%
    \else%
      \pgfkeysgetvalue{/pgf/shape border rotate}{\rotate}%
      \pgfmathmod@{\rotate}{360}%
      \afterassignment\pgfmath@gobbletilpgfmath@%
      \expandafter\c@pgf@counta\pgfmathresult\relax\pgfmath@%
      \advance\c@pgf@counta45\relax%
      \divide\c@pgf@counta90\relax%
      \multiply\c@pgf@counta90\relax%
      \ifnum\c@pgf@counta<0\relax%
        \advance\c@pgf@counta360\relax%
      \fi%
      \ifnum\c@pgf@counta=90\relax%
        \pgf@xc\pgf@x%
        \pgf@x\pgf@y%
        \pgf@y\pgf@xc%
      \else%
        \ifnum\c@pgf@counta=270\relax%
          \pgf@xc\pgf@x%
          \pgf@x\pgf@y%
          \pgf@y\pgf@xc%
        \fi%
      \fi%
      \edef\rotate{\the\c@pgf@counta}%
      \pgf@x=1.41421\pgf@x%
      \pgf@y=1.41421\pgf@y%
    \fi%
    \addtosavedmacro{\rotate}%
    \pgf@xa\pgf@x%
    \pgfmathsetlength\pgf@xb{+\pgfkeysvalueof{/pgf/starburst point height}}%
    \advance\pgf@xa\pgf@xb%
    \pgfmathsetlength\pgf@xc{+\pgfkeysvalueof{/pgf/minimum width}}%
    \ifdim\pgf@xa<.5\pgf@xc%
      \pgf@x.5\pgf@xc%
      \advance\pgf@x-\pgf@xb%
    \fi%
    \pgf@ya\pgf@y%
    \pgfmathsetlength\pgf@yb{+\pgfkeysvalueof{/pgf/starburst point height}}%
    \advance\pgf@ya\pgf@yb%
    \pgfmathsetlength\pgf@yc{+\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@ya<.5\pgf@yc%
      \pgf@y.5\pgf@yc%
      \advance\pgf@y-\pgf@yb%
    \fi%
    \edef\xinnerradius{\the\pgf@x}%
    \edef\yinnerradius{\the\pgf@y}%
    \addtosavedmacro{\xinnerradius}%
    \addtosavedmacro{\yinnerradius}%
    \ifdim\pgf@y>\pgf@x%
      \pgf@x\pgf@y%
    \fi%
    \pgfmathaddtolength\pgf@x{+\pgfkeysvalueof{/pgf/starburst point height}}%
    \edef\externalradius{\the\pgf@x}%
    \addtosavedmacro{\externalradius}%
    \pgfmathsetseed{\pgfkeysvalueof{/pgf/random starburst}}%
    \def\angle{90}%
    \c@pgf@counta1\relax%
    \c@pgf@countb0\relax%
    \c@pgf@countc\totalpoints\relax%
    \advance\c@pgf@countc2\relax%
    \edef\looppoints{\the\c@pgf@countc}%
    \let\secondpoint\pgfutil@empty%
    \let\thirdpoint\pgfutil@empty%
    \pgfmathloop%
      \let\firstpoint\secondpoint%
      \let\secondpoint\thirdpoint%
      \ifnum\pgfmathcounter>\looppoints%
      \else%
        \ifnum\pgfmathcounter>\totalpoints%
          \expandafter\let\expandafter\thirdpoint\csname point@\the\c@pgf@counta @\endcsname%
        \else%
          \ifodd\pgfmathcounter%
            \ifnum\pgfkeysvalueof{/pgf/random starburst}=0\relax%
              \pgf@xa\pgfkeysvalueof{/pgf/starburst point height}\relax%
            \else%
              \pgf@x\pgfkeysvalueof{/pgf/starburst point height}\relax%
              \pgf@xa.75\pgf@x%
              \pgf@xb.25\pgf@x%
              \pgfmathrnd%
              \pgf@xa\pgfmathresult\pgf@xa%
              \advance\pgf@xa\pgf@xb%
            \fi%
            \pgf@x\xinnerradius\relax%
            \advance\pgf@x\pgf@xa%
            \pgf@y\yinnerradius\relax%
            \advance\pgf@y\pgf@xa%
            \expandafter\pgfextract@process\csname point@\the\c@pgf@counta @\endcsname{%
              \pgfpointpolar{\angle}{\the\pgf@x and \the\pgf@y}%
              \pgf@xa\pgf@x%
              \pgf@ya\pgf@y%
              \centerpoint%
              \advance\pgf@x\pgf@xa%
              \advance\pgf@y\pgf@ya%
            }%
          \else%
            \expandafter\pgfextract@process\csname point@\the\c@pgf@counta @\endcsname{%
              \pgfpointpolar{\angle}{\xinnerradius and \yinnerradius}%
              \pgf@xa\pgf@x%
              \pgf@ya\pgf@y%
              \centerpoint%
              \advance\pgf@x\pgf@xa%
              \advance\pgf@y\pgf@ya%
            }%
          \fi%
          \expandafter\let\expandafter\thirdpoint\csname point@\the\c@pgf@counta @\endcsname%
          \expandafter\addtosavedmacro\expandafter{\csname point@\the\c@pgf@counta @\endcsname}%
        \fi%
        \ifx\firstpoint\pgfutil@empty%
        \else%
          \pgfmathanglebetweenlines{\secondpoint}{\thirdpoint}{\secondpoint}{\firstpoint}%
          \pgfmathdivide@{\pgfmathresult}{2}%
          \let\defaultmiterangle\pgfmathresult%
          \pgfmathcosec@{\pgfmathresult}%
          \pgf@x\outersep\relax%
          \pgf@x\pgfmathresult\pgf@x%
          \edef\miterlength{\the\pgf@x}%
          \pgfmathanglebetweenlines{\firstpoint}{\secondpoint}{\firstpoint}{\thirdpoint}%
          \pgfmathadd@{\pgfmathresult}{\defaultmiterangle}%
          \pgfmathsubtract@{180}{\pgfmathresult}%
          \let\angletemp\pgfmathresult%
          \pgfmathanglebetweenpoints{\firstpoint}{\thirdpoint}%
          \pgfmathsubtract@{180}{\pgfmathresult}%
          \pgfmathsubtract@{\angletemp}{\pgfmathresult}%
          \edef\miterangle{\pgfmathresult}%
          \pgfextract@process\borderpoint{%
            \secondpoint%
            \pgf@xa\pgf@x
            \pgf@ya\pgf@y%
            \pgfpointpolar{\miterangle}{\miterlength}%
            \advance\pgf@x\pgf@xa%
            \advance\pgf@y\pgf@ya%
          }%
          \pgfmathanglebetweenpoints{\centerpoint}{\borderpoint}%
          \expandafter\edef\csname angletoborderpoint@\the\c@pgf@countb @\endcsname{\pgfmathresult}%
          \expandafter\addtosavedmacro\expandafter{\csname angletoborderpoint@\the\c@pgf@countb @\endcsname}%
          \expandafter\pgfextract@process\csname borderpoint@\the\c@pgf@countb @\endcsname{%
            \pgfmathrotatepointaround{\borderpoint}{\centerpoint}{\rotate}%
          }%
          \expandafter\addtosavedmacro\expandafter{\csname borderpoint@\the\c@pgf@countb @\endcsname}%
          \c@pgf@countc\c@pgf@countb%
          \advance\c@pgf@countc1\relax%
          \divide\c@pgf@countc2\relax%
          \ifodd\c@pgf@countb\relax%
            \pgfutil@ifundefined{pgf@anchor@starburst@outer point\space\the\c@pgf@countc}{%
              \expandafter\xdef\csname pgf@anchor@starburst@outer point\space\the\c@pgf@countc\endcsname{%
                \noexpand\calculatestarburstpoints%
                \noexpand\csname borderpoint@\the\c@pgf@countb @\noexpand\endcsname%
              }%
            }{}%
          \else%
            \pgfutil@ifundefined{pgf@anchor@starburst@inner point\space\the\c@pgf@countc}{%
              \expandafter\xdef\csname pgf@anchor@starburst@inner point\space\the\c@pgf@countc\endcsname{%
                \noexpand\calculatestarburstpoints%
                \noexpand\csname borderpoint@\the\c@pgf@countb @\noexpand\endcsname%
              }%
            }{}%
          \fi%
        \fi%
        \pgfmathadd@{\angle}{\anglestep}%
        \pgfmathmod@{\pgfmathresult}{360}%
        \let\angle\pgfmathresult%
        \advance\c@pgf@counta1\relax%
        \ifnum\c@pgf@counta>\totalpoints%
          \c@pgf@counta1\relax%
        \fi%
        \advance\c@pgf@countb1\relax%
        \ifnum\c@pgf@countb>\totalpoints%
          \c@pgf@countb1\relax%
        \fi%
    \repeatpgfmathloop%
  }%
  \savedanchor\centerpoint{%
    \pgfmathsetlength\pgf@x{+.5\wd\pgfnodeparttextbox}%
    \pgfmathsetlength\pgf@y{+.5\ht\pgfnodeparttextbox}%
    \pgfmathaddtolength\pgf@y{+-.5\dp\pgfnodeparttextbox}%
  }%
  \savedanchor\midpoint{%
    \pgfmathsetlength\pgf@x{+.5\wd\pgfnodeparttextbox}%
    \pgfmathsetlength\pgf@y{+.5ex}%
  }%
  \savedanchor\basepoint{%
    \pgfmathsetlength\pgf@x{+.5\wd\pgfnodeparttextbox}%
    \pgf@y0pt\relax%
  }%
  \anchor{center}{\centerpoint}%
  \anchor{base}{\basepoint}%
  \anchor{mid}{\midpoint}%
  \anchor{north}{%
    \calculatestarburstpoints%
    \csname pgf@anchor@starburst@border\endcsname{\pgfqpoint{0pt}{\externalradius}}%
  }%
  \anchor{south}{%
    \calculatestarburstpoints%
    \csname pgf@anchor@starburst@border\endcsname{\pgfqpoint{0pt}{-\externalradius}}%
  }%
  \anchor{east}{%
    \calculatestarburstpoints%
    \csname pgf@anchor@starburst@border\endcsname{\pgfqpoint{\externalradius}{0pt}}%
  }%
  \anchor{west}{%
    \calculatestarburstpoints%
    \csname pgf@anchor@starburst@border\endcsname{\pgfqpoint{-\externalradius}{0pt}}%
  }%
  \anchor{north west}{%
    \calculatestarburstpoints%
    \csname pgf@anchor@starburst@border\endcsname{\pgfqpoint{-\externalradius}{\externalradius}}%
  }%
  \anchor{south west}{%
    \calculatestarburstpoints%
    \csname pgf@anchor@starburst@border\endcsname{\pgfqpoint{-\externalradius}{-\externalradius}}%
  }%
  \anchor{north east}{%
    \calculatestarburstpoints%
    \csname pgf@anchor@starburst@border\endcsname{\pgfqpoint{\externalradius}{\externalradius}}%
  }%
  \anchor{south east}{%
    \calculatestarburstpoints%
    \csname pgf@anchor@starburst@border\endcsname{\pgfqpoint{\externalradius}{-\externalradius}}%
  }%
  \backgroundpath{%
    \calculatestarburstpoints%
    \pgfmathloop%
      \ifnum\pgfmathcounter>\totalpoints%
      \else%
        \ifnum\pgfmathcounter=1\relax%
          \let\starburstaction\pgfpathmoveto%
        \else%
          \let\starburstaction\pgfpathlineto%
        \fi%
        \starburstaction{%
          \csname point@\pgfmathcounter @\endcsname}
      \repeatpgfmathloop%
    \pgfpathclose%
  }%
  \anchorborder{%
    \edef\externalx{\the\pgf@x}%
    \edef\externaly{\the\pgf@y}%
    \centerpoint%
    \pgf@xa\externalx\relax%
    \pgf@ya\externaly\relax%
    \advance\pgf@xa\pgf@x%
    \advance\pgf@ya\pgf@y%
    \edef\externalx{\the\pgf@xa}%
    \edef\externaly{\the\pgf@ya}%
    \calculatestarburstpoints%
    \pgfmathanglebetweenpoints{\centerpoint}{\pgfqpoint{\externalx}{\externaly}}%
    \pgfmathsubtract@{\pgfmathresult}{\rotate}%
    \ifdim\pgfmathresult pt<0pt\relax%
      \pgfmathadd@{\pgfmathresult}{360}%
    \fi%
    \let\externalangle\pgfmathresult%
    \ifdim\externalangle pt<90pt\relax%
      \c@pgf@counta0\relax%
      \c@pgf@countb\totalpoints\relax%
      \pgfmathloop%
      \ifnum\c@pgf@counta>0\relax%
      \else%
        \ifdim\csname angletoborderpoint@\the\c@pgf@countb @\endcsname pt>90pt\relax%
          \c@pgf@counta\c@pgf@countb%
        \else%
          \ifdim\externalangle pt>\csname angletoborderpoint@\the\c@pgf@countb @\endcsname pt\relax%
            \c@pgf@counta\c@pgf@countb%
          \fi%
        \fi%
        \advance\c@pgf@countb-1\relax%
      \repeatpgfmathloop%
      \edef\first{\the\c@pgf@counta}%
      \advance\c@pgf@counta1\relax%
      \ifnum\c@pgf@counta>\totalpoints\relax%
        \c@pgf@counta1\relax%
      \fi%
      \edef\second{\the\c@pgf@counta}%
    \else%
      \c@pgf@counta0\relax%
      \pgfmathloop%
      \ifnum\c@pgf@counta>0\relax%
      \else%
        \ifdim\csname angletoborderpoint@\pgfmathcounter @\endcsname pt<90pt\relax%
          \c@pgf@counta\pgfmathcounter%
        \else%
          \ifdim\externalangle pt<\csname angletoborderpoint@\pgfmathcounter @\endcsname pt\relax%
            \c@pgf@counta\pgfmathcounter%
          \fi%
        \fi%
      \repeatpgfmathloop%
      \edef\first{\the\c@pgf@counta}%
      \advance\c@pgf@counta-1\relax%
      \ifnum\c@pgf@counta=0\relax%
        \c@pgf@counta\totalpoints\relax%
      \fi%
      \edef\second{\the\c@pgf@counta}%
    \fi%
    \pgfpointintersectionoflines{\centerpoint}{\pgfqpoint{\externalx}{\externaly}}%
        {\csname borderpoint@\first @\endcsname}{\csname borderpoint@\second @\endcsname}%
  }%
}%





\newif\ifpgfcloudanchorsuseellipse%
\newif\ifpgfcloudignoresaspect%
\pgfcloudignoresaspectfalse%
\pgfkeys{/pgf/.cd,
  cloud puffs/.initial=10,
  cloud puff arc/.initial=150,
  cloud ignores aspect/.is if=pgfcloudignoresaspect,
  cloud anchors use ellipse/.is if=pgfcloudanchorsuseellipse,
}%


\pgfkeys{/pgf/.cd,
  aspect/.code={\pgfsetshapeaspect{#1}},%
  shape aspect/.initial=1,%
  shape aspect/.code={%
    \pgfkeys{/pgf/aspect={#1}}%
    \pgfkeyssetvalue{/pgf/shape aspect}{#1}
  }%
}%

\def\pgfsetshapeaspect#1{%
  \def\pgfshapeaspect{#1}%
  \pgfutil@tempdima=#1pt%
  \pgfutil@tempdima=.125\pgfutil@tempdima%
  \c@pgf@counta=\pgfutil@tempdima\relax%
  \pgfutil@tempdima=8192pt%
  \divide\pgfutil@tempdima by\c@pgf@counta%
  \edef\pgfshapeaspectinverse{\pgf@sys@tonumber{\pgfutil@tempdima}}%
}%

\pgfsetshapeaspect{1}%


\pgfdeclareshape{cloud}{%
  \savedmacro\getradii{%
    \pgfmathtruncatemacro\puffs{\pgfkeysvalueof{/pgf/cloud puffs}}%
    \addtosavedmacro\puffs%
    \pgfmathdivide{360}{\pgfkeysvalueof{/pgf/cloud puffs}}%
    \let\anglestep\pgfmathresult%
    \addtosavedmacro\anglestep%
    \pgfmathsetmacro\arc{\pgfkeysvalueof{/pgf/cloud puff arc}}%
    \addtosavedmacro\arc%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@x1.4142135\pgf@x%
    \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y.5\dp\pgfnodeparttextbox%
    \pgf@y1.4142135\pgf@y%
    \ifpgfcloudignoresaspect%
      \pgf@xc\pgf@x%
      \pgf@yc\pgf@y%
    \else%
      \pgf@xc\pgfshapeaspect\pgf@y%
      \ifdim\pgf@xc<\pgf@x%
        \pgf@xc\pgf@x%
      \fi%
      \pgf@yc\pgfshapeaspectinverse\pgf@xc%
      \ifdim\pgf@yc<\pgf@y%
        \pgf@yc\pgf@y%
        \pgf@xc\pgfshapeaspect\pgf@y%
      \fi%
    \fi%
    \edef\xinnerradius{\the\pgf@xc}%
    \edef\yinnerradius{\the\pgf@yc}%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@x<\pgf@y%
      \pgf@x\pgf@y%
    \fi%
    \edef\outersep{\the\pgf@x}%
    \addtosavedmacro\outersep%
    \pgfmathsubtract{180}{\arc}%
    \pgfmathdivide@{\pgfmathresult}{2}%
    \let\tempangle\pgfmathresult%
    \pgfmathsec@{\pgfmathresult}%
    \pgfmathdivide@{\pgfmathresult}{2}%
    \let\arcradiusquotient\pgfmathresult%
    \addtosavedmacro\arcradiusquotient%
    \pgfmathsin@{\tempangle}%
    \pgfmathsubtract@{1}{\pgfmathresult}%
    \pgfmathmultiply@{\pgfmathresult}{\arcradiusquotient}%
    \let\archeightquotient\pgfmathresult%
    \addtosavedmacro\archeightquotient%
    \pgfmathdivide{\arc}{2}%
    \let\halfarcangle\pgfmathresult%
    \pgfmathcos@{\pgfmathresult}%
    \pgfmathsubtract@{1}{\pgfmathresult}%
    \let\pgf@temp\pgfmathresult%
    \pgfmathsin@{\halfarcangle}%
    \pgfmathdivide@{\pgf@temp}{\pgfmathresult}%
    \let\pgf@temp\pgfmathresult%
    \pgfmathdivide@{\anglestep}{2}%
    \pgfmathsin@{\pgfmathresult}%
    \pgfmathmultiply@{\pgfmathresult}{\pgf@temp}%
    \let\k\pgfmathresult%
    \pgfmathdivide@{\anglestep}{2}%
    \pgfmathcos@{\pgfmathresult}%
    \let\coshalfanglestep\pgfmathresult%
    \pgf@x\xinnerradius\relax%
    \pgf@y\yinnerradius\relax%
    \pgf@xa\coshalfanglestep\pgf@x%
    \advance\pgf@xa\k\pgf@y%
    \pgf@ya\coshalfanglestep\pgf@y%
    \advance\pgf@ya\k\pgf@x%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@ya<.5\pgf@yb%
      \pgf@ya.5\pgf@yb%
    \fi%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
    \ifdim\pgf@xa<.5\pgf@xb%
      \pgf@xa.5\pgf@xb%
    \fi%
    \edef\xouterradius{\the\pgf@xa}%
    \addtosavedmacro\xouterradius%
    \edef\youterradius{\the\pgf@ya}%
    \addtosavedmacro\youterradius%
    \pgf@xc\k pt\relax%
    \pgf@xc-\k\pgf@xc%
    \pgf@yc\coshalfanglestep pt\relax%
    \pgf@yc\coshalfanglestep\pgf@yc%
    \advance\pgf@xc\pgf@yc\relax%
    \pgfmathreciprocal@{\pgfmath@tonumber{\pgf@xc}}%
    \pgf@x\coshalfanglestep\pgf@xa%
    \advance\pgf@x-\k\pgf@ya%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@y\coshalfanglestep\pgf@ya%
    \advance\pgf@y-\k\pgf@xa%
    \pgf@y\pgfmathresult\pgf@y%
    \edef\xinnerradius{\the\pgf@x}%
    \edef\yinnerradius{\the\pgf@y}%
    \addtosavedmacro\xinnerradius%
    \addtosavedmacro\yinnerradius%
    \pgfmathdivide@{\arc}{4}%
    \let\quarterarc\pgfmathresult%
    \pgfmathsubtract@{180}{\arc}%
    \pgfmathdivide@{\pgfmathresult}{2}%
    \let\halfcomplementarc\pgfmathresult%
    \addtosavedmacro\arc%
    \addtosavedmacro\quarterarc%
    \addtosavedmacro\halfcomplementarc%
    \pgfmathsec@{\halfcomplementarc}%
    \let\sechalfcomplementarc\pgfmathresult%
    \pgfmathsin@{\halfcomplementarc}%
    \let\sinhalfcomplementarc\pgfmathresult%
    \addtosavedmacro\sechalfcomplementarc%
    \addtosavedmacro\sinhalfcomplementarc%
    \pgfmathsin@{\quarterarc}%
    \let\sinquarterarc\pgfmathresult%
    \pgfmathcos@{\quarterarc}%
    \let\cosquarterarc\pgfmathresult%
    \pgfmathreciprocal@{\cosquarterarc}%
    \pgfmathmultiply@{\pgfmathresult}{\sinquarterarc}%
    \let\tanquarterarc\pgfmathresult%
    \addtosavedmacro\sinquarterarc%
    \addtosavedmacro\cosquarterarc%
    \addtosavedmacro\tanquarterarc%
  }%
  \savedanchor\centerpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\midpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+.5ex}%
  }%
  \savedanchor\basepoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt%
  }%
  \anchor{center}{\centerpoint}%
  \anchor{mid}{\midpoint}%
  \anchor{base}{\basepoint}%
  \anchor{north}{%
    \getradii%
    \csname pgf@anchor@cloud@border\endcsname{\pgfqpoint{0pt}{\youterradius}}%
  }%
  \anchor{south}{%
    \getradii%
    \csname pgf@anchor@cloud@border\endcsname{\pgfqpoint{0pt}{-\youterradius}}%
  }%
  \anchor{east}{%
    \getradii%
    \csname pgf@anchor@cloud@border\endcsname{\pgfqpoint{\xouterradius}{0pt}}%
  }%
  \anchor{west}{%
    \getradii%
    \csname pgf@anchor@cloud@border\endcsname{\pgfqpoint{-\xouterradius}{0pt}}%
  }%
  \anchor{north west}{%
    \getradii%
    \pgfextract@process\pgf@sh{%
      \pgf@x\xouterradius\relax%
      \pgf@x-0.707106\pgf@x%
      \pgf@y\youterradius\relax%
      \pgf@y0.707106\pgf@y%
    }%
    \csname pgf@anchor@cloud@border\endcsname{\pgf@sh}%
  }%
  \anchor{north east}{%
    \getradii%
    \pgfextract@process\pgf@sh{%
      \pgf@x\xouterradius\relax%
      \pgf@x0.707106\pgf@x%
      \pgf@y\youterradius\relax%
      \pgf@y0.707106\pgf@y%
    }%
    \csname pgf@anchor@cloud@border\endcsname{\pgf@sh}%
  }%
  \anchor{south west}{%
    \getradii%
    \pgfextract@process\pgf@sh{%
      \pgf@x\xouterradius\relax%
      \pgf@x-0.707106\pgf@x%
      \pgf@y\youterradius\relax%
      \pgf@y-0.707106\pgf@y%
    }%
    \csname pgf@anchor@cloud@border\endcsname{\pgf@sh}%
  }%
  \anchor{south east}{%
    \getradii%
    \pgfextract@process\pgf@sh{%
      \pgf@x\xouterradius\relax%
      \pgf@x0.707106\pgf@x%
      \pgf@y\youterradius\relax%
      \pgf@y-0.707106\pgf@y%
    }%
    \csname pgf@anchor@cloud@border\endcsname{\pgf@sh}%
  }%
  \backgroundpath{%
    {%
    \getradii%
    \pgfmathdivide@{\anglestep}{2}%
    \pgfmathsubtract@{90}{\pgfmathresult}%
    \let\angle\pgfmathresult%
    \pgfextract@process\arcfirstpoint{%
      \pgfpointadd{\centerpoint}{%
        \pgfpointpolar{+\angle}{+\xinnerradius and +\yinnerradius}%
      }%
    }%
    \pgfpathmoveto{\arcfirstpoint}%
    \let\arcendpoint\arcfirstpoint%
    \pgfmathloop%
    \ifnum\pgfmathcounter>\puffs\relax%
    \else
      \let\arcstartpoint\arcendpoint%
      \ifnum\pgfmathcounter=\puffs\relax%
        \let\arcendpoint\arcfirstpoint%
      \else%
        \pgfmathadd@{\angle}{\anglestep}%
        \let\angle\pgfmathresult%
        \pgfextract@process\arcendpoint{%
          \pgfpointadd{\centerpoint}{%
            \pgfpointpolar{+\angle}{+\xinnerradius and +\yinnerradius}%
          }%
        }%
      \fi%
      \pgf@sh@getcloudpuffparameters%
      \pgfmathsubtract@{90}{\quarterarc}%
      \pgfmathadd@{\pgfmathresult}{\arcslope}%
      \let\arcrotate\pgfmathresult%
      \pgfmathsin@{\arcrotate}%
      \let\sinarcrotate\pgfmathresult%
      \pgfmathcos@{\arcrotate}%
      \let\cosarcrotate\pgfmathresult%
      \pgf@x\arcradius\relax%
      \pgf@x\tanquarterarc\pgf@x%
      \edef\controlscale{\pgfmath@tonumber{\pgf@x}}%
      \pgfextract@process\controlone{%
        \pgf@x0.55228475pt\relax%
        \pgf@x\sinquarterarc\pgf@x%
        \pgf@y0.55228475pt\relax%
        \pgf@y\cosquarterarc\pgf@y%
        \pgf@x\controlscale\pgf@x%
        \pgf@y\controlscale\pgf@y%
        \pgf@xa\cosarcrotate\pgf@x%
        \advance\pgf@xa-\sinarcrotate\pgf@y%
        \pgf@ya\cosarcrotate\pgf@y%
        \advance\pgf@ya\sinarcrotate\pgf@x%
        \arcstartpoint%
        \advance\pgf@x\pgf@xa%
        \advance\pgf@y\pgf@ya%
      }%
      \pgfextract@process\arcmidpoint{%
        \pgfextract@process\arcmidpoint{%
          \pgf@x-\halfchordlength\relax%
          \pgf@y\segmentheight\relax%
        }%
        \pgfpointadd{\arcstartpoint}{%
          \pgfmathrotatepointaround{\arcmidpoint}{\pgfpointorigin}{\arcslope}%
        }%
      }%
      \pgfextract@process\controltwo{%
        \pgf@x0.55228475pt\relax%
        \pgf@x\sinquarterarc\pgf@x%
        \pgf@y-0.55228475pt\relax%
        \pgf@y\cosquarterarc\pgf@y%
        \pgf@x\controlscale\pgf@x%
        \pgf@y\controlscale\pgf@y%
        \pgf@xa\cosarcrotate\pgf@x%
        \advance\pgf@xa-\sinarcrotate\pgf@y%
        \pgf@ya\cosarcrotate\pgf@y%
        \advance\pgf@ya\sinarcrotate\pgf@x%
        \arcmidpoint%
        \advance\pgf@x\pgf@xa%
        \advance\pgf@y\pgf@ya%
      }%
      {%
        \pgfsetcornersarced{\pgfpointorigin}%
        \pgfpathcurveto{\controlone}{\controltwo}{\arcmidpoint}%
      }%
      \pgfmathadd@{\quarterarc}{90}%
      \pgfmathadd@{\pgfmathresult}{\arcslope}%
      \let\arcrotate\pgfmathresult%
      \pgfmathsin@{\arcrotate}%
      \let\sinarcrotate\pgfmathresult%
      \pgfmathcos@{\arcrotate}%
      \let\cosarcrotate\pgfmathresult%
      \pgfextract@process\controlone{%
        \pgf@x0.55228475pt\relax%
        \pgf@x\sinquarterarc\pgf@x%
        \pgf@y0.55228475pt\relax%
        \pgf@y\cosquarterarc\pgf@y%
        \pgf@x\controlscale\pgf@x%
        \pgf@y\controlscale\pgf@y%
        \pgf@xa\cosarcrotate\pgf@x%
        \advance\pgf@xa-\sinarcrotate\pgf@y%
        \pgf@ya\cosarcrotate\pgf@y%
        \advance\pgf@ya\sinarcrotate\pgf@x%
        \arcmidpoint%
        \advance\pgf@x\pgf@xa%
        \advance\pgf@y\pgf@ya%
      }%
      \pgfextract@process\controltwo{%
        \pgf@x0.55228475pt\relax%
        \pgf@x\sinquarterarc\pgf@x%
        \pgf@y-0.55228475pt\relax%
        \pgf@y\cosquarterarc\pgf@y%
        \pgf@x\controlscale\pgf@x%
        \pgf@y\controlscale\pgf@y%
        \pgf@xa\cosarcrotate\pgf@x%
        \advance\pgf@xa-\sinarcrotate\pgf@y%
        \pgf@ya\cosarcrotate\pgf@y%
        \advance\pgf@ya\sinarcrotate\pgf@x%
        \arcendpoint%
        \advance\pgf@x\pgf@xa%
        \advance\pgf@y\pgf@ya%
      }%
      \pgfpathcurveto{\controlone}{\controltwo}{\arcendpoint}%
      \repeatpgfmathloop%
    \pgfpathclose%
    }%
  }%
  \anchorborder{%
    \edef\externalx{\the\pgf@x}%
    \edef\externaly{\the\pgf@y}%
    \getradii%
    \ifpgfcloudanchorsuseellipse%
      \pgfpointadd{\centerpoint}{%
        \pgfpointborderellipse{%
          \pgfpoint{\externalx}{\externaly}
          }{%
            \pgfpoint{\xouterradius}{\youterradius}
          }%
      }%
    \else%
      \pgfextract@process\externalpoint{%
        \centerpoint%
        \advance\pgf@x\externalx\relax%
        \advance\pgf@y\externaly\relax%
      }%
      \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}%
      \let\externalangle\pgfmathresult%
      \pgfmathdivide@{\anglestep}{2}%
      \let\halfanglestep\pgfmathresult%
      \pgfmathsubtract@{90}{\halfanglestep}%
      \let\endangle\pgfmathresult%
      \pgfmathloop%
        \pgfmathsubtract@{\endangle}{\anglestep}%
        \ifdim\pgfmathresult pt<-\anglestep pt\relax%
        \else%
          \let\endangle\pgfmathresult%
      \repeatpgfmathloop%
      \def\angle{0}%
      \let\lastangle\angle%
      \pgfmathloop%
        \pgfmathadd@{\endangle}{\anglestep}%
        \let\endangle\pgfmathresult%
        \pgfextract@process\miterpoint{%
          \pgfextract@process\secondpoint{%
            \pgfpointpolar{+\endangle}{+\xinnerradius and +\yinnerradius}%
          }%
          \pgfmathadd@{\endangle}{\anglestep}%
          \let\angletemp\pgfmathresult%
          \pgfextract@process\thirdpoint{%
            \pgfpointpolar{+\angletemp}{+\xinnerradius and +\yinnerradius}%
          }%
          \pgfmathsubtract@{\endangle}{\anglestep}%
          \let\angletemp\pgfmathresult%
          \pgfextract@process\firstpoint{%
            \pgfpointpolar{+\angletemp}{+\xinnerradius and +\yinnerradius}%
          }%
          \pgfmathanglebetweenpoints{\firstpoint}{\secondpoint}%
          \let\anglealpha\pgfmathresult%
          \pgfmathanglebetweenpoints{\secondpoint}{\thirdpoint}%
          \let\anglebeta\pgfmathresult%
          \pgfmathsubtract@{\anglebeta}{\anglealpha}%
          \pgfmathdivide@{\pgfmathresult}{2}%
          \pgfmathadd@{\pgfmathresult}{\halfcomplementarc}%
          \pgfmathcosec@{\pgfmathresult}%
          \pgf@x\outersep\relax%
          \pgf@x\pgfmathresult\pgf@x%
          \edef\miterradius{\the\pgf@x}%
          \pgfmathadd@{\anglealpha}{\anglebeta}%
          \pgfmathsubtract@{\pgfmathresult}{180}%
          \pgfmathdivide@{\pgfmathresult}{2}%
          \let\miterangle\pgfmathresult%
          \pgfpointadd{\secondpoint}{%
            \pgfqpointpolar{\miterangle}{\miterradius}%
          }%
        }%
        \pgfmathanglebetweenpoints{\pgfpointorigin}{\miterpoint}%
        \let\angle\pgfmathresult%
        \ifdim\angle pt<\lastangle pt\relax%
          \pgfmathadd@{\angle}{360}%
          \let\angle\pgfmathresult%
        \fi%
        \let\lastangle\angle%
      \ifdim\externalangle pt>\angle pt\relax%
      \repeatpgfmathloop%
      \pgfmathmod@{\endangle}{360}%
      \let\endangle\pgfmathresult%
      \pgfmathsubtract@{\endangle}{\anglestep}%
      \ifdim\pgfmathresult pt<0pt\relax%
        \pgfmathadd@{\pgfmathresult}{360}%
      \fi%
      \let\startangle\pgfmathresult%
      \pgfextract@process\arcstartpoint{%
        \pgfpointadd{\centerpoint}{%
          \pgfpointpolar{+\startangle}{+\xinnerradius and +\yinnerradius}%
        }%
      }%
      \pgfextract@process\arcendpoint{%
        \pgfpointadd{\centerpoint}{%
          \pgfpointpolar{+\endangle}{+\xinnerradius and +\yinnerradius}%
        }%
      }%
      \pgf@sh@getcloudpuffparameters%
      \ifdim\endangle pt<\startangle pt\relax%
        \pgfmathadd@{\externalangle}{180}%
        \pgfmathmod@{\pgfmathresult}{360}%
        \let\x\pgfmathresult%
      \else%
        \let\x\externalangle%
      \fi%
      \let\s\halfcomplementarc%
      \pgfmathadd@{\s}{\arc}%
      \let\e\pgfmathresult%
      \pgfmathadd@{\e}{\s}%
      \pgfmathdivide@{\pgfmathresult}{2}%
      \let\n\pgfmathresult%
      \def\m{360}%
      \pgfmathloop%
        \pgfmathadd@{\e}{\s}%
        \pgfmathdivide@{\pgfmathresult}{2}%
        \let\p\pgfmathresult%
        \ifdim\p pt=\s pt\relax%
        \else%
          \pgfmathadd@{\p}{\arcslope}%
          \let\a\pgfmathresult%
          \pgfextract@process\arcpoint{%
            \pgfpointadd{\circlecenterpoint}{%
              \pgfqpointpolar{\a}{\outerarcradius}%
            }%
          }%
          \pgfmathanglebetweenpoints{\centerpoint}{\arcpoint}%
          \ifdim\endangle pt<\startangle pt\relax%
            \pgfmathadd@{\pgfmathresult}{180}%
            \pgfmathmod@{\pgfmathresult}{360}%
          \fi%
          \let\q\pgfmathresult%
          \ifdim\x pt=\q pt%
            \pgfmathbreakloop%
          \else
            \ifdim\x pt<\q pt\relax%
              \let\e\p%
            \else%
              \let\s\p%
            \fi%
          \fi%
          \pgfmathsubtract@{\x}{\q}%
          \pgfmathabs@{\pgfmathresult}%
          \ifdim\pgfmathresult pt<\m pt\relax%
            \let\m\pgfmathresult%
            \let\n\p%
          \fi%
      \repeatpgfmathloop%
      \pgfmathadd@{\n}{\arcslope}%
      \let\anchorangle\pgfmathresult%
      \pgfpointadd{\circlecenterpoint}{%
        \pgfqpointpolar{\anchorangle}{\outerarcradius}%
      }%
    \fi%
  }%
  \pgfutil@g@addto@macro\pgf@sh@s@cloud{%
    \c@pgf@counta\puffs\relax%
    \pgfmathloop%
      \ifnum\c@pgf@counta>0\relax%
        \pgfutil@ifundefined{pgf@anchor@cloud@puff\space\the\c@pgf@counta}{%
        \expandafter\xdef\csname pgf@anchor@cloud@puff\space\the\c@pgf@counta\endcsname{%
          \noexpand\pgf@sh@@cloudpuffanchor{\the\c@pgf@counta}%
        }%
      }{\c@pgf@counta0\relax}%
      \advance\c@pgf@counta-1\relax%
    \repeatpgfmathloop%
  }%
}%

\def\pgf@sh@@cloudpuffanchor#1{%
    \getradii%
    \pgfmathdivide@{\anglestep}{2}%
    \let\halfanglestep\pgfmathresult%
    \c@pgf@counta#1\relax%
    \advance\c@pgf@counta-1\relax%
    \pgfmathmultiply@{\anglestep}{\the\c@pgf@counta}%
    \pgfmathadd@{\pgfmathresult}{90}%
    \pgfmathsubtract@{\pgfmathresult}{\halfanglestep}%
    \let\angle\pgfmathresult%
    \pgfextract@process\arcstartpoint{%
      \pgfpointadd{\centerpoint}{%
        \pgfpointpolar{+\angle}{+\xinnerradius and +\yinnerradius}%
      }%
    }%
    \pgfmathadd@{\angle}{\anglestep}%
    \let\angle\pgfmathresult%
    \pgfextract@process\arcendpoint{%
      \pgfpointadd{\centerpoint}{%
        \pgfpointpolar{+\angle}{+\xinnerradius and +\yinnerradius}%
      }%
    }%
    \pgf@sh@getcloudpuffparameters%
    \pgfmathadd@{\arcslope}{90}%
    \let\anchorangle\pgfmathresult%
    \pgfpointadd{\circlecenterpoint}{%
      \pgfqpointpolar{\anchorangle}{\outerarcradius}%
    }%
}%

\def\pgf@sh@getcloudpuffparameters{%
  \pgfmathanglebetweenpoints{\arcendpoint}{\arcstartpoint}%
  \let\arcslope\pgfmathresult%
  \pgfpointdiff{\arcendpoint}{\arcstartpoint}%
  \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}
  \pgf@x\pgfmathresult pt\relax%
  \pgf@xa.5\pgf@x%
  \edef\halfchordlength{\the\pgf@xa}%
  \pgf@x\arcradiusquotient\pgf@x%
  \edef\arcradius{\the\pgf@x}%
  \pgf@xa\outersep\relax%
  \advance\pgf@xa\pgf@x%
  \edef\outerarcradius{\the\pgf@xa}%
  \pgf@y-\sinhalfcomplementarc\pgf@x%
  \advance\pgf@y\pgf@x%
  \edef\segmentheight{\the\pgf@y}%
  \pgfextract@process\circlecenterpoint{%
    \pgfextract@process\circlecenterpoint{%
      \pgf@x-\halfchordlength\relax%
      \pgf@y\segmentheight\relax%
      \advance\pgf@y-\arcradius
    }%
    \pgfpointadd{\arcstartpoint}{%
      \pgfmathrotatepointaround{\circlecenterpoint}{\pgfpointorigin}{\arcslope}%
    }%
  }%
}%





\def\pgf@lib@sh@signal@nowhere{nowhere}%
\def\pgf@lib@sh@signal@from{from}%
\def\pgf@lib@sh@signal@to{to}%

\def\pgf@lib@sh@signal@parsedirection#1#2{%
  \let\pgf@lib@sh@signal@direction=#2%
  \edef\pgf@lib@sh@temp{#1}%
  \expandafter\pgf@lib@sh@signal@@parsedirection\pgf@lib@sh@temp\pgf@stop}%

\def\pgf@lib@sh@signal@@parsedirection#1\pgf@stop{%
  \pgfutil@in@{and}{#1}%
  \ifpgfutil@in@%
    \pgf@lib@sh@signal@@@parsedirection#1\pgf@lib%
  \else%
    \pgf@lib@sh@signal@@@parsedirection#1 and #1\pgf@lib%
  \fi
}%
\def\pgf@lib@sh@signal@@@parsedirection#1 and #2\pgf@lib{%
  \pgfutil@in@{nowhere}{#1}%
  \ifpgfutil@in@
  \else%
    \pgf@lib@sh@signal@@@@parsedirection{#1}%
    \pgf@lib@sh@signal@@@@parsedirection{#2}%
  \fi%
}%
\def\pgf@lib@sh@signal@@@@parsedirection#1{%
  \pgfutil@in@{ #1 }{ east right }%
  \ifpgfutil@in@%
    \let\pgf@lib@sh@signal@east=\pgf@lib@sh@signal@direction%
    \let\pgf@lib@sh@signal@north=\pgf@lib@sh@signal@nowhere%
    \let\pgf@lib@sh@signal@south=\pgf@lib@sh@signal@nowhere%
  \fi%
  \pgfutil@in@{ #1 }{ left west }%
  \ifpgfutil@in@%
    \let\pgf@lib@sh@signal@west=\pgf@lib@sh@signal@direction%
    \let\pgf@lib@sh@signal@north=\pgf@lib@sh@signal@nowhere%
    \let\pgf@lib@sh@signal@south=\pgf@lib@sh@signal@nowhere%
  \fi%
  \pgfutil@in@{ #1 }{ above up north }%
  \ifpgfutil@in@%
    \let\pgf@lib@sh@signal@north=\pgf@lib@sh@signal@direction%
    \let\pgf@lib@sh@signal@east=\pgf@lib@sh@signal@nowhere%
    \let\pgf@lib@sh@signal@west=\pgf@lib@sh@signal@nowhere%
  \fi%
  \pgfutil@in@{ #1 }{ below down south }%
  \ifpgfutil@in@%
    \let\pgf@lib@sh@signal@south=\pgf@lib@sh@signal@direction%
    \let\pgf@lib@sh@signal@east=\pgf@lib@sh@signal@nowhere%
    \let\pgf@lib@sh@signal@west=\pgf@lib@sh@signal@nowhere%
  \fi%
}%


\pgfkeys{/pgf/.cd,
  signal pointer angle/.initial=90,
  signal to/.initial=east,
  signal from/.initial=nowhere,
}%

\pgfdeclareshape{signal}{%
  \savedmacro\installsignalparameters{%
    \let\pgf@lib@sh@signal@north=\pgf@lib@sh@signal@nowhere%
    \let\pgf@lib@sh@signal@south=\pgf@lib@sh@signal@nowhere%
    \let\pgf@lib@sh@signal@east=\pgf@lib@sh@signal@nowhere%
    \let\pgf@lib@sh@signal@west=\pgf@lib@sh@signal@nowhere%
    \pgf@lib@sh@signal@parsedirection{\pgfkeysvalueof{/pgf/signal from}}{\pgf@lib@sh@signal@from}%
    \pgf@lib@sh@signal@parsedirection{\pgfkeysvalueof{/pgf/signal to}}{\pgf@lib@sh@signal@to}%
    \pgfextract@process\centerpoint{%
      \pgf@x.5\wd\pgfnodeparttextbox%
      \pgf@y.5\ht\pgfnodeparttextbox%
      \advance\pgf@y-.5\dp\pgfnodeparttextbox%
    }%
    \pgfmathsetmacro\pointerangle{\pgfkeysvalueof{/pgf/signal pointer angle}}%
    \pgfmathdivide@{\pointerangle}{2}%
    \let\halfpointerangle=\pgfmathresult%
    \pgfmathcosec@{\halfpointerangle}%
    \let\cosechalfpointerangle=\pgfmathresult%
    \pgfmathdivide@{\halfpointerangle}{2}%
    \let\quarterpointerangle=\pgfmathresult%
    \pgfmathcosec@{\quarterpointerangle}%
    \let\cosecquarterpointerangle=\pgfmathresult%
    \pgfmathsec@{\quarterpointerangle}%
    \let\secquarterpointerangle=\pgfmathresult%
    \pgfmathsubtract@{90}{\quarterpointerangle}%
    \let\complementquarterpointerangle\pgfmathresult%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@x>\pgf@y%
      \pgf@y\pgf@x%
    \fi%
    \pgf@yc=\pgf@y%
    \pgf@x=\cosechalfpointerangle\pgf@y%
    \edef\pointerapexmiter{\the\pgf@x}%
    \pgf@x=\secquarterpointerangle\pgf@y%
    \edef\tocornermiter{\the\pgf@x}%
    \pgf@x=\cosecquarterpointerangle\pgf@y
    \edef\fromcornermiter{\the\pgf@x}%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@xa.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@ya.5\ht\pgfnodeparttextbox%
    \advance\pgf@ya.5\dp\pgfnodeparttextbox%
    \pgfmathsubtract@{90}{\halfpointerangle}%
    \pgfmathtan@{\pgfmathresult}%
    \pgf@xb=\pgfmathresult\pgf@ya%
    \pgf@yb=\pgfmathresult\pgf@xa%
    \pgfutil@tempdima=2.0\pgf@ya%
    \ifx\pgf@lib@sh@signal@north\pgf@lib@sh@signal@nowhere%
    \else%
      \advance\pgfutil@tempdima by\pgf@yb%
    \fi%
    \ifx\pgf@lib@sh@signal@south\pgf@lib@sh@signal@nowhere%
    \else%
      \advance\pgfutil@tempdima by\pgf@yb%
    \fi%
    \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgfutil@tempdima<\pgf@y%
      \pgfutil@tempdima=\pgf@y%
      \ifx\pgf@lib@sh@signal@north\pgf@lib@sh@signal@nowhere%
      \else%
        \advance\pgfutil@tempdima by-\pgf@yb%
      \fi%
      \ifx\pgf@lib@sh@signal@south\pgf@lib@sh@signal@nowhere%
      \else%
        \advance\pgfutil@tempdima by-\pgf@yb%
      \fi%
      \pgf@ya=0.5\pgfutil@tempdima%
      \pgfmathsubtract@{90}{\halfpointerangle}%
      \pgfmathtan@{\pgfmathresult}%
      \pgf@xb=\pgfmathresult\pgf@ya%
    \fi%
    \pgfutil@tempdima=2.0\pgf@xa%
    \ifx\pgf@lib@sh@signal@east\pgf@lib@sh@signal@nowhere%
    \else%
      \advance\pgfutil@tempdima by\pgf@xb%
    \fi%
    \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@nowhere%
    \else%
      \advance\pgfutil@tempdima by\pgf@xb%
    \fi%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/minimum width}}%
    \ifdim\pgfutil@tempdima<\pgf@x%
      \pgfutil@tempdima=\pgf@x%
      \ifx\pgf@lib@sh@signal@east\pgf@lib@sh@signal@nowhere%
      \else%
        \advance\pgfutil@tempdima by-\pgf@xb%
      \fi%
      \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@nowhere%
      \else%
        \advance\pgfutil@tempdima by-\pgf@xb%
      \fi%
      \pgf@xa=0.5\pgfutil@tempdima%
      \pgfmathsubtract@{90}{\halfpointerangle}%
      \pgfmathtan@{\pgfmathresult}%
      \pgf@yb=\pgfmathresult\pgf@xa%
    \fi%
    \pgfextract@process\north{%
      \centerpoint%
      \advance\pgf@y\pgf@ya%
      \ifx\pgf@lib@sh@signal@north\pgf@lib@sh@signal@to%
        \advance\pgf@y\pgf@yb%
      \fi%
    }%
    \pgfextract@process\south{%
      \centerpoint%
      \advance\pgf@y-\pgf@ya%
      \ifx\pgf@lib@sh@signal@south\pgf@lib@sh@signal@to%
        \advance\pgf@y-\pgf@yb%
      \fi%
    }%
    \pgfextract@process\east{%
      \centerpoint%
      \advance\pgf@x\pgf@xa%
      \ifx\pgf@lib@sh@signal@east\pgf@lib@sh@signal@to%
        \advance\pgf@x\pgf@xb%
      \fi%
    }%
    \pgfextract@process\west{%
      \centerpoint%
      \advance\pgf@x-\pgf@xa%
      \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@to%
        \advance\pgf@x-\pgf@xb%
      \fi%
    }%
    \pgfextract@process\northeast{%
      \centerpoint%
      \advance\pgf@y\pgf@ya%
      \advance\pgf@x\pgf@xa%
      \ifx\pgf@lib@sh@signal@north\pgf@lib@sh@signal@from%
        \advance\pgf@y\pgf@yb%
      \fi%
      \ifx\pgf@lib@sh@signal@east\pgf@lib@sh@signal@from%
        \advance\pgf@x\pgf@xb%
      \fi%
    }%
    \pgfextract@process\southeast{%
      \centerpoint%
      \advance\pgf@y-\pgf@ya%
      \advance\pgf@x\pgf@xa%
      \ifx\pgf@lib@sh@signal@south\pgf@lib@sh@signal@from%
        \advance\pgf@y-\pgf@yb%
      \fi%
      \ifx\pgf@lib@sh@signal@east\pgf@lib@sh@signal@from%
        \advance\pgf@x\pgf@xb%
      \fi%
    }%
    \pgfextract@process\southwest{%
      \centerpoint%
      \advance\pgf@y-\pgf@ya%
      \advance\pgf@x-\pgf@xa%
      \ifx\pgf@lib@sh@signal@south\pgf@lib@sh@signal@from%
        \advance\pgf@y-\pgf@yb%
      \fi%
      \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@from%
        \advance\pgf@x-\pgf@xb%
      \fi%
    }%
    \pgfextract@process\northwest{%
      \centerpoint%
      \advance\pgf@y\pgf@ya%
      \advance\pgf@x-\pgf@xa%
      \ifx\pgf@lib@sh@signal@north\pgf@lib@sh@signal@from%
        \advance\pgf@y\pgf@yb%
      \fi%
      \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@from%
        \advance\pgf@x-\pgf@xb%
      \fi%
    }%
    \addtosavedmacro{\north}%
    \addtosavedmacro{\south}%
    \addtosavedmacro{\east}%
    \addtosavedmacro{\west}%
    \addtosavedmacro{\northeast}%
    \addtosavedmacro{\southwest}%
    \addtosavedmacro{\southeast}%
    \addtosavedmacro{\northwest}%
    \pgfextract@process\northmiter{%
      \pgf@x0pt%
      \ifx\pgf@lib@sh@signal@north\pgf@lib@sh@signal@nowhere%
        \pgf@y\pgf@yc%
      \else%
        \pgf@y\pointerapexmiter\relax%
      \fi%
    }%
    \pgfextract@process\southmiter{%
      \pgf@x0pt%
      \ifx\pgf@lib@sh@signal@south\pgf@lib@sh@signal@nowhere%
        \pgf@y-\pgf@yc%
      \else%
        \pgf@y-\pointerapexmiter\relax%
      \fi%
    }%
    \pgfextract@process\eastmiter{%
      \pgf@y0pt%
      \ifx\pgf@lib@sh@signal@east\pgf@lib@sh@signal@nowhere%
        \pgf@x\pgf@yc%
      \else%
        \pgf@x\pointerapexmiter\relax%
      \fi%
    }%
    \pgfextract@process\westmiter{%
      \pgf@y0pt%
      \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@nowhere%
        \pgf@x-\pgf@yc%
      \else%
        \pgf@x-\pointerapexmiter\relax%
      \fi%
    }%
    \pgfextract@process\northeastmiter{%
      \ifx\pgf@lib@sh@signal@east\pgf@lib@sh@signal@nowhere%
        \pgf@x\pgf@yc
        \pgf@y\pgf@yc%
      \else
        \ifx\pgf@lib@sh@signal@east\pgf@lib@sh@signal@from%
          \pgfqpointpolar{\quarterpointerangle}{\fromcornermiter}
        \else%
          \ifx\pgf@lib@sh@signal@east\pgf@lib@sh@signal@to%
            \pgfqpointpolar{\complementquarterpointerangle}{\tocornermiter}%
          \fi%
        \fi%
      \fi%
      \ifx\pgf@lib@sh@signal@north\pgf@lib@sh@signal@from%
        \pgfqpointpolar{\complementquarterpointerangle}{\fromcornermiter}%
      \else%
        \ifx\pgf@lib@sh@signal@north\pgf@lib@sh@signal@to%
          \pgfqpointpolar{\quarterpointerangle}{\tocornermiter}%
        \fi%
      \fi%
    }%
    \pgfextract@process\southeastmiter{%
      \ifx\pgf@lib@sh@signal@east\pgf@lib@sh@signal@nowhere%
        \pgf@x\pgf@yc%
        \pgf@y\pgf@yc%
      \else
        \ifx\pgf@lib@sh@signal@east\pgf@lib@sh@signal@from%
          \pgfqpointpolar{-\quarterpointerangle}{\fromcornermiter}
        \else%
          \ifx\pgf@lib@sh@signal@east\pgf@lib@sh@signal@to%
            \pgfqpointpolar{-\complementquarterpointerangle}{\tocornermiter}%
          \fi%
        \fi%
      \fi%
      \ifx\pgf@lib@sh@signal@south\pgf@lib@sh@signal@from%
        \pgfqpointpolar{-\complementquarterpointerangle}{\fromcornermiter}
      \else%
        \ifx\pgf@lib@sh@signal@south\pgf@lib@sh@signal@to%
          \pgfqpointpolar{-\quarterpointerangle}{\tocornermiter}%
        \fi%
      \fi%
    }%
    \pgfextract@process\southwestmiter{%
      \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@nowhere%
        \pgf@x-\pgf@yc
        \pgf@y-\pgf@yc%
      \else
        \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@from%
          \pgfmathadd@{\quarterpointerangle}{180}%
          \expandafter\pgfqpointpolar\expandafter{\pgfmathresult}{\fromcornermiter}
        \else%
          \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@to%
            \pgfmathadd@{\complementquarterpointerangle}{180}%
            \expandafter\pgfqpointpolar\expandafter{\pgfmathresult}{\tocornermiter}%
          \fi%
        \fi%
      \fi%
      \ifx\pgf@lib@sh@signal@south\pgf@lib@sh@signal@from%
        \pgfmathadd@{\complementquarterpointerangle}{180}%
        \expandafter\pgfqpointpolar\expandafter{\pgfmathresult}{\fromcornermiter}%
      \else%
        \ifx\pgf@lib@sh@signal@south\pgf@lib@sh@signal@to%
          \pgfmathadd@{\quarterpointerangle}{180}%
          \expandafter\pgfqpointpolar\expandafter{\pgfmathresult}{\tocornermiter}%
        \fi%
      \fi%
    }%
    \pgfextract@process\northwestmiter{%
      \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@nowhere%
        \pgf@x-\pgf@yc%
        \pgf@y\pgf@yc%
      \else
        \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@from%
          \pgfmathsubtract@{180}{\quarterpointerangle}%
          \expandafter\pgfqpointpolar\expandafter{\pgfmathresult}{\fromcornermiter}
        \else%
          \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@to%
            \pgfmathsubtract@{180}{\complementquarterpointerangle}%
            \expandafter\pgfqpointpolar\expandafter{\pgfmathresult}{\tocornermiter}%
          \fi%
        \fi%
      \fi%
      \ifx\pgf@lib@sh@signal@north\pgf@lib@sh@signal@from%
        \pgfmathsubtract@{180}{\complementquarterpointerangle}%
        \expandafter\pgfqpointpolar\expandafter{\pgfmathresult}{\fromcornermiter}%
      \else%
        \ifx\pgf@lib@sh@signal@west\pgf@lib@sh@signal@to%
          \pgfmathsubtract@{180}{\quarterpointerangle}%
          \expandafter\pgfqpointpolar\expandafter{\pgfmathresult}{\tocornermiter}%
        \fi%
      \fi%
    }%
    \addtosavedmacro{\northmiter}%
    \addtosavedmacro{\southmiter}%
    \addtosavedmacro{\eastmiter}%
    \addtosavedmacro{\westmiter}%
    \addtosavedmacro{\northeastmiter}%
    \addtosavedmacro{\southeastmiter}%
    \addtosavedmacro{\southwestmiter}%
    \addtosavedmacro{\northwestmiter}%
    \pgfextract@process\anchornorth{%
      \pgfpointadd{\north}{\northmiter}%
    }%
    \pgfextract@process\anchorsouth{%
      \pgfpointadd{\south}{\southmiter}%
    }%
    \pgfextract@process\anchoreast{%
      \pgfpointadd{\east}{\eastmiter}%
    }%
    \pgfextract@process\anchorwest{%
      \pgfpointadd{\west}{\westmiter}%
    }%
    \pgfextract@process\anchornortheast{%
      \pgfpointadd{\northeast}{\northeastmiter}%
    }%
    \pgfextract@process\anchorsoutheast{%
      \pgfpointadd{\southeast}{\southeastmiter}%
    }%
    \pgfextract@process\anchorsouthwest{%
      \pgfpointadd{\southwest}{\southwestmiter}%
    }%
    \pgfextract@process\anchornorthwest{%
      \pgfpointadd{\northwest}{\northwestmiter}%
    }%
    \addtosavedmacro{\anchornorth}%
    \addtosavedmacro{\anchorsouth}%
    \addtosavedmacro{\anchoreast}%
    \addtosavedmacro{\anchorwest}%
    \addtosavedmacro{\anchornortheast}%
    \addtosavedmacro{\anchorsouthwest}%
    \addtosavedmacro{\anchorsoutheast}%
    \addtosavedmacro{\anchornorthwest}%
  }%
  \savedanchor\centerpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
  \savedanchor\basepoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt%
  }%
  \savedanchor\midpoint{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+.5ex}%
  }%
  \anchor{center}{\centerpoint}%
  \anchor{base}{\basepoint}%
  \anchor{base east}{%
    \installsignalparameters%
    \anchoreast%
    \pgf@xa\pgf@x%
    \pgf@ya\pgf@y%
    \anchorsoutheast%
    \ifdim\pgf@xa>\pgf@x%
      \pgfutil@tempdima\pgf@xa%
    \else%
      \pgfutil@tempdima\pgf@x%
    \fi%
    \pgfextract@process\externalpoint{%
      \basepoint%
      \pgf@x\pgfutil@tempdima%
    }
    \basepoint%
    \let\firstpoint\anchoreast%
    \ifdim\pgf@y<\pgf@ya%
      \let\secondpoint\anchorsoutheast%
    \else%
      \let\secondpoint\anchornortheast%
    \fi%
    \pgfpointintersectionoflines{\basepoint}{\externalpoint}%
      {\firstpoint}{\secondpoint}%
  }%
  \anchor{base west}{%
    \installsignalparameters%
    \anchorwest%
    \pgf@xa\pgf@x%
    \pgf@ya\pgf@y%
    \anchorsouthwest%
    \ifdim\pgf@xa<\pgf@x%
      \pgfutil@tempdima\pgf@xa%
    \else%
      \pgfutil@tempdima\pgf@x%
    \fi%
    \pgfextract@process\externalpoint{%
      \basepoint%
      \pgf@x\pgfutil@tempdima%
    }
    \basepoint%
    \let\firstpoint\anchorwest%
    \ifdim\pgf@y<\pgf@ya%
      \let\secondpoint\anchorsouthwest%
    \else%
      \let\secondpoint\anchornorthwest%
    \fi%
    \pgfpointintersectionoflines{\basepoint}{\externalpoint}%
      {\firstpoint}{\secondpoint}%
  }%
  \anchor{mid}{\midpoint}%
  \anchor{mid east}{%
    \installsignalparameters%
    \anchoreast%
    \pgf@xa\pgf@x%
    \pgf@ya\pgf@y%
    \anchorsoutheast%
    \ifdim\pgf@xa>\pgf@x%
      \pgfutil@tempdima\pgf@xa%
    \else%
      \pgfutil@tempdima\pgf@x%
    \fi%
    \pgfextract@process\externalpoint{%
      \midpoint%
      \pgf@x\pgfutil@tempdima%
    }
    \midpoint%
    \let\firstpoint\anchoreast%
    \ifdim\pgf@y<\pgf@ya%
      \let\secondpoint\anchorsoutheast%
    \else%
      \let\secondpoint\anchornortheast%
    \fi%
    \pgfpointintersectionoflines{\midpoint}{\externalpoint}%
      {\firstpoint}{\secondpoint}%
  }%
  \anchor{mid west}{%
    \installsignalparameters%
    \anchorwest%
    \pgf@xa\pgf@x%
    \pgf@ya\pgf@y%
    \anchorsouthwest%
    \ifdim\pgf@xa<\pgf@x%
      \pgfutil@tempdima\pgf@xa%
    \else%
      \pgfutil@tempdima\pgf@x%
    \fi%
    \pgfextract@process\externalpoint{%
      \midpoint%
      \pgf@x\pgfutil@tempdima%
    }
    \midpoint%
    \let\firstpoint\anchorwest%
    \ifdim\pgf@y<\pgf@ya%
      \let\secondpoint\anchorsouthwest%
    \else%
      \let\secondpoint\anchornorthwest%
    \fi%
    \pgfpointintersectionoflines{\midpoint}{\externalpoint}%
      {\firstpoint}{\secondpoint}%
  }%
  \anchor{north}{\installsignalparameters\anchornorth}%
  \anchor{south}{\installsignalparameters\anchorsouth}%
  \anchor{east}{\installsignalparameters\anchoreast}%
  \anchor{west}{\installsignalparameters\anchorwest}%
  \anchor{north east}{\installsignalparameters\anchornortheast}%
  \anchor{south east}{\installsignalparameters\anchorsoutheast}%
  \anchor{south west}{\installsignalparameters\anchorsouthwest}%
  \anchor{north west}{\installsignalparameters\anchornorthwest}%
  \backgroundpath{%
    \installsignalparameters%
    \pgfpathmoveto{\north}%
    \pgfpathlineto{\northeast}%
    \pgfpathlineto{\east}%
    \pgfpathlineto{\southeast}%
    \pgfpathlineto{\south}%
    \pgfpathlineto{\southwest}%
    \pgfpathlineto{\west}%
    \pgfpathlineto{\northwest}%
    \pgfpathclose%
  }%
  \anchorborder{%
    \edef\externalx{\the\pgf@x}%
    \edef\externaly{\the\pgf@y}%
    \centerpoint%
    \pgf@xa\externalx\relax%
    \pgf@ya\externaly\relax%
    \advance\pgf@xa\pgf@x%
    \advance\pgf@ya\pgf@y%
    \edef\externalx{\the\pgf@xa}%
    \edef\externaly{\the\pgf@ya}%
    \installsignalparameters%
    \pgfmathanglebetweenpoints{\centerpoint}{\pgfqpoint{\externalx}{\externaly}}%
    \let\externalangle\pgfmathresult%
    \pgfmathanglebetweenpoints{\centerpoint}{\anchorwest}%
    \ifdim\externalangle pt<\pgfmathresult pt\relax%
      \pgfmathanglebetweenpoints{\centerpoint}{\anchornorth}%
      \ifdim\externalangle pt<\pgfmathresult pt\relax%
        \pgfmathanglebetweenpoints{\centerpoint}{\anchornortheast}%
        \ifdim\externalangle pt<\pgfmathresult pt\relax%
          \let\firstpoint\anchoreast%
          \let\secondpoint\anchornortheast%
        \else%
          \let\secondpoint\anchornortheast%
          \let\firstpoint\anchornorth%
        \fi%
      \else%
        \pgfmathanglebetweenpoints{\centerpoint}{\anchornorthwest}%
        \ifdim\externalangle pt<\pgfmathresult pt\relax%
          \let\firstpoint\anchornorth%
          \let\secondpoint\anchornorthwest%
        \else%
          \let\secondpoint\anchornorthwest%
          \let\firstpoint\anchorwest%
        \fi%
      \fi%
    \else%
      \pgfmathanglebetweenpoints{\centerpoint}{\anchorsouth}%
      \ifdim\externalangle pt<\pgfmathresult pt\relax%
        \pgfmathanglebetweenpoints{\centerpoint}{\anchorsouthwest}%
        \ifdim\externalangle pt<\pgfmathresult pt\relax%
          \let\firstpoint\anchorwest%
          \let\secondpoint\anchorsouthwest%
        \else%
          \let\secondpoint\anchorsouthwest%
          \let\firstpoint\anchorsouth%
        \fi%
      \else%
        \pgfmathanglebetweenpoints{\centerpoint}{\anchorsoutheast}%
        \ifdim\externalangle pt<\pgfmathresult pt\relax%
          \let\firstpoint\anchorsouth%
          \let\secondpoint\anchorsoutheast%
        \else%
          \let\secondpoint\anchorsoutheast%
          \let\firstpoint\anchoreast%
        \fi%
      \fi%
    \fi%
    \pgfpointintersectionoflines{\centerpoint}{\pgfqpoint{\externalx}{\externaly}}%
      {\firstpoint}{\secondpoint}%
  }%
}%






\pgfkeys{/pgf/.cd,
  tape bend top/.initial=in and out,
  tape bend bottom/.initial=in and out,
  tape bend/.style={/pgf/tape bend top={#1}, /pgf/tape bend bottom={#1}},
  tape bend height/.initial=5pt,
}%

\def\pgf@lib@sh@inandouttext{in and out}%
\def\pgf@lib@sh@outandintext{out and in}%
\def\pgf@lib@sh@nonetext{none}%

\pgfdeclareshape{tape}{%
  \savedmacro\tapedimensions{%
    \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y.5\dp\pgfnodeparttextbox%
    \pgfmathsetlengthmacro\outerxsep{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlengthmacro\outerysep{\pgfkeysvalueof{/pgf/outer ysep}}%
    \addtosavedmacro\outerxsep%
    \addtosavedmacro\outerysep%
    \pgfmathsetlength\pgfutil@tempdima{\pgfkeysvalueof{/pgf/tape bend height}}%
    \pgfutil@tempdima.5\pgfutil@tempdima%
    \edef\halfbendheight{\the\pgfutil@tempdima}%
    \addtosavedmacro\halfbendheight%
    \pgfkeysgetvalue{/pgf/tape bend top}{\topbendstyle}%
    \pgfkeysgetvalue{/pgf/tape bend bottom}{\bottombendstyle}%
    \addtosavedmacro\topbendstyle%
    \addtosavedmacro\bottombendstyle%
    \ifx\topbendstyle\pgf@lib@sh@nonetext%
    \else%
      \advance\pgf@y\pgfutil@tempdima%
    \fi%
    \ifx\bottombendstyle\pgf@lib@sh@none%
    \else%
      \advance\pgf@y\pgfutil@tempdima%
    \fi%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@x<.5\pgf@xa%
      \pgf@x.5\pgf@xa%
    \fi%
    \ifdim\pgf@y<.5\pgf@ya%
      \pgf@y.5\pgf@ya%
    \fi%
    \ifx\topbendstyle\pgf@lib@sh@nonetext%
    \else%
      \advance\pgf@y-\pgfutil@tempdima%
    \fi%
    \ifx\bottombendstyle\pgf@lib@sh@nonetext%
    \else%
      \advance\pgf@y-\pgfutil@tempdima%
    \fi%
    \pgfutil@tempdima3.414213\pgfutil@tempdima%
    \edef\bendyradius{\the\pgfutil@tempdima}%
    \addtosavedmacro\bendyradius%
    \advance\pgfutil@tempdima\outerysep%
    \edef\outerbendyradius{\the\pgfutil@tempdima}%
    \addtosavedmacro\outerbendyradius%
    \advance\pgfutil@tempdima-\outerysep%
    \advance\pgfutil@tempdima-\outerysep%
    \edef\innerbendyradius{\the\pgfutil@tempdima}%
    \addtosavedmacro\innerbendyradius%
    \pgfutil@tempdima0.707106\pgf@x%
    \edef\bendxradius{\the\pgfutil@tempdima}%
    \addtosavedmacro\bendxradius%
    \advance\pgfutil@tempdima\outerxsep%
    \edef\outerbendxradius{\the\pgfutil@tempdima}%
    \addtosavedmacro\outerbendxradius%
    \advance\pgfutil@tempdima-\outerxsep%
    \advance\pgfutil@tempdima-\outerxsep%
    \edef\innerbendxradius{\the\pgfutil@tempdima}%
    \addtosavedmacro\innerbendxradius%
    \edef\halfwidth{\the\pgf@x}%
    \edef\halfheight{\the\pgf@y}%
    \addtosavedmacro\halfwidth%
    \addtosavedmacro\halfheight%
    \advance\pgf@x\outerxsep%
    \edef\outerhalfwidth{\the\pgf@x}%
    \addtosavedmacro\outerhalfwidth%
    \pgf@xc\bendxradius%
    \pgf@yc\bendyradius%
    \pgfmathdivide@{\pgfmath@tonumber{\pgf@yc}}{\pgfmath@tonumber{\pgf@xc}}%
    \pgfmathatan{\pgfmathresult}%
    \pgf@xc\pgfmathresult pt\relax%
    \pgf@xc.5\pgf@xc%
    \edef\halfangle{\pgfmath@tonumber{\pgf@xc}}%
    \addtosavedmacro\halfangle%
    \pgf@xc45pt\relax%
    \advance\pgf@xc-\halfangle pt%
    \pgfmathcot@{\pgfmath@tonumber{\pgf@xc}}%
    \let\cothalfanglein\pgfmathresult%
    \addtosavedmacro\cothalfanglein%
    \pgf@xc90pt\relax%
    \advance\pgf@xc-\halfangle pt%
    \pgfmathcot@{\pgfmath@tonumber{\pgf@xc}}%
    \let\cothalfangleout\pgfmathresult%
    \addtosavedmacro\cothalfangleout%
  }%
  \savedanchor{\centerpoint}{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y.5\ht\pgfnodeparttextbox%
    \advance\pgf@y-.5\dp\pgfnodeparttextbox%
  }%
    \savedanchor{\midpoint}{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@y{+0.5ex}%
  }%
  \savedanchor{\basepoint}{%
    \pgf@x.5\wd\pgfnodeparttextbox%
    \pgf@y0pt%
  }%
  \anchor{center}{\centerpoint}%
  \anchor{mid}{\midpoint}%
  \anchor{mid east}{\tapedimensions\midpoint\advance\pgf@x\outerhalfwidth}%
  \anchor{mid west}{\tapedimensions\midpoint\advance\pgf@x-\outerhalfwidth}%
  \anchor{base}{\basepoint}%
  \anchor{base east}{\tapedimensions\basepoint\advance\pgf@x\outerhalfwidth}%
  \anchor{base west}{\tapedimensions\basepoint\advance\pgf@x-\outerhalfwidth}%
  \anchor{north}{%
    \csname pgf@anchor@tape@north east\endcsname%
    \pgf@ya\pgf@y%
    \csname pgf@anchor@tape@north west\endcsname%
    \advance\pgf@ya\pgf@y%
    \centerpoint%
    \pgf@y.5\pgf@ya%
  }%
  \anchor{south}{%
    \csname pgf@anchor@tape@south east\endcsname%
    \pgf@ya\pgf@y%
    \csname pgf@anchor@tape@south west\endcsname%
    \advance\pgf@ya\pgf@y%
    \centerpoint%
    \pgf@y.5\pgf@ya%
  }%
  \anchor{east}{%
    \tapedimensions%
    \centerpoint%
    \advance\pgf@x\outerhalfwidth%
  }%
  \anchor{west}{%
    \tapedimensions%
    \centerpoint%
    \advance\pgf@x-\outerhalfwidth%
  }%
  \anchor{north east}{%
    \tapedimensions%
    \centerpoint%
    \advance\pgf@x\outerhalfwidth%
    \advance\pgf@y\halfheight%
    \pgf@yc\outerysep%
    \ifx\topbendstyle\pgf@lib@sh@inandouttext%
      \advance\pgf@y\halfbendheight%
      \advance\pgf@y\cothalfangleout\pgf@yc%
    \else%
      \ifx\topbendstyle\pgf@lib@sh@outandintext%
        \advance\pgf@y\halfbendheight%
        \advance\pgf@y\cothalfanglein\pgf@yc%
      \else%
        \advance\pgf@y\pgf@yc%
      \fi%
    \fi%
  }%
  \anchor{north west}{%
    \tapedimensions%
    \centerpoint%
    \advance\pgf@x-\outerhalfwidth%
    \advance\pgf@y\halfheight%
    \pgf@yc\outerysep%
    \ifx\topbendstyle\pgf@lib@sh@inandouttext%
      \advance\pgf@y\halfbendheight%
      \advance\pgf@y\cothalfanglein\pgf@yc%
    \else%
      \ifx\topbendstyle\pgf@lib@sh@outandintext%
        \advance\pgf@y\halfbendheight%
        \advance\pgf@y\cothalfangleout\pgf@yc%
      \else%
        \advance\pgf@y\pgf@yc%
      \fi%
    \fi%
  }%
  \anchor{south east}{%
    \tapedimensions%
    \centerpoint%
    \advance\pgf@x\outerhalfwidth%
    \advance\pgf@y-\halfheight%
    \pgf@yc\outerysep%
    \ifx\topbendstyle\pgf@lib@sh@outandintext%
      \advance\pgf@y-\halfbendheight%
      \advance\pgf@y-\cothalfangleout\pgf@yc%
    \else%
      \ifx\topbendstyle\pgf@lib@sh@inandouttext%
        \advance\pgf@y-\halfbendheight%
        \advance\pgf@y-\cothalfanglein\pgf@yc%
      \else%
        \advance\pgf@y-\pgf@yc%
      \fi%
    \fi%
  }%
  \anchor{south west}{%
    \tapedimensions%
    \centerpoint%
    \advance\pgf@x-\outerhalfwidth%
    \advance\pgf@y-\halfheight%
    \pgf@yc\outerysep%
    \ifx\topbendstyle\pgf@lib@sh@outandintext%
      \advance\pgf@y-\halfbendheight%
      \advance\pgf@y-\cothalfanglein\pgf@yc%
    \else%
      \ifx\topbendstyle\pgf@lib@sh@inandouttext%
        \advance\pgf@y-\halfbendheight%
        \advance\pgf@y-\cothalfangleout\pgf@yc%
      \else%
        \advance\pgf@y-\pgf@yc%
      \fi%
    \fi%
  }%
  \backgroundpath{%
    \tapedimensions%
    \pgf@xc\halfwidth%
    \pgf@yc\halfheight%
    \pgf@xc\bendxradius%
    \pgf@yc\bendyradius%
    {%
      \pgftransformshift{\centerpoint}%
      \pgfpathmoveto{\pgfqpoint{-\halfwidth}{0pt}}%
      \pgfpathlineto{\pgfqpoint{-\halfwidth}{\halfheight}}%
      \ifx\topbendstyle\pgf@lib@sh@inandouttext%
        \pgfpathlineto{\pgf@x-\halfwidth\pgf@y\halfheight\advance\pgf@y\halfbendheight}%
        \pgfpatharc{225}{315}{\bendxradius and \bendyradius}%
        \pgfpatharc{135}{45}{\bendxradius and \bendyradius}%
      \else%
        \ifx\topbendstyle\pgf@lib@sh@outandintext%
          \pgfpathlineto{\pgf@x-\halfwidth\pgf@y\halfheight\advance\pgf@y\halfbendheight}%
          \pgfpatharc{135}{45}{\bendxradius and \bendyradius}%
          \pgfpatharc{225}{315}{\bendxradius and \bendyradius}%
        \else%
          \pgfpathlineto{\pgfqpoint{\halfwidth}{\halfheight}}%
        \fi%
      \fi%
      \pgfpathlineto{\pgfqpoint{\halfwidth}{-\halfheight}}%
      \ifx\bottombendstyle\pgf@lib@sh@inandouttext%
        \pgfpathlineto{\pgf@x\halfwidth\pgf@y-\halfheight\advance\pgf@y-\halfbendheight}%
        \pgfpatharc{45}{135}{\bendxradius and \bendyradius}%
        \pgfpatharc{315}{225}{\bendxradius and \bendyradius}%
      \else%
        \ifx\bottombendstyle\pgf@lib@sh@outandintext%
          \pgfpathlineto{\pgf@x\halfwidth\pgf@y-\halfheight\advance\pgf@y-\halfbendheight}%
          \pgfpatharc{315}{225}{\bendxradius and \bendyradius}%
          \pgfpatharc{45}{135}{\bendxradius and \bendyradius}%
        \else%
          \pgfpathlineto{\pgfqpoint{-\halfwidth}{-\halfheight}}%
        \fi%
      \fi%
      \pgfpathclose%
    }%
  }%
  \anchorborder{%
    \pgf@xa\pgf@x%
    \pgf@ya\pgf@y%
    \pgfextract@process\externalpoint{%
      \centerpoint%
      \advance\pgf@x\pgf@xa%
      \advance\pgf@y\pgf@ya%
    }%
    \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}%
    \let\externalangle\pgfmathresult%
    \tapedimensions%
    \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@tape@north west\endcsname}%
    \ifdim\externalangle pt<\pgfmathresult pt%
      \ifdim\externalangle pt<90pt%
        \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@tape@north east\endcsname}%
        \ifdim\externalangle pt<\pgfmathresult pt%
          \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
            {\csname pgf@anchor@tape@north east\endcsname}%
            {\csname pgf@anchor@tape@south east\endcsname}%
        \else%
          \ifx\topbendstyle\pgf@lib@sh@inandouttext%
            \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
            {%
              \centerpoint%
              \pgf@xc\halfwidth%
              \advance\pgf@x.5\pgf@xc%
              \advance\pgf@y\halfheight%
              \advance\pgf@y\halfbendheight%
              \pgf@yc\bendyradius%
              \advance\pgf@y-.707106\pgf@yc%
            }%
            {5}{175}{\outerbendxradius and \outerbendyradius}%
          \else%
            \ifx\topbendstyle\pgf@lib@sh@outandintext%
              \pgfmathpointintersectionoflineandarc{\centerpoint}{\externalpoint}%
              {%
                \centerpoint%
                \pgf@xc\halfwidth%
                \advance\pgf@x.5\pgf@xc%
                \advance\pgf@y\halfheight%
                \advance\pgf@y\halfbendheight%
                \pgf@yc\bendyradius%
                \advance\pgf@y.707106\pgf@yc%
              }%
              {185}{355}{\innerbendxradius and \innerbendyradius}%
            \else%
              \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
                {\csname pgf@anchor@tape@north east\endcsname}%
                {\csname pgf@anchor@tape@north west\endcsname}%
            \fi%
          \fi%
        \fi%
      \else%
        \ifx\topbendstyle\pgf@lib@sh@inandouttext%
          \pgfmathpointintersectionoflineandarc{\centerpoint}{\externalpoint}%
            {%
              \centerpoint%
              \pgf@xc\halfwidth%
              \advance\pgf@x-.5\pgf@xc%
              \advance\pgf@y\halfheight%
              \advance\pgf@y\halfbendheight%
              \pgf@yc\bendyradius%
              \advance\pgf@y.707106\pgf@yc%
            }%
            {185}{355}{\innerbendxradius and \innerbendyradius}%
        \else%
          \ifx\topbendstyle\pgf@lib@sh@outandintext%
            \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
            {%
              \centerpoint%
              \pgf@xc\halfwidth%
              \advance\pgf@x-.5\pgf@xc%
              \advance\pgf@y\halfheight%
              \advance\pgf@y\halfbendheight%
              \pgf@yc\bendyradius%
              \advance\pgf@y-.707106\pgf@yc%
            }%
            {5}{175}{\outerbendxradius and \outerbendyradius}%
          \else%
            \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
              {\csname pgf@anchor@tape@north east\endcsname}%
              {\csname pgf@anchor@tape@north west\endcsname}%
          \fi%
        \fi%
      \fi%
    \else%
      \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@tape@south west\endcsname}%
        \ifdim\externalangle pt>\pgfmathresult pt%
        \ifdim\externalangle pt>270pt%
          \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@tape@south east\endcsname}%
          \ifdim\externalangle pt>\pgfmathresult pt%
            \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
              {\csname pgf@anchor@tape@north east\endcsname}%
              {\csname pgf@anchor@tape@south east\endcsname}%
          \else%
            \ifx\bottombendstyle\pgf@lib@sh@inandouttext%
              \pgfmathpointintersectionoflineandarc{\centerpoint}{\externalpoint}%
              {%
                \centerpoint%
                \pgf@xc\halfwidth%
                \advance\pgf@x.5\pgf@xc%
                \advance\pgf@y-\halfheight%
                \advance\pgf@y-\halfbendheight%
                \pgf@yc\bendyradius%
                \advance\pgf@y-.707106\pgf@yc%
              }%
              {5}{175}{\innerbendxradius and \innerbendyradius}%
            \else%
              \ifx\bottombendstyle\pgf@lib@sh@outandintext%
                \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
              {%
                \centerpoint%
                \pgf@xc\halfwidth%
                \advance\pgf@x.5\pgf@xc%
                \advance\pgf@y-\halfheight%
                \advance\pgf@y-\halfbendheight%
                \pgf@yc\bendyradius%
                \advance\pgf@y.707106\pgf@yc%
              }%
              {185}{355}{\outerbendxradius and \outerbendyradius}%
              \else%
                \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
                  {\csname pgf@anchor@tape@south east\endcsname}%
                  {\csname pgf@anchor@tape@south west\endcsname}%
              \fi%
            \fi%
          \fi%
        \else%
          \ifx\bottombendstyle\pgf@lib@sh@inandouttext%
            \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}%
              {%
                \centerpoint%
                \pgf@xc\halfwidth%
                \advance\pgf@x-.5\pgf@xc%
                \advance\pgf@y-\halfheight%
                \advance\pgf@y-\halfbendheight%
                \pgf@yc\bendyradius%
                \advance\pgf@y.707106\pgf@yc%
              }%
              {185}{355}{\outerbendxradius and \outerbendyradius}%
          \else%
            \ifx\bottombendstyle\pgf@lib@sh@outandintext%
              \pgfmathpointintersectionoflineandarc{\centerpoint}{\externalpoint}%
              {%
                \centerpoint%
                \pgf@xc\halfwidth%
                \advance\pgf@x-.5\pgf@xc%
                \advance\pgf@y-\halfheight%
                \advance\pgf@y-\halfbendheight%
                \pgf@yc\bendyradius%
                \advance\pgf@y-.707106\pgf@yc%
              }%
              {5}{175}{\innerbendxradius and \innerbendyradius}%
            \else%
              \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
                {\csname pgf@anchor@tape@south east\endcsname}%
                {\csname pgf@anchor@tape@south west\endcsname}%
            \fi%
          \fi%
        \fi%
      \else%
        \pgfpointintersectionoflines{\externalpoint}{\centerpoint}%
          {\csname pgf@anchor@tape@north west\endcsname}%
          {\csname pgf@anchor@tape@south west\endcsname}%
      \fi%
    \fi%
  }%
}%





\pgfkeys{/pgf/.cd,
  magnifying glass handle angle/.initial=-45,
  magnifying glass handle aspect/.initial=1.5,
}%

\pgfdeclareshape{magnifying glass}
{%
  \inheritsavedanchors[from=circle]%
  \inheritanchorborder[from=circle]%
  \inheritanchor[from=circle]{north}%
  \inheritanchor[from=circle]{north west}%
  \inheritanchor[from=circle]{north east}%
  \inheritanchor[from=circle]{center}%
  \inheritanchor[from=circle]{west}%
  \inheritanchor[from=circle]{east}%
  \inheritanchor[from=circle]{mid}%
  \inheritanchor[from=circle]{mid west}%
  \inheritanchor[from=circle]{mid east}%
  \inheritanchor[from=circle]{base}%
  \inheritanchor[from=circle]{base west}%
  \inheritanchor[from=circle]{base east}%
  \inheritanchor[from=circle]{south}%
  \inheritanchor[from=circle]{south west}%
  \inheritanchor[from=circle]{south east}%
  \inheritbackgroundpath[from=circle]%
  \foregroundpath{
    \centerpoint%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgfutil@tempdima=\radius%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@xb<\pgf@yb%
      \advance\pgfutil@tempdima by-\pgf@yb%
    \else%
      \advance\pgfutil@tempdima by-\pgf@xb%
    \fi%
    \pgfpathmoveto{\pgfpointadd{\pgfqpoint{\pgf@xc}{\pgf@yc}}
      {\pgfpointpolar{\pgfkeysvalueof{/pgf/magnifying glass handle angle}}{\pgfutil@tempdima}}}
    \pgfpathlineto{\pgfpointadd{\pgfqpoint{\pgf@xc}{\pgf@yc}}
      {\pgfpointpolar{\pgfkeysvalueof{/pgf/magnifying glass handle angle}}{\pgfutil@tempdima+\pgfutil@tempdima*(\pgfkeysvalueof{/pgf/magnifying glass handle aspect})}}}
    \pgfsetarrowsstart{}
    \pgfsetarrowsend{}
  }%
}%


\pgfkeys{%
  /pgf/magnetic tape tail/.initial=0.15,
  /pgf/magnetic tape tail extend/.initial=0cm,
}%
\pgfdeclareshape{magnetic tape}{%
  \nodeparts{text}%
  \savedmacro\installparameters{%
    \pgf@x=0.5\wd\pgfnodeparttextbox%
    \pgf@y=0.5\ht\pgfnodeparttextbox%
    \advance\pgf@y by-0.5\dp\pgfnodeparttextbox%
    \edef\centerpoint{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
    \pgf@x=\wd\pgfnodeparttextbox%
    \pgf@y=\ht\pgfnodeparttextbox%
    \advance\pgf@y by\dp\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/inner xsep}}%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@x by2.0\pgf@xa%
    \advance\pgf@y by2.0\pgf@ya%
    \ifdim\pgf@y>\pgf@x%
      \pgf@x=\pgf@y%
    \fi%
    \pgf@x=1.414213\pgf@x%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@x<\pgf@xa%
      \pgf@x=\pgf@xa%
    \fi%
    \ifdim\pgf@x<\pgf@ya%
      \pgf@x=\pgf@ya%
    \fi%
    \pgf@x=0.5\pgf@x%
    \edef\radius{\the\pgf@x}%
    \pgfmathparse{max(\pgfkeysvalueof{/pgf/magnetic tape tail extend},0)}%
    \edef\tailextend{\pgfmathresult pt}%
    \pgfmathparse{min(max(\pgfkeysvalueof{/pgf/magnetic tape tail},0),1)}%
    \pgf@xa=\pgfmathresult\pgf@x%
    \edef\tailheight{\the\pgf@xa}%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@xa<\pgf@ya%
      \pgf@xa=\pgf@ya%
    \fi%
    \edef\outersep{\the\pgf@xa}%
    \pgfmathparse{\outersep+\radius}%
    \edef\outerradius{\pgfmathresult pt}%
    \pgfmathparse{(\radius-\tailheight)/\radius}%
    \pgfmathasin@{\pgfmathresult}%
    \pgfmathadd@{-\pgfmathresult}{360}%
    \let\tailangle=\pgfmathresult%
    \pgfmathparse{\outerradius/(\outerradius+\tailextend)}%
    \pgfmathatan@{\pgfmathresult}%
    \pgfmathadd@{-\pgfmathresult}{360}%
    \let\tailbottomangle=\pgfmathresult%
    \pgfmathparse{(\outerradius-\outersep-\tailheight-\outersep)/(\outerradius+\tailextend)}%
    \pgfmathatan@{\pgfmathresult}%
    \pgfmathadd@{-\pgfmathresult}{360}%
    \let\tailtopangle=\pgfmathresult%
    \addtosavedmacro\radius%
    \addtosavedmacro\outerradius%
    \addtosavedmacro\outersep%
    \addtosavedmacro\tailheight%
    \addtosavedmacro\tailextend
    \addtosavedmacro\tailangle%
    \addtosavedmacro\tailtopangle%
    \addtosavedmacro\tailbottomangle%
    \addtosavedmacro\centerpoint%
  }%
  \savedanchor{\base}{\pgfqpoint{0.5\wd\pgfnodeparttextbox}{0pt}}%
  \savedanchor{\mid}{\pgfqpoint{0.5\wd\pgfnodeparttextbox}{0pt}\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{center}{\installparameters\centerpoint}%
  \anchor{base}{\base}%
  \anchor{mid}{\mid}%
  \anchor{base west}{\installparameters\pgfpointadd{\base}{\pgfqpoint{-\outerradius}{0pt}}}%
  \anchor{base east}{\installparameters\pgfpointadd{\base}{\pgfqpoint{\outerradius}{0pt}}}%
  \anchor{mid west}{\installparameters\pgfpointadd{\mid}{\pgfqpoint{-\outerradius}{0pt}}}%
  \anchor{mid east}{\installparameters\pgfpointadd{\mid}{\pgfqpoint{\outerradius}{0pt}}}%
  \anchor{north}{\installparameters%
    \pgfpointadd{\centerpoint}{\pgfqpoint{0pt}{\outerradius}}}%
  \anchor{north east}{\installparameters%
    \pgfpointadd{\centerpoint}{\pgfqpointpolar{45}{\outerradius}}}%
  \anchor{south}{\installparameters%
    \pgfpointadd{\centerpoint}{\pgfqpoint{0pt}{-\outerradius}}}%
  \anchor{south east}{\installparameters%
    \pgfpointadd{\centerpoint}{\pgfqpoint{\outerradius}{-\outerradius}}}%
  \anchor{east}{\installparameters%
      \pgfpointadd{\centerpoint}{\pgfqpoint{\outerradius}{0pt}}}%
  \anchor{south west}{\installparameters%
    \pgfpointadd{\centerpoint}{\pgfqpointpolar{225}{\outerradius}}}%
  \anchor{west}{\installparameters%
    \pgfpointadd{\centerpoint}{\pgfqpoint{-\outerradius}{0pt}}}%
  \anchor{north west}{\installparameters%
      \pgfpointadd{\centerpoint}{\pgfqpointpolar{135}{\outerradius}}}%
  \anchor{tail east}{\installparameters%
        \pgfpointadd{\centerpoint}{\pgfpoint{\radius+\tailextend+\outersep}{-\outerradius+\outersep+\tailheight/2}}}%
  \anchor{tail south east}{\installparameters%
          \pgfpointadd{\centerpoint}{\pgfpoint{\radius+\tailextend+\outersep}{-\outerradius}}}%
  \anchor{tail north east}{\installparameters%
            \pgfpointadd{\centerpoint}{\pgfpoint{\radius+\tailextend+\outersep}{-\outerradius+\outersep+\tailheight+\outersep}}}%
  \backgroundpath{
    \installparameters%
    {%
    \pgftransformshift{\centerpoint}%
    \pgfpathmoveto{\pgfpointpolar{\tailangle}{\radius}}%
    \pgfpatharc{\tailangle}{360}{\radius}%
    \pgfpatharc{0}{270}{\radius}%
    \pgfpathlineto{\pgfpoint{\radius+\tailextend}{-\radius}}%
    \pgfpathlineto{\pgfpoint{\radius+\tailextend}{-\radius+\tailheight}}%
    \pgfpathclose%
    }%
  }%
  \anchorborder{%
    \pgfextract@process\externalpoint{}%
    \installparameters%
    \pgfmathanglebetweenpoints{\pgfpointorigin}{\externalpoint}
    \ifdim\pgfmathresult pt<270pt\relax%
      \pgfpointadd{\centerpoint}{%
        \pgfpointborderellipse%
          {\externalpoint}%
          {\pgfqpoint{\outerradius}{\outerradius}}%
      }%
    \else%
      \ifdim\pgfmathresult pt<\tailbottomangle pt\relax%
        \pgfpointadd{\centerpoint}{%
          \pgfpointintersectionoflines%
            {\externalpoint}{\pgfpointorigin}%
            {\pgfqpoint{0pt}{-\outerradius}}{\pgfqpoint{\outerradius}{-\outerradius}}%
        }%
      \else%
        \ifdim\pgfmathresult pt<\tailtopangle pt\relax%
          \pgfpointadd{\centerpoint}{%
            \pgfpointintersectionoflines%
              {\externalpoint}{\pgfpointorigin}%
              {\pgfqpoint{\outerradius}{\outerradius}}{\pgfqpoint{\outerradius}{-\outerradius}}%
          }%
        \else%
          \pgfpointadd{\centerpoint}{%
            \pgfpointborderellipse%
              {\externalpoint}%
              {\pgfqpoint{\outerradius}{\outerradius}}%
            }%
        \fi%
      \fi%
    \fi%
  }%
}%

==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfint.code.tex ====


\ifx\pgfintloaded\pgfutil@undefined
  \let\pgfintloaded=\relax
\else
  \expandafter\endinput
\fi



\def\pgfinteval#1{\number\numexpr#1\relax}

\def\pgfintabs#1{\number\expandafter\pgfint@abs\number\numexpr#1\relax}
\def\pgfint@abs#1{\ifx-#1\else\expandafter#1\fi}

\def\pgfintmax#1#2{%
  \number\expandafter\pgfint@minmax
  \number\numexpr#1\expandafter;%
  \number\numexpr#2;%
  >
}
\def\pgfintmin#1#2{%
  \number\expandafter\pgfint@minmax
  \number\numexpr#1\expandafter;%
  \number\numexpr#2;%
  <
}
\def\pgfint@minmax#1;#2;#3{%
  \ifnum#1#3#2
    #1%
  \else
    #2%
  \fi
}

\def\pgfintdivtruncate#1#2{%
  \number\numexpr\expandafter\pgfint@divtruncate
  \number\numexpr#1\expandafter;%
  \number\numexpr#2;%
  \relax
}
\def\pgfint@divtruncate#1#2;#3#4;{%
  \ifx0#1
    0%
  \else
    (#1#2%
      \ifx-#1 +\else-\fi
      (\ifx-#3 -\fi#3#4-1)/2%
    )%
  \fi
  /#3#4%
}

\def\pgfintdivfloor#1#2{%
  \number\numexpr\expandafter\pgfint@divfloor
  \number\numexpr#1\expandafter;%
  \number\numexpr#2;%
  \relax
}
\def\pgfint@divfloor#1#2;#3#4;{%
  \ifx0#1
    0%
  \else
    \ifnum
      0\ifx-#1\ifx#3-\else1\fi\fi
      0\ifx-#3\ifx#1-\else1\fi\fi
      >0
      \pgfint@@divfloor#1#2;#3#4;-+%
    \else
      \pgfint@@divfloor#1#2;#3#4;+-%
    \fi
  \fi
  /#3#4%
}
\def\pgfint@@divfloor#1#2;#3#4;#5#6{%
  (#1#2%
  \ifx-#1 #5\else#6\fi
    (\ifx-#3 -\fi#3#4#61)/2%
  )%
}

\def\pgfintdivround#1#2{\number\numexpr(#1)/(#2)\relax}

\def\pgfintmod#1#2{%
  \number\numexpr\expandafter\pgfint@mod%
  \number\numexpr#1\expandafter;%
  \number\numexpr#2;%
  \relax
}
\def\pgfint@mod#1;#2;{#1-(\pgfint@divfloor#1;#2;)*#2}

\def\pgfintset#1#2{#1 \numexpr#2\relax}

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfint.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmath.code.tex ====


\ifx\pgfmathloaded\pgfutil@undefined
  \let\pgfmathloaded=\relax
\else
  \expandafter\endinput
\fi

\ifx\pgfkeysloaded\pgfutil@undefined
  \input pgfkeys.code.tex
\fi

\input pgfmathutil.code.tex
\input pgfmathparser.code.tex
\input pgfmathfunctions.code.tex
\input pgfmathfunctions.basic.code.tex
\input pgfmathfunctions.trigonometric.code.tex
\input pgfmathfunctions.random.code.tex
\input pgfmathfunctions.comparison.code.tex
\input pgfmathfunctions.base.code.tex
\input pgfmathfunctions.round.code.tex
\input pgfmathfunctions.misc.code.tex
\input pgfmathfunctions.integerarithmetics.code.tex
\input pgfmathcalc.code.tex
\input pgfmathfloat.code.tex

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmath.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathcalc.code.tex ====



\def\pgfmathsetlength#1#2{%
  \expandafter\pgfmath@onquick#2\pgfmath@%
  {%
    \begingroup%
      \pgfmath@selectfont%
      #1#2\unskip%
    \expandafter\endgroup%
    \expandafter#1\the#1\relax%
  }%
  {%
    \pgfmathparse{#2}%
    \ifpgfmathmathunitsdeclared%
      #1\pgfmathresult mu\relax%
    \else%
      #1\pgfmathresult pt\relax%
    \fi%
  }%
  \ignorespaces%
}

\def\pgfmathaddtolength#1#2{%
  \expandafter\pgfmath@onquick#2\pgfmath@%
  {%
    \begingroup%
      \pgfmath@selectfont%
      \advance#1#2\unskip%
      \expandafter%
    \endgroup%
    \expandafter#1\the#1\relax%
  }%
  {%
    \pgfmathparse{#2}%
    \ifpgfmathmathunitsdeclared%
      \advance#1\pgfmathresult mu\relax%
    \else%
      \advance#1\pgfmathresult pt\relax%
    \fi%
  }%
  \ignorespaces%
}

\def\pgfmathsetcount#1#2{%
  \expandafter\pgfmath@onquick#2\pgfmath@%
  {%
    \afterassignment\pgfmath@gobbletilpgfmath@%
    #1#2\relax\pgfmath@%
  }%
  {%
    \pgfmathparse{#2}%
    \afterassignment\pgfmath@gobbletilpgfmath@%
    #1\pgfmathresult\relax\pgfmath@%
  }%
  \ignorespaces%
}

\def\pgfmathaddtocount#1#2{%
  \expandafter\pgfmath@onquick#2\pgfmath@%
  {%
    \edef\pgfmath@addtocounttemp{\the#1}%
    \afterassignment\pgfmath@gobbletilpgfmath@%
    #1#2\relax\pgfmath@%
    \advance#1\pgfmath@addtocounttemp\relax%
  }%
  {%
    \edef\pgfmath@addtocounttemp{\the#1}%
    \pgfmathparse{#2}%
    \afterassignment\pgfmath@gobbletilpgfmath@%
    #1\pgfmathresult\relax\pgfmath@%
    \advance#1\pgfmath@addtocounttemp\relax%
  }%
  \ignorespaces%
}

\def\pgfmathnewcounter#1{%
  \expandafter\ifx\csname c@#1\endcsname\relax%
    \def\pgfmath@marshal{\csname newcount\endcsname}%
    \expandafter\pgfmath@marshal\csname c@#1\endcsname%
    \expandafter\def\csname the#1\endcsname{\expandafter\the\csname c@#1\endcsname}%
  \fi%
}

\def\pgfmathsetcounter#1#2{%
   \expandafter\pgfmathsetcount\csname c@#1\endcsname{#2}%
}

\def\pgfmathaddtocounter#1#2{%
  \expandafter\pgfmathaddtocount\csname c@#1\endcsname{#2}%
}

\def\pgfmath@pgftext{pgf}
\def\pgfmath@tikztext{tikz}
\def\pgfmathmakecounterglobal#1{%
  \pgfmath@ifundefined{c@#1}{}{%
    \expandafter\pgfmath@in@\expandafter{\pgfmath@pgftext}{#1}%
    \ifpgfmath@in@%
    \else%
      \expandafter\pgfmath@in@\expandafter{\pgfmath@tikztext}{#1}%
      \ifpgfmath@in@%
      \else%
        \expandafter\global\csname c@#1\endcsname\csname c@#1\endcsname\relax%
      \fi%
    \fi%
  }%
}

\def\pgfmathsetmacro#1#2{%
  \begingroup%
    \pgfmathparse{#2}%
    \let#1=\pgfmathresult
    \pgfmath@smuggleone{#1}%
  \endgroup%
}

\def\pgfmathsetlengthmacro#1#2{%
  \begingroup%
    \pgfmathsetlength\pgfmath@x{#2}%
    \edef#1{\the\pgfmath@x}%
    \pgfmath@smuggleone{#1}%
  \endgroup%
}

\def\pgfmathtruncatemacro#1#2{%
  \begingroup%
    \pgfmathsetcount\c@pgfmath@counta{#2}%
    \edef#1{\the\c@pgfmath@counta}%
    \pgfmath@smuggleone{#1}%
  \endgroup%
}


\def\pgfmath@onquick{%
  \futurelet\pgfmath@next%
  \pgfmath@@onquick}
\def\pgfmath@@onquick#1\pgfmath@{%
  \ifx\pgfmath@next+%
    \let\pgfmath@next=\pgfmath@firstoftwo%
  \else%
    \let\pgfmath@next=\pgfmath@secondoftwo%
  \fi%
  \pgfmath@next%
}


\def\pgfmathanglebetweenpoints#1#2{%
  \begingroup%
    \pgf@process{\pgfpointdiff{#1}{#2}}%
    \edef\pgf@marshall{\expandafter\noexpand\csname pgfmathatan2@\endcsname{\expandafter\Pgf@geT\the\pgf@y}{\expandafter\Pgf@geT\the\pgf@x}}%
    \pgf@marshall%
    \ifdim\pgfmathresult pt<0pt%
      \pgfmathparse{\pgfmathresult+360}%
    \fi%
    \expandafter%
  \endgroup\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult}%
}

\def\pgfmathrotatepointaround#1#2#3{%
  \pgf@process{%
    \pgf@process{#1}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgf@process{#2}%
    \pgf@xa\pgf@x%
    \pgf@ya\pgf@y%
    \pgf@xb\pgf@x%
    \pgf@yb\pgf@y%
    \pgf@x=\pgf@xc%
    \pgf@y=\pgf@yc%
    \advance\pgf@x-\pgf@xa%
    \advance\pgf@y-\pgf@ya%
    \pgfmathsetmacro\angle{#3}%
    \pgfmathsin@{\angle}%
    \let\sineangle\pgfmathresult%
    \pgfmathcos@{\angle}%
    \let\cosineangle\pgfmathresult%
    \pgf@xa\cosineangle\pgf@x%
    \advance\pgf@xa-\sineangle\pgf@y%
    \pgf@ya\sineangle\pgf@x%
    \advance\pgf@ya\cosineangle\pgf@y%
    \pgf@x\pgf@xb%
    \pgf@y\pgf@yb%
    \advance\pgf@x\pgf@xa%
    \advance\pgf@y\pgf@ya%
  }%
}

\def\pgfmathanglebetweenlines#1#2#3#4{%
  \begingroup%
    \pgfmathanglebetweenpoints{#1}{#2}%
    \let\firstangle\pgfmathresult%
    \pgfmathanglebetweenpoints{#3}{#4}%
    \let\secondangle\pgfmathresult%
    \ifdim\firstangle pt>\secondangle pt\relax%
      \pgfmathadd@{\secondangle}{360}%
      \let\secondangle\pgfmathresult%
    \fi%
    \pgfmathsubtract@{\secondangle}{\firstangle}%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\def\pgfmathreflectpointalongaxis#1#2#3{%
  \pgf@process{%
    \pgfmathanglebetweenpoints{#2}{#1}%
    \pgfmath@tempdima\pgfmathresult pt\relax%
    \pgfmathparse{#3}%
    \advance\pgfmath@tempdima-\pgfmathresult pt\relax%
    \pgfmath@tempdima-2.0\pgfmath@tempdima%
    \pgfmathrotatepointaround{#1}{#2}{\pgfmath@tonumber{\pgfmath@tempdima}}%
  }%
}



\def\pgfmathpointintersectionoflineandarc#1#2#3#4#5#6{%
  \pgf@process{%
    \pgfmathanglebetweenpoints{#2}{#1}%
    \let\x\pgfmathresult%
    \pgfmath@in@{and }{#6}%
    \ifpgfmath@in@%
      \pgf@polar@#6\@@%
    \else%
      \pgf@polar@#6 and #6\@@%
    \fi%
    \edef\xarcradius{\the\pgf@x}%
    \edef\yarcradius{\the\pgf@y}%
    \pgfmathsetmacro\s{#4}%
    \pgfmathsetmacro\e{#5}%
    \pgfmathmod@{\s}{360}%
    \ifdim\pgfmathresult pt<0pt\relax%
      \pgfmathadd@{\pgfmathresult}{360}%
    \fi%
    \let\ss\pgfmathresult%
    \pgfmathmod@{\e}{360}%
    \ifdim\pgfmathresult pt<0pt\relax%
      \pgfmathadd@{\pgfmathresult}{360}%
    \fi%
    \let\ee\pgfmathresult%
    \ifdim\ee pt<\ss pt\relax%
      \pgfmathadd@{\x}{180}%
      \pgfmathmod@{\pgfmathresult}{360}%
      \let\x\pgfmathresult%
    \fi%
    \def\m{360}%
    \pgfmathadd@{\s}{\e}%
    \pgfmathdivide@{\pgfmathresult}{2}%
    \let\n\pgfmathresult%
    \pgfmathloop%
      \pgfmathadd@{\s}{\e}%
      \pgfmathdivide@{\pgfmathresult}{2}%
      \let\p\pgfmathresult%
      \ifdim\p pt=\s pt\relax%
      \else%
        \pgfmathanglebetweenpoints{#2}{%
          \pgfpointadd{#3}{%
            \pgf@x\xarcradius\relax%
            \pgfmathcos@{\p}%
            \pgf@x\pgfmathresult\pgf@x%
            \pgf@y\yarcradius\relax%
            \pgfmathsin@{\p}%
            \pgf@y\pgfmathresult\pgf@y%
          }%
        }%
        \ifdim\ee pt<\ss pt\relax%
          \pgfmathadd@{\pgfmathresult}{180}%
          \pgfmathmod@{\pgfmathresult}{360}%
        \fi%
        \let\q\pgfmathresult%
        \ifdim\x pt>335pt\relax%
          \ifdim\q pt<45pt\relax%
            \pgfmathadd@{\q}{360}%
            \let\q\pgfmathresult%
          \fi%
        \fi%
        \ifdim\x pt=\q pt%
            \pgfmathbreakloop%
          \else
            \ifdim\x pt<\q pt\relax%
              \let\e\p%
            \else%
              \let\s\p%
            \fi%
          \fi%
          \pgfmathsubtract@{\x}{\q}%
          \pgfmathabs@{\pgfmathresult}%
          \ifdim\pgfmathresult pt<\m pt\relax%
            \let\m\pgfmathresult%
            \let\n\p%
          \fi%
    \repeatpgfmathloop%
    \pgfpointadd{#3}{\pgfpointpolar{\n}{\xarcradius and \yarcradius}}%
  }%
}

\def\pgfmathangleonellipse#1#2{%
  \begingroup%
    \pgfmath@in@{and }{#2}%
    \ifpgfmath@in@%
      \pgf@polar@#2\@@%
    \else%
      \pgf@polar@#2 and #2\@@%
    \fi%
    \pgf@xa\pgf@x%
    \pgf@ya\pgf@y%
    \pgf@process{#1}%
    \ifdim\pgf@x=0pt\relax%
      \pgfutil@tempdima1pt\relax%
    \else%
      \pgfutil@tempdima\pgf@x%
      \pgfmathdivide@{\pgfmath@tonumber{\pgf@xa}}{\pgfmath@tonumber{\pgfutil@tempdima}}%
      \pgfutil@tempdima\pgfmathresult pt\relax%
    \fi%
    \ifdim\pgf@y=0pt\relax%
      \pgfutil@tempdima1pt\relax%
    \else%
      \pgfmathdivide@{\pgfmath@tonumber{\pgf@y}}{\pgfmath@tonumber{\pgf@ya}}%
      \pgfutil@tempdima\pgfmathresult\pgfutil@tempdima%
      \pgfmathatan@{\pgfmath@tonumber{\pgfutil@tempdima}}%
    \fi%
    \pgfutil@tempdima\pgfmathresult pt\relax%
    \ifdim\pgfutil@tempdima<0pt\relax%
      \advance\pgfutil@tempdima360pt\relax%
    \fi%
    \ifdim\pgf@x<0pt\relax%
      \ifdim\pgf@y=0pt\relax%
        \pgfutil@tempdima180pt\relax%
      \else%
        \ifdim\pgf@y<0pt\relax%
          \advance\pgfutil@tempdima180pt\relax%
        \else%
          \advance\pgfutil@tempdima-180pt\relax%
        \fi%
      \fi%
    \else%
      \ifdim\pgf@x=0pt\relax%
        \ifdim\pgf@y<0pt\relax%
          \pgfutil@tempdima270pt\relax%
        \else%
          \pgfutil@tempdima90pt\relax%
        \fi%
      \else%
        \ifdim\pgf@y=0pt\relax%
          \pgfutil@tempdima0pt\relax%
        \fi%
      \fi%
    \fi%
    \pgfmath@returnone\pgfutil@tempdima%
  \endgroup%
}


==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathcalc.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfloat.code.tex ====


\pgfkeys{
    /pgf/compat/number printer/.is choice,
    /pgf/compat/number printer/2.10/.code={%
        \def\pgfmathprintnumber@begingroup{\bgroup}%
        \def\pgfmathprintnumber@endgroup{\egroup}%
    },
    /pgf/compat/number printer/next after 2.10/.code={%
        \def\pgfmathprintnumber@begingroup{\begingroup}%
        \def\pgfmathprintnumber@endgroup{\endgroup}%
    },
    /pgf/compat/number printer/next after 2.10,%
}


\newif\ifpgfmathfloatcomparison
\newif\ifpgfmathfloatroundhasperiod
\newif\ifpgfmathprintnumberskipzeroperiod


\toksdef\pgfmathfloat@tmptoks=1
\newif\ifpgfmathfloat@fixed@digits@after@period
\newif\ifpgfmathfloatroundmayneedrenormalize
\toksdef\pgfmathfloat@a@Mtok=0

\let\pgfmathfloat@a@S=\c@pgf@counta
\let\pgfmathfloat@a@M=\pgf@xa
\let\pgfmathfloat@a@E=\c@pgf@countb
\let\pgfmathfloat@b@S=\c@pgf@countc
\let\pgfmathfloat@b@M=\pgf@xb
\let\pgfmathfloat@b@E=\c@pgf@countd

\def\pgfmathfloat@round@precision{2}

\def\pgfmathfloat@round@precision@orig{\pgfmathfloat@round@precision}%

\gdef\pgfmathfloat@glob@TMP{}


\def\pgfmathfloatparsenumber#1{%
    \begingroup
    \edef\pgfmathresult{#1}%
    \expandafter\pgfflt@impl\pgfmathresult\pgfflt@EOI
    \ifpgfmathfloatparsenumberpendingperiod
        \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.0}%
    \fi
    \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\let\pgfmathfloatqparsenumber=\pgfmathfloatparsenumber

\def\pgfmathfloattoregisters#1#2#3#4{%
    \expandafter\pgfmathfloat@decompose#1\relax{#2}{#3}{#4}%
}

\def\pgfmathfloattoregisterstok#1#2#3#4{%
    \expandafter\pgfmathfloat@decompose@tok#1\relax{#2}{#3}{#4}%
}

\def\pgfmathfloatgetflags#1#2{%
    \expandafter\pgfmathfloat@decompose@F#1\relax{#2}%
}
\def\pgfmathfloatgetflagstomacro#1#2{%
    \expandafter\pgfmathfloat@decompose@Fmacro#1\relax{#2}%
}%

\def\pgfmathfloatgetmantissa#1#2{%
    \expandafter\pgfmathfloat@decompose@M#1\relax{#2}%
}
\let\pgfmathfloatgetmantisse=\pgfmathfloatgetmantissa
\def\pgfmathfloatgetmantissatok#1#2{%
    \expandafter\pgfmathfloat@decompose@Mtok#1\relax{#2}%
}
\let\pgfmathfloatgetmantissetok=\pgfmathfloatgetmantissatok
\def\pgfmathfloatgetexponent#1#2{%
    \expandafter\pgfmathfloat@decompose@E#1\relax{#2}%
}


\def\pgfmathfloat@to@FMeE@style#1{\expandafter\pgfmathfloat@to@FMeE@style@#1\relax\relax}%
\def\pgfmathfloat@to@FMeE@style@#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@to@FMeE@style@@%
    \else
        \expandafter\pgfmathfloat@to@FMeE@style@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@to@FMeE@style@@#1Y#2e#3]\relax\relax{\def\pgfmathresult{#1#2e#3}}%
\def\pgfmathfloat@to@FMeE@style@error#1\relax\relax{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{%
        \noexpand\pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    }%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%


\def\pgfmathfloat@decompose#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@%
    \else
        \expandafter\pgfmathfloat@decompose@error%
    \fi
    #1#2%
}
\def\pgfmathfloat@decompose@#1Y#2e#3]\relax#4#5#6{%
   #4=#1\relax
   #5=#2pt %
   #6=#3\relax%
}

\def\pgfmathfloat@decompose@tok#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@tok@%
    \else
        \expandafter\pgfmathfloat@decompose@tok@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@decompose@tok@#1Y#2e#3]\relax#4#5#6{%
   #4=#1\relax
   #5={#2}%
   #6=#3\relax%
}
\def\pgfmathfloat@decompose@F#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@F@%
    \else
        \expandafter\pgfmathfloat@decompose@F@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@decompose@Fmacro#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@Fmacro@%
    \else
        \expandafter\pgfmathfloat@decompose@F@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@decompose@M#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@M@%
    \else
        \expandafter\pgfmathfloat@decompose@M@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@decompose@E#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@E@%
    \else
        \expandafter\pgfmathfloat@decompose@E@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@decompose@Mtok#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@Mtok@%
    \else
        \expandafter\pgfmathfloat@decompose@Mtok@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@decompose@F@#1Y#2e#3]\relax#4{#4=#1\relax}%
\def\pgfmathfloat@decompose@Fmacro@#1Y#2e#3]\relax#4{\def#4{#1}}%
\def\pgfmathfloat@decompose@M@#1Y#2e#3]\relax#4{#4=#2pt}%
\def\pgfmathfloat@decompose@Mtok@#1Y#2e#3]\relax#4{#4={#2}}%
\def\pgfmathfloat@decompose@E@#1Y#2e#3]\relax#4{#4=#3\relax}%

\def\pgfmathfloat@decompose@error#1\relax#2#3#4{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{%
        \noexpand#2=\the\pgfmathfloat@a@S\space
        \noexpand#3=\the\pgfmathfloat@a@Mtok pt
        \noexpand#4=\the\pgfmathfloat@a@E\space
    }%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@tok@error#1\relax#2#3#4{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{%
        \noexpand#2=\the\pgfmathfloat@a@S\space
        \noexpand#3={\the\pgfmathfloat@a@Mtok}%
        \noexpand#4=\the\pgfmathfloat@a@E\space
    }%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@F@error#1\relax#2{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@S\space}%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@M@error#1\relax#2{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@Mtok pt }%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@Mtok@error#1\relax#2{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{\noexpand#2={\the\pgfmathfloat@a@Mtok}}%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@E@error#1\relax#2{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@E\space}%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloattomacro#1#2#3#4{%
    \begingroup
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \xdef\pgfmathfloat@glob@TMP{%
        \noexpand\def\noexpand#2{\the\pgfmathfloat@a@S}%
        \noexpand\def\noexpand#3{\the\pgfmathfloat@a@Mtok}%
        \noexpand\def\noexpand#4{\the\pgfmathfloat@a@E}%
    }%
    \endgroup
    \pgfmathfloat@glob@TMP
}


\def\pgfmathfloatcreate#1#2#3{%
    \edef\pgfmathresult{#1Y#2e#3]}%
}%
\def\pgfmathfloat@POSTFLAGSCHAR{Y}



\def\pgfmathfloattofixed@#1{%
    \begingroup
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \ifcase\pgfmathfloat@a@S
        \def\pgfmathresult{0.0}%
    \or
        \expandafter\pgfmathfloattofixed@impl\the\pgfmathfloat@a@Mtok\relax
    \or
        \expandafter\pgfmathfloattofixed@impl\the\pgfmathfloat@a@Mtok\relax
        \pgfmathfloat@a@Mtok=\expandafter{\pgfmathresult}%
        \edef\pgfmathresult{-\the\pgfmathfloat@a@Mtok}%
    \or\def\pgfmathresult{nan}%
    \or\def\pgfmathresult{inf}%
    \or\def\pgfmathresult{-inf}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}
\let\pgfmathfloattofixed=\pgfmathfloattofixed@

\def\pgfmathfloattoint#1{%
    \pgfmathfloattofixed{#1}%
    \expandafter\pgfmathfloattoint@@\pgfmathresult\relax
}%
\def\pgfmathfloattoint@@#1.#2\relax{%
    \def\pgfmathresult{#1}%
}%

\def\pgfmathfloattosci@#1{%
    \begingroup
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \ifcase\pgfmathfloat@a@S
        \def\pgfmathresult{0.0e0}%
    \or
        \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok e\the\pgfmathfloat@a@E}%
    \or
        \edef\pgfmathresult{-\the\pgfmathfloat@a@Mtok e\the\pgfmathfloat@a@E}%
    \or\def\pgfmathresult{nan}%
    \or\def\pgfmathresult{inf}%
    \or\def\pgfmathresult{-inf}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\let\pgfmathfloattosci=\pgfmathfloattosci@

\def\pgfmathfloatvalueof#1{\expandafter\pgfmathfloatvalueof@@#1@@}%

\def\pgfmathfloatvalueof@@#1#2{%
    \if#2Y%
        \expandafter\pgfmathfloatvalueof@@@\expandafter#1\expandafter#2%
    \else
        \expandafter\pgfmathfloatvalueof@abort\expandafter#1\expandafter#2%
    \fi
}
\def\pgfmathfloatvalueof@@@#1Y#2e#3]@@{%
    \ifcase#1 %
        0.0e0%
    \or
        #2e#3%
    \or
        -#2e#3%
    \or nan%
    \or inf%
    \or -inf%
    \fi
}%
\def\pgfmathfloatvalueof@abort#1@@{#1}%



\def\pgfmathroundto#1{%
    \pgfmathfloatroundhasperiodtrue
    \begingroup
    \pgfmathfloat@fixed@digits@after@periodfalse
    \pgfmathroundto@impl{#1}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}


\def\pgfmathroundtozerofill#1{%
    \pgfmathfloatroundhasperiodtrue
    \begingroup
    \pgfmathfloat@fixed@digits@after@periodtrue
    \pgfmathroundto@impl{#1}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\def\pgfmathprintnumber@fixed@styleDEFAULT#1#2#3e#4\relax{%
    \begingroup
    \pgfkeysgetvalue{/pgf/number format/set decimal separator}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP
    \pgfkeysgetvalue{/pgf/number format/@dec sep mark}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK
    \pgfkeysgetvalue{/pgf/number format/set thousands separator}\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP
    \c@pgf@counta=#4\relax %
    \ifnum#2=0
        \c@pgf@counta=0
    \fi
    \def\pgfmathresult{}%
    \ifpgfmathfloatroundhasperiod
        \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@period#1\pgfmathfloat@EOI
    \else
        \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI%
        \begingroup
        \toks0=\expandafter{\pgfmathresult}%
        \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
        \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
        \endgroup
        \let\pgfmathresult=\pgfmathfloat@glob@TMP
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@period#1.#2\pgfmathfloat@EOI{%
    \ifpgfmathprintnumberskipzeroperiod
        \def\pgfmathfloat@loc@TMPb{#1}%
        \ifx\pgfmathfloatparsenumber@tok@ZERO\pgfmathfloat@loc@TMPb
        \else
            \def\pgfmathfloat@loc@TMPc{-0}%
            \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb
                \def\pgfmathresult{-}%
            \else
                \def\pgfmathfloat@loc@TMPc{+0}%
                \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb
                    \def\pgfmathresult{+}%
                \else
                    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI
                \fi
            \fi
        \fi
    \else
        \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI
    \fi
    \ifpgfmathprintnumber@thousand@sep@in@fractional
        \let\pgfmathresultfractional\pgfutil@empty%
        \pgfmathprintnumber@thousand@sep@in@fractional#2MMMM\@@
    \else
        \def\pgfmathresultfractional{#2}%
    \fi
    \begingroup
    \toks0=\expandafter{\pgfmathresult}%
    \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
    \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP}%
    \toks3=\expandafter{\pgfmathresultfractional}%
    \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 \the\toks3 }%
    \endgroup
    \let\pgfmathresult=\pgfmathfloat@glob@TMP
}%

\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod{%
    \ifx\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP\pgfutil@empty
        \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
            \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
    \else
        \ifnum\c@pgf@counta<0\relax %
            \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
                \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
        \else
            \ifnum\c@pgf@counta<\pgfkeysvalueof{/pgf/number format/min exponent for 1000 sep}\relax
                \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
                    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
            \else
                \advance\c@pgf@counta by1 %
                \c@pgf@countb=\c@pgf@counta
                \divide\c@pgf@countb by3 %
                \c@pgf@countc=\c@pgf@countb
                \multiply\c@pgf@countc by3
                \advance\c@pgf@counta by-\c@pgf@countc%
                \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
                    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printsign
                }%
            \fi
        \fi
    \fi
    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printsign#1{%
    \def\pgfmathfloat@loc@TMPb{#1}%
    \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@MINUS
        \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
        \let\pgfmathfloat@loc@TMPb=\pgfutil@empty
    \else
        \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@PLUS
            \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
            \let\pgfmathfloat@loc@TMPb=\pgfutil@empty
        \else
            \ifpgfmathprintnumber@showpositive
                \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult +}%
            \fi
        \fi
    \fi
    \ifnum\c@pgf@counta>0 %
        \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
            \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printtrailingdigits\pgfmathfloat@loc@TMPb
        }%
    \else
        \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
            \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird\pgfmathfloat@loc@TMPb
        }%
    \fi
    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printtrailingdigits#1#2{%
    \ifcase\c@pgf@counta %
    \or
        \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
        \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
            \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird#2%
        }%
    \or
        \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1#2}%
        \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
            \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird%
        }%
    \fi
    \ifnum\c@pgf@countb>0\relax %
        \begingroup
        \toks0=\expandafter{\pgfmathresult}%
        \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
        \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
        \endgroup
        \let\pgfmathresult=\pgfmathfloat@glob@TMP
    \fi
    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird#1#2#3{%
    \ifnum\c@pgf@countb>0\relax
        \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1#2#3}%
        \advance\c@pgf@countb by-1
        \ifnum\c@pgf@countb>0\relax
            \begingroup
            \toks0=\expandafter{\pgfmathresult}%
            \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
            \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
            \endgroup
            \let\pgfmathresult=\pgfmathfloat@glob@TMP
        \fi
        \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
            \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird%
        }%
    \else
        \let\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT=\relax
    \fi
    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}

\def\pgfmathprintnumber@thousand@sep@in@fractional#1#2#3#4{%
    \if#4M%
        \def\pgfmathprint@next{\pgfmathprintnumber@thousand@sep@in@fractional@finish#1#2#3#4}%
    \else
        \begingroup
        \toks0=\expandafter{\pgfmathresultfractional}%
        \toks1={#1#2#3}%
        \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
        \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 }%
        \endgroup
        \let\pgfmathresultfractional=\pgfmathfloat@glob@TMP
        \def\pgfmathprint@next{\pgfmathprintnumber@thousand@sep@in@fractional#4}%
    \fi
    \pgfmathprint@next
}%
\def\pgfmathprintnumber@thousand@sep@in@fractional@finish#1M{%
    \expandafter\def\expandafter\pgfmathresultfractional\expandafter{\pgfmathresultfractional #1}%
    \pgfmathprintnumber@thousand@sep@in@fractional@finish@
}%
\def\pgfmathprintnumber@thousand@sep@in@fractional@finish@#1\@@{}%

\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall#1{%
    \def\pgfmathfloat@loc@TMPb{#1}%
    \let\pgfmathfloat@loc@TMPc=\pgfutil@empty
    \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@MINUS
    \else
        \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@PLUS
        \else
            \ifpgfmathprintnumber@showpositive
                \def\pgfmathfloat@loc@TMPc{+}%
            \fi
        \fi
    \fi
    \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall@\pgfmathfloat@loc@TMPc#1%
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall@#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI{%
    \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
}%

\def\pgfmathprintnumber@fixed@stylePERIOD#1#2#3e#4\relax{%
    \def\pgfmathresult{#1}%
}

\def\pgfmathprintnumber@fixed@styleCOMMA#1#2#3e#4\relax{%
    \ifpgfmathfloatroundhasperiod
        \expandafter\pgfmathprintnumber@fixed@styleCOMMA@impl#1\pgfmathfloat@EOI
    \else
        \def\pgfmathresult{#1}%
    \fi
}
\def\pgfmathprintnumber@fixed@styleCOMMA@impl#1.#2\pgfmathfloat@EOI{\def\pgfmathresult{#1{,}#2}}


\let\pgfmathprintnumber@fixed@style=\pgfmathprintnumber@fixed@styleDEFAULT


\def\pgfmathfloatround#1{%
    \pgfmathfloatroundhasperiodtrue
    \begingroup
    \pgfmathfloat@fixed@digits@after@periodfalse
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \pgfmathfloatround@impl
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\def\pgfmathfloatroundzerofill#1{%
    \pgfmathfloatroundhasperiodtrue
    \begingroup
    \pgfmathfloat@fixed@digits@after@periodtrue
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \pgfmathfloatround@impl
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\newif\ifpgfmathfloatround@allow@empty@mantissa
\def\pgfmathfloatround@mantissa@ONE{1pt }%

\def\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax#4#5#6{%
    \pgfkeysgetvalue{/pgf/number format/@sci exponent mark}\pgfmathfloatrounddisplaystyle@e@mark
    \ifcase#1\relax
        \pgfmathprintnumber@fixed@style{#2}#1#2e0\relax%
        \expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
    \or
        \def\pgfmathfloat@loc@TMPa{1}%
        \ifpgfmathfloatround@allow@empty@mantissa
        \else
            \ifdim#2pt=\pgfmathfloatround@mantissa@ONE
                \def\pgfmathfloat@loc@TMPa{0}%
            \fi
        \fi
        \if1\pgfmathfloat@loc@TMPa
            \pgfmathprintnumber@fixed@style{#2}#1#2e0\relax%
            \expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
        \else
            \def\pgfmathfloat@loc@TMPa{0}%
            \pgfmathfloatrounddisplaystyle@shared@impl@{#5}{#6}%
        \fi
    \or
        \def\pgfmathfloat@loc@TMPa{1}%
        \ifpgfmathfloatround@allow@empty@mantissa
        \else
            \ifdim#2pt=\pgfmathfloatround@mantissa@ONE
                \def\pgfmathfloat@loc@TMPa{0}%
            \fi
        \fi
        \if1\pgfmathfloat@loc@TMPa
            \pgfmathprintnumber@fixed@style{-#2}#1#2e0\relax%
            \expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
        \else
            \def\pgfmathfloat@loc@TMPa{0}%
            \pgfmathfloatrounddisplaystyle@shared@impl@{-#5}{#6}%
        \fi
    \or
        \pgfmathfloatrounddisplaystyle@shared@impl@@{\hbox{NaN}}{}%
    \or
        \ifpgfmathprintnumber@showpositive
            \pgfmathfloatrounddisplaystyle@shared@impl@@{+\infty}{}%
        \else
            \pgfmathfloatrounddisplaystyle@shared@impl@@{\infty}{}%
        \fi
    \or
        \pgfmathfloatrounddisplaystyle@shared@impl@@{-\infty}{}%
    \fi
}

\def\pgfmathfloatrounddisplaystyle@shared@impl@#1#2{%
    \pgfmathprintnumber@begingroup
    \toks0={#1}%
    \toks1=\expandafter{\pgfmathfloatrounddisplaystyle@e@mark #2}%
    \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
    \pgfmathprintnumber@endgroup
    \let\pgfmathresult=\pgfmathfloat@glob@TMP
}%
\def\pgfmathfloatrounddisplaystyle@shared@impl@@#1#2{%
    \pgfmathprintnumber@begingroup
    \toks0={#1}%
    \toks1=\expandafter{\pgfmathfloatrounddisplaystyle@e@mark #2}%
    \pgfkeysgetvalue{/pgf/number format/@dec sep mark}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK
    \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
    \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 }%
    \pgfmathprintnumber@endgroup
    \let\pgfmathresult=\pgfmathfloat@glob@TMP
}

\def\pgfmathfloatrounddisplaystyle@std#1#2e#3\relax{%
    \pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{\cdot}{}{10^{#3}}%
}
\def\pgfmathfloatrounddisplaystyle@subscript#1#2e#3\relax{%
    \pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}{_{#3}}%
}
\def\pgfmathfloatrounddisplaystyle@superscript#1#2e#3\relax{%
    \pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}{^{#3}}%
}
\def\pgfmathfloatrounddisplaystyle@e#1#2e#3\relax{%
    \ifnum#3<0\relax
        \pgfmathprintnumber@begingroup
        \count0=#3\relax
        \multiply\count0 by-1
        \xdef\pgfmathfloat@glob@TMP{e{-}\the\count0}%
        \pgfmathprintnumber@endgroup%
        \let\pgfmathresult=\pgfmathfloat@glob@TMP
    \else
        \def\pgfmathresult{e{+}#3}%
    \fi
    \def\pgfmathfloat@loc@TMPb{\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}}%
    \expandafter\pgfmathfloat@loc@TMPb\expandafter{\pgfmathresult}%
}
\def\pgfmathfloatrounddisplaystyle@E#1#2e#3\relax{%
    \ifnum#3<0\relax
        \pgfmathprintnumber@begingroup
        \count0=#3\relax
        \multiply\count0 by-1
        \xdef\pgfmathfloat@glob@TMP{E{-}\the\count0}%
        \pgfmathprintnumber@endgroup%
        \let\pgfmathresult=\pgfmathfloat@glob@TMP
    \else
        \def\pgfmathresult{E{+}#3}%
    \fi
    \def\pgfmathfloat@loc@TMPb{\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}}%
    \expandafter\pgfmathfloat@loc@TMPb\expandafter{\pgfmathresult}%
}

\def\pgfmathfloatrounddisplaystyle@generic#1#2e#3\relax{%
    \begingroup
    \pgfkeysvalueof {/pgf/number format/sci generic/@/.@cmd}{#3}{#1}{#2}\pgfeov
    \pgfkeysgetvalue{/pgf/number format/sci generic/mantissa sep}\pgfmathdisplay@aftermantissa
    \pgfkeysgetvalue{/pgf/number format/sci generic/empty mantissa sep}\pgfmathdisplay@nomantissa
    \pgfkeysgetvalue{/pgf/number format/sci generic/exponent}\pgfmathdisplay@e
    \toks0=\expandafter{\pgfmathdisplay@aftermantissa}%
    \toks1=\expandafter{\pgfmathdisplay@nomantissa}%
    \toks2=\expandafter{\pgfmathdisplay@e}%
    \xdef\pgfmathfloat@glob@TMP{\noexpand\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\noexpand\relax{\the\toks0}{\the\toks1}{\the\toks2}}%
    \endgroup
    \pgfmathfloat@glob@TMP
}

\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std
\newif\ifpgfmathfloat@usezerofill@sci
\newif\ifpgfmathfloat@usezerofill@fixed
\newif\ifpgfmathprintnumber@assumemathmode
\newif\ifpgfmathprintnumber@showpositive
\newif\ifpgfmathprintnumber@frac@warn
\newif\ifpgfmathprintnumber@frac@whole
\newif\ifpgfmathparsenumber@comma@as@period

\long\def\pgfmathfloatfrac@verbatim#1#2{#1/#2}%

\let\pgfmathround@@orig=\pgfmathround@

\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{2}%

\newif\ifpgfmathprintnumber@thousand@sep@in@fractional
\pgfkeys{%
    /pgf/number format/.is family,
    /pgf/number format,
    fixed/.code=           \pgfmath@set@number@printer{pgfmathprintnumber@FIXED},
    sci/.code=             \pgfmath@set@number@printer{pgfmathprintnumber@SCI},
    std/.code=             {\pgfmath@set@number@printer{pgfmathprintnumber@STD}\pgfmathprintnumber@STD@setparam{#1}},
    std/.default=,%
    relative round mode/.is choice,
    relative round mode/fixed/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{1}},
    relative round mode/mantissa/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{0}},
    relative round mode/compatible/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{2}},
    relative/.code={%
        \pgfmath@set@number@printer{pgfmathprintnumber@RELATIVE}%
        \pgfmathround@@orig{#1}%
        \expandafter\pgfmathfloattoint@@\pgfmathresult\relax
        \let\pgfmathprintnumber@RELATIVE@param=\pgfmathresult
    },%
    relative/.value required,
    relative*/.style={/pgf/number format/relative={#1},/pgf/number format/relative round mode=fixed},
    every relative/.style=std,
    relative style/.style={/pgf/number format/every relative/.append style={#1}},
    fixed relative/.code=  \pgfmath@set@number@printer{pgfmathprintnumber@FIXED@RELATIVE},
    int detect/.code=      \pgfmath@set@number@printer{pgfmathprintnumber@INT@DETECT},
    int trunc/.code=       \pgfmath@set@number@printer{pgfmathprintnumber@INT@TRUNC},
    frac/.code=            \pgfmath@set@number@printer{pgfmathprintnumber@frac},%
    frac TeX/.initial=\frac,
    frac whole format/.code={\def\pgfmathresult{#1}},
    frac denom/.initial=,
    frac whole/.is if=pgfmathprintnumber@frac@whole,
    frac whole=true,
    frac shift/.initial=4,
    frac warning/.is if=pgfmathprintnumber@frac@warn,
    frac warning=true,
    assume math mode/.is if=pgfmathprintnumber@assumemathmode,
    assume math mode/.default=true,
    fixed zerofill/.is if= pgfmathfloat@usezerofill@fixed,
    fixed zerofill/.default=true,
    sci zerofill/.is if=   pgfmathfloat@usezerofill@sci,
    sci zerofill/.default=true,
    zerofill/.style=       {/pgf/number format/fixed zerofill={#1},/pgf/number format/sci zerofill={#1}},
    zerofill/.default=     true,
    precision/.store in=   \pgfmathfloat@round@precision,
    sci precision/.code={%
        \edef\pgfmathfloat@loc@TMPa{#1}%
        \ifx\pgfmathfloat@loc@TMPa\pgfutil@empty
            \def\pgfmathprintnumber@sci@precision{\pgfmathfloat@round@precision}%
        \else
            \let\pgfmathprintnumber@sci@precision=\pgfmathfloat@loc@TMPa
        \fi
    },%
    sci precision/.default=,
    sci precision=,
    fixed default/.code=   {\let\pgfmathprintnumber@fixed@style=\pgfmathprintnumber@fixed@styleDEFAULT},
    set decimal separator/.initial=,
    dec sep/.style={/pgf/number format/set decimal separator={#1}},
    @dec sep mark/.initial=,
    @sci exponent mark/.initial=,
    set thousands separator/.initial=,
    1000 sep in fractionals/.is if=pgfmathprintnumber@thousand@sep@in@fractional,
    1000 sep in fractionals/.default=true,
    1000 sep/.style={/pgf/number format/set thousands separator={#1}},
    min exponent for 1000 sep/.initial=0,
    use period/.style=     {/pgf/number format/set decimal separator={.},/pgf/number format/set thousands separator={{{,}}}},
    use comma/.style=      {/pgf/number format/set decimal separator={{{,}}},/pgf/number format/set thousands separator={.}},
    showpos/.is if=pgfmathprintnumber@showpositive,
    showpos/.default=true,
    print sign/.is if=pgfmathprintnumber@showpositive,
    print sign/.default=true,
    read comma as period/.is if=pgfmathparsenumber@comma@as@period,
    read comma as period/.default=true,
    skip 0./.is if=pgfmathprintnumberskipzeroperiod,
    skip 0./.default=true,
    skip 0.= false,
    use period,
    sci 10^e/.code=        {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std},
    sci 10e/.code=         {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std},
    sci e/.code=           {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@e},
    sci E/.code=           {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@E},
    sci subscript/.code=   {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@subscript},
    sci superscript/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@superscript},
    sci generic/.code=     {%
        \let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@generic
        \pgfkeysdefargs{/pgf/number format/sci generic/@}%
            {##1##2##3}%
            {\pgfqkeys{/pgf/number format/sci generic}{#1}}%
    },
    sci generic/mantissa sep/.initial=,%
    sci generic/empty mantissa sep/.initial=,%
    sci generic/mantisse sep/.style={/pgf/number format/sci generic/mantissa sep={#1}},%
    sci generic/empty mantisse sep/.style={/pgf/number format/sci generic/empty mantissa sep={#1}},%
    sci generic/exponent/.initial=,%
    sci generic/.value required,
    verbatim/.code={%
        \pgfqkeys{/pgf/number format}{%
            sci generic={mantissa sep=,exponent={e##1}},
            1000 sep=,
            skip 0.=false,
            print sign=false,
            dec sep=.,
            assume math mode,
            frac TeX=\pgfmathfloatfrac@verbatim,
            frac whole format/.code={\def\pgfmathresult{##1 }},
            @dec sep mark=,
            @sci exponent mark=,
        }%
    },
    retain unit mantissa/.is if=pgfmathfloatround@allow@empty@mantissa,
    retain unit mantissa/.default=true,
    retain unit mantissa=true,
    implementation/.code={\def\pgfmathprintnumber@protected{#1}},
}



\def\pgfmathprintnumber@STD#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@STD@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@STD@setparam#1{%
    \edef\pgfmathfloat@loc@TMPb{#1}%
    \ifx\pgfmathfloat@loc@TMPb\pgfutil@empty
        \def\pgfmathprintnumber@STD@getlowerbound{%
            \c@pgf@counta=\pgfmathfloat@round@precision@orig\relax
            \divide\c@pgf@counta by-2\relax
        }%
        \def\pgfmathprintnumber@STD@upperbound{4}%
    \else
        \expandafter\pgfutil@in@\expandafter:\expandafter{\pgfmathfloat@loc@TMPb}%
        \ifpgfutil@in@
            \def\pgfmathfloat@loc@TMPa##1:##2\relax{%
                \edef\pgfmathprintnumber@STD@getlowerbound{%
                    \noexpand\c@pgf@counta=##1\space
                }%
                \edef\pgfmathprintnumber@STD@upperbound{##2}%
            }%
            \expandafter\pgfmathfloat@loc@TMPa\pgfmathfloat@loc@TMPb\relax
        \else
            \def\pgfmathprintnumber@STD@upperbound{4}%
            \edef\pgfmathprintnumber@STD@getlowerbound{%
                \noexpand\c@pgf@counta=\pgfmathfloat@loc@TMPb\space
            }%
        \fi
    \fi
}%

\def\pgfmathprintnumber@STD@issci#1#2e#3\relax{%
    \expandafter\ifnum#1<3
        \expandafter\ifnum#3>\pgfmathprintnumber@STD@upperbound\relax
            \pgfmathprintnumber@SCI@issci#1#2e#3\relax%
        \else
            \begingroup
            \pgfmathprintnumber@STD@getlowerbound
            \ifnum#3<\c@pgf@counta
                \pgfmathprintnumber@SCI@issci#1#2e#3\relax%
            \else
                \pgfmathprintnumber@FIXED@issci#1#2e#3\relax%
            \fi
            \pgfmath@smuggleone\pgfmathresult
            \endgroup
        \fi
    \else%
        \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
    \fi
}

\def\pgfmathprintnumber@RELATIVE#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@RELATIVE@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn{%
    \pgf@typeout{! Package pgf warning: the use of /pgf/number format/relative is discouraged (buggy). Please use 'relative*' instead or type \string\pgfkeys{/pgf/number format/relative round mode=fixed} into your preamble.}%
    \global\let\pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn=\relax
}

\def\pgfmathprintnumber@RELATIVE@issci#1#2e#3\relax{%
    \begingroup
        \c@pgf@counta=#3\relax
        \advance\c@pgf@counta by-\pgfmathprintnumber@RELATIVE@param\relax
        \pgfmathfloatcreate{#1}{#2}{\the\c@pgf@counta}%
        \if0\pgfmathprintnumber@RELATIVE@choice@roundtofixed
            \def\b@round@fixed{0}%
        \else
            \if1\pgfmathprintnumber@RELATIVE@choice@roundtofixed
                \def\b@round@fixed{1}%
            \else
                \pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn
                \ifnum\c@pgf@counta>0
                    \def\b@round@fixed{0}%
                \else
                    \def\b@round@fixed{1}%
                \fi
            \fi
        \fi
        \if1\b@round@fixed
            \pgfmathfloattofixed\pgfmathresult
            \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
            \pgfmathfloatparsenumber{\pgfmathresult}%
            \pgfmathfloatroundhasperiodtrue%
        \else
            \expandafter\pgfmathfloatround\expandafter{\pgfmathresult}%
        \fi
        \pgfmathfloattoregisterstok\pgfmathresult\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
        \ifnum\pgfmathfloat@a@S=0
            \pgfmathfloat@a@E=\pgfmathfloat@a@S %
        \else
            \advance\pgfmathfloat@a@E by+\pgfmathprintnumber@RELATIVE@param\relax
        \fi
        \edef\pgfmathresultX{%
            \the\pgfmathfloat@a@S
            \the\pgfmathfloat@a@Mtok
            \ifpgfmathfloatroundhasperiod\else.0\fi
            e\the\pgfmathfloat@a@E}%
        \pgfqkeys{/pgf/number format}{/pgf/number format/every relative,
            fixed zerofill=false,%
            sci zerofill=false}%
        \ifx\pgfmathprintnumber@issci\pgfmathprintnumber@RELATIVE@issci
            \pgfmath@error{The '/pgf/number format/every relative' style should set a valid display style}{}%
        \fi
        \let\pgfmathfloat@round@precision@orig=\pgfmathfloat@round@precision
        \def\pgfmathfloat@round@precision{9999}%
        \expandafter\pgfmathprintnumber@issci\pgfmathresultX\relax%
        \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\def\pgfmathprintnumber@FIXED@RELATIVE#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@FIXED@RELATIVE@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@FIXED@RELATIVE@issci#1#2e#3\relax{%
    \begingroup
    \pgfmathfloatcreate{#1}{#2}{#3}%
    \c@pgf@counta=\pgfmathfloat@round@precision\relax
    \advance\c@pgf@counta by-1
    \edef\pgfmathfloat@round@precision{\the\c@pgf@counta}%
    \pgfmathfloatround{\pgfmathresult}%
    \pgfmathfloattoregisterstok\pgfmathresult\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \ifnum\pgfmathfloat@a@S=0
        \pgfmathfloat@a@E=\pgfmathfloat@a@S %
    \fi
    \edef\pgfmathresultX{%
        \the\pgfmathfloat@a@S
        \the\pgfmathfloat@a@Mtok
        \ifpgfmathfloatroundhasperiod\else.0\fi
        e\the\pgfmathfloat@a@E}%
    \let\pgfmathfloat@round@precision@orig=\pgfmathfloat@round@precision
    \pgfmathfloat@usezerofill@fixedfalse
    \def\pgfmathfloat@round@precision{9999}%
    \expandafter\pgfmathprintnumber@FIXED@issci\pgfmathresultX\relax%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\def\pgfmathprintnumber@frac#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloatgetfrac{\pgfmathresult}%
    \expandafter\pgfmathprintnumber@frac@formatresult\pgfmathresult
}
\def\pgfmathprintnumber@frac@issci#1#2e#3\relax{%
    \pgfmathfloatcreate{#1}{#2}{#3}%
    \pgfmathfloatgetfrac{\pgfmathresult}%
    \expandafter\pgfmathprintnumber@frac@formatresult\pgfmathresult
}
\def\pgfmathprintnumber@frac@formatresult#1#2#3{%
    \begingroup
    \pgfkeysgetvalue{/pgf/number format/frac TeX}\pgfmathresult
    \toks0=\expandafter{\pgfmathresult}%
    \def\pgfmathfloat@loc@TMPa{#1}%
    \ifx\pgfmathfloat@loc@TMPa\pgfutil@empty
        \ifpgfmathprintnumber@showpositive
            \def\pgfmathfloat@loc@TMPa{+}%
        \fi
    \else
        \ifx\pgfmathfloat@loc@TMPa-%
        \else
            \ifx\pgfmathfloat@loc@TMPa+%
            \else
                \ifpgfmathprintnumber@showpositive
                    \edef\pgfmathfloat@loc@TMPa{+\pgfmathfloat@loc@TMPa}%
                \fi
                \def\pgfmathfloat@loc@TMPb{\pgfkeysvalueof{/pgf/number format/frac whole format/.@cmd}}%
                \expandafter\pgfmathfloat@loc@TMPb\pgfmathfloat@loc@TMPa\pgfeov
                \let\pgfmathfloat@loc@TMPa=\pgfmathresult
            \fi
        \fi
    \fi
    \toks1=\expandafter{\pgfmathfloat@loc@TMPa}%
    \edef\pgfmathresult{%
        \the\toks1 \ifnum#2=0 \else\the\toks0 {#2}{#3}\fi%
    }%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

\def\pgfmathfloatgetfrac#1{%
    \pgfutil@ifundefined{pgfmathfloatmultiply@}{%
        \pgfmath@error{Sorry, the number format 'frac' requires '\string\usetikzlibrary{fpu}' (and, optionally, \string\usepackage{fp}) in order to work correctly}{}%
        \edef\pgfmathresult{{#1}{0}{1}}%
    }{%
        \pgfmathfloatgetfrac@{#1}%
    }%
}%
\def\pgfmathfloatgetfrac@#1{%
    \begingroup
        \edef\pgfmathfloat@arg{#1}%
        \expandafter\pgfmathfloat@decompose@tok\pgfmathfloat@arg\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
        \def\pgfmathfloat@loc@TMPa{0}%
        \ifcase\pgfmathfloat@a@S
            \def\pgfmathresult{{0}{0}{1}}%
        \or%
            \pgfmathfloat@a@S=1
            \def\pgfmathfloat@loc@TMPa{1}%
        \or%
            \pgfmathfloat@a@S=-1
            \def\pgfmathfloat@loc@TMPa{1}%
        \or
            \edef\pgfmathresult{{}{NaN}{1}}%
        \or
            \edef\pgfmathresult{{}{\infty}{1}}%
        \or
            \edef\pgfmathresult{{-}{\infty}{1}}%
        \fi
        \if1\pgfmathfloat@loc@TMPa
            \ifnum\pgfmathfloat@a@E<0
                \def\pgfmathfloat@wholenumber{}%
            \else
                \pgfmathfloatcreate{1}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
                \pgfmathfloattofixed\pgfmathresult%
                \def\pgfmathfloat@loc@TMPa##1.##2\relax{%
                    \def\pgfmathfloat@wholenumber{##1}%
                    \pgfmathfloatparsenumber{0.##2}%
                }%
                \expandafter\pgfmathfloat@loc@TMPa\pgfmathresult\relax
                \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@b@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
            \fi
            \def\pgfmathfloat@loc@TMPa##1.##2\relax{%
                \def\pgfmathfloat@mantissa@first{##1}%
                \def\pgfmathfloat@mantissa@ltone{0.##2}%
            }%
            \expandafter\pgfmathfloat@loc@TMPa\the\pgfmathfloat@a@Mtok\relax
            \def\pgfmathfloat@loc@@to@int##1.##2\relax##3{%
                ##3=##1
                \ifdim0.##2pt>0.5pt
                    \advance##3 by1
                \fi
            }%
            \let\pgfmathresultnumerator=\pgfmathfloat@b@S
            \let\pgfmathresultdenom=\pgfmathfloat@b@E
            \pgfkeysgetvalue{/pgf/number format/frac denom}\pgfmath@target@denominator
            \ifx\pgfmath@target@denominator\pgfutil@empty
                \pgfmathfloat@a@E=-\pgfmathfloat@a@E
                \ifdim\pgfmathfloat@mantissa@ltone pt=0pt
                    \def\pgfmathfloat@factor{1}%
                    \edef\pgfmathfloat@scaled@numerator{\the\pgfmathfloat@a@Mtok}%
                \else
                    \pgfutil@ifundefined{FPdiv}{%
                        \pgfmathfloatparsenumber{\pgfmathfloat@mantissa@ltone}%
                        \pgfmathfloatreciprocal@{\pgfmathresult}%
                    }{%
                        \FPmessagesfalse%
                        \FPdebugfalse%
                        \FPdiv\pgfmathresult{1}{\pgfmathfloat@mantissa@ltone}%
                        \pgfmathfloatparsenumber{\pgfmathresult}%
                    }%
                    \let\pgfmathfloat@inv=\pgfmathresult
                    \pgfmathfloatcreate{1}{1.0}{\pgfkeysvalueof{/pgf/number format/frac shift}}%
                    \let\pgfmathfloat@scalebaseten=\pgfmathresult
                    \pgfmathfloatmultiply@{\pgfmathfloat@inv}{\pgfmathfloat@scalebaseten}%
                    \let\pgfmathfloat@factor=\pgfmathresult
                    \expandafter\pgfmathfloatparsenumber\expandafter{\the\pgfmathfloat@a@Mtok}%
                    \let\pgfmathfloat@loc@TMPa=\pgfmathresult
                    \pgfmathfloatmultiply@{\pgfmathfloat@factor}{\pgfmathfloat@loc@TMPa}%
                    \pgfmathfloattofixed\pgfmathresult
                    \let\pgfmathfloat@scaled@numerator=\pgfmathresult
                    \pgfmathfloattofixed\pgfmathfloat@factor
                    \expandafter\pgfmathfloat@loc@@to@int\pgfmathresult\relax{\pgfmathfloat@b@S}%
                    \edef\pgfmathfloat@factor{\the\pgfmathfloat@b@S}%
                \fi
                \pgfmathresultdenom=\pgfmathfloat@factor\relax
                \pgfmathfloat@multiply@ten@to@the@E\pgfmathresultdenom
                \expandafter\pgfmathfloat@loc@@to@int\pgfmathfloat@scaled@numerator\relax{\pgfmathresultnumerator}%
                \pgfmathgreatestcommondivisor{\pgfmathresultnumerator}{\pgfmathresultdenom}%
                \divide\pgfmathresultnumerator by\pgfmathresult\relax
                \divide\pgfmathresultdenom by\pgfmathresult\relax
                \ifpgfmathprintnumber@frac@warn
                    \ifnum\pgfmathresultdenom>1000
                        \pgfutil@ifundefined{FPdiv}{%
                            \pgfmathfloattosci@\pgfmathfloat@arg
                            \pgf@typeout{! Package pgf /pgf/number format/frac warning=true: /pgf/number format/frac of `\pgfmathresult' = \the\pgfmathresultnumerator\space / \the\pgfmathresultdenom\space might be large due to instabilities. Try \string\usepackage{fp} to improve accuracy.}%
                        }{}%
                    \fi
                \fi
            \else
                \pgfmathresultdenom=\pgfmath@target@denominator\relax
                \pgfmathfloatcreate{1}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
                \pgfmathfloattofixed\pgfmathresult
                \pgf@xa=\pgfmathresult pt
                \multiply\pgf@xa by\pgfmathresultdenom
                \edef\pgfmathfloat@scaled@numerator{\pgfmath@tonumber\pgf@xa}%
                \expandafter\pgfmathfloat@loc@@to@int\pgfmathfloat@scaled@numerator\relax{\pgfmathresultnumerator}%
            \fi
            \ifpgfmathprintnumber@frac@whole
            \else
                \ifx\pgfmathfloat@wholenumber\pgfutil@empty
                \else
                    \count0=\pgfmathfloat@wholenumber\relax
                    \multiply\count0 by\pgfmathresultdenom
                    \advance\pgfmathresultnumerator by\count0
                    \def\pgfmathfloat@wholenumber{}%
                \fi
            \fi
            \ifnum\pgfmathfloat@a@S<0
                \edef\pgfmathresult{{-\pgfmathfloat@wholenumber}{\the\pgfmathresultnumerator}{\the\pgfmathresultdenom}}%
            \else
                \edef\pgfmathresult{{\pgfmathfloat@wholenumber}{\the\pgfmathresultnumerator}{\the\pgfmathresultdenom}}%
            \fi
        \fi
        \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\def\pgfmathfloat@gobble@until@relax#1\relax{}

\def\pgfmathgreatestcommondivisor#1#2{%
    \begingroup
        \count0=#1\relax
        \count1=#2\relax
        \ifnum\count0=0
            \edef\pgfmathresult{\the\count1}%
        \else
            \pgfmathgreatestcommondivisor@loop
            \edef\pgfmathresult{\the\count0}%
        \fi
        \pgfmath@smuggleone\pgfmathresult
    \endgroup
}
\def\pgfmathgreatestcommondivisor@loop{%
    \ifnum\count1=0
    \else
        \ifnum\count0>\count1
            \advance\count0 by-\count1
        \else
            \advance\count1 by-\count0
        \fi
        \expandafter\pgfmathgreatestcommondivisor@loop
    \fi
}%

\def\pgfmathfloat@multiply@ten@to@the@E#1{%
    \ifnum\pgfmathfloat@a@E>0
        \multiply#1 by10
        \advance\pgfmathfloat@a@E by-1
        \def\pgfmathfloat@multiply@ten@to@the@E@next{\pgfmathfloat@multiply@ten@to@the@E{#1}}%
    \else
        \let\pgfmathfloat@multiply@ten@to@the@E@next=\relax%
    \fi
    \pgfmathfloat@multiply@ten@to@the@E@next
}%

\def\pgfmathprintnumber@INT@TRUNC#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@INT@TRUNC@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@INT@TRUNC@impl#1.#2\relax#3#4e#5\relax{%
    \pgfmathfloatroundhasperiodfalse
    \pgfmathprintnumber@fixed@style{#1}#3#4e#5\relax%
}
\def\pgfmathprintnumber@INT@TRUNC@issci#1#2e#3\relax{%
    \ifnum#1<3\relax
        \pgfmathfloatcreate{#1}{#2}{#3}%
        \pgfmathfloattofixed{\pgfmathresult}%
        \expandafter\pgfmathprintnumber@INT@TRUNC@impl\pgfmathresult\relax#1#2e#3\relax
    \else
        \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
    \fi
}

\def\pgfmathifisint#1#2#3{%
    \gdef\pgfmathfloatisint@@{0}%
    \begingroup
    \pgfmathfloatparsenumber{#1}%
    \let\pgfretval\pgfmathresult
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathfloatisint@\pgfmathresult\relax
    \pgfmath@smuggleone\pgfretval
    \endgroup
    \if1\pgfmathfloatisint@@ #2\else #3\fi
}%
\def\pgfmathfloatisint@#1#2e#3\relax{%
    \ifnum#1<3\relax
        \pgfmathfloatcreate{#1}{#2}{#3}%
        \pgfmathfloattofixed{\pgfmathresult}%
        \def\pgfmathfloat@round@precision{6}%
        \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
        \ifpgfmathfloatroundhasperiod
        \else
            \let\pgfretval\pgfmathresult%
            \gdef\pgfmathfloatisint@@{1}%
        \fi
    \fi
}

\def\pgfmathprintnumber@INT@DETECT#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@INT@DETECT@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@INT@DETECT@issci#1#2e#3\relax{%
    \begingroup
    \ifnum#1<3\relax
        \pgfmathfloatcreate{#1}{#2}{#3}%
        \pgfmathfloattofixed{\pgfmathresult}%
        \let\pgfmathfloat@round@precision@=\pgfmathfloat@round@precision
        \def\pgfmathfloat@round@precision{6}%
        \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
        \let\pgfmathfloat@round@precision=\pgfmathfloat@round@precision@
        \ifpgfmathfloatroundhasperiod
            \pgfmathprintnumber@SCI@issci#1#2e#3\relax
        \else
            \expandafter\pgfmathprintnumber@fixed@style\expandafter{\pgfmathresult}#1#2e#3\relax
        \fi
    \else
        \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\def\pgfmathprintnumber@FIXED#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@FIXED@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@FIXED@issci#1#2e#3\relax{%
    \begingroup
    \ifnum#1<3
        \pgfmathfloatcreate{#1}{#2}{#3}%
        \pgfmathfloattofixed{\pgfmathresult}%
        \ifpgfmathfloat@usezerofill@fixed
            \expandafter\pgfmathroundtozerofill\expandafter{\pgfmathresult}%
        \else
            \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
        \fi
        \ifpgfmathfloatroundmayneedrenormalize
            \pgfmathfloat@a@E=#3\relax
            \advance\pgfmathfloat@a@E by1
            \edef\pgfmathfloat@loc@TMPb{\noexpand\pgfmathprintnumber@fixed@style{\pgfmathresult}#1#2e\the\pgfmathfloat@a@E}%
            \pgfmathfloat@loc@TMPb\relax%
        \else
            \expandafter\pgfmathprintnumber@fixed@style\expandafter{\pgfmathresult}#1#2e#3\relax%
        \fi
    \else%
        \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}


\def\pgfmathprintnumber@SCI#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@SCI@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@SCI@issci#1#2e#3\relax{%
    \begingroup
    \pgfmathfloatcreate{#1}{#2}{#3}%
    \edef\pgfmathfloat@round@precision{\pgfmathprintnumber@sci@precision}%
    \ifpgfmathfloat@usezerofill@sci
        \pgfmathfloatroundzerofill{\pgfmathresult}%
    \else
        \pgfmathfloatround{\pgfmathresult}%
    \fi
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathfloatrounddisplaystyle\pgfmathresult\relax
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\pgfutil@protected\def\pgfmathprintnumber{%
    \pgfutil@ifnextchar[%
        {\pgfmathprintnumber@OPT}%
        {\pgfmathprintnumber@noopt}%
}

\def\pgfmathprintnumber@noopt#1{%
    \pgfmathprintnumber@{#1}%
    \ifpgfmathprintnumber@assumemathmode
        \pgfmathresult
    \else
        \pgfutilensuremath{\pgfmathresult}%
    \fi
}%
\def\pgfmathprintnumber@OPT[#1]#2{%
    \begingroup
    \pgfqkeys{/pgf/number format}{#1}%
    \pgfmathprintnumber@{#2}%
    \ifpgfmathprintnumber@assumemathmode
        \pgfmathresult
    \else
        \pgfutilensuremath{\pgfmathresult}%
    \fi
    \endgroup
}%

\def\pgfmathprintnumberto{%
    \pgfutil@ifnextchar[%
        {\pgfmathprintnumberto@OPT}%
        {\pgfmathprintnumberto@noopt}%
}

\def\pgfmathprintnumberto@noopt#1#2{%
    \begingroup
    \pgfmathprintnumber@{#1}%
    \ifpgfmathprintnumber@assumemathmode
        \global\let\pgfmathfloat@glob@TMP=\pgfmathresult
    \else
        \toks0=\expandafter{\pgfmathresult}%
        \xdef\pgfmathfloat@glob@TMP{\noexpand\pgfutilensuremath{\the\toks0 }}%
    \fi
    \endgroup
    \let#2=\pgfmathfloat@glob@TMP
}%
\def\pgfmathprintnumberto@OPT[#1]#2#3{%
    \begingroup
    \pgfqkeys{/pgf/number format}{#1}%
    \pgfmathprintnumber@{#2}%
    \ifpgfmathprintnumber@assumemathmode
        \global\let\pgfmathfloat@glob@TMP=\pgfmathresult
    \else
        \toks0=\expandafter{\pgfmathresult}%
        \xdef\pgfmathfloat@glob@TMP{\noexpand\pgfutilensuremath{\the\toks0 }}%
    \fi
    \endgroup
    \let#3=\pgfmathfloat@glob@TMP
}%


\def\pgfmath@set@number@printer#1{%
    \expandafter\let\expandafter\pgfmathprintnumber@\csname #1\endcsname
    \expandafter\let\expandafter\pgfmathprintnumber@issci\csname #1@issci\endcsname
}

\pgfkeys{/pgf/number format/std}


\def\pgfmathfloat@EOI{\pgfmathfloat@EOI}%

\let\c@pgfmathroundto@prec=\pgfmathfloat@b@S%
\let\c@pgfmathroundto@offsetbehindperiod=\pgfmathfloat@b@E
\newcount\c@pgfmathroundto@lastzeros

\newif\ifpgfmathround@impl@PREPERIOD@is@negative@zero

\def\pgfmathroundto@impl#1{%
    \edef\pgfmathround@input{#1}%
    \global\pgfmathfloatroundmayneedrenormalizefalse
    \pgfmathfloat@tmptoks={}%
    \let\pgfmathround@next=\pgfutil@empty
    \let\pgfmathround@cur=\pgfutil@empty
    \let\pgfmathresult=\pgfutil@empty
    \expandafter\c@pgfmathroundto@prec\pgfmathfloat@round@precision\relax
    \c@pgfmathroundto@lastzeros=0
    \c@pgfmathroundto@offsetbehindperiod=-1 %
    \pgfmathround@impl@PREPERIOD@is@negative@zerotrue
    \expandafter\pgfmathroundto@impl@ITERATE@NODOT@firstcall\pgfmathround@input\pgfmathfloat@EOI
}


\def\pgfmathroundto@impl@discard@period#1.#2\pgfmathfloat@EOI{%
    \pgfmathfloatroundhasperiodfalse
    \aftergroup\pgfmathfloatroundhasperiodfalse
    \def\pgfmathresult{#1}%
}

\def\pgfmathroundto@impl@gobble@rest@and@start#1\pgfmathfloat@EOI{%
    \pgfmathroundto@impl@start
}
\def\pgfmathroundto@impl@gobble@and@start\pgfmathfloat@EOI{%
    \pgfmathroundto@impl@start
}
\def\pgfmathroundto@impl@gobble\pgfmathfloat@EOI{}%
\def\pgfmathroundto@impl@gobble@rest#1\pgfmathfloat@EOI{}%

\def\pgfmathroundto@impl@start{%
    \ifx\pgfmathround@next\pgfutil@empty
        \ifnum\c@pgfmathroundto@offsetbehindperiod<0
            \ifpgfmathfloat@fixed@digits@after@period
                \ifnum\c@pgfmathroundto@prec=0\relax
                    \pgfmathfloatroundhasperiodfalse
                    \aftergroup\pgfmathfloatroundhasperiodfalse
                    \edef\pgfmathresult{\pgfmathround@input}%
                \else
                    \pgfmathfloat@tmptoks=\expandafter{\pgfmathround@input.}%
                    \c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
                    \pgfmathroundto@impl@append@zeros
                    \edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
                \fi
            \else
                \pgfmathfloatroundhasperiodfalse
                \aftergroup\pgfmathfloatroundhasperiodfalse
                \edef\pgfmathresult{\pgfmathround@input}%
            \fi
        \else
            \pgfmathroundto@impl@finish@with@truncation
        \fi
    \else
        \expandafter\ifnum\pgfmathround@next<5\relax
            \pgfmathroundto@impl@finish@with@truncation
        \else
            \multiply\c@pgfmathroundto@offsetbehindperiod by-1
            \expandafter\pgfmathroundto@impl@ADD@ONE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
        \fi
    \fi
}

\def\pgfmathroundto@impl@finish@with@truncation{%
    \ifpgfmathfloat@fixed@digits@after@period
        \expandafter\pgfmathroundto@impl@REVERSE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
        \ifnum\c@pgfmathroundto@lastzeros=\c@pgfmathroundto@offsetbehindperiod
            \ifpgfmathround@impl@PREPERIOD@is@negative@zero
                \expandafter\pgfmathroundto@impl@discard@minus\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
            \fi
        \fi
        \ifnum\c@pgfmathroundto@prec=0\relax
            \expandafter\pgfmathroundto@impl@discard@period\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
        \else
            \advance\c@pgfmathroundto@prec by-\c@pgfmathroundto@offsetbehindperiod
            \c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
            \pgfmathroundto@impl@append@zeros
            \edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
        \fi
    \else
        \pgfmathroundto@impl@discard@suffix@zeros
    \fi
}

\def\pgfmathroundto@impl@discard@minus-#1\pgfmathfloat@EOI{\pgfmathfloat@tmptoks={#1}}%

\def\pgfmathroundto@impl@append@zeros{%
    \ifnum\c@pgfmathroundto@offsetbehindperiod>0
        \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
        \advance\c@pgfmathroundto@offsetbehindperiod by-1
        \pgfmathroundto@impl@append@zeros
    \fi
}

\def\pgfmathroundto@impl@ADD@ONE{%
    \pgfmathfloat@tmptoks={}%
    \pgfmathroundto@impl@ADD@ONE@ITERATE
}
\def\pgfmathroundto@impl@ADD@ONE@ITERATE{%
    \pgfutil@ifnextchar\pgfmathfloat@EOI{%
        \global\pgfmathfloatroundmayneedrenormalizetrue
        \edef\pgfmathresult{1\the\pgfmathfloat@tmptoks}%
        \pgfmathroundto@impl@gobble
    }{%
        \pgfutil@ifnextchar.{%
            \ifnum\c@pgfmathroundto@prec=0
                \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot}%
            \else
                \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@NEXT@COLLECT}%
            \fi
            \pgfmathround@nextcmd
        }{%
            \pgfutil@ifnextchar+{%
                \global\pgfmathfloatroundmayneedrenormalizetrue
                \edef\pgfmathresult{1\the\pgfmathfloat@tmptoks}%
                \pgfmathroundto@impl@gobble@rest
            }{%
                \pgfutil@ifnextchar-{%
                    \global\pgfmathfloatroundmayneedrenormalizetrue
                    \edef\pgfmathresult{-1\the\pgfmathfloat@tmptoks}%
                    \pgfmathroundto@impl@gobble@rest
                }{%
                    \pgfmathroundto@impl@ADD@ONE@NEXT
                }%
            }%
        }%
    }%
}

\def\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot.{%
    \pgfmathfloatroundhasperiodfalse
    \aftergroup\pgfmathfloatroundhasperiodfalse
    \pgfmathroundto@impl@ADD@ONE@ITERATE
}

\def\pgfmathroundto@impl@ADD@ONE@NEXT@COLLECT#1{%
    \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
    \pgfmathroundto@impl@ADD@ONE@ITERATE
}
\def\pgfmathroundto@impl@ADD@ONE@NEXT#1{%
    \ifnum#1=9
        \ifnum\c@pgfmathroundto@offsetbehindperiod<0
            \ifpgfmathfloat@fixed@digits@after@period
                \pgfmathfloat@tmptoks=\expandafter{\expandafter0\the\pgfmathfloat@tmptoks}%
            \else
            \fi
        \else
            \pgfmathfloat@tmptoks=\expandafter{\expandafter0\the\pgfmathfloat@tmptoks}%
        \fi
        \advance\c@pgfmathroundto@offsetbehindperiod by1
        \ifnum\c@pgfmathroundto@offsetbehindperiod=0
            \ifpgfmathfloat@fixed@digits@after@period
                \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE}%
            \else
                \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot}%
            \fi
        \else
            \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE}%
        \fi
    \else
        \c@pgfmathroundto@lastzeros=#1
        \advance\c@pgfmathroundto@lastzeros by1
        \edef\pgfmathresult{\the\c@pgfmathroundto@lastzeros\the\pgfmathfloat@tmptoks}%
        \pgfmathfloat@tmptoks=\expandafter{\pgfmathresult}%
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@REVERSE@ITERATE}%
    \fi
    \pgfmathround@nextcmd
}


\def\pgfmathroundto@impl@discard@suffix@zeros{%
    \ifnum\c@pgfmathroundto@lastzeros=\c@pgfmathroundto@offsetbehindperiod
        \ifpgfmathround@impl@PREPERIOD@is@negative@zero
            \pgfmathfloatroundhasperiodfalse
            \aftergroup\pgfmathfloatroundhasperiodfalse
            \def\pgfmathresult{0}%
        \else
            \expandafter\pgfmathroundto@impl@discard@period\pgfmathround@input\pgfmathfloat@EOI
        \fi
    \else
        \ifnum\c@pgfmathroundto@lastzeros=0
            \expandafter\pgfmathroundto@impl@REVERSE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
        \else
            \expandafter\pgfmathroundto@impl@discard@suffix@zeros@ITERATE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
        \fi
    \fi
}

\def\pgfmathroundto@impl@discard@suffix@zeros@ITERATE#1{%
    \advance\c@pgfmathroundto@lastzeros by-1
    \ifnum\c@pgfmathroundto@lastzeros=0
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@REVERSE}%
    \else
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@discard@suffix@zeros@ITERATE}%
    \fi
    \pgfmathround@nextcmd
}

\def\pgfmathroundto@impl@REVERSE{%
    \pgfmathfloat@tmptoks={}%
    \pgfmathroundto@impl@REVERSE@ITERATE
}

\def\pgfmathroundto@impl@REVERSE@ITERATE{%
    \pgfutil@ifnextchar\pgfmathfloat@EOI{%
        \edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
        \pgfmathroundto@impl@gobble
    }{%
        \pgfmathroundto@impl@REVERSE@NEXT
    }%
}

\def\pgfmathroundto@impl@REVERSE@NEXT#1{%
    \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
    \pgfmathroundto@impl@REVERSE@ITERATE
}

\def\pgfmathroundto@impl@BEGIN@DOT.{%
    \pgfmathfloat@tmptoks=\expandafter{\expandafter.\the\pgfmathfloat@tmptoks}%
    \c@pgfmathroundto@offsetbehindperiod=0
    \pgfmathroundto@impl@ITERATE@DOT
}
\def\pgfmathroundto@impl@ITERATE@DOT{%
    \pgfutil@ifnextchar\pgfmathfloat@EOI{%
        \pgfmathroundto@impl@gobble@and@start
    }{%
        \pgfmathroundto@impl@NEXT@DOT
    }%
}
\def\pgfmathroundto@impl@NEXT@DOT#1{%
    \ifnum\c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
        \def\pgfmathround@next{#1}%
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@gobble@rest@and@start}%
    \else
        \advance\c@pgfmathroundto@offsetbehindperiod by1
        \ifnum#1=0
            \advance\c@pgfmathroundto@lastzeros by1
        \else
            \c@pgfmathroundto@lastzeros=0
        \fi
        \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@DOT}%
    \fi
    \pgfmathround@nextcmd
}%

\def\pgfmathroundto@impl@ITERATE@NODOT@firstcall#1{%
    \def\pgfmathround@cur{#1}%
    \ifx\pgfmathround@cur\pgfmathfloat@EOI
        \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@start}%
    \else
        \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@PERIOD
            \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
            \def\pgfmathround@nextcmd{\pgfmathroundto@impl@BEGIN@DOT.}%
        \else
            \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@MINUS
            \else
                \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
            \fi
            \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
            \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@NODOT}%
        \fi
    \fi
    \pgfmathround@nextcmd
}

\def\pgfmathroundto@impl@ITERATE@NODOT#1{%
    \def\pgfmathround@cur{#1}%
    \ifx\pgfmathround@cur\pgfmathfloat@EOI
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@start}%
    \else
        \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@PERIOD
            \def\pgfmathround@nextcmd{\pgfmathroundto@impl@BEGIN@DOT.}%
        \else
            \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@ZERO
            \else
                \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
            \fi
            \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
            \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@NODOT}%
        \fi
    \fi
    \pgfmathround@nextcmd
}



\def\pgfmathfloatround@impl{%
    \expandafter\pgfmathroundto@impl\expandafter{\the\pgfmathfloat@a@Mtok}%
    \ifpgfmathfloatroundmayneedrenormalize
        \ifpgfmathfloatroundhasperiod
            \expandafter\pgfmathfloatround@impl@renormalize\pgfmathresult\pgfmathfloat@EOI%
        \else
            \expandafter\pgfmathfloatround@impl@renormalize\pgfmathresult.\pgfmathfloat@EOI%
        \fi
        \advance\pgfmathfloat@a@E by1
    \fi
    \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\pgfmathresult}{\the\pgfmathfloat@a@E}%
}

\def\pgfmathfloatround@impl@renormalize#1#2.#3\pgfmathfloat@EOI{%
    \pgfmathroundto@impl{#1.#2#3}%
}





\def\pgfmathfloattofixed@impl#1.#2\relax{%
    \ifnum\pgfmathfloat@a@E<0
        \ifcase-\pgfmathfloat@a@E
        \or%
            \pgfmathfloat@a@Mtok={0.}%
        \or%
            \pgfmathfloat@a@Mtok={0.0}%
        \or%
            \pgfmathfloat@a@Mtok={0.00}%
        \or%
            \pgfmathfloat@a@Mtok={0.000}%
        \or%
            \pgfmathfloat@a@Mtok={0.0000}%
        \or%
            \pgfmathfloat@a@Mtok={0.00000}%
        \or%
            \pgfmathfloat@a@Mtok={0.000000}%
        \or%
            \pgfmathfloat@a@Mtok={0.0000000}%
        \or%
            \pgfmathfloat@a@Mtok={0.00000000}%
        \or%
            \pgfmathfloat@a@Mtok={0.000000000}%
        \else%
            \pgfmathfloat@a@Mtok={0.0000000000}%
            \advance\pgfmathfloat@a@E by10
            \pgfutil@loop
            \ifnum\pgfmathfloat@a@E<-1
                \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok 0}%
                \advance\pgfmathfloat@a@E by1
            \pgfutil@repeat
        \fi
        \def\pgfmathfloat@loc@TMPb{#2}%
        \def\pgfmathfloat@loc@TMPc{0}%
        \ifx\pgfmathfloat@loc@TMPb\pgfmathfloat@loc@TMPc
            \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok #1}%
        \else
            \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok #1#2}%
        \fi
    \else
        \pgfmathfloat@a@Mtok{#1}%
        \pgfmathfloattofixed@impl@pos#2000000000\pgfmathfloat@EOI
        \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok}%
    \fi
}

\def\pgfmathfloattofixed@impl@pos#1#2#3#4#5#6#7#8#9\pgfmathfloat@EOI{%
    \ifcase\pgfmathfloat@a@E
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok .#1#2#3#4#5#6#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1.#2#3#4#5#6#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2.#3#4#5#6#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3.#4#5#6#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4.#5#6#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5.#6#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6.#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7.#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7#8.#9}%
    \else%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7#8}%
        \advance\pgfmathfloat@a@E by-8
        \pgfmathfloattofixed@impl@collectmantissa#9\count\pgfmathfloat@a@E
    \fi
}%

\def\pgfmathfloattofixed@impl@collectmantissa#1#2\count#3{%
    \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok #1}%
    \advance\pgfmathfloat@a@E by-1%
    \def\pgfmathfloat@loc@TMPb{#2}%
    \ifx\pgfmathfloat@loc@TMPb\pgfutil@empty
        \pgfutil@loop
        \ifnum\pgfmathfloat@a@E>0%
            \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok 0}%
            \advance\pgfmathfloat@a@E by-1%
        \pgfutil@repeat
        \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok .0}%
    \else
        \ifnum\pgfmathfloat@a@E=0
            \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok .#2}%
        \else
            \pgfmathfloattofixed@impl@collectmantissa#2\count#3%
        \fi
    \fi
}



\def\pgfmathfloatparsenumber@tok@ZERO{0}
\def\pgfmathfloatparsenumber@tok@PLUS{+}
\def\pgfmathfloatparsenumber@tok@MINUS{-}
\def\pgfmathfloatparsenumber@tok@PERIOD{.}

\newif\ifpgfmathfloatparsenumberpendingperiod

\def\pgfflt@EOI{p@EOI}%
\def\pgfflt@EOI@unexpanded{\pgfflt@EOI}%

\def\pgfflt@impl#1{%
    \pgfmathfloatparsenumberpendingperiodfalse
    \pgfmathfloat@tmptoks={}%
    \pgfmathfloat@a@E=0
    \expandafter\ifx\csname pgfflt@#1\endcsname\relax
        \pgfmathfloat@a@S=1
        \expandafter\pgfflt@init\expandafter#1%
    \else
        \expandafter\expandafter\csname pgfflt@#1\endcsname
    \fi
}
\expandafter\def\csname pgfflt@+\endcsname{%
    \pgfmathfloat@a@S=1 %
    \pgfflt@init}%
\expandafter\def\csname pgfflt@-\endcsname{%
    \pgfmathfloat@a@S=2 %
    \pgfflt@init}%
\expandafter\def\csname pgfflt@\pgfflt@EOI\endcsname{%
    \pgfmathfloatparsenumber@handleerror{empty number}{}{}}%

\pgfkeys{
    /pgf/fpu/handlers/empty number/.style 2 args={%
        /pgf/fpu/handlers/invalid number={#1}{#2}%
    },
    /pgf/fpu/empty number is zero/.style={%
        /pgf/fpu/handlers/empty number/.code 2 args={%
            \pgfmathfloatcreate{0}{0.0}{0}%
        }%
    },%
    /pgf/fpu/handlers/invalid separator/.code 2 args={%
        \pgfmath@error{Could not parse input '#1' as a floating point number, sorry. The unreadable part was near the decimal separator '#2'. Do you need the option 'read comma as period'?}{}%
    },
    /pgf/fpu/handlers/invalid number/.code 2 args={%
        \pgfmath@error{Could not parse input '#1' as a floating point number, sorry. The unreadable part was near '#2'.}{}%
    },
    /pgf/fpu/handlers/wrong lowlevel format/.code 2 args={%
        \pgfmath@error{Sorry, an internal routine of the floating point unit got an ill-formatted floating point number `#1'. The unreadable part was near '#2'.}{}%
        \let\pgfmathresult=\pgfutil@empty
    },
}

\def\pgfmathfloatparsenumber@handleerror#1#2#3{%
    \let\pgfmathresult=\pgfutil@empty
    \pgfmathfloatparsenumberpendingperiodfalse
    \pgfkeys{/pgf/fpu/handlers/#1={#2}{#3}}%
    \ifx\pgfmathresult\pgfutil@empty
        \pgfmathfloat@a@S=3
        \pgfmathfloat@a@Mtok={0.0}%
        \pgfmathfloat@a@E=0
    \else
        \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \fi
}
\def\pgfflt@error#1\pgfflt@EOI{%
    \begingroup
    \pgfmathfloat@a@Mtok={#1}%
    \xdef\pgfmathfloat@glob@TMP{%
        \noexpand\pgfmathfloatparsenumber@handleerror
            {invalid number}{\pgfmathresult}{\the\pgfmathfloat@a@Mtok}}%
    \endgroup
    \pgfmathfloat@glob@TMP
}%



\def\pgfflt@init#1{%
    \expandafter\ifx\csname pgffltA@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltA@#1\endcsname
    \fi}
\expandafter\def\csname pgffltA@0\endcsname{\pgfflt@leadingzero}%
\expandafter\def\csname pgffltA@1\endcsname{\pgfflt@nonzerodigit1}%
\expandafter\def\csname pgffltA@2\endcsname{\pgfflt@nonzerodigit2}%
\expandafter\def\csname pgffltA@3\endcsname{\pgfflt@nonzerodigit3}%
\expandafter\def\csname pgffltA@4\endcsname{\pgfflt@nonzerodigit4}%
\expandafter\def\csname pgffltA@5\endcsname{\pgfflt@nonzerodigit5}%
\expandafter\def\csname pgffltA@6\endcsname{\pgfflt@nonzerodigit6}%
\expandafter\def\csname pgffltA@7\endcsname{\pgfflt@nonzerodigit7}%
\expandafter\def\csname pgffltA@8\endcsname{\pgfflt@nonzerodigit8}%
\expandafter\def\csname pgffltA@9\endcsname{\pgfflt@nonzerodigit9}%
\def\pgfflt@nonzerodigit#1{%
    \pgfmathfloat@a@Mtok={#1}%
    \pgfmathfloatparsenumberpendingperiodtrue
    \pgfflt@positiveexp}%
\expandafter\def\csname pgffltA@n\endcsname{\pgfflt@readnan}%
\expandafter\def\csname pgffltA@N\endcsname{\pgfflt@readnan}%
\expandafter\def\csname pgffltA@i\endcsname{\pgfflt@readinf}%
\expandafter\def\csname pgffltA@I\endcsname{\pgfflt@readinf}%
\expandafter\def\csname pgffltA@.\endcsname{%
    \pgfmathfloat@a@E=-1
    \pgfflt@leadingzero@foundperiod}%
\expandafter\def\csname pgffltA@,\endcsname{%
    \pgfmathfloat@frenchinput{%
        \pgfmathfloat@a@E=-1
        \pgfflt@leadingzero@foundperiod
    }%
}%

\def\pgfmathfloat@frenchinput#1{%
    \ifpgfmathparsenumber@comma@as@period
        \def\pgf@marshal{#1}%
        \expandafter\pgf@marshal
    \else
        \expandafter\pgfflt@error@separator\expandafter,%
    \fi
}%
\def\pgfflt@error@separator#1\pgfflt@EOI{%
    \begingroup
    \pgfmathfloat@a@Mtok={#1}%
    \xdef\pgfmathfloat@glob@TMP{%
        \noexpand\pgfmathfloatparsenumber@handleerror
            {invalid separator}{\pgfmathresult}{\the\pgfmathfloat@a@Mtok}}%
    \endgroup
    \pgfmathfloat@glob@TMP
}%

\def\pgfflt@finish#1\pgfflt@EOI{}

\def\pgfflt@readnan #1#2{%
    \def\pgfflt@readnan@ok{1}%
    \if#1a\else\if#1A\else\def\pgfflt@readnan@ok{0}\fi\fi
    \if#2n\else\if#2N\else\def\pgfflt@readnan@ok{0}\fi\fi
    \if\pgfflt@readnan@ok1%
        \pgfmathfloat@a@S=3\relax%
        \pgfmathfloat@a@Mtok={0.0}%
        \pgfmathfloat@a@E=0%
        \expandafter\pgfflt@finish
    \else
        \def\pgfflt@readnan@{\pgfflt@error #1#2}%
        \expandafter\pgfflt@readnan@
    \fi
}
\def\pgfflt@readinf #1#2{%
    \def\pgfflt@readinf@ok{1}%
    \if#1n\else\if#1N\else\def\pgfflt@readinf@ok{0}\fi\fi
    \if#2f\else\if#2F\else\def\pgfflt@readinf@ok{0}\fi\fi
    \if\pgfflt@readinf@ok1%
        \ifnum\pgfmathfloat@a@S=1 %
            \pgfmathfloat@a@S=4 %
            \pgfmathfloat@a@Mtok={0.0}%
        \else
            \pgfmathfloat@a@S=5 %
            \pgfmathfloat@a@Mtok={0.0}%
        \fi
        \pgfmathfloat@a@E=0 %
        \expandafter\pgfflt@finish
    \else
        \def\pgfflt@readinf@{\pgfflt@error #1#2}%
        \expandafter\pgfflt@readinf@
    \fi
}
\def\pgfflt@leadingzero#1{%
    \expandafter\ifx\csname pgffltB@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltB@#1\endcsname
    \fi}
\expandafter\def\csname pgffltB@0\endcsname{\pgfflt@leadingzero}%
\expandafter\def\csname pgffltB@1\endcsname{\pgfmathfloat@a@Mtok={1}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@2\endcsname{\pgfmathfloat@a@Mtok={2}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@3\endcsname{\pgfmathfloat@a@Mtok={3}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@4\endcsname{\pgfmathfloat@a@Mtok={4}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@5\endcsname{\pgfmathfloat@a@Mtok={5}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@6\endcsname{\pgfmathfloat@a@Mtok={6}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@7\endcsname{\pgfmathfloat@a@Mtok={7}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@8\endcsname{\pgfmathfloat@a@Mtok={8}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@9\endcsname{\pgfmathfloat@a@Mtok={9}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@\pgfmathfloat@POSTFLAGSCHAR\endcsname{\pgfmathfloat@a@Mtok={0}\pgfflt@readlowlevelfloat}%
\expandafter\def\csname pgffltB@.\endcsname{%
    \pgfmathfloat@a@E=-1
    \pgfflt@leadingzero@foundperiod}%
\expandafter\def\csname pgffltB@,\endcsname{%
    \pgfmathfloat@frenchinput{%
        \pgfmathfloat@a@E=-1
        \pgfflt@leadingzero@foundperiod
    }%
}%
\expandafter\def\csname pgffltB@e\endcsname{%
    \pgfmathfloat@a@S=0\relax%
    \pgfmathfloat@a@Mtok={0.0}%
    \pgfmathfloat@a@E=0%
    \pgfflt@readexponent}%
\let\pgffltB@E=\pgffltB@e
\expandafter\def\csname pgffltB@\pgfflt@EOI\endcsname{%
    \pgfmathfloat@a@S=0\relax%
    \pgfmathfloat@a@Mtok={0.0}%
    \pgfmathfloat@a@E=0}%

\def\pgfflt@leadingzero@foundperiod#1{%
    \expandafter\ifx\csname pgffltC@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltC@#1\endcsname
    \fi}
\expandafter\def\csname pgffltC@0\endcsname{%
    \advance\pgfmathfloat@a@E by-1
    \pgfflt@leadingzero@foundperiod}%
\expandafter\def\csname pgffltC@1\endcsname{\pgfmathfloat@a@Mtok={1}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@2\endcsname{\pgfmathfloat@a@Mtok={2}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@3\endcsname{\pgfmathfloat@a@Mtok={3}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@4\endcsname{\pgfmathfloat@a@Mtok={4}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@5\endcsname{\pgfmathfloat@a@Mtok={5}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@6\endcsname{\pgfmathfloat@a@Mtok={6}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@7\endcsname{\pgfmathfloat@a@Mtok={7}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@8\endcsname{\pgfmathfloat@a@Mtok={8}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@9\endcsname{\pgfmathfloat@a@Mtok={9}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@e\endcsname{%
    \pgfmathfloat@a@S=0\relax%
    \pgfmathfloat@a@Mtok={0.0}%
    \pgfmathfloat@a@E=0%
    \pgfflt@readexponent}%
\let\pgffltC@E=\pgffltC@e
\expandafter\def\csname pgffltC@\pgfflt@EOI\endcsname{%
    \pgfmathfloat@a@S=0\relax%
    \pgfmathfloat@a@Mtok={0.0}%
    \pgfmathfloat@a@E=0}%


\def\pgfflt@positiveexp#1{%
    \expandafter\ifx\csname pgffltD@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltD@#1\endcsname
    \fi}
\expandafter\def\csname pgffltD@0\endcsname{%
    \advance\pgfmathfloat@a@E by1
    \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
    \pgfflt@pendingzeros@positiveexp}%
\expandafter\def\csname pgffltD@1\endcsname{\pgffltD@nonzerodigit1}%
\expandafter\def\csname pgffltD@2\endcsname{\pgffltD@nonzerodigit2}%
\expandafter\def\csname pgffltD@3\endcsname{\pgffltD@nonzerodigit3}%
\expandafter\def\csname pgffltD@4\endcsname{\pgffltD@nonzerodigit4}%
\expandafter\def\csname pgffltD@5\endcsname{\pgffltD@nonzerodigit5}%
\expandafter\def\csname pgffltD@6\endcsname{\pgffltD@nonzerodigit6}%
\expandafter\def\csname pgffltD@7\endcsname{\pgffltD@nonzerodigit7}%
\expandafter\def\csname pgffltD@8\endcsname{\pgffltD@nonzerodigit8}%
\expandafter\def\csname pgffltD@9\endcsname{\pgffltD@nonzerodigit9}%
\expandafter\def\csname pgffltD@\pgfmathfloat@POSTFLAGSCHAR\endcsname{\pgfflt@readlowlevelfloat}%
\expandafter\def\csname pgffltD@.\endcsname{\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltD@,\endcsname{\pgfmathfloat@frenchinput{\pgfflt@finish@number@after@period}}%
\expandafter\def\csname pgffltD@e\endcsname{\pgfflt@readexponent}%
\let\pgffltD@E=\pgffltD@e
\expandafter\def\csname pgffltD@\pgfflt@EOI\endcsname{}%
\def\pgffltD@nonzerodigit#1{%
    \advance\pgfmathfloat@a@E by1
    \ifpgfmathfloatparsenumberpendingperiod
        \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
        \pgfmathfloatparsenumberpendingperiodfalse
    \fi
    \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
    \pgfflt@positiveexp}%

\def\pgfflt@readlowlevelfloat#1e#2]\pgfflt@EOI{%
    \pgfmathfloatparsenumberpendingperiodfalse
    \pgfmathfloat@a@S=\the\pgfmathfloat@a@Mtok\relax
    \pgfmathfloat@a@Mtok={#1}%
    \pgfmathfloat@a@E=#2
}%

\def\pgfflt@readexponent#1\pgfflt@EOI{%
    \afterassignment\pgfflt@readexponent@
    \pgfmathfloat@b@E=#1 \pgfflt@EOI%
}
\def\pgfflt@readexponent@#1{%
    \advance\pgfmathfloat@a@E by\pgfmathfloat@b@E\relax
    \def\pgfmathfloat@loc@TMPb{#1}%
    \ifx\pgfmathfloat@loc@TMPb\pgfflt@EOI@unexpanded
    \else
        \def\pgfmathfloat@loc@TMPb{\pgfflt@error#1}%
        \expandafter\pgfmathfloat@loc@TMPb
    \fi
}

\def\pgfflt@pendingzeros@positiveexp#1{%
    \expandafter\ifx\csname pgffltE@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltE@#1\endcsname
    \fi}
\expandafter\def\csname pgffltE@0\endcsname{%
    \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
    \advance\pgfmathfloat@a@E by1
    \pgfflt@pendingzeros@positiveexp}%
\expandafter\def\csname pgffltE@1\endcsname{\pgffltE@nonzerodigit1}%
\expandafter\def\csname pgffltE@2\endcsname{\pgffltE@nonzerodigit2}%
\expandafter\def\csname pgffltE@3\endcsname{\pgffltE@nonzerodigit3}%
\expandafter\def\csname pgffltE@4\endcsname{\pgffltE@nonzerodigit4}%
\expandafter\def\csname pgffltE@5\endcsname{\pgffltE@nonzerodigit5}%
\expandafter\def\csname pgffltE@6\endcsname{\pgffltE@nonzerodigit6}%
\expandafter\def\csname pgffltE@7\endcsname{\pgffltE@nonzerodigit7}%
\expandafter\def\csname pgffltE@8\endcsname{\pgffltE@nonzerodigit8}%
\expandafter\def\csname pgffltE@9\endcsname{\pgffltE@nonzerodigit9}%
\expandafter\def\csname pgffltE@.\endcsname{\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltE@,\endcsname{\pgfmathfloat@frenchinput{\pgfflt@finish@number@after@period}}%
\def\pgffltE@e{\pgfflt@readexponent}%
\let\pgffltE@E=\pgffltE@e
\expandafter\def\csname pgffltE@\pgfflt@EOI\endcsname{}%
\def\pgffltE@nonzerodigit#1{%
    \advance\pgfmathfloat@a@E by1
    \ifpgfmathfloatparsenumberpendingperiod
        \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
        \pgfmathfloatparsenumberpendingperiodfalse
    \fi
    \pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
    \pgfmathfloat@tmptoks={}%
    \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
    \pgfflt@positiveexp}%

\def\pgfflt@finish@number@after@period#1{%
    \expandafter\ifx\csname pgffltF@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltF@#1\endcsname
    \fi}
\expandafter\def\csname pgffltF@0\endcsname{%
    \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
    \pgfflt@pendingzeros}%
\expandafter\def\csname pgffltF@1\endcsname{\pgffltF@nonzerodigit1}%
\expandafter\def\csname pgffltF@2\endcsname{\pgffltF@nonzerodigit2}%
\expandafter\def\csname pgffltF@3\endcsname{\pgffltF@nonzerodigit3}%
\expandafter\def\csname pgffltF@4\endcsname{\pgffltF@nonzerodigit4}%
\expandafter\def\csname pgffltF@5\endcsname{\pgffltF@nonzerodigit5}%
\expandafter\def\csname pgffltF@6\endcsname{\pgffltF@nonzerodigit6}%
\expandafter\def\csname pgffltF@7\endcsname{\pgffltF@nonzerodigit7}%
\expandafter\def\csname pgffltF@8\endcsname{\pgffltF@nonzerodigit8}%
\expandafter\def\csname pgffltF@9\endcsname{\pgffltF@nonzerodigit9}%
\def\pgffltF@e{\pgfflt@readexponent}%
\let\pgffltF@E=\pgffltF@e
\expandafter\def\csname pgffltF@\pgfflt@EOI\endcsname{}%
\def\pgffltF@nonzerodigit#1{%
    \ifpgfmathfloatparsenumberpendingperiod
        \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
        \pgfmathfloatparsenumberpendingperiodfalse
    \fi
    \pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
    \pgfmathfloat@tmptoks={}%
    \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
    \pgfflt@finish@number@after@period}%


\def\pgfflt@pendingzeros#1{%
    \expandafter\ifx\csname pgffltG@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltG@#1\endcsname
    \fi}
\expandafter\def\csname pgffltG@0\endcsname{%
    \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
    \pgfflt@pendingzeros}%
\expandafter\def\csname pgffltG@1\endcsname{\pgffltG@nonzerodigit1}%
\expandafter\def\csname pgffltG@2\endcsname{\pgffltG@nonzerodigit2}%
\expandafter\def\csname pgffltG@3\endcsname{\pgffltG@nonzerodigit3}%
\expandafter\def\csname pgffltG@4\endcsname{\pgffltG@nonzerodigit4}%
\expandafter\def\csname pgffltG@5\endcsname{\pgffltG@nonzerodigit5}%
\expandafter\def\csname pgffltG@6\endcsname{\pgffltG@nonzerodigit6}%
\expandafter\def\csname pgffltG@7\endcsname{\pgffltG@nonzerodigit7}%
\expandafter\def\csname pgffltG@8\endcsname{\pgffltG@nonzerodigit8}%
\expandafter\def\csname pgffltG@9\endcsname{\pgffltG@nonzerodigit9}%
\def\pgffltG@e{\pgfflt@readexponent}%
\let\pgffltG@E=\pgffltG@e
\expandafter\def\csname pgffltG@\pgfflt@EOI\endcsname{}%
\def\pgffltG@nonzerodigit#1{%
    \ifpgfmathfloatparsenumberpendingperiod
        \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
        \pgfmathfloatparsenumberpendingperiodfalse
    \fi
    \pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
    \pgfmathfloat@tmptoks={}%
    \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
    \pgfflt@finish@number@after@period}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfloat.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.base.code.tex ====

\pgfmathdeclarefunction{bin}{1}{%
    \begingroup%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \c@pgfmath@counta=#1\relax\pgfmath@%
        \expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\the\c@pgfmath@counta}{10}{2}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}
\pgfmathdeclarefunction{hex}{1}{%
    \begingroup%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \c@pgfmath@counta=#1\relax\pgfmath@%
        \expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\the\c@pgfmath@counta}{10}{16}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

\pgfmathdeclarefunction{Hex}{1}{%
    \begingroup%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \c@pgfmath@counta=#1\relax\pgfmath@%
        \expandafter\pgfmathbasetoBase\expandafter\pgfmathresult\expandafter{\the\c@pgfmath@counta}{10}{16}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

\pgfmathdeclarefunction{oct}{1}{%
    \begingroup%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \c@pgfmath@counta=#1\relax\pgfmath@%
        \expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\the\c@pgfmath@counta}{10}{8}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}


\def\pgfmathbasetodec#1#2#3{%
    \pgfmath@checknumber{#2}%
    \pgfmath@checkbase{#3}%
    \def\pgfmath@base{#3}%
    \def\pgfmath@base@macro{#1}%
    \c@pgfmath@counta=1\relax%
    \let\pgfmath@reversed=\pgfmath@empty%
    \expandafter\pgfmathbasetodec@#2\pgfmath@base@stop}

\def\pgfmathbasetodec@#1{%
    \ifx#1\pgfmath@base@stop%
        \c@pgfmath@countb=0%
        \divide\c@pgfmath@counta by\pgfmath@base\relax%
        \expandafter\pgfmathbasetodec@@%
    \else%
        \edef\pgfmath@reversed{\pgfmath@reversed#1}%
        \expandafter\multiply\expandafter\c@pgfmath@counta\pgfmath@base\relax%
        \expandafter\pgfmathbasetodec@%
    \fi}

\def\pgfmathbasetodec@@{\expandafter\pgfmathbasetodec@@@\pgfmath@reversed\pgfmathbasetodec}

\def\pgfmathbasetodec@@@#1{%
    \ifx\pgfmathbasetodec#1\relax%
        \expandafter\edef\pgfmath@base@macro{\the\c@pgfmath@countb}%
        \let\pgfmath@next=\pgfmathbasetodec@@@@%
    \else%
        \chardef\pgfmath@charnum`#1\relax%
        \c@pgfmath@countc=\pgfmath@charnum\relax%
        \ifnum\c@pgfmath@countc>96\relax%
            \advance\c@pgfmath@countc by-87\relax%
        \else
            \ifnum\c@pgfmath@countc>64\relax%
                \advance\c@pgfmath@countc by-55\relax%
            \else
                \advance\c@pgfmath@countc by-48\relax%
            \fi%
        \fi%
        \ifnum\c@pgfmath@countc<\pgfmath@base\relax%
            \multiply\c@pgfmath@countc by\c@pgfmath@counta%
            \advance\c@pgfmath@countb by\c@pgfmath@countc%
            \divide\c@pgfmath@counta by\pgfmath@base\relax%
            \let\pgfmath@next\pgfmathbasetodec@@@%
        \else
            \pgfmath@error{Digit `#1' invalid for base \pgfmath@base}{}%
            \let\pgfmath@next=\relax%
        \fi%
    \fi%
    \pgfmath@next}
\def\pgfmathbasetodec@@@@{%
    \expandafter\pgfmath@ensurenumberlength\expandafter{\pgfmath@base@macro}%
}

\def\pgfmathdectobase#1#2#3{%
    \pgfmath@checknumber{#2}%
    \pgfmath@checkbase{#3}%
    \c@pgfmath@counta=#2\relax%
    \let#1=\pgfmath@empty%
    \pgfmathloop
        \ifnum\c@pgfmath@counta>0\relax%
            \c@pgfmath@countb=\c@pgfmath@counta%
            \divide\c@pgfmath@countb by#3\relax%
            \multiply\c@pgfmath@countb by-#3\relax%
            \advance\c@pgfmath@countb by\c@pgfmath@counta%
            \edef#1{\csname pgfmath@lowercase digit@\the\c@pgfmath@countb\endcsname#1}%
            \divide\c@pgfmath@counta by#3\relax%
    \repeatpgfmathloop%
    \pgfmath@ensurenumberlength{#1}}

\def\pgfmathdectoBase#1#2#3{%
    \pgfmath@checkbase{#3}%
    \pgfmath@checknumber{#2}%
    \c@pgfmath@counta=#2\relax%
    \let#1=\pgfmath@empty%
    \pgfmathloop
        \ifnum\c@pgfmath@counta>0\relax%
            \c@pgfmath@countb=\c@pgfmath@counta%
            \divide\c@pgfmath@countb by#3\relax%
            \multiply\c@pgfmath@countb by-#3\relax%
            \advance\c@pgfmath@countb by\c@pgfmath@counta%
            \edef#1{\csname pgfmath@uppercase digit@\the\c@pgfmath@countb\endcsname#1}%
            \divide\c@pgfmath@counta by#3\relax%
    \repeatpgfmathloop%
    \pgfmath@ensurenumberlength{#1}}

\def\pgfmath@base@digits@create{%
    \def\pgfmath@base@digit@style{lowercase digit}%
    \c@pgfmath@counta=0\relax%
    \pgfmath@base@digits@create@0123456789abcdefghijklmnopqrstuvwxyz\pgfmath@base@digits@create%
    \def\pgfmath@base@digit@style{uppercase digit}%
    \c@pgfmath@counta=0\relax%
    \pgfmath@base@digits@create@0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\pgfmath@base@digits@create}

\def\pgfmath@base@digits@create@#1{%
    \ifx\pgfmath@base@digits@create#1\relax%
    \else%
        \expandafter\pgfmath@def\expandafter{\pgfmath@base@digit@style}{\the\c@pgfmath@counta}{#1}%
        \advance\c@pgfmath@counta by1\relax%
        \expandafter\pgfmath@base@digits@create@%
    \fi}
\pgfmath@base@digits@create

\def\pgfmathbasetobase#1#2#3#4{%
    \pgfmathbasetodec{\pgfmath@base@temp}{#2}{#3}%
    \pgfmathdectobase{#1}{\pgfmath@base@temp}{#4}%
}

\def\pgfmathbasetoBase#1#2#3#4{%
    \pgfmathbasetodec{\pgfmath@base@temp}{#2}{#3}%
    \pgfmathdectoBase{#1}{\pgfmath@base@temp}{#4}%
}

\def\pgfmath@checkbase#1{%
    \ifnum#1<2\relax%
        \pgfmath@error{Cannot process numbers in base `#1'.}{}%
    \else%
        \ifnum#1>36\relax%
            \pgfmath@error{Cannot process numbers in base `#1'.}{}%
        \fi%
    \fi}

\def\pgfmath@checknumber#1{%
    \expandafter\pgfmath@checknumber@#1\pgfmath@}
\def\pgfmath@checknumber@#1#2\pgfmath@{%
    \ifx#1-%
        \pgfmath@error{Cannot process negative numbers.}{}%
    \fi}

\def\pgfmath@ensurenumberlength#1{%
    \def\pgfmath@base@tempa{#1}%
    \expandafter\c@pgfmath@counta\pgfmath@basenumberlength\relax%
    \expandafter\pgfmath@ensurenumberlength@#1\pgfmath@ensurenumberlength}
\def\pgfmath@ensurenumberlength@#1{%
    \ifx\pgfmath@ensurenumberlength#1\relax%
        \expandafter\pgfmath@ensurenumberlength@@%
    \else%
        \advance\c@pgfmath@counta by-1\relax%
        \expandafter\pgfmath@ensurenumberlength@
    \fi}

\def\pgfmath@ensurenumberlength@@{%
    \edef\pgfmath@base@tempb{\pgfmath@base@tempa}%
    \pgfmath@ensurenumberlength@@@}
\def\pgfmath@ensurenumberlength@@@{%
    \ifnum\c@pgfmath@counta>0\relax%
        \advance\c@pgfmath@counta by-1\relax%
        \edef\pgfmath@base@tempb{0\pgfmath@base@tempb}%
        \expandafter\pgfmath@ensurenumberlength@@@%
    \fi%
    \expandafter\edef\pgfmath@base@tempa{\pgfmath@base@tempb}}

\def\pgfmathsetbasenumberlength#1{\def\pgfmath@basenumberlength{#1}}
\pgfmathsetbasenumberlength{1}%

\def\pgfmathtodigitlist#1#2{%
    \def\pgfmath@temp{#1}%
    \let\pgfmath@digitlist=\pgfutil@empty%
    \edef\pgfmath@@tmp{#2}%
    \expandafter\pgfmath@todigitlist\pgfmath@@tmp @%
}
\def\pgfmath@base@atchar{@}
\def\pgfmath@todigitlist#1{%
    \def\pgfmath@digit{#1}%
    \ifx\pgfmath@digit\pgfmath@base@atchar%
        \expandafter\let\pgfmath@temp=\pgfmath@digitlist%
    \else%
        \ifx\pgfmath@digitlist\pgfutil@empty%
            \edef\pgfmath@digitlist{#1}%
        \else%
            \edef\pgfmath@digitlist{\pgfmath@digitlist,#1}%
        \fi%
        \expandafter\pgfmath@todigitlist%
    \fi%
}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.base.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex ====


\pgfmathdeclarefunction{add}{2}{%
    \begingroup%
    \pgfmath@x=#1pt\relax%
    \pgfmath@y=#2pt\relax%
    \advance\pgfmath@x by\pgfmath@y%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}


\pgfmathdeclarefunction{subtract}{2}{%
    \begingroup%
    \pgfmath@x=#1pt\relax%
    \pgfmath@y=#2pt\relax%
    \advance\pgfmath@x by-\pgfmath@y%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\pgfmathdeclarefunction{neg}{1}{%
    \begingroup%
        \pgfmath@x=-#1pt\relax%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}
\def\pgfmath@operation@neg@precedence{500}

\pgfmathdeclarefunction{multiply}{2}{%
  \begingroup%
    \pgfmath@x=#1pt\relax%
    \pgfmath@y=#2pt\relax%
    \pgfmath@x=\pgfmath@tonumber{\pgfmath@y}\pgfmath@x%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\newif\ifpgfmath@divide@period

\pgfmathdeclarefunction{divide}{2}{%
    \begingroup%
        \pgfmath@x=#1pt\relax%
        \pgfmath@y=#2pt\relax%
        \let\pgfmath@sign=\pgfmath@empty%
        \ifdim0pt=\pgfmath@y%
            \pgfmath@error{You've asked me to divide `#1' by `#2', %
                but I cannot divide any number by `#2'}{}%
        \fi%
        \afterassignment\pgfmath@xa%
        \c@pgfmath@counta\the\pgfmath@y\relax%
        \ifdim0pt=\pgfmath@xa%
            \divide\pgfmath@x by\c@pgfmath@counta%
        \else%
            \ifdim0pt>\pgfmath@x%
                \def\pgfmath@sign{-}%
                \pgfmath@x=-\pgfmath@x%
            \fi%
            \ifdim0pt>\pgfmath@y%
                \expandafter\def\expandafter\pgfmath@sign\expandafter{\pgfmath@sign-}%
                \pgfmath@y=-\pgfmath@y%
            \fi%
            \ifdim1pt>\pgfmath@y%
                \pgfmathreciprocal@{\pgfmath@tonumber{\pgfmath@y}}%
                \pgfmath@x=\pgfmath@sign\pgfmathresult\pgfmath@x%
            \else%
                \def\pgfmathresult{0}%
                \pgfmath@divide@periodtrue%
                \c@pgfmath@counta=0\relax%
                \pgfmathdivide@@%
                \pgfmath@x=\pgfmath@sign\pgfmathresult pt\relax%
            \fi%
        \fi%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\def\pgfmath@small@number{0.00002}

\def\pgfmathdivide@@{%
    \let\pgfmath@next=\relax%
    \ifdim\pgfmath@small@number pt<\pgfmath@x%
        \ifdim\pgfmath@small@number pt<\pgfmath@y%
            \ifdim\pgfmath@y>\pgfmath@x%
                \ifpgfmath@divide@period%
                    \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult.}%
                    \pgfmath@divide@periodfalse%
                \fi%
                \pgfmathdivide@dimenbyten\pgfmath@y%
                \ifdim\pgfmath@y>\pgfmath@x%
                    \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult0}%
                \fi%
            \else%
                \c@pgfmath@counta=\pgfmath@x%
                \c@pgfmath@countb=\pgfmath@y%
                \divide\c@pgfmath@counta by\c@pgfmath@countb%
                \pgfmath@ya=\c@pgfmath@counta\pgfmath@y%
                \advance\pgfmath@x by-\pgfmath@ya%
                \def\pgfmath@next{%
                    \toks0=\expandafter{\pgfmathresult}%
                    \edef\pgfmathresult{\the\toks0 \the\c@pgfmath@counta}%
                }%
                \ifpgfmath@divide@period
                \else
                    \ifnum\c@pgfmath@counta>9 %
                        \expandafter\pgfmathdivide@advance@last@digit\pgfmathresult CCCCC\@@
                        \advance\c@pgfmath@counta by-10 %
                        \ifnum\c@pgfmath@counta=0
                            \let\pgfmath@next=\relax
                        \fi
                    \fi
                \fi
                \pgfmath@next
            \fi%
            \let\pgfmath@next=\pgfmathdivide@@%
        \fi%
    \fi%
    \pgfmath@next%
}

\def\pgfmathdivide@advance@last@digit#1.#2#3#4#5#6#7\@@{%
    \pgfmath@ya=\pgfmathresult pt %
    \if#2C%
        \pgfmath@xa=1pt %
    \else
        \if#3C%
            \pgfmath@xa=0.1pt %
        \else
            \if#4C%
                \pgfmath@xa=0.01pt %
            \else
                \if#5C%
                    \pgfmath@xa=0.001pt %
                \else
                    \if#6C%
                        \pgfmath@xa=0.0001pt %
                    \else
                        \pgfmath@xa=0.00001pt %
                    \fi
                \fi
            \fi
        \fi
    \fi
    \advance\pgfmath@ya by\pgfmath@xa
    \edef\pgfmathresult{\pgfmath@tonumber@notrailingzero\pgfmath@ya}%
}%

{
\catcode`\p=12
\catcode`\t=12
\gdef\Pgf@geT@NO@TRAILING@ZERO#1.#2pt{%
    #1.%
    \ifnum#2=0 \else #2\fi
}
}
\def\pgfmath@tonumber@notrailingzero#1{\expandafter\Pgf@geT@NO@TRAILING@ZERO\the#1}


\def\pgfmathdivide@dimenbyten#1{%
    \edef\pgfmath@temp{\pgfmath@tonumber{#1}}%
    \expandafter\pgfmathdivide@@dimenbyten\pgfmath@temp\@@#1\@@}
\def\pgfmathdivide@@dimenbyten#1.#2\@@#3\@@{%
    \pgfmath@tempcnta=#1\relax%
    \divide\pgfmath@tempcnta by10\relax%
    \pgfmath@tempcntb=\pgfmath@tempcnta%
    \multiply\pgfmath@tempcnta by-10\relax%
    \advance\pgfmath@tempcnta by#1\relax%
    #3=\the\pgfmath@tempcntb.\the\pgfmath@tempcnta#2pt\relax%
}


\pgfmathdeclarefunction{reciprocal}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \ifdim\pgfmath@x=0pt\relax%
            \pgfmath@error{You asked me to calculate `1/#1', but I cannot divide any number by zero}{}%
        \fi%
        \edef\pgfmath@reciprocaltemp{\pgfmath@tonumber{\pgfmath@x}}%
        \expandafter\pgfmathreciprocal@@\pgfmath@reciprocaltemp0000000\pgfmath@}
\def\pgfmathreciprocal@@#1.#2#3#4#5#6#7\pgfmath@{%
        \c@pgfmath@counta#2#3#4#5#6\relax%
        \ifnum\c@pgfmath@counta=0\relax%
            \pgfmath@x1pt\relax%
            \divide\pgfmath@x#1\relax%
        \else%
            \ifnum#1>100\relax%
                \c@pgfmath@counta#1#2#3#4\relax%
                \c@pgfmath@countb1000000000\relax%
                \divide\c@pgfmath@countb\c@pgfmath@counta%
                \c@pgfmath@counta\c@pgfmath@countb%
                \divide\c@pgfmath@counta10000\relax%
                \pgfmath@x\c@pgfmath@counta pt\relax%
                \multiply\c@pgfmath@counta-10000\relax%
                \advance\c@pgfmath@countb\c@pgfmath@counta%
                \pgfmath@y\c@pgfmath@countb pt\relax%
                \divide\pgfmath@y1000000\relax%
                \advance\pgfmath@x\pgfmath@y%
            \else%
                \c@pgfmath@counta#1#2#3#4#5#6\relax%
                \c@pgfmath@countb1000000000\relax%
                \divide\c@pgfmath@countb\c@pgfmath@counta%
                \c@pgfmath@counta\c@pgfmath@countb%
                \divide\c@pgfmath@counta10000\relax%
                \pgfmath@x\c@pgfmath@counta pt\relax%
                \multiply\c@pgfmath@counta-10000\relax%
                \advance\c@pgfmath@countb\c@pgfmath@counta%
                \pgfmath@y\c@pgfmath@countb pt\relax%
                \pgfmath@y.1\pgfmath@y%
                \pgfmath@y.1\pgfmath@y%
                \pgfmath@y.1\pgfmath@y%
                \pgfmath@y.1\pgfmath@y%
                \advance\pgfmath@x\pgfmath@y%
            \fi%
        \fi%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\pgfmathdeclarefunction{div}{2}{%
    \begingroup%
        \pgfmathdivide@{#1}{#2}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathceil@{\pgfmathresult}%
        \else%
            \pgfmathfloor@{\pgfmathresult}%
        \fi%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \c@pgfmath@counta=\pgfmathresult\relax\pgfmath@%
        \edef\pgfmathresult{\the\c@pgfmath@counta}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

\pgfmathdeclarefunction{mod}{2}{%
  \begingroup%
    \pgfmath@xa#1pt%
    \pgfmath@xb#2pt%
    \pgfmath@x\pgfmath@xa%
    \c@pgfmath@counta\pgfmath@xa%
    \c@pgfmath@countb\pgfmath@xb%
    \divide\c@pgfmath@counta\c@pgfmath@countb%
    \multiply\pgfmath@xb\c@pgfmath@counta%
    \advance\pgfmath@x-\pgfmath@xb%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\pgfmathdeclarefunction{Mod}{2}{%
    \begingroup%
        \pgfmathmod@{#1}{#2}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \ifdim\pgfmath@x<0pt\relax%
            \advance\pgfmath@x by#2pt\relax%
        \fi%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

\pgfmathdeclarefunction{abs}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \ifdim\pgfmath@x<0pt\relax%
            \pgfmath@x-\pgfmath@x%
        \fi%
    \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\pgfmathdeclarefunction{sign}{1}{%
  \begingroup
    \ifdim#1pt>0sp %
      \def\pgfmathresult{1}%
    \else
      \ifdim#1pt=0sp %
        \def\pgfmathresult{0}%
      \else
        \def\pgfmathresult{-1}%
      \fi
    \fi
    \pgfmath@smuggleone\pgfmathresult
  \endgroup
}

\pgfmathdeclarefunction{e}{0}{\def\pgfmathresult{2.718281828}}

\pgfmathdeclarefunction{ln}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \ifdim\pgfmath@x>0pt\else%
            \pgfmath@error{I cannot calculate the logarithm of `#1'}{}%
        \fi%
        \c@pgfmath@counta=0\relax%
        \ifdim\pgfmath@x>2pt\relax%
            \ifdim\pgfmath@x<128pt\relax%
                \ifdim\pgfmath@x<8pt\relax%
                    \ifdim\pgfmath@x<4pt\relax%
                        \divide\pgfmath@x by2\relax%
                        \c@pgfmath@counta=1\relax%
                    \else%
                        \divide\pgfmath@x by4\relax%
                        \c@pgfmath@counta=2\relax%
                    \fi%
                \else%
                    \ifdim\pgfmath@x<32pt\relax%
                        \ifdim\pgfmath@x<16pt\relax%
                            \divide\pgfmath@x by8\relax%
                            \c@pgfmath@counta=3\relax%
                        \else%
                            \divide\pgfmath@x by16\relax%
                            \c@pgfmath@counta=4\relax%
                        \fi%
                    \else%
                        \ifdim\pgfmath@x<64pt\relax%
                            \divide\pgfmath@x by32\relax%
                            \c@pgfmath@counta=5\relax%
                        \else%
                            \divide\pgfmath@x by64\relax%
                            \c@pgfmath@counta=6\relax%
                        \fi%
                    \fi%
                \fi%
            \else%
                \ifdim\pgfmath@x<2048pt\relax%
                    \ifdim\pgfmath@x<512pt\relax%
                        \ifdim\pgfmath@x<256pt\relax%
                            \divide\pgfmath@x by128\relax%
                            \c@pgfmath@counta=7\relax%
                        \else%
                            \divide\pgfmath@x by256\relax%
                            \c@pgfmath@counta=8\relax%
                        \fi%
                    \else%
                        \ifdim\pgfmath@x<1024pt\relax%
                            \divide\pgfmath@x by512\relax%
                            \c@pgfmath@counta=9\relax%
                        \else%
                            \divide\pgfmath@x by1024\relax%
                            \c@pgfmath@counta=10\relax%
                        \fi%
                    \fi%
                \else%
                    \ifdim\pgfmath@x<8192pt\relax%
                        \ifdim\pgfmath@x<4096pt\relax%
                            \divide\pgfmath@x by2048\relax%
                            \c@pgfmath@counta=11\relax%
                        \else%
                            \divide\pgfmath@x by4096\relax%
                            \c@pgfmath@counta =12\relax%
                        \fi%
                    \else%
                        \divide\pgfmath@x by8192\relax%
                        \c@pgfmath@counta=13\relax%
                    \fi%
                \fi%
            \fi%
        \else%
            \ifdim\pgfmath@x<1pt\relax%
                \ifdim\pgfmath@x>0.0078125pt\relax%
                    \ifdim\pgfmath@x>0.125pt\relax%
                        \ifdim\pgfmath@x>0.5pt\relax%
                            \multiply\pgfmath@x by2\relax%
                            \c@pgfmath@counta=-1\relax%
                        \else%
                            \multiply\pgfmath@x by4\relax%
                            \c@pgfmath@counta=-2\relax%
                        \fi%
                    \else%
                        \ifdim\pgfmath@x>0.03125pt\relax%
                            \ifdim\pgfmath@x>0.0625pt\relax%
                                \multiply\pgfmath@x by8\relax%
                                \c@pgfmath@counta=-3\relax%
                            \else%
                                \multiply\pgfmath@x by16\relax%
                                \c@pgfmath@counta=-4\relax%
                            \fi%
                        \else%
                            \ifdim\pgfmath@x>0.015625pt\relax%
                                \multiply\pgfmath@x by32\relax%
                                \c@pgfmath@counta=-5\relax%
                            \else%
                                \multiply\pgfmath@x by64\relax%
                                \c@pgfmath@counta=-6\relax%
                            \fi%
                        \fi%
                    \fi%
                \else%
                    \ifdim\pgfmath@x>0.00048828125pt\relax%
                        \ifdim\pgfmath@x>0.001953125pt\relax%
                            \ifdim\pgfmath@x>0.00390625pt\relax%
                                \multiply\pgfmath@x by128\relax%
                                \c@pgfmath@counta=-7\relax%
                            \else%
                                \multiply\pgfmath@x by256\relax%
                                \c@pgfmath@counta=-8\relax%
                            \fi%
                        \else%
                            \ifdim\pgfmath@x>0.0009765625pt\relax%
                                \multiply\pgfmath@x by512\relax%
                                \c@pgfmath@counta=-9\relax%
                            \else%
                                \multiply\pgfmath@x by1024\relax%
                                \c@pgfmath@counta=-10\relax%
                            \fi%
                        \fi%
                    \else%
                        \ifdim\pgfmath@x>0.0001220703125pt\relax%
                            \ifdim\pgfmath@x>0.0002441406256pt\relax%
                                \multiply\pgfmath@x by2048\relax%
                                \c@pgfmath@counta=-11\relax%
                            \else%
                                \multiply\pgfmath@x by4096\relax%
                                \c@pgfmath@counta=-12\relax%
                            \fi%
                        \else%
                            \multiply\pgfmath@x by8192\relax%
                            \c@pgfmath@counta=-13\relax%
                        \fi%
                    \fi%
                \fi%
            \fi%
        \fi%
        \edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@x=0.04300521312\pgfmath@x%
        \advance\pgfmath@x by-.4025153233pt\relax%
        \pgfmath@x=\pgfmath@temp\pgfmath@x%
        \advance\pgfmath@x by1.589480044pt\relax%
        \pgfmath@x=\pgfmath@temp\pgfmath@x%
        \advance\pgfmath@x by-3.489886985pt\relax%
        \pgfmath@x=\pgfmath@temp\pgfmath@x%
        \advance\pgfmath@x by5.047861502pt\relax%
        \pgfmath@x=\pgfmath@temp\pgfmath@x%
        \advance\pgfmath@x by-2.787927935pt\relax%
        \advance\pgfmath@x by\c@pgfmath@counta pt\relax%
        \pgfmath@x=0.6931471806\pgfmath@x%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\pgfmathdeclarefunction{log2}{1}{%
    \begingroup%
        \pgfmathln@{#1}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmath@x=1.442695041\pgfmath@x%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\pgfmathdeclarefunction{log10}{1}{%
    \begingroup%
        \pgfmathln@{#1}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmath@x=0.43429441\pgfmath@x%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\expandafter\let\expandafter\pgfmathlogtwo\csname pgfmathlog2\endcsname
\expandafter\let\expandafter\pgfmathlogtwo@\csname pgfmathlog2@\endcsname
\expandafter\let\expandafter\pgfmathlogten\csname pgfmathlog10\endcsname
\expandafter\let\expandafter\pgfmathlogten@\csname pgfmathlog10@\endcsname

\pgfmathdeclarefunction{exp}{1}{%
  \begingroup
    \pgfmath@xc=#1pt\relax
    \pgfmath@yc=#1pt\relax
    \ifdim\pgfmath@xc<-9pt
      \pgfmath@x=1sp\relax
    \else
      \ifdim\pgfmath@xc<0pt
        \pgfmath@xc=-\pgfmath@xc
      \fi
      \pgfmath@x=1pt\relax
      \pgfmath@xa=1pt\relax
      \pgfmath@xb=\pgfmath@x
      \pgfmathloop%
        \divide\pgfmath@xa by\pgfmathcounter
        \pgfmath@xa=\pgfmath@tonumber\pgfmath@xc\pgfmath@xa%
        \advance\pgfmath@x by\pgfmath@xa
      \ifdim\pgfmath@x=\pgfmath@xb
      \else
        \pgfmath@xb=\pgfmath@x
      \repeatpgfmathloop%
      \ifdim\pgfmath@yc<0pt
        \pgfmathreciprocal@{\pgfmath@tonumber\pgfmath@x}%
        \pgfmath@x=\pgfmathresult pt\relax
      \fi
    \fi
    \pgfmath@returnone\pgfmath@x%
  \endgroup
}

\pgfmathdeclarefunction{sqrt}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \ifdim\pgfmath@x<0pt\relax%
            \pgfmath@error{I cannot calculate the square-root of the negative number `#1'}{}%
        \else%
            \ifdim\pgfmath@x<10pt\relax%
                \def\pgfmath@zeros{0}%
                \def\pgfmath@targetiterations{1}%
            \else%
                \ifdim\pgfmath@x<100pt\relax%
                    \def\pgfmath@zeros{}%
                    \def\pgfmath@targetiterations{1}%
                \else%
                    \ifdim\pgfmath@x<1000pt\relax%
                        \def\pgfmath@zeros{0}%
                        \def\pgfmath@targetiterations{2}%
                    \else%
                        \ifdim\pgfmath@x<10000pt\relax%
                            \def\pgfmath@zeros{}%
                            \def\pgfmath@targetiterations{2}%
                    \else%
                            \def\pgfmath@zeros{0}%
                            \def\pgfmath@targetiterations{3}%
        \fi\fi\fi\fi\fi%
        \edef\pgfmath@temp{\pgfmath@zeros\pgfmath@tonumber{\pgfmath@x}}%
        \expandafter\pgfmath@sqrt@\pgfmath@temp\pgfmath@%
}
\def\pgfmath@sqrt@#1.#2\pgfmath@{\pgfmath@@sqrt@#1#2\pgfmath@empty\pgfmath@empty\pgfmath@}

\def\pgfmath@@sqrt@#1#2{%
        \c@pgfmath@countb=#1#2\relax%
        \ifnum\c@pgfmath@countb>35\relax%
            \ifnum\c@pgfmath@countb>63\relax%
                \ifnum\c@pgfmath@countb>80\relax%
                    \c@pgfmath@counta=9\relax%
                \else%
                    \c@pgfmath@counta=8\relax%
                \fi%
            \else%
                \ifnum\c@pgfmath@countb>48\relax%
                    \c@pgfmath@counta=7\relax%
                \else%
                    \c@pgfmath@counta=6\relax%
                \fi%
            \fi%
        \else%
            \ifnum\c@pgfmath@countb>15\relax%
                \ifnum\c@pgfmath@countb>24\relax%
                    \c@pgfmath@counta5\relax%
                \else%
                    \c@pgfmath@counta=4\relax%
                \fi%
            \else%
                \ifnum\c@pgfmath@countb>3\relax%
                    \ifnum\c@pgfmath@countb>8\relax%
                        \c@pgfmath@counta=3\relax%
                    \else%
                        \c@pgfmath@counta=2\relax%
                    \fi%
                \else%
                    \ifnum\c@pgfmath@countb>0\relax%
                        \c@pgfmath@counta=1\relax%
                    \else%
                        \c@pgfmath@counta=0\relax%
                    \fi%
                \fi%
            \fi%
        \fi%
        \edef\pgfmath@root{\the\c@pgfmath@counta}%
        \edef\pgfmath@rootspecial{\the\c@pgfmath@counta}%
        \multiply\c@pgfmath@counta by-\c@pgfmath@counta\relax%
        \advance\c@pgfmath@counta by#1#2\relax%
        \edef\pgfmath@remainder{\the\c@pgfmath@counta}%
        \pgfmath@@@sqrt@%
}

\def\pgfmath@@@sqrt@#1#2{%
        \ifx\pgfmath@empty#1%
            \edef\pgfmath@remainder{\pgfmath@remainder00}%
            \def\pgfmath@tokens{\pgfmath@empty\pgfmath@empty}%
        \else%
            \ifx\pgfmath@empty#2%
                \edef\pgfmath@remainder{\pgfmath@remainder#10}%
                \def\pgfmath@tokens{\pgfmath@empty\pgfmath@empty}%
            \else%
                \edef\pgfmath@remainder{\pgfmath@remainder#1#2}%
                \def\pgfmath@tokens{}%
        \fi\fi%
        \c@pgfmath@counta=\pgfmath@rootspecial\relax%
        \multiply\c@pgfmath@counta by20\relax%
        \c@pgfmath@countb=\c@pgfmath@counta%
        \multiply\c@pgfmath@countb by6\relax%
        \advance\c@pgfmath@countb by36\relax%
        \c@pgfmath@countc=\c@pgfmath@counta%
        \multiply\c@pgfmath@countc by2\relax%
        \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
            \advance\c@pgfmath@countb by-\c@pgfmath@countc%
            \advance\c@pgfmath@countb by-20\relax%
            \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                \advance\c@pgfmath@countb by-\c@pgfmath@countc%
                \advance\c@pgfmath@countb by-12\relax%
                \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                    \advance\c@pgfmath@countb by-\c@pgfmath@counta%
                    \advance\c@pgfmath@countb by-3\relax%
                    \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                        \def\pgfmath@digit{0}%
                    \else%
                        \def\pgfmath@digit{1}%
                    \fi%
                \else%
                    \advance\c@pgfmath@countb by\c@pgfmath@counta%
                    \advance\c@pgfmath@countb by5\relax%
                    \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                        \def\pgfmath@digit{2}%
                    \else%
                        \def\pgfmath@digit{3}%
                    \fi%
                \fi%
            \else%
                \advance\c@pgfmath@countb by\c@pgfmath@counta%
                \advance\c@pgfmath@countb by9\relax%
                \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                    \def\pgfmath@digit{4}%
                \else%
                    \def\pgfmath@digit{5}%
                \fi%
            \fi%
        \else%
            \advance\c@pgfmath@countb by\c@pgfmath@countc%
            \advance\c@pgfmath@countb by28\relax%
            \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                \advance\c@pgfmath@countb by-\c@pgfmath@counta%
                \advance\c@pgfmath@countb by-15\relax%
                \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                    \def\pgfmath@digit{6}%
                \else%
                    \def\pgfmath@digit{7}%
                \fi%
            \else%
                \advance\c@pgfmath@countb by\c@pgfmath@counta%
                \advance\c@pgfmath@countb by17\relax%
                \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                    \def\pgfmath@digit{8}%
                \else%
                    \def\pgfmath@digit{9}%
                \fi%
            \fi%
        \fi%
        \edef\pgfmath@rootspecial{\pgfmath@rootspecial\pgfmath@digit}%
        \advance\c@pgfmath@counta by\pgfmath@digit\relax%
        \multiply\c@pgfmath@counta by-\pgfmath@digit\relax%
        \advance\c@pgfmath@counta by\pgfmath@remainder\relax%
        \edef\pgfmath@remainder{\the\c@pgfmath@counta}%
        \c@pgfmath@counta=\pgfmath@targetiterations\relax%
        \advance\c@pgfmath@counta by-1\relax%
        \edef\pgfmath@targetiterations{\the\c@pgfmath@counta}%
        \ifnum\c@pgfmath@counta=0\relax%
            \edef\pgfmath@root{\pgfmath@root.\pgfmath@digit}%
        \else%
            \edef\pgfmath@root{\pgfmath@root\pgfmath@digit}%
        \fi%
        \ifnum\c@pgfmath@counta=-4\relax%
            \let\pgfmath@next\pgfmath@sqrt@end%
        \else%
            \let\pgfmath@next\pgfmath@@@sqrt@%
        \fi%
        \expandafter\pgfmath@next\pgfmath@tokens%
}

\def\pgfmath@sqrt@end#1\pgfmath@{%
        \edef\pgfmathresult{\pgfmath@root}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup}

\pgfmathdeclarefunction{pow}{2}{%
  \begingroup%
    \pgfmath@xa=#1pt%
    \pgfmath@xb=#2pt%
    \ifdim\pgfmath@xa=0pt\relax%
      \ifdim\pgfmath@xb=0pt\relax%
        \pgfmath@x=1pt\relax%
      \else%
        \pgfmath@x=0pt\relax%
      \fi%
    \else%
      \afterassignment\pgfmath@x%
      \expandafter\c@pgfmath@counta\the\pgfmath@xb\relax%
      \ifnum\c@pgfmath@counta<0\relax%
        \c@pgfmath@counta=-\c@pgfmath@counta%
        \pgfmathreciprocal@{#1}%
        \pgfmath@xa=\pgfmathresult pt\relax%
      \fi
      \ifdim\pgfmath@x=0pt\relax%
        \pgfmath@x=1pt\relax%
        \pgfmathloop%
          \ifnum\c@pgfmath@counta>0\relax%
            \ifodd\c@pgfmath@counta%
              \pgfmath@x=\pgfmath@tonumber{\pgfmath@x}\pgfmath@xa%
            \fi
            \ifnum\c@pgfmath@counta>1\relax%
              \pgfmath@xa=\pgfmath@tonumber{\pgfmath@xa}\pgfmath@xa%
            \fi%
            \divide\c@pgfmath@counta by2\relax%
        \repeatpgfmathloop%
      \else%
        \pgfmathln@{#1}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmath@x=\pgfmath@tonumber{\pgfmath@xb}\pgfmath@x%
        \pgfmathexp@{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@x=\pgfmathresult pt\relax%
      \fi%
    \fi
    \pgfmath@returnone\pgf@x%
  \endgroup%
}

\pgfmathdeclarefunction{factorial}{1}{%
    \begingroup%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \c@pgfmath@counta=#1\relax\pgfmath@%
        \pgfmath@x=1pt\relax%
        \pgfmathloop%
        \ifnum\c@pgfmath@counta<2\relax%
        \else%
            \multiply\pgfmath@x by\c@pgfmath@counta%
            \advance\c@pgfmath@counta by-1\relax%
        \repeatpgfmathloop%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.code.tex ====

\def\pgfmathdeclarefunction{\pgfmath@ifnextchar*\pgfmathdeclarefunction@force\pgfmathdeclarefunction@check}
\def\pgfmathdeclarefunction@check#1{%
    \expandafter\ifx\csname pgfmath@function@#1\endcsname\relax\else%
        \pgfmath@error{The function `#1' already exists}{}%
    \fi%
    \pgfmath@declarefunction{#1}%
}
\def\pgfmathdeclarefunction@force*{\pgfmath@declarefunction}%

\def\pgfmathredeclarefunction#1#2{%
    \expandafter\ifx\csname pgfmath@function@#1\endcsname\relax%
        \pgfmath@error{The function `#1' does not exist}{}%
    \else%
    \edef\pgf@marshal{\noexpand\pgfmathdeclarefunction*{#1}{\csname    pgfmath@operation@#1@arity\endcsname}}%
    \pgf@marshal{#2}%
    \fi%
}

\def\pgfmath@declarefunction#1#2{%
    \pgfmath@namedef{pgfmath@function@#1}{#1}%
    \pgfmath@namedef{pgfmath@operation@#1@type}{function}%
    \pgfmath@namedef{pgfmath@operation@#1@arity}{#2}%
    \pgfmath@namedef{pgfmath@operation@#1@infix}{#1}%
    \pgfmath@namedef{pgfmath@operation@#1@precedence}{1000}%
    \expandafter\ifx\csname pgfmath@operation@#1@arity\endcsname\pgfmath@dots%
        \pgfmath@namedef{pgfmath@operation@#1@arity}{1}%
    \else%
        \ifnum\csname pgfmath@operation@#1@arity\endcsname>9\relax%
                \pgfmath@namedef{pgfmath@operation@#1@arity}{1}%
        \fi%
    \fi%
    \edef\pgfmath@marshal{%
        \noexpand\pgfmath@@declarefunction%
        {\expandafter\noexpand\csname pgfmath#1\endcsname}%
        {\expandafter\noexpand\csname pgfmath#1@\endcsname}%
        {\csname pgfmath@operation@#1@arity\endcsname}%
    }%
    \pgfkeysvalueof{/pgf/declare function/execute at begin function}%
    \pgfmath@marshal%
}

\def\pgfmath@@declarefunction#1#2#3#4{%
    \pgfkeysvalueof{/pgf/declare function/execute at end function}%
    \ifcase#3\relax%
        \def#1{#2}%
        \def\pgfmath@@head{\def#2}%
    \or
        \def#1##1{\pgfmathparse{##1}\expandafter#2\expandafter{\pgfmathresult}}%
        \def\pgfmath@@head{\def#2####1}%
    \else%
        \pgfmath@toks={}%
        \pgfmathloop%
        \ifnum\pgfmathcounter>#3\relax%
        \else%
            \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@char@hash}%
            \expandafter\pgfmath@addto@toks\expandafter{\pgfmathcounter}%
        \repeatpgfmathloop%
        \edef\pgfmath@head{\noexpand\def\noexpand#1\the\pgfmath@toks}%
        \edef\pgfmath@@head{\noexpand\def\noexpand#2\the\pgfmath@toks}%
        \pgfmath@toks={}%
        \def\pgfmath@arguments{}%
        \pgfmathloop%
        \ifnum\pgfmathcounter>#3\relax%
        \else%
            \pgfmath@addto@toks{\pgfmathparse}%
            \expandafter\expandafter\expandafter\pgfmath@addto@toks%
                \expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter%
                    {\expandafter\pgfmath@char@hash\pgfmathcounter}}%
            \pgfmath@addto@toks{\let}%
            \expandafter\pgfmath@addto@toks\expandafter{%
                \csname pgfmath@argument@\pgfmathcounter\endcsname=\pgfmathresult}%
            \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
                \pgfmath@arguments\expandafter\expandafter\expandafter{\expandafter%
                    \pgfmath@arguments\expandafter{\csname pgfmath@argument@\pgfmathcounter\endcsname}}%
        \repeatpgfmathloop%
        \expandafter\pgfmath@addto@toks\expandafter{\expandafter#2\pgfmath@arguments}%
        \edef\pgfmath@body{{\the\pgfmath@toks}}%
        \expandafter\pgfmath@head\pgfmath@body%
    \fi%
    \pgfmath@@head{#4}%
}

\def\pgfmath@addto@toks#1{%
    \edef\pgfmath@toks@expanded{\the\pgfmath@toks}%
    \expandafter\pgfmath@toks\expandafter{\pgfmath@toks@expanded#1}}

\pgfkeys{%
    /pgf/declare function/.code={%
        \pgfmath@local@functions#1@=@;%
    },
    /pgf/declare function/execute at begin function/.initial={},
    /pgf/declare function/execute at end function/.initial={},
    /pgf/declare function/ignore spaces/.is choice,
    /pgf/declare function/ignore spaces/.default=true,
    /pgf/declare function/ignore spaces/true/.style={%
        /pgf/declare function/execute at begin function={%
            \begingroup
            \catcode`\^^I=9\relax
            \catcode`\ =9\relax
            \catcode`\~=10\relax
            \endlinechar=`\ \relax
        },
        /pgf/declare function/execute at end function={%
            \endgroup
        },
    },
    /pgf/declare function/ignore spaces/false/.style={%
        /pgf/declare function/execute at begin function={},
        /pgf/declare function/execute at end function={},
    },
}

\def\pgfmath@local@gobbleone#1{}
\def\pgfmath@local@at{@}%

\def\pgfmath@local@functions{%
    \pgfutil@ifnextchar x{\pgfmath@local@@functions}{\pgfmath@local@@functions}%
}

\def\pgfmath@local@@functions#1=#2;{%
    \def\pgfmath@local@temp{#1}%
    \ifx\pgfmath@local@temp\pgfmath@local@at%
        \let\pgfmath@local@next=\relax%
    \else%
        \pgfmath@local@function#1=#2;%
        \let\pgfmath@local@next=\pgfmath@local@functions%
    \fi%
    \pgfmath@local@next%
}

\def\pgfmath@local@function{%
    \let\pgfmath@local@name=\pgfutil@empty%
    \let\pgfmath@local@args=\pgfutil@empty%
    \let\pgfmath@local@body=\pgfutil@empty%
    \pgfmath@local@@function}

\def\pgfmath@local@@function#1{%
    \if#1=%
        \let\pgfmath@local@next=\pgfmath@local@function@body%
    \else%
        \if#1(%
            \let\pgfmath@local@next=\pgfmath@local@function@args%
        \else%
            \expandafter\def\expandafter\pgfmath@local@name\expandafter{\pgfmath@local@name#1}%
            \let\pgfmath@local@next=\pgfmath@local@@function%
        \fi%
    \fi%
    \pgfmath@local@next%
}

\def\pgfmath@local@function@args#1){%
    \def\pgfmath@local@args{#1}%
    \pgfmath@local@@function}

\def\pgfmath@local@function@body#1;{%
    \def\pgfmath@local@body{#1}%
    \begingroup%
        \c@pgf@counta=0\relax%
        \ifx\pgfmath@local@args\pgfmath@empty%
            \expandafter\pgfmath@toks\expandafter=\expandafter{\pgfmath@local@body}%
        \else%
            \pgfmath@toks={}%
            \expandafter\pgfmath@local@function@@body\pgfmath@local@args,,%
        \fi%
        \xdef\pgfmath@local@temp{%
            \noexpand\pgfmathnotifynewdeclarefunction{\pgfmath@local@name}{\the\c@pgf@counta}%
                {\the\pgfmath@toks}%
        }%
    \endgroup%
    \pgfmath@local@temp%
}

\def\pgfmathnotifynewdeclarefunction#1#2#3{%
    \pgfmathdeclarefunction{#1}{#2}{\pgfmathparse{#3}}%
}%

\def\pgfmath@local@function@@body#1,{%
    \def\pgfmath@local@test{#1}%
    \ifx\pgfmath@local@test\pgfutil@empty%
        \let\pgfmath@local@next=\relax%
    \else%
        \edef\pgfmath@local@var@string{@\expandafter\pgfmath@local@gobbleone\string#1}%
        \advance\c@pgf@counta by1\relax%
        \expandafter\expandafter\expandafter\pgfmath@toks\expandafter\expandafter\expandafter=%
            \expandafter\expandafter\expandafter{\expandafter\pgfmath@char@hash\the\c@pgf@counta}%
        \edef#1{\the\pgfmath@toks}%
        \pgfmath@toks={}%
        \expandafter\pgfmath@local@function@@@body\pgfmath@local@body @%
        \edef\pgfmath@local@body{\the\pgfmath@toks}%
        \let\pgfmath@local@next=\pgfmath@local@function@@body%
    \fi%
    \pgfmath@local@next%
}

\def\pgfmath@local@function@@@body{%
    \pgfutil@ifnextchar\bgroup{\pgfmath@local@function@@@body@bgroup}%
        {\pgfmath@local@function@@@body@nobgroup}}%

\def\pgfmath@local@function@@@body@bgroup#1{%
    \begingroup%
        \pgfmath@toks={}%
        \pgfmath@local@function@@@body#1 @%
        \xdef\pgfmath@local@temp{{\the\pgfmath@toks}}%
    \endgroup%
    \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@local@temp}%
    \pgfmath@local@function@@@body%
}

\def\pgfmath@local@function@@@body@nobgroup#1{%
    \ifx#1@%
        \let\pgfmath@local@next=\relax%
    \else%
        \let\pgfmath@local@next=\pgfmath@local@function@@@body%
        \edef\pgfmath@local@var@@string{@\expandafter\pgfmath@local@gobbleone\string#1}%
        \ifx\pgfmath@local@var@@string\pgfmath@local@var@string%
            \expandafter\pgfmath@addto@toks\expandafter{#1}%
        \else%
            \edef\pgfmath@local@temp{\the\pgfmath@toks}%
            \pgfmath@toks={#1}%
            \edef\pgfmath@local@@temp{\the\pgfmath@toks}%
            \expandafter\pgfmath@toks\expandafter=\expandafter{\pgfmath@local@temp}%
            \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@local@@temp}%
        \fi%
    \fi%
    \pgfmath@local@next%
}

\def\pgfmathdeclarepseudoconstant#1#2{%
    \pgfmathdeclarefunction*{#1}{0}{#2}%
}%
\def\pgfmathredeclarepseudoconstant#1#2{%
    \pgfmathredeclarefunction{#1}{#2}%
}%

==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex ====


\pgfmathdeclarefunction{greater}{2}{%
  \begingroup%
    \ifdim#1pt>#2pt\relax%
        \def\pgfmathresult{1}%
    \else%
      \def\pgfmathresult{0}%
    \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}
\let\pgfmathgreaterthan=\pgfmathgreater

\pgfmathdeclarefunction{less}{2}{%
  \begingroup%
    \ifdim#1pt<#2pt\relax%
        \def\pgfmathresult{1}%
    \else%
      \def\pgfmathresult{0}%
    \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}
\let\pgfmathlessthan=\pgfmathless

\pgfmathdeclarefunction{equal}{2}{%
  \begingroup%
    \ifdim#1pt=#2pt\relax%
        \def\pgfmathresult{1}%
    \else%
      \def\pgfmathresult{0}%
    \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}
\let\pgfmathequalto=\pgfmathequal


\newif\ifpgfmathcomparison
\pgfmathdeclarefunction{approxequalto}{2}{%
    \begingroup%
        \pgfmath@x=#1pt\relax%
        \pgfmath@y=#2pt\relax%
        \advance\pgfmath@x by-\pgfmath@y%
        \ifdim\pgfmath@x<0pt\relax%
            \multiply\pgfmath@x by-1\relax%
        \fi
        \ifdim\pgfmath@x<0.0001pt\relax%
            \def\pgfmathresult{1.0}%
            \global\pgfmathcomparisontrue%
        \else%
            \def\pgfmathresult{0.0}%
            \global\pgfmathcomparisonfalse%
        \fi%
    \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}



\pgfmathdeclarefunction{ifthenelse}{3}{%
    \begingroup%
        \ifdim#1pt=0.0pt\relax%
            \expandafter\def\expandafter\pgfmathresult\expandafter{#3}%
        \else%
            \expandafter\def\expandafter\pgfmathresult\expandafter{#2}%
        \fi%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

\pgfmathdeclarefunction{notequal}{2}{%
  \begingroup%
    \ifdim#1pt=#2pt\relax%
            \def\pgfmathresult{0}%
    \else%
      \def\pgfmathresult{1}%
    \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\pgfmathdeclarefunction{notless}{2}{%
  \begingroup%
    \ifdim#1pt<#2pt\relax%
            \def\pgfmathresult{0}%
    \else%
      \def\pgfmathresult{1}%
    \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\pgfmathdeclarefunction{notgreater}{2}{%
  \begingroup%
    \ifdim#1pt>#2pt\relax%
            \def\pgfmathresult{0}%
    \else%
      \def\pgfmathresult{1}%
    \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\pgfmathdeclarefunction{and}{2}{%
  \begingroup%
      \def\pgfmathresult{1}%
    \ifdim#1pt=0pt\relax%
            \def\pgfmathresult{0}%
        \else%
            \ifdim#2pt=0pt\relax%
                \def\pgfmathresult{0}%
            \fi%
        \fi%
     \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\pgfmathdeclarefunction{or}{2}{%
  \begingroup%
    \def\pgfmathresult{0}%
    \ifdim#1pt=0pt\relax%
            \ifdim#2pt=0pt\relax%
            \else%
                \def\pgfmathresult{1}%
            \fi%
        \else%
            \def\pgfmathresult{1}%
        \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\pgfmathdeclarefunction{not}{1}{%
  \begingroup%
    \ifdim#1pt=0pt\relax%
            \def\pgfmathresult{1}%
        \else%
            \def\pgfmathresult{0}%
        \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\pgfmathdeclarefunction{true}{0}{\def\pgfmathresult{1}}

\pgfmathdeclarefunction{false}{0}{\def\pgfmathresult{0}}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex ====

\pgfmathdeclarefunction{gcd}{2}{%
  \begingroup
    \pgfmathcontinuelooptrue
    \pgfmath@xa=#1pt
    \pgfmath@xb=#2pt
    \ifdim\pgfmath@xa=0pt\relax
      \pgfmathcontinueloopfalse
      \pgfmath@xa=\pgfmath@xb
    \fi
    \ifdim\pgfmath@xb=0pt\relax
      \pgfmathcontinueloopfalse
      \pgfmath@xb=\pgfmath@xa
    \fi
    \ifdim\pgfmath@xa<0pt\relax
      \pgfmath@xa=-\pgfmath@xa
    \fi
    \ifdim\pgfmath@xb<0pt\relax
      \pgfmath@xb=-\pgfmath@xb
    \fi
    \loop
      \ifpgfmathcontinueloop
      \ifdim\pgfmath@xa=\pgfmath@xb
        \pgfmathcontinueloopfalse
      \else
        \ifdim\pgfmath@xa>\pgfmath@xb
          \advance\pgfmath@xa by-\pgfmath@xb
        \else
          \advance\pgfmath@xb by-\pgfmath@xa
        \fi
      \fi
    \repeat
    \pgfmathparse{int(\pgfmath@xa)}%
    \pgfmath@smuggleone\pgfmathresult
  \endgroup}

\newif\ifpgfmath@isprime@unknown
\newif\ifpgfmath@isprime

\pgfmathdeclarefunction{isprime}{1}{%
  \begingroup
    \pgfmath@isprime@unknowntrue
    \pgfmathsetcount\c@pgfmath@counta{abs(int(#1))}%
    \ifcase\c@pgfmath@counta\relax
      \pgfmath@isprimefalse
      \pgfmath@isprime@unknownfalse
    \or
      \pgfmath@isprimefalse
      \pgfmath@isprime@unknownfalse
    \or
      \pgfmath@isprimetrue
      \pgfmath@isprime@unknownfalse
    \or
      \pgfmath@isprimetrue
      \pgfmath@isprime@unknownfalse
    \else
      \ifodd\c@pgfmath@counta\relax
      \else
        \pgfmath@isprimefalse
        \pgfmath@isprime@unknownfalse
      \fi
    \fi
    \ifpgfmath@isprime@unknown
      \c@pgfmath@countd=3
      \pgfmath@isprimetrue
      \pgfmathloop
        \c@pgfmath@countb=\c@pgfmath@counta
        \divide\c@pgfmath@countb by\c@pgfmath@countd
        \ifnum\c@pgfmath@countb>\c@pgfmath@countd
          \pgfmath@isprime@unknowntrue
        \else
          \pgfmath@isprime@unknownfalse
        \fi
        \multiply\c@pgfmath@countb by\c@pgfmath@countd
        \ifnum\c@pgfmath@countb=\c@pgfmath@counta
          \global\pgfmath@isprimefalse
          \pgfmath@isprime@unknownfalse
        \fi
      \ifpgfmath@isprime@unknown\advance\c@pgfmath@countd by 2
      \repeatpgfmathloop
    \fi
    \ifpgfmath@isprime
      \def\pgfmathresult{1}%
    \else
      \def\pgfmathresult{0}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
  \endgroup}

\pgfmathdeclarefunction{isodd}{1}{%
  \begingroup
    \pgfmathsetcount\c@pgfmath@counta{abs(int(#1))}%
    \ifodd\c@pgfmath@counta
      \def\pgfmathresult{1}%
    \else
      \def\pgfmathresult{0}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
  \endgroup}

\pgfmathdeclarefunction{iseven}{1}{%
  \begingroup
    \pgfmathsetcount\c@pgfmath@counta{abs(int(#1))}%
    \ifodd\c@pgfmath@counta
      \def\pgfmathresult{0}%
    \else
      \def\pgfmathresult{1}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
  \endgroup}

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex ====


\pgfmathdeclarefunction{veclen}{2}{%
  \begingroup%
    \pgfmath@x#1pt\relax%
    \pgfmath@y#2pt\relax%
        \ifdim\pgfmath@x<0pt\relax%
            \pgfmath@x-\pgfmath@x%
        \fi%
        \ifdim\pgfmath@y<0pt\relax%
            \pgfmath@y-\pgfmath@y%
        \fi%
        \ifdim\pgfmath@x=0pt\relax%
            \pgfmath@x\pgfmath@y%
        \else%
            \ifdim\pgfmath@y=0pt\relax%
            \else%
                \ifdim\pgfmath@x>\pgfmath@y%
                    \pgfmath@xa\pgfmath@x%
                    \pgfmath@x\pgfmath@y%
                    \pgfmath@y\pgfmath@xa%
                \fi%
                \ifdim\pgfmath@y>10000pt\relax%
                    \c@pgfmath@counta1500\relax%
                \else%
                    \ifdim\pgfmath@y>1000pt\relax%
                        \c@pgfmath@counta150\relax%
                    \else%
                        \ifdim\pgfmath@y>100pt\relax%
                            \c@pgfmath@counta50\relax%
                        \else%
                            \c@pgfmath@counta1\relax%
                        \fi%
                    \fi%
                \fi%
                \divide\pgfmath@x\c@pgfmath@counta\relax%
                \divide\pgfmath@y\c@pgfmath@counta\relax%
                \pgfmathreciprocal@{\pgfmath@tonumber{\pgfmath@y}}%
                \pgfmath@x\pgfmathresult\pgfmath@x%
                \pgfmath@xa\pgfmath@tonumber{\pgfmath@x}\pgfmath@x%
                \edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@xa}}%
                \pgfmath@x-0.01019210944\pgfmath@xa%
                \advance\pgfmath@x0.04453994279pt\relax%
                \pgfmath@x\pgfmath@temp\pgfmath@x%
                \advance\pgfmath@x-0.1195159052pt\relax%
                \pgfmath@x\pgfmath@temp\pgfmath@x%
                \advance\pgfmath@x0.4993615349pt\relax%
                \pgfmath@x\pgfmath@temp\pgfmath@x%
                \advance\pgfmath@x1.000012594pt\relax%
                \ifdim\pgfmath@y<0pt\relax%
                    \pgfmath@y-\pgfmath@y%
                \fi%
                \pgfmath@x\pgfmath@tonumber{\pgfmath@y}\pgfmath@x%
                \multiply\pgfmath@x\c@pgfmath@counta\relax%
            \fi%
        \fi%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\pgfmathdeclarefunction{cosh}{1}{%
    \begingroup
        \edef\pgfmath@arg{#1}%
        \pgfmathexp@{\pgfmath@arg}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmathexp@{-\pgfmath@arg}%
        \advance\pgfmath@x by\pgfmathresult pt\relax%
        \divide\pgfmath@x by2\relax%
        \pgfmath@returnone\pgfmath@x%
    \endgroup}

\pgfmathdeclarefunction{sinh}{1}{%
    \begingroup
        \edef\pgfmath@arg{#1}%
        \pgfmathexp@{\pgfmath@arg}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmathexp@{-\pgfmath@arg}%
        \advance\pgfmath@x by-\pgfmathresult pt\relax%
        \divide\pgfmath@x by2\relax%
        \pgfmath@returnone\pgfmath@x%
    \endgroup
}%

\pgfmathdeclarefunction{tanh}{1}{%
    \begingroup
        \edef\pgfmath@arg{#1}%
        \pgfmathsinh@{\pgfmath@arg}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmathcosh@{\pgfmath@arg}%
        \pgfmath@y=\pgfmathresult pt\relax%
        \pgfmathdivide@{\pgfmath@tonumber{\pgfmath@x}}{\pgfmath@tonumber{\pgfmath@y}}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmath@returnone\pgfmath@x%
    \endgroup
}%

\def\pgfmathscientific#1#2{%
    \begingroup%
        \edef\pgfmath@sci@exponent{#2}%
        \pgfmath@x#1pt\relax%
        \ifdim\pgfmath@x<0pt\relax%
            \pgfmath@x-\pgfmath@x%
            \edef\pgfmath@sci@sign{-}%
            \expandafter\edef\expandafter\pgfmath@temp\expandafter{\expandafter\pgfmath@gobbleone#1}%
        \else%
            \edef\pgfmath@sci@sign{+}%
            \edef\pgfmath@temp{#1}%
        \fi%
        \expandafter\pgfmath@in@\expandafter.\expandafter{#1}%
        \ifpgfmath@in@%
        \else%
            \edef\pgfmath@temp{\pgfmath@temp.0}%
        \fi%
        \expandafter\pgfmath@scientific@@\pgfmath@temp00000000000\pgfmath@}

\def\pgfmath@scientific@@#1.#2#3#4#5#6{%
        \edef\pgfmath@sci@int{#1}%
        \edef\pgfmath@sci@mantissaA{#2#3#4#5#6}%
        \pgfmath@scientific@@@}

\def\pgfmath@scientific@@@#1#2#3#4#5#6\pgfmath@{%
        \edef\pgfmath@sci@mantissaB{#1#2#3#4#5}%
        \c@pgfmath@counta\pgfmath@sci@exponent\relax%
                \ifnum\c@pgfmath@counta<-4\relax%
                  \pgfmath@x0pt\relax%
                \else%
        \c@pgfmath@countb\c@pgfmath@counta%
        \ifnum\c@pgfmath@counta<0\relax%
            \c@pgfmath@counta-\c@pgfmath@counta%
        \fi%
        \pgfmathpow@{10}{\the\c@pgfmath@counta}%
        \afterassignment\pgfmath@gobbletilpgfmath@
        \c@pgfmath@countc\pgfmathresult\relax\pgfmath@
        \edef\pgfmath@sci@factor{\the\c@pgfmath@countc}%
        \ifnum\c@pgfmath@countb<0\relax%
            \pgfmath@x\pgfmath@sci@int.\pgfmath@sci@mantissaA pt\relax%
            \divide\pgfmath@x\pgfmath@sci@factor\relax%
        \else%
            \c@pgfmath@counta\pgfmath@sci@int%
            \c@pgfmath@countb\pgfmath@sci@mantissaA%
            \multiply\c@pgfmath@counta\pgfmath@sci@factor\relax%
            \multiply\c@pgfmath@countb\pgfmath@sci@factor\relax%
            \c@pgfmath@countc\c@pgfmath@countb%
            \divide\c@pgfmath@countb100000\relax%
            \advance\c@pgfmath@counta\c@pgfmath@countb%
            \multiply\c@pgfmath@countb100000\relax%
            \advance\c@pgfmath@countc-\c@pgfmath@countb%
            \c@pgfmath@countb\pgfmath@sci@mantissaB\relax%
            \multiply\c@pgfmath@countb\pgfmath@sci@factor\relax%
            \divide\c@pgfmath@countb100000\relax%
            \advance\c@pgfmath@countc\c@pgfmath@countb%
            \advance\c@pgfmath@countc100000\relax%
            \edef\pgfmath@sci@result{\pgfmath@sci@sign\the\c@pgfmath@counta.\expandafter\pgfmath@gobbleone\the\c@pgfmath@countc pt}%
            \pgfmath@x\pgfmath@sci@result\relax%
        \fi\fi%
        \pgfmath@returnone\pgfmath@x%
    \endgroup}



\pgfmathdeclarefunction{width}{1}{%
    \begingroup%
        \setbox\pgfmath@box=\hbox{{\pgfmath@selectfont{#1}}}%
        \pgfmath@x=\wd\pgfmath@box%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}


\pgfmathdeclarefunction{height}{1}{%
    \begingroup%
        \setbox\pgfmath@box=\hbox{{\pgfmath@selectfont{#1}}}%
        \pgfmath@x=\ht\pgfmath@box%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

\pgfmathdeclarefunction{depth}{1}{%
    \begingroup%
        \setbox\pgfmath@box=\hbox{{\pgfmath@selectfont{#1}}}%
        \pgfmath@x=\dp\pgfmath@box%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}


\pgfmathdeclarefunction{array}{2}{%
    \begingroup%
        \afterassignment\pgfmath@gobbletilpgfmath@\pgfmath@count=#2\relax\pgfmath@%
        \expandafter\pgfmatharray@@#1\pgfmath@stop%
}

\def\pgfmath@token@stop{\pgfmath@stop}%
\def\pgfmatharray@@#1{%
    \def\pgfmath@temp{#1}%
    \advance\pgfmath@count by-1\relax%
    \ifx\pgfmath@temp\pgfmath@token@stop%
        \pgfmath@error{Array index out of bounds.}{}%
        \def\pgfmathresult{0}%
        \pgfmath@smuggleone\pgfmathresult\endgroup%
        \let\pgfmath@next=\relax%
    \else%
        \ifnum\pgfmath@count=-1\relax%
            \def\pgfmathresult{#1}%
            \let\pgfmath@next=\pgfmatharray@@@%
        \else%
            \let\pgfmath@next=\pgfmatharray@@%
        \fi%
    \fi%
    \pgfmath@next}

\def\pgfmatharray@@@#1\pgfmath@stop{%
    \pgfmath@smuggleone\pgfmathresult\endgroup%
}

\pgfmathdeclarefunction{dim}{1}{%
  \begingroup
    \pgfmath@count=0\relax
    \expandafter\pgfmath@dim@i\pgfutil@firstofone#1{\pgfmath@token@stop}%
    \edef\pgfmathresult{\the\pgfmath@count}%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup}

\def\pgfmath@dim@i#1#{%
  \pgfutil@ifempty{#1}{}{\advance\pgfmath@count by 1}%
  \pgfmath@dim@ii{#1}}

\def\pgfmath@dim@ii#1#2{%
  \ifx\pgfmath@token@stop#2%
  \else
    \advance\pgfmath@count by 1\relax
    \expandafter\pgfmath@dim@i
  \fi}


\pgfmathdeclarefunction{max}{...}{%
    \begingroup%
        \pgfmath@x=-16383pt\relax%
        \pgfmathmax@@#1{}}

\def\pgfmathmax@@#1{%
    \def\pgfmath@temp{#1}%
    \ifx\pgfmath@temp\pgfmath@empty%
        \let\pgfmath@next=\pgfmathmax@@@%
    \else%
        \ifdim#1pt>\pgfmath@x%
            \pgfmath@x=#1pt\relax%
        \fi%
        \let\pgfmath@next=\pgfmathmax@@%
    \fi%
    \pgfmath@next}

\def\pgfmathmax@@@{\pgfmath@returnone\pgfmath@x\endgroup}%

\def\pgfmathmax#1#2{%
    \pgfmathparse{#1,#2}%
    \expandafter\pgfmathmax@\expandafter{\pgfmathresult}%
}

\pgfmathdeclarefunction{min}{...}{%
    \begingroup%
        \pgfmath@x=16383pt\relax%
        \pgfmathmin@@#1{}}

\def\pgfmathmin@@#1{%
    \def\pgfmath@temp{#1}%
    \ifx\pgfmath@temp\pgfmath@empty%
        \let\pgfmath@next=\pgfmathmin@@@%
    \else%
        \ifdim#1pt<\pgfmath@x%
            \pgfmath@x=#1pt\relax%
        \fi%
        \let\pgfmath@next=\pgfmathmin@@%
    \fi%
    \pgfmath@next}

\def\pgfmathmin@@@{\pgfmath@returnone\pgfmath@x\endgroup}%

\def\pgfmathmin#1#2{%
    \pgfmathparse{#1,#2}%
    \expandafter\pgfmathmin@\expandafter{\pgfmathresult}%
}



\pgfmathdeclarefunction{scalar}{1}{%
  \def\pgfmathresult{#1}%
  \global\pgfmathunitsdeclaredfalse%
}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.random.code.tex ====


\def\pgfmath@rnd@m{2147483647}%

\begingroup
\c@pgfmath@counta=\time%
\multiply\c@pgfmath@counta by\year%
\ifnum\c@pgfmath@counta=0
  \c@pgfmath@counta=1
\fi
\xdef\pgfmath@rnd@z{\the\c@pgfmath@counta}%
\endgroup

\def\pgfmathsetseed#1{%
    \pgfmathparse{#1}\expandafter\pgfmath@setseed\pgfmathresult.0\pgfmath@stop
}%
\def\pgfmath@setseed#1.#2\pgfmath@stop{\def\pgfmath@rnd@z{#1}}%

\def\pgfmath@rnd@a{69621}
\def\pgfmath@rnd@r{23902}
\def\pgfmath@rnd@q{30845}

\def\pgfmathgeneratepseudorandomnumber{%
    \begingroup%
        \c@pgfmath@counta=\pgfmath@rnd@z%
        \c@pgfmath@countb=\pgfmath@rnd@z%
        \c@pgfmath@countc=\pgfmath@rnd@q%
        \divide\c@pgfmath@counta by\c@pgfmath@countc%
        \multiply\c@pgfmath@counta by-\c@pgfmath@countc%
        \advance\c@pgfmath@counta by\c@pgfmath@countb
        \c@pgfmath@countc=\pgfmath@rnd@a%
        \multiply\c@pgfmath@counta by\c@pgfmath@countc%
        \c@pgfmath@countc=\pgfmath@rnd@q%
        \divide\c@pgfmath@countb by\c@pgfmath@countc%
        \c@pgfmath@countc=\pgfmath@rnd@r%
        \multiply\c@pgfmath@countb by\c@pgfmath@countc%
        \advance\c@pgfmath@counta by-\c@pgfmath@countb%
        \ifnum\c@pgfmath@counta<0\relax%
            \c@pgfmath@countb=\pgfmath@rnd@m%
            \advance\c@pgfmath@counta by\c@pgfmath@countb%
        \fi%
        \xdef\pgfmath@rnd@z{\the\c@pgfmath@counta}%
    \endgroup%
    \edef\pgfmathresult{\pgfmath@rnd@z}%
}

\pgfmathdeclarefunction{rnd}{0}{%
    \begingroup%
        \pgfmathgeneratepseudorandomnumber%
        \c@pgfmath@counta\pgfmathresult%
        \c@pgfmath@countb\c@pgfmath@counta%
        \divide\c@pgfmath@countb100001\relax%
        \multiply\c@pgfmath@countb-100001\relax%
        \advance\c@pgfmath@countb\c@pgfmath@counta%
        \advance\c@pgfmath@countb1000000\relax%
        \expandafter\pgfmathrnd@@\the\c@pgfmath@countb\pgfmath@%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}%

\def\pgfmathrnd@@#1#2#3\pgfmath@{%
    \edef\pgfmath@temp{#2.#3}%
    \pgfmath@x=\pgfmath@temp pt\relax%
}%

\pgfmathdeclarefunction{rand}{0}{%
    \begingroup%
        \pgfmathgeneratepseudorandomnumber%
        \c@pgfmath@counta\pgfmathresult%
        \c@pgfmath@countb\c@pgfmath@counta%
        \divide\c@pgfmath@countb200001\relax%
        \multiply\c@pgfmath@countb-200001\relax%
        \advance\c@pgfmath@countb\c@pgfmath@counta%
        \advance\c@pgfmath@countb-100000\relax%
        \ifnum\c@pgfmath@countb<0\relax%
            \advance\c@pgfmath@countb-1000000\relax%
        \else%
            \advance\c@pgfmath@countb1000000\relax%
        \fi%
        \expandafter\pgfmathrand@@\the\c@pgfmath@countb\pgfmath@%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}%

\def\pgfmathrand@@#1#2#3#4\pgfmath@{%
    \ifx#1-%
        \edef\pgfmath@temp{-#3.#4}%
    \else%
        \edef\pgfmath@temp{#2.#3#4}%
    \fi%
    \pgfmath@x=\pgfmath@temp pt\relax%
}%

\pgfmathdeclarefunction{random}{...}{%
    \begingroup%
        \def\pgfmath@temp{#1}%
        \ifx\pgfmath@temp\pgfmath@empty%
            \pgfmathrnd@%
        \else%
            \expandafter\pgfmathrandom@@#1\pgfmath@stop%
        \fi%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup}

\def\pgfmathrandom@@{\futurelet\pgfmath@token\pgfmathrandom@@@}
\def\pgfmathrandom@@@{%
    \ifx\pgfmath@token\bgroup%
        \expandafter\pgfmath@random@@@@%
    \else%
        \expandafter\pgfmath@random@@@@@%
    \fi%
}
\def\pgfmath@random@@@@@#1\pgfmath@stop{%
    \pgfmathrandominteger\pgfmathresult{1}{#1}%
}
\def\pgfmath@random@@@@#1#2\pgfmath@stop{%
    \pgfmathrandominteger\pgfmathresult{#1}{#2}%
}

\def\pgfmathrandominteger#1#2#3{%
    \begingroup%
        \pgfmathsetcount\c@pgfmath@counta{#2}%
        \pgfmathsetcount\c@pgfmath@countb{#3}%
        \c@pgfmath@countc\c@pgfmath@countb%
        \ifnum\c@pgfmath@counta>\c@pgfmath@countb\relax%
            \c@pgfmath@countc\c@pgfmath@counta%
            \c@pgfmath@counta\c@pgfmath@countb%
            \c@pgfmath@countb\c@pgfmath@countc%
        \fi%
        \c@pgfmath@countd\c@pgfmath@counta
        \advance\c@pgfmath@countc1\relax%
        \advance\c@pgfmath@countc-\c@pgfmath@counta%
        \pgfmathgeneratepseudorandomnumber%
        \c@pgfmath@counta\pgfmathresult\relax%
        \c@pgfmath@countb\c@pgfmath@counta%
        \divide\c@pgfmath@countb\c@pgfmath@countc%
        \multiply\c@pgfmath@countb-\c@pgfmath@countc%
        \advance\c@pgfmath@counta\c@pgfmath@countb%
        \advance\c@pgfmath@counta\c@pgfmath@countd
        \edef\pgfmathresult{\the\c@pgfmath@counta}%
        \pgfmath@smuggleone{\pgfmathresult}%
    \endgroup%
    \edef#1{\pgfmathresult}%
}

\def\pgfmathdeclarerandomlist#1#2{%
    \def\pgfmath@randomlistname{#1}%
    \begingroup%
        \c@pgfmath@counta=1\relax%
        \def\pgfmath@empty{pgfmath@empty}%
        \expandafter\pgfmath@scanrandomlist#2{pgfmath@empty}}
\def\pgfmath@scanrandomlist#1{%
    \def\pgfmath@scanneditem{#1}%
    \ifx\pgfmath@scanneditem\pgfmath@empty%
        \advance\c@pgfmath@counta-1\relax%
        \expandafter\xdef\csname pgfmath@randomlist@\pgfmath@randomlistname\endcsname{\the\c@pgfmath@counta}%
        \endgroup%
    \else%
        \expandafter\gdef\csname pgfmath@randomlist@\pgfmath@randomlistname @\the\c@pgfmath@counta\endcsname{#1}%
        \advance\c@pgfmath@counta1\relax%
        \expandafter\pgfmath@scanrandomlist%
    \fi}

\def\pgfmathrandomitem#1#2{%
    \pgfmath@ifundefined{pgfmath@randomlist@#2}{\pgfmath@error{Unknown random list `#2'}{}}{%
        \edef\pgfmath@randomlistlength{\csname pgfmath@randomlist@#2\endcsname}%
        \pgfmathrandominteger{\pgfmath@randomtemp}{1}{\pgfmath@randomlistlength}%
        \expandafter\def\expandafter#1\expandafter{\csname pgfmath@randomlist@#2@\pgfmath@randomtemp\endcsname}}}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.random.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.round.code.tex ====


\pgfmathdeclarefunction{round}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \afterassignment\pgfmath@xa%
        \expandafter\c@pgfmath@counta\the\pgfmath@x\relax%
        \pgfmath@xb\pgfmath@x%
        \ifdim\pgfmath@xb<0pt\relax%
            \ifdim\pgfmath@xa<0.5pt\relax%
            \else%
                \advance\c@pgfmath@counta-1\relax%
            \fi%
        \else%
            \ifdim\pgfmath@xa<0.5pt\relax%
            \else%
                \advance\c@pgfmath@counta1\relax%
            \fi%
        \fi%
        \pgfmath@returnone\the\c@pgfmath@counta pt%
    \endgroup%
}%

\pgfmathdeclarefunction{floor}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \afterassignment\pgfmathfloor@collect@remainder%
        \expandafter\c@pgfmath@counta\the\pgfmath@x\pgfmath@%
        \expandafter\pgfmath@x#1pt\relax%
        \ifdim\pgfmath@x<0pt\relax%
            \ifdim\pgfmathfloor@remainder>0pt
                \advance\c@pgfmath@counta by -1\relax%
            \else
            \fi
        \fi%
        \pgfmath@x\c@pgfmath@counta pt\relax%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}%

\def\pgfmathfloor@collect@remainder#1\pgfmath@{%
    \def\pgfmathfloor@remainder{#1}%
    \ifx\pgfmathfloor@remainder\pgfutil@empty
        \def\pgfmathfloor@remainder{0}%
    \fi
}%

\pgfmathdeclarefunction{ceil}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \expandafter\c@pgfmath@counta\the\pgfmath@x\relax\pgfmath@%
        \pgfmath@y\pgfmath@x%
        \advance\pgfmath@y-\c@pgfmath@counta pt\relax%
        \pgfmath@x\c@pgfmath@counta pt\relax%
        \ifdim\pgfmath@y>0pt\relax%
            \advance\pgfmath@x1pt\relax%
        \fi%
    \pgfmath@returnone\pgfmath@x%
    \endgroup%
}%

\pgfmathdeclarefunction{int}{1}{%
    \begingroup%
        \expandafter\pgfmathint@@#1.\pgfmath@stop
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup}

\def\pgfmathint@@#1.#2\pgfmath@stop{%
    \def\pgfmath@temp{#1}%
    \ifx\pgfmath@temp\pgfmath@empty%
        \def\pgfmathresult{0}%
    \else%
        \pgfmath@in@{#1}{+-+0-0}%
        \ifpgfmath@in@
            \def\pgfmathresult{0}%
        \else%
            \def\pgfmathresult{#1}%
        \fi%
    \fi}

\pgfmathdeclarefunction{frac}{1}{%
    \begingroup%
        \expandafter\pgfmathfrac@@#1.\pgfmath@stop%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup}

\def\pgfmathfrac@@#1.{%
    \pgfmath@ifnextchar\pgfmath@stop{\def\pgfmathresult{0.0}\pgfmath@gobbleone}{\pgfmathfrac@@@}%
}
\def\pgfmathfrac@@@#1.\pgfmath@stop{\def\pgfmathresult{0.#1}}

\pgfmathdeclarefunction{real}{1}{%
    \begingroup%
        \pgfmath@x=#1pt\relax%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.round.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex ====


\pgfmathdeclarefunction{pi}{0}{\def\pgfmathresult{3.141592654}}

\pgfkeys{
    /pgf/trig format/.is choice,
    /pgf/trig format/deg/.code={\def\pgfmath@trig@format@choice{0}},
    /pgf/trig format/rad/.code={\def\pgfmath@trig@format@choice{1}},
    /pgf/trig format/deg,
}

\def\pgfmathiftrigonometricusesdeg#1#2{%
    \if0\pgfmath@trig@format@choice
        #1%
    \else
        #2%
    \fi
}%

\pgfmathdeclarefunction{radians}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \pgfmath@x57.29577\pgfmath@x\relax%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}%

\pgfmathdeclarefunction{deg}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \pgfmath@scale@rad@to@deg\pgfmath@x
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}%

\def\pgfmath@scale@rad@to@deg#1{%
    #1=57.29577#1\relax%
}%

\pgfmathdeclarefunction{rad}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \pgfmath@scale@deg@to@rad\pgfmath@x
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}%

\def\pgfmath@scale@deg@to@rad#1{%
    #1=3.14159#1%
    \divide#1180\relax%
}%

\pgfmathdeclarefunction{sin}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \if1\pgfmath@trig@format@choice
        \pgfmath@scale@rad@to@deg\pgfmath@x
    \fi
    \advance\pgfmath@x-90pt\relax%
    \afterassignment\pgfmath@gobbletilpgfmath@
    \expandafter\c@pgfmath@counta\the\pgfmath@x\relax\pgfmath@
    \divide\c@pgfmath@counta360\relax%
    \multiply\c@pgfmath@counta-360\relax%
    \advance\pgfmath@x\c@pgfmath@counta pt\relax%
    \ifdim\pgfmath@x<0pt\relax\pgfmath@x-\pgfmath@x\fi%
    \ifdim\pgfmath@x<180pt\relax%
    \else
      \pgfmath@x-\pgfmath@x%
      \advance\pgfmath@x360pt\relax%
    \fi%
    \afterassignment\pgfmath@xa%
    \expandafter\c@pgfmath@counta\the\pgfmath@x\relax%
    \ifdim\pgfmath@xa=0pt%
      \expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname pt\relax%
    \else%
      \pgfmath@x-\pgfmath@xa%
      \advance\pgfmath@x1pt\relax%
      \expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@x%
      \advance\c@pgfmath@counta1\relax%
      \ifnum\c@pgfmath@counta=181\relax\c@pgfmath@counta179\relax\fi%
      \expandafter\advance\expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@xa%
    \fi%
    \pgfmath@returnone\pgfmath@x%
  \endgroup
}

\pgfmathdeclarefunction{cos}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \if1\pgfmath@trig@format@choice
        \pgfmath@scale@rad@to@deg\pgfmath@x
    \fi
    \afterassignment\pgfmath@gobbletilpgfmath@%
    \expandafter\c@pgfmath@counta\the\pgfmath@x\relax\pgfmath@%
    \divide\c@pgfmath@counta360\relax%
    \multiply\c@pgfmath@counta-360\relax%
    \advance\pgfmath@x\c@pgfmath@counta pt\relax%
    \ifdim\pgfmath@x<0pt\relax\pgfmath@x-\pgfmath@x\fi%
    \ifdim\pgfmath@x<180pt\relax%
    \else%
      \pgfmath@x-\pgfmath@x%
      \advance\pgfmath@x360pt\relax%
    \fi%
    \afterassignment\pgfmath@xa%
    \expandafter\c@pgfmath@counta\the\pgfmath@x\relax%
    \ifdim\pgfmath@xa=0pt%
      \expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname pt%
    \else%
      \pgfmath@x-\pgfmath@xa%
      \advance\pgfmath@x1pt\relax%
      \expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@x%
      \advance\c@pgfmath@counta1\relax%
      \ifnum\c@pgfmath@counta=181\relax\c@pgfmath@counta179\relax\fi%
      \expandafter\advance\expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@xa%
    \fi%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\def\pgfmathsincos#1{%
  \pgfmathparse{#1}%
  \expandafter\pgfmathsincos@\expandafter{\pgfmathresult}}
\def\pgfmathsincos@#1{%
  \edef\pgfmath@temparg{#1}%
  \pgfmathsin@{\pgfmath@temparg}\edef\pgfmathresulty{\pgfmathresult}%
  \pgfmathcos@{\pgfmath@temparg}\edef\pgfmathresultx{\pgfmathresult}%
}

\pgfmathdeclarefunction{tan}{1}{%
  \begingroup%
    \edef\pgfmath@temparg{#1}%
    \pgfmathcos@{\pgfmath@temparg}%
    \expandafter\pgfmathreciprocal@\expandafter{\pgfmathresult}%
    \edef\pgfmath@tantemp{\pgfmathresult}%
    \pgfmathsin@{\pgfmath@temparg}%
    \pgfmath@x\pgfmathresult pt\relax%
    \pgfmath@x\pgfmath@tantemp\pgfmath@x%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\pgfmathdeclarefunction{cosec}{1}{%
  \expandafter\pgfmathsin@\expandafter{#1}%
  \pgfmathreciprocal@{\pgfmathresult}%
}

\pgfmathdeclarefunction{sec}{1}{%
  \expandafter\pgfmathcos@\expandafter{#1}%
  \pgfmathreciprocal@{\pgfmathresult}%
}

\pgfmathdeclarefunction{cot}{1}{%
  \begingroup%
    \edef\pgfmath@temparg{#1}%
    \pgfmathsin@{\pgfmath@temparg}%
    \expandafter\pgfmathreciprocal@\expandafter{\pgfmathresult}%
    \edef\pgfmath@tantemp{\pgfmathresult}%
    \pgfmathcos@{\pgfmath@temparg}%
    \pgfmath@x\pgfmathresult pt\relax%
    \pgfmath@x\pgfmath@tantemp\pgfmath@x%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\def\pgfmath@multiply@thousand#1.#2#3#4#5\relax{%
  \edef\pgfmathresult{#1#2#3#4.#5}%
}%

\pgfmathdeclarefunction{asin}{1}{%
  \begingroup%
    \pgfmath@x=#1pt %
    \pgfmath@xa\pgfmath@x%
    \edef\pgf@temp{\pgfmath@tonumber\pgfmath@x}%
    \expandafter\pgfmath@multiply@thousand\pgf@temp 000\relax
    \pgfmath@x=\pgfmathresult pt %
    \ifdim\pgfmath@x<0pt\relax%
      \pgfmath@x-\pgfmath@x%
    \fi%
    \pgfmath@table@lookup{\pgfmath@x}{pgfmath@acos@}{1001}%
    \pgfmath@x=-\pgfmath@x
    \advance\pgfmath@x90pt\relax%
    \ifdim\pgfmath@xa<0pt\relax%
      \pgfmath@x-\pgfmath@x%
    \fi%
    \if1\pgfmath@trig@format@choice
        \pgfmath@scale@deg@to@rad\pgfmath@x
    \fi
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\def\pgfmath@table@lookup#1#2#3{%
  \pgfmath@x=#1\relax
  \expandafter\pgfmath@table@lookup@\the\pgfmath@x\relax{#2}{#3}%
}
\def\pgfmath@table@lookup@#1.#2\relax#3#4{%
  \edef\pgf@temp{\Pgf@geT#2}%
  \pgfmath@x=\csname #3#1\endcsname pt %
  \c@pgfmath@countc=#1 %
  \advance\c@pgfmath@countc by1 %
  \ifnum\c@pgfmath@countc<#4 %
    \pgfmath@ya=\csname #3\the\c@pgfmath@countc\endcsname pt %
    \advance\pgfmath@ya by-\pgfmath@x %
    \advance\pgfmath@x by0.\pgf@temp\pgfmath@ya
  \fi
}%

\pgfmathdeclarefunction{acos}{1}{%
  \begingroup%
    \pgfmath@x#1pt\relax%
    \pgfmath@xa\pgfmath@x%
    \edef\pgf@temp{\pgfmath@tonumber\pgfmath@x}%
    \expandafter\pgfmath@multiply@thousand\pgf@temp 000\relax
    \pgfmath@x=\pgfmathresult pt %
    \ifdim\pgfmath@x<0pt\relax%
      \pgfmath@x-\pgfmath@x%
    \fi%
    \pgfmath@table@lookup{\pgfmath@x}{pgfmath@acos@}{1001}%
    \ifdim\pgfmath@xa<0pt\relax%
      \pgfmath@x-\pgfmath@x%
      \advance\pgfmath@x by180pt\relax%
    \fi%
    \if1\pgfmath@trig@format@choice
        \pgfmath@scale@deg@to@rad\pgfmath@x
    \fi
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\pgfmathdeclarefunction{atan}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \pgfmath@xa\pgfmath@x%
    \ifdim\pgfmath@x<0pt\relax%
      \pgfmath@x-\pgfmath@x%
    \fi%
    \pgfmath@xb\pgfmath@x%
    \ifdim\pgfmath@x>1pt\relax%
      \edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@x}}%
      \pgfmathreciprocal@{\pgfmath@temp}%
      \pgfmath@x\pgfmathresult pt\relax%
    \fi%
    \edef\pgf@temp{\pgfmath@tonumber\pgfmath@x}%
    \expandafter\pgfmath@multiply@thousand\pgf@temp 000\relax
    \pgfmath@x=\pgfmathresult pt %
    \pgfmath@table@lookup{\pgfmath@x}{pgfmath@atan@}{1001}%
    \ifdim\pgfmath@xb>1pt\relax%
      \pgfmath@x=-\pgfmath@x%
      \advance\pgfmath@x90pt%
    \fi%
    \ifdim\pgfmath@xa<0pt\relax%
      \pgfmath@x-\pgfmath@x%
    \fi%
    \if1\pgfmath@trig@format@choice
        \pgfmath@scale@deg@to@rad\pgfmath@x
    \fi
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\pgfmathdeclarefunction{atan2}{2}{%
  \begingroup%
    \let\pgfmath@trig@format@choice@@=\pgfmath@trig@format@choice
    \def\pgfmath@trig@format@choice{0}%
    \pgfmath@y=#1pt\relax%
    \ifdim\pgfmath@y<0pt\relax%
      \pgfmath@y=-\pgfmath@y%
    \fi%
    \ifdim\pgfmath@y<0.001pt\relax%
      \ifdim#2pt<0pt\relax%
        \pgfmath@x=+180pt\relax%
      \else%
        \ifdim#2pt>0pt\relax%
          \pgfmath@x=0pt\relax%
        \else%
          \ifdim#1pt<0pt%
            \pgfmath@x=-90pt\relax%
          \else%
            \pgfmath@x=90pt\relax%
          \fi%
        \fi%
      \fi%
    \else%
      \pgfmathabs@{#1}\let\pgfmath@tempa\pgfmathresult%
      \pgfmathabs@{#2}\let\pgfmath@tempb\pgfmathresult%
      \ifdim\pgfmath@tempa pt>\pgfmath@tempb pt%
        \pgfmathdivide@{#2}{\pgfmath@tempa}%
        \expandafter\pgfmathatan@\expandafter{\pgfmathresult}%
        \pgfmath@x=90pt%
        \advance\pgfmath@x by-\pgfmathresult pt\relax%
      \else%
        \pgfmathdivide@{\pgfmath@tempa}{#2}%
        \expandafter\pgfmathatan@\expandafter{\pgfmathresult}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \ifdim#2pt<0pt%
          \advance\pgfmath@x by180pt\relax%
        \fi%
      \fi%
      \ifdim#1pt<0pt\relax%
        \pgfmath@x=-\pgfmath@x%
      \fi%
    \fi%
    \if1\pgfmath@trig@format@choice@@
        \pgfmath@scale@deg@to@rad\pgfmath@x
    \fi
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\expandafter\let\expandafter\pgfmathatantwo\csname pgfmathatan2\endcsname
\expandafter\let\expandafter\pgfmathatantwo@\csname pgfmathatan2@\endcsname

\def\pgfmath@def#1#2#3{\expandafter\def\csname pgfmath@#1@#2\endcsname{#3}}
\pgfmath@def{cos}{0}{1.00000}    \pgfmath@def{cos}{1}{0.99985}
\pgfmath@def{cos}{2}{0.99939}    \pgfmath@def{cos}{3}{0.99863}
\pgfmath@def{cos}{4}{0.99756}    \pgfmath@def{cos}{5}{0.99619}
\pgfmath@def{cos}{6}{0.99452}    \pgfmath@def{cos}{7}{0.99255}
\pgfmath@def{cos}{8}{0.99027}    \pgfmath@def{cos}{9}{0.98769}
\pgfmath@def{cos}{10}{0.98481}    \pgfmath@def{cos}{11}{0.98163}
\pgfmath@def{cos}{12}{0.97815}    \pgfmath@def{cos}{13}{0.97437}
\pgfmath@def{cos}{14}{0.97030}    \pgfmath@def{cos}{15}{0.96593}
\pgfmath@def{cos}{16}{0.96126}    \pgfmath@def{cos}{17}{0.95630}
\pgfmath@def{cos}{18}{0.95106}    \pgfmath@def{cos}{19}{0.94552}
\pgfmath@def{cos}{20}{0.93969}    \pgfmath@def{cos}{21}{0.93358}
\pgfmath@def{cos}{22}{0.92718}    \pgfmath@def{cos}{23}{0.92050}
\pgfmath@def{cos}{24}{0.91355}    \pgfmath@def{cos}{25}{0.90631}
\pgfmath@def{cos}{26}{0.89879}    \pgfmath@def{cos}{27}{0.89101}
\pgfmath@def{cos}{28}{0.88295}    \pgfmath@def{cos}{29}{0.87462}
\pgfmath@def{cos}{30}{0.86603}    \pgfmath@def{cos}{31}{0.85717}
\pgfmath@def{cos}{32}{0.84805}    \pgfmath@def{cos}{33}{0.83867}
\pgfmath@def{cos}{34}{0.82904}    \pgfmath@def{cos}{35}{0.81915}
\pgfmath@def{cos}{36}{0.80902}    \pgfmath@def{cos}{37}{0.79864}
\pgfmath@def{cos}{38}{0.78801}    \pgfmath@def{cos}{39}{0.77715}
\pgfmath@def{cos}{40}{0.76604}    \pgfmath@def{cos}{41}{0.75471}
\pgfmath@def{cos}{42}{0.74314}    \pgfmath@def{cos}{43}{0.73135}
\pgfmath@def{cos}{44}{0.71934}    \pgfmath@def{cos}{45}{0.70711}
\pgfmath@def{cos}{46}{0.69466}    \pgfmath@def{cos}{47}{0.68200}
\pgfmath@def{cos}{48}{0.66913}    \pgfmath@def{cos}{49}{0.65606}
\pgfmath@def{cos}{50}{0.64279}    \pgfmath@def{cos}{51}{0.62932}
\pgfmath@def{cos}{52}{0.61566}    \pgfmath@def{cos}{53}{0.60182}
\pgfmath@def{cos}{54}{0.58779}    \pgfmath@def{cos}{55}{0.57358}
\pgfmath@def{cos}{56}{0.55919}    \pgfmath@def{cos}{57}{0.54464}
\pgfmath@def{cos}{58}{0.52992}    \pgfmath@def{cos}{59}{0.51504}
\pgfmath@def{cos}{60}{0.50000}    \pgfmath@def{cos}{61}{0.48481}
\pgfmath@def{cos}{62}{0.46947}    \pgfmath@def{cos}{63}{0.45399}
\pgfmath@def{cos}{64}{0.43837}    \pgfmath@def{cos}{65}{0.42262}
\pgfmath@def{cos}{66}{0.40674}    \pgfmath@def{cos}{67}{0.39073}
\pgfmath@def{cos}{68}{0.37461}    \pgfmath@def{cos}{69}{0.35837}
\pgfmath@def{cos}{70}{0.34202}    \pgfmath@def{cos}{71}{0.32557}
\pgfmath@def{cos}{72}{0.30902}    \pgfmath@def{cos}{73}{0.29237}
\pgfmath@def{cos}{74}{0.27564}    \pgfmath@def{cos}{75}{0.25882}
\pgfmath@def{cos}{76}{0.24192}    \pgfmath@def{cos}{77}{0.22495}
\pgfmath@def{cos}{78}{0.20791}    \pgfmath@def{cos}{79}{0.19081}
\pgfmath@def{cos}{80}{0.17365}    \pgfmath@def{cos}{81}{0.15643}
\pgfmath@def{cos}{82}{0.13917}    \pgfmath@def{cos}{83}{0.12187}
\pgfmath@def{cos}{84}{0.10453}    \pgfmath@def{cos}{85}{0.08716}
\pgfmath@def{cos}{86}{0.06976}    \pgfmath@def{cos}{87}{0.05234}
\pgfmath@def{cos}{88}{0.03490}    \pgfmath@def{cos}{89}{0.01745}
\pgfmath@def{cos}{90}{0.00000}    \pgfmath@def{cos}{91}{-0.01745}
\pgfmath@def{cos}{92}{-0.03490}    \pgfmath@def{cos}{93}{-0.05234}
\pgfmath@def{cos}{94}{-0.06976}    \pgfmath@def{cos}{95}{-0.08716}
\pgfmath@def{cos}{96}{-0.10453}    \pgfmath@def{cos}{97}{-0.12187}
\pgfmath@def{cos}{98}{-0.13917}    \pgfmath@def{cos}{99}{-0.15643}
\pgfmath@def{cos}{100}{-0.17365}    \pgfmath@def{cos}{101}{-0.19081}
\pgfmath@def{cos}{102}{-0.20791}    \pgfmath@def{cos}{103}{-0.22495}
\pgfmath@def{cos}{104}{-0.24192}    \pgfmath@def{cos}{105}{-0.25882}
\pgfmath@def{cos}{106}{-0.27564}    \pgfmath@def{cos}{107}{-0.29237}
\pgfmath@def{cos}{108}{-0.30902}    \pgfmath@def{cos}{109}{-0.32557}
\pgfmath@def{cos}{110}{-0.34202}    \pgfmath@def{cos}{111}{-0.35837}
\pgfmath@def{cos}{112}{-0.37461}    \pgfmath@def{cos}{113}{-0.39073}
\pgfmath@def{cos}{114}{-0.40674}    \pgfmath@def{cos}{115}{-0.42262}
\pgfmath@def{cos}{116}{-0.43837}    \pgfmath@def{cos}{117}{-0.45399}
\pgfmath@def{cos}{118}{-0.46947}    \pgfmath@def{cos}{119}{-0.48481}
\pgfmath@def{cos}{120}{-0.50000}    \pgfmath@def{cos}{121}{-0.51504}
\pgfmath@def{cos}{122}{-0.52992}    \pgfmath@def{cos}{123}{-0.54464}
\pgfmath@def{cos}{124}{-0.55919}    \pgfmath@def{cos}{125}{-0.57358}
\pgfmath@def{cos}{126}{-0.58779}    \pgfmath@def{cos}{127}{-0.60182}
\pgfmath@def{cos}{128}{-0.61566}    \pgfmath@def{cos}{129}{-0.62932}
\pgfmath@def{cos}{130}{-0.64279}    \pgfmath@def{cos}{131}{-0.65606}
\pgfmath@def{cos}{132}{-0.66913}    \pgfmath@def{cos}{133}{-0.68200}
\pgfmath@def{cos}{134}{-0.69466}    \pgfmath@def{cos}{135}{-0.70711}
\pgfmath@def{cos}{136}{-0.71934}    \pgfmath@def{cos}{137}{-0.73135}
\pgfmath@def{cos}{138}{-0.74314}    \pgfmath@def{cos}{139}{-0.75471}
\pgfmath@def{cos}{140}{-0.76604}    \pgfmath@def{cos}{141}{-0.77715}
\pgfmath@def{cos}{142}{-0.78801}    \pgfmath@def{cos}{143}{-0.79864}
\pgfmath@def{cos}{144}{-0.80902}    \pgfmath@def{cos}{145}{-0.81915}
\pgfmath@def{cos}{146}{-0.82904}    \pgfmath@def{cos}{147}{-0.83867}
\pgfmath@def{cos}{148}{-0.84805}    \pgfmath@def{cos}{149}{-0.85717}
\pgfmath@def{cos}{150}{-0.86603}    \pgfmath@def{cos}{151}{-0.87462}
\pgfmath@def{cos}{152}{-0.88295}    \pgfmath@def{cos}{153}{-0.89101}
\pgfmath@def{cos}{154}{-0.89879}    \pgfmath@def{cos}{155}{-0.90631}
\pgfmath@def{cos}{156}{-0.91355}    \pgfmath@def{cos}{157}{-0.92050}
\pgfmath@def{cos}{158}{-0.92718}    \pgfmath@def{cos}{159}{-0.93358}
\pgfmath@def{cos}{160}{-0.93969}    \pgfmath@def{cos}{161}{-0.94552}
\pgfmath@def{cos}{162}{-0.95106}    \pgfmath@def{cos}{163}{-0.95630}
\pgfmath@def{cos}{164}{-0.96126}    \pgfmath@def{cos}{165}{-0.96593}
\pgfmath@def{cos}{166}{-0.97030}    \pgfmath@def{cos}{167}{-0.97437}
\pgfmath@def{cos}{168}{-0.97815}    \pgfmath@def{cos}{169}{-0.98163}
\pgfmath@def{cos}{170}{-0.98481}    \pgfmath@def{cos}{171}{-0.98769}
\pgfmath@def{cos}{172}{-0.99027}    \pgfmath@def{cos}{173}{-0.99255}
\pgfmath@def{cos}{174}{-0.99452}    \pgfmath@def{cos}{175}{-0.99619}
\pgfmath@def{cos}{176}{-0.99756}    \pgfmath@def{cos}{177}{-0.99863}
\pgfmath@def{cos}{178}{-0.99939}    \pgfmath@def{cos}{179}{-0.99985}
\pgfmath@def{cos}{180}{-1.00000}     \pgfmath@def{cos}{181}{-0.99985}

\pgfmath@def{cosfrac}{0}{1.00000}    \pgfmath@def{cosfrac}{1}{0.99995}
\pgfmath@def{cosfrac}{2}{0.99980}    \pgfmath@def{cosfrac}{3}{0.99955}
\pgfmath@def{cosfrac}{4}{0.99920}    \pgfmath@def{cosfrac}{5}{0.99875}
\pgfmath@def{cosfrac}{6}{0.99820}    \pgfmath@def{cosfrac}{7}{0.99755}
\pgfmath@def{cosfrac}{8}{0.99681}    \pgfmath@def{cosfrac}{9}{0.99597}
\pgfmath@def{cosfrac}{10}{0.99503}    \pgfmath@def{cosfrac}{11}{0.99400}
\pgfmath@def{cosfrac}{12}{0.99287}    \pgfmath@def{cosfrac}{13}{0.99165}
\pgfmath@def{cosfrac}{14}{0.99034}    \pgfmath@def{cosfrac}{15}{0.98893}
\pgfmath@def{cosfrac}{16}{0.98744}    \pgfmath@def{cosfrac}{17}{0.98585}
\pgfmath@def{cosfrac}{18}{0.98418}    \pgfmath@def{cosfrac}{19}{0.98242}
\pgfmath@def{cosfrac}{20}{0.98058}    \pgfmath@def{cosfrac}{21}{0.97865}
\pgfmath@def{cosfrac}{22}{0.97664}    \pgfmath@def{cosfrac}{23}{0.97455}
\pgfmath@def{cosfrac}{24}{0.97238}    \pgfmath@def{cosfrac}{25}{0.97014}
\pgfmath@def{cosfrac}{26}{0.96782}    \pgfmath@def{cosfrac}{27}{0.96542}
\pgfmath@def{cosfrac}{28}{0.96296}    \pgfmath@def{cosfrac}{29}{0.96042}
\pgfmath@def{cosfrac}{30}{0.95782}    \pgfmath@def{cosfrac}{31}{0.95515}
\pgfmath@def{cosfrac}{32}{0.95242}    \pgfmath@def{cosfrac}{33}{0.94962}
\pgfmath@def{cosfrac}{34}{0.94677}    \pgfmath@def{cosfrac}{35}{0.94385}
\pgfmath@def{cosfrac}{36}{0.94088}    \pgfmath@def{cosfrac}{37}{0.93786}
\pgfmath@def{cosfrac}{38}{0.93478}    \pgfmath@def{cosfrac}{39}{0.93165}
\pgfmath@def{cosfrac}{40}{0.92847}    \pgfmath@def{cosfrac}{41}{0.92525}
\pgfmath@def{cosfrac}{42}{0.92198}    \pgfmath@def{cosfrac}{43}{0.91866}
\pgfmath@def{cosfrac}{44}{0.91531}    \pgfmath@def{cosfrac}{45}{0.91192}
\pgfmath@def{cosfrac}{46}{0.90849}    \pgfmath@def{cosfrac}{47}{0.90502}
\pgfmath@def{cosfrac}{48}{0.90152}    \pgfmath@def{cosfrac}{49}{0.89799}
\pgfmath@def{cosfrac}{50}{0.89442}    \pgfmath@def{cosfrac}{51}{0.89083}
\pgfmath@def{cosfrac}{52}{0.88721}    \pgfmath@def{cosfrac}{53}{0.88357}
\pgfmath@def{cosfrac}{54}{0.87990}    \pgfmath@def{cosfrac}{55}{0.87621}
\pgfmath@def{cosfrac}{56}{0.87250}    \pgfmath@def{cosfrac}{57}{0.86877}
\pgfmath@def{cosfrac}{58}{0.86503}    \pgfmath@def{cosfrac}{59}{0.86126}
\pgfmath@def{cosfrac}{60}{0.85749}    \pgfmath@def{cosfrac}{61}{0.85370}
\pgfmath@def{cosfrac}{62}{0.84990}    \pgfmath@def{cosfrac}{63}{0.84609}
\pgfmath@def{cosfrac}{64}{0.84227}    \pgfmath@def{cosfrac}{65}{0.83844}
\pgfmath@def{cosfrac}{66}{0.83460}    \pgfmath@def{cosfrac}{67}{0.83077}
\pgfmath@def{cosfrac}{68}{0.82692}    \pgfmath@def{cosfrac}{69}{0.82308}
\pgfmath@def{cosfrac}{70}{0.81923}    \pgfmath@def{cosfrac}{71}{0.81538}
\pgfmath@def{cosfrac}{72}{0.81153}    \pgfmath@def{cosfrac}{73}{0.80768}
\pgfmath@def{cosfrac}{74}{0.80384}    \pgfmath@def{cosfrac}{75}{0.80000}
\pgfmath@def{cosfrac}{76}{0.79616}    \pgfmath@def{cosfrac}{77}{0.79232}
\pgfmath@def{cosfrac}{78}{0.78850}    \pgfmath@def{cosfrac}{79}{0.78468}
\pgfmath@def{cosfrac}{80}{0.78086}    \pgfmath@def{cosfrac}{81}{0.77706}
\pgfmath@def{cosfrac}{82}{0.77326}    \pgfmath@def{cosfrac}{83}{0.76948}
\pgfmath@def{cosfrac}{84}{0.76570}    \pgfmath@def{cosfrac}{85}{0.76193}
\pgfmath@def{cosfrac}{86}{0.75818}    \pgfmath@def{cosfrac}{87}{0.75444}
\pgfmath@def{cosfrac}{88}{0.75071}    \pgfmath@def{cosfrac}{89}{0.74699}
\pgfmath@def{cosfrac}{90}{0.74329}    \pgfmath@def{cosfrac}{91}{0.73960}
\pgfmath@def{cosfrac}{92}{0.73593}    \pgfmath@def{cosfrac}{93}{0.73227}
\pgfmath@def{cosfrac}{94}{0.72862}    \pgfmath@def{cosfrac}{95}{0.72499}
\pgfmath@def{cosfrac}{96}{0.72138}    \pgfmath@def{cosfrac}{97}{0.71779}
\pgfmath@def{cosfrac}{98}{0.71421}    \pgfmath@def{cosfrac}{99}{0.71065}
\pgfmath@def{cosfrac}{100}{0.70710}

\pgfmath@def{atan}{0}{0.00000}    \pgfmath@def{atan}{1}{0.05729}
\pgfmath@def{atan}{2}{0.11459}    \pgfmath@def{atan}{3}{0.17188}
\pgfmath@def{atan}{4}{0.22918}    \pgfmath@def{atan}{5}{0.28647}
\pgfmath@def{atan}{6}{0.34377}    \pgfmath@def{atan}{7}{0.40106}
\pgfmath@def{atan}{8}{0.45835}    \pgfmath@def{atan}{9}{0.51564}
\pgfmath@def{atan}{10}{0.57293}    \pgfmath@def{atan}{11}{0.63022}
\pgfmath@def{atan}{12}{0.68751}    \pgfmath@def{atan}{13}{0.74480}
\pgfmath@def{atan}{14}{0.80208}    \pgfmath@def{atan}{15}{0.85937}
\pgfmath@def{atan}{16}{0.91665}    \pgfmath@def{atan}{17}{0.97393}
\pgfmath@def{atan}{18}{1.03121}    \pgfmath@def{atan}{19}{1.08848}
\pgfmath@def{atan}{20}{1.14576}    \pgfmath@def{atan}{21}{1.20303}
\pgfmath@def{atan}{22}{1.26030}    \pgfmath@def{atan}{23}{1.31757}
\pgfmath@def{atan}{24}{1.37483}    \pgfmath@def{atan}{25}{1.43209}
\pgfmath@def{atan}{26}{1.48935}    \pgfmath@def{atan}{27}{1.54661}
\pgfmath@def{atan}{28}{1.60386}    \pgfmath@def{atan}{29}{1.66111}
\pgfmath@def{atan}{30}{1.71835}    \pgfmath@def{atan}{31}{1.77560}
\pgfmath@def{atan}{32}{1.83284}    \pgfmath@def{atan}{33}{1.89007}
\pgfmath@def{atan}{34}{1.94730}    \pgfmath@def{atan}{35}{2.00453}
\pgfmath@def{atan}{36}{2.06175}    \pgfmath@def{atan}{37}{2.11897}
\pgfmath@def{atan}{38}{2.17619}    \pgfmath@def{atan}{39}{2.23340}
\pgfmath@def{atan}{40}{2.29061}    \pgfmath@def{atan}{41}{2.34781}
\pgfmath@def{atan}{42}{2.40500}    \pgfmath@def{atan}{43}{2.46220}
\pgfmath@def{atan}{44}{2.51938}    \pgfmath@def{atan}{45}{2.57657}
\pgfmath@def{atan}{46}{2.63374}    \pgfmath@def{atan}{47}{2.69092}
\pgfmath@def{atan}{48}{2.74808}    \pgfmath@def{atan}{49}{2.80524}
\pgfmath@def{atan}{50}{2.86240}    \pgfmath@def{atan}{51}{2.91955}
\pgfmath@def{atan}{52}{2.97669}    \pgfmath@def{atan}{53}{3.03383}
\pgfmath@def{atan}{54}{3.09097}    \pgfmath@def{atan}{55}{3.14809}
\pgfmath@def{atan}{56}{3.20521}    \pgfmath@def{atan}{57}{3.26232}
\pgfmath@def{atan}{58}{3.31943}    \pgfmath@def{atan}{59}{3.37653}
\pgfmath@def{atan}{60}{3.43363}    \pgfmath@def{atan}{61}{3.49071}
\pgfmath@def{atan}{62}{3.54779}    \pgfmath@def{atan}{63}{3.60487}
\pgfmath@def{atan}{64}{3.66193}    \pgfmath@def{atan}{65}{3.71899}
\pgfmath@def{atan}{66}{3.77604}    \pgfmath@def{atan}{67}{3.83308}
\pgfmath@def{atan}{68}{3.89012}    \pgfmath@def{atan}{69}{3.94715}
\pgfmath@def{atan}{70}{4.00417}    \pgfmath@def{atan}{71}{4.06118}
\pgfmath@def{atan}{72}{4.11819}    \pgfmath@def{atan}{73}{4.17518}
\pgfmath@def{atan}{74}{4.23217}    \pgfmath@def{atan}{75}{4.28915}
\pgfmath@def{atan}{76}{4.34612}    \pgfmath@def{atan}{77}{4.40308}
\pgfmath@def{atan}{78}{4.46004}    \pgfmath@def{atan}{79}{4.51698}
\pgfmath@def{atan}{80}{4.57392}    \pgfmath@def{atan}{81}{4.63084}
\pgfmath@def{atan}{82}{4.68776}    \pgfmath@def{atan}{83}{4.74467}
\pgfmath@def{atan}{84}{4.80157}    \pgfmath@def{atan}{85}{4.85846}
\pgfmath@def{atan}{86}{4.91534}    \pgfmath@def{atan}{87}{4.97221}
\pgfmath@def{atan}{88}{5.02907}    \pgfmath@def{atan}{89}{5.08592}
\pgfmath@def{atan}{90}{5.14276}    \pgfmath@def{atan}{91}{5.19959}
\pgfmath@def{atan}{92}{5.25641}    \pgfmath@def{atan}{93}{5.31322}
\pgfmath@def{atan}{94}{5.37002}    \pgfmath@def{atan}{95}{5.42681}
\pgfmath@def{atan}{96}{5.48359}    \pgfmath@def{atan}{97}{5.54035}
\pgfmath@def{atan}{98}{5.59711}    \pgfmath@def{atan}{99}{5.65385}
\pgfmath@def{atan}{100}{5.71059}    \pgfmath@def{atan}{101}{5.76731}
\pgfmath@def{atan}{102}{5.82402}    \pgfmath@def{atan}{103}{5.88072}
\pgfmath@def{atan}{104}{5.93741}    \pgfmath@def{atan}{105}{5.99409}
\pgfmath@def{atan}{106}{6.05075}    \pgfmath@def{atan}{107}{6.10741}
\pgfmath@def{atan}{108}{6.16405}    \pgfmath@def{atan}{109}{6.22068}
\pgfmath@def{atan}{110}{6.27729}    \pgfmath@def{atan}{111}{6.33390}
\pgfmath@def{atan}{112}{6.39049}    \pgfmath@def{atan}{113}{6.44707}
\pgfmath@def{atan}{114}{6.50364}    \pgfmath@def{atan}{115}{6.56019}
\pgfmath@def{atan}{116}{6.61673}    \pgfmath@def{atan}{117}{6.67326}
\pgfmath@def{atan}{118}{6.72978}    \pgfmath@def{atan}{119}{6.78628}
\pgfmath@def{atan}{120}{6.84277}    \pgfmath@def{atan}{121}{6.89924}
\pgfmath@def{atan}{122}{6.95571}    \pgfmath@def{atan}{123}{7.01216}
\pgfmath@def{atan}{124}{7.06859}    \pgfmath@def{atan}{125}{7.12501}
\pgfmath@def{atan}{126}{7.18142}    \pgfmath@def{atan}{127}{7.23781}
\pgfmath@def{atan}{128}{7.29419}    \pgfmath@def{atan}{129}{7.35056}
\pgfmath@def{atan}{130}{7.40691}    \pgfmath@def{atan}{131}{7.46324}
\pgfmath@def{atan}{132}{7.51957}    \pgfmath@def{atan}{133}{7.57587}
\pgfmath@def{atan}{134}{7.63217}    \pgfmath@def{atan}{135}{7.68844}
\pgfmath@def{atan}{136}{7.74471}    \pgfmath@def{atan}{137}{7.80095}
\pgfmath@def{atan}{138}{7.85719}    \pgfmath@def{atan}{139}{7.91340}
\pgfmath@def{atan}{140}{7.96961}    \pgfmath@def{atan}{141}{8.02579}
\pgfmath@def{atan}{142}{8.08196}    \pgfmath@def{atan}{143}{8.13812}
\pgfmath@def{atan}{144}{8.19426}    \pgfmath@def{atan}{145}{8.25038}
\pgfmath@def{atan}{146}{8.30649}    \pgfmath@def{atan}{147}{8.36258}
\pgfmath@def{atan}{148}{8.41866}    \pgfmath@def{atan}{149}{8.47472}
\pgfmath@def{atan}{150}{8.53076}    \pgfmath@def{atan}{151}{8.58679}
\pgfmath@def{atan}{152}{8.64280}    \pgfmath@def{atan}{153}{8.69879}
\pgfmath@def{atan}{154}{8.75477}    \pgfmath@def{atan}{155}{8.81073}
\pgfmath@def{atan}{156}{8.86667}    \pgfmath@def{atan}{157}{8.92260}
\pgfmath@def{atan}{158}{8.97851}    \pgfmath@def{atan}{159}{9.03440}
\pgfmath@def{atan}{160}{9.09027}    \pgfmath@def{atan}{161}{9.14613}
\pgfmath@def{atan}{162}{9.20197}    \pgfmath@def{atan}{163}{9.25779}
\pgfmath@def{atan}{164}{9.31359}    \pgfmath@def{atan}{165}{9.36938}
\pgfmath@def{atan}{166}{9.42515}    \pgfmath@def{atan}{167}{9.48090}
\pgfmath@def{atan}{168}{9.53663}    \pgfmath@def{atan}{169}{9.59235}
\pgfmath@def{atan}{170}{9.64804}    \pgfmath@def{atan}{171}{9.70372}
\pgfmath@def{atan}{172}{9.75938}    \pgfmath@def{atan}{173}{9.81502}
\pgfmath@def{atan}{174}{9.87064}    \pgfmath@def{atan}{175}{9.92624}
\pgfmath@def{atan}{176}{9.98182}    \pgfmath@def{atan}{177}{10.03739}
\pgfmath@def{atan}{178}{10.09294}    \pgfmath@def{atan}{179}{10.14846}
\pgfmath@def{atan}{180}{10.20397}    \pgfmath@def{atan}{181}{10.25946}
\pgfmath@def{atan}{182}{10.31493}    \pgfmath@def{atan}{183}{10.37037}
\pgfmath@def{atan}{184}{10.42580}    \pgfmath@def{atan}{185}{10.48121}
\pgfmath@def{atan}{186}{10.53660}    \pgfmath@def{atan}{187}{10.59197}
\pgfmath@def{atan}{188}{10.64732}    \pgfmath@def{atan}{189}{10.70265}
\pgfmath@def{atan}{190}{10.75796}    \pgfmath@def{atan}{191}{10.81325}
\pgfmath@def{atan}{192}{10.86852}    \pgfmath@def{atan}{193}{10.92377}
\pgfmath@def{atan}{194}{10.97900}    \pgfmath@def{atan}{195}{11.03420}
\pgfmath@def{atan}{196}{11.08939}    \pgfmath@def{atan}{197}{11.14456}
\pgfmath@def{atan}{198}{11.19970}    \pgfmath@def{atan}{199}{11.25483}
\pgfmath@def{atan}{200}{11.30993}    \pgfmath@def{atan}{201}{11.36501}
\pgfmath@def{atan}{202}{11.42007}    \pgfmath@def{atan}{203}{11.47511}
\pgfmath@def{atan}{204}{11.53013}    \pgfmath@def{atan}{205}{11.58512}
\pgfmath@def{atan}{206}{11.64010}    \pgfmath@def{atan}{207}{11.69505}
\pgfmath@def{atan}{208}{11.74998}    \pgfmath@def{atan}{209}{11.80489}
\pgfmath@def{atan}{210}{11.85977}    \pgfmath@def{atan}{211}{11.91464}
\pgfmath@def{atan}{212}{11.96948}    \pgfmath@def{atan}{213}{12.02430}
\pgfmath@def{atan}{214}{12.07910}    \pgfmath@def{atan}{215}{12.13388}
\pgfmath@def{atan}{216}{12.18863}    \pgfmath@def{atan}{217}{12.24336}
\pgfmath@def{atan}{218}{12.29807}    \pgfmath@def{atan}{219}{12.35275}
\pgfmath@def{atan}{220}{12.40741}    \pgfmath@def{atan}{221}{12.46205}
\pgfmath@def{atan}{222}{12.51667}    \pgfmath@def{atan}{223}{12.57126}
\pgfmath@def{atan}{224}{12.62583}    \pgfmath@def{atan}{225}{12.68038}
\pgfmath@def{atan}{226}{12.73490}    \pgfmath@def{atan}{227}{12.78940}
\pgfmath@def{atan}{228}{12.84388}    \pgfmath@def{atan}{229}{12.89833}
\pgfmath@def{atan}{230}{12.95276}    \pgfmath@def{atan}{231}{13.00717}
\pgfmath@def{atan}{232}{13.06155}    \pgfmath@def{atan}{233}{13.11590}
\pgfmath@def{atan}{234}{13.17024}    \pgfmath@def{atan}{235}{13.22455}
\pgfmath@def{atan}{236}{13.27883}    \pgfmath@def{atan}{237}{13.33309}
\pgfmath@def{atan}{238}{13.38733}    \pgfmath@def{atan}{239}{13.44154}
\pgfmath@def{atan}{240}{13.49573}    \pgfmath@def{atan}{241}{13.54989}
\pgfmath@def{atan}{242}{13.60403}    \pgfmath@def{atan}{243}{13.65814}
\pgfmath@def{atan}{244}{13.71223}    \pgfmath@def{atan}{245}{13.76630}
\pgfmath@def{atan}{246}{13.82034}    \pgfmath@def{atan}{247}{13.87435}
\pgfmath@def{atan}{248}{13.92834}    \pgfmath@def{atan}{249}{13.98230}
\pgfmath@def{atan}{250}{14.03624}    \pgfmath@def{atan}{251}{14.09015}
\pgfmath@def{atan}{252}{14.14404}    \pgfmath@def{atan}{253}{14.19790}
\pgfmath@def{atan}{254}{14.25174}    \pgfmath@def{atan}{255}{14.30555}
\pgfmath@def{atan}{256}{14.35933}    \pgfmath@def{atan}{257}{14.41309}
\pgfmath@def{atan}{258}{14.46682}    \pgfmath@def{atan}{259}{14.52053}
\pgfmath@def{atan}{260}{14.57421}    \pgfmath@def{atan}{261}{14.62787}
\pgfmath@def{atan}{262}{14.68149}    \pgfmath@def{atan}{263}{14.73510}
\pgfmath@def{atan}{264}{14.78867}    \pgfmath@def{atan}{265}{14.84222}
\pgfmath@def{atan}{266}{14.89575}    \pgfmath@def{atan}{267}{14.94924}
\pgfmath@def{atan}{268}{15.00271}    \pgfmath@def{atan}{269}{15.05615}
\pgfmath@def{atan}{270}{15.10957}    \pgfmath@def{atan}{271}{15.16296}
\pgfmath@def{atan}{272}{15.21632}    \pgfmath@def{atan}{273}{15.26966}
\pgfmath@def{atan}{274}{15.32297}    \pgfmath@def{atan}{275}{15.37625}
\pgfmath@def{atan}{276}{15.42950}    \pgfmath@def{atan}{277}{15.48273}
\pgfmath@def{atan}{278}{15.53593}    \pgfmath@def{atan}{279}{15.58910}
\pgfmath@def{atan}{280}{15.64224}    \pgfmath@def{atan}{281}{15.69536}
\pgfmath@def{atan}{282}{15.74845}    \pgfmath@def{atan}{283}{15.80151}
\pgfmath@def{atan}{284}{15.85454}    \pgfmath@def{atan}{285}{15.90755}
\pgfmath@def{atan}{286}{15.96052}    \pgfmath@def{atan}{287}{16.01347}
\pgfmath@def{atan}{288}{16.06640}    \pgfmath@def{atan}{289}{16.11929}
\pgfmath@def{atan}{290}{16.17215}    \pgfmath@def{atan}{291}{16.22499}
\pgfmath@def{atan}{292}{16.27780}    \pgfmath@def{atan}{293}{16.33058}
\pgfmath@def{atan}{294}{16.38333}    \pgfmath@def{atan}{295}{16.43605}
\pgfmath@def{atan}{296}{16.48875}    \pgfmath@def{atan}{297}{16.54142}
\pgfmath@def{atan}{298}{16.59405}    \pgfmath@def{atan}{299}{16.64666}
\pgfmath@def{atan}{300}{16.69924}    \pgfmath@def{atan}{301}{16.75179}
\pgfmath@def{atan}{302}{16.80431}    \pgfmath@def{atan}{303}{16.85680}
\pgfmath@def{atan}{304}{16.90927}    \pgfmath@def{atan}{305}{16.96170}
\pgfmath@def{atan}{306}{17.01411}    \pgfmath@def{atan}{307}{17.06648}
\pgfmath@def{atan}{308}{17.11883}    \pgfmath@def{atan}{309}{17.17114}
\pgfmath@def{atan}{310}{17.22343}    \pgfmath@def{atan}{311}{17.27569}
\pgfmath@def{atan}{312}{17.32792}    \pgfmath@def{atan}{313}{17.38012}
\pgfmath@def{atan}{314}{17.43228}    \pgfmath@def{atan}{315}{17.48442}
\pgfmath@def{atan}{316}{17.53653}    \pgfmath@def{atan}{317}{17.58861}
\pgfmath@def{atan}{318}{17.64066}    \pgfmath@def{atan}{319}{17.69268}
\pgfmath@def{atan}{320}{17.74467}    \pgfmath@def{atan}{321}{17.79663}
\pgfmath@def{atan}{322}{17.84855}    \pgfmath@def{atan}{323}{17.90045}
\pgfmath@def{atan}{324}{17.95232}    \pgfmath@def{atan}{325}{18.00416}
\pgfmath@def{atan}{326}{18.05596}    \pgfmath@def{atan}{327}{18.10774}
\pgfmath@def{atan}{328}{18.15949}    \pgfmath@def{atan}{329}{18.21120}
\pgfmath@def{atan}{330}{18.26289}    \pgfmath@def{atan}{331}{18.31454}
\pgfmath@def{atan}{332}{18.36616}    \pgfmath@def{atan}{333}{18.41775}
\pgfmath@def{atan}{334}{18.46931}    \pgfmath@def{atan}{335}{18.52084}
\pgfmath@def{atan}{336}{18.57234}    \pgfmath@def{atan}{337}{18.62381}
\pgfmath@def{atan}{338}{18.67525}    \pgfmath@def{atan}{339}{18.72665}
\pgfmath@def{atan}{340}{18.77803}    \pgfmath@def{atan}{341}{18.82937}
\pgfmath@def{atan}{342}{18.88068}    \pgfmath@def{atan}{343}{18.93196}
\pgfmath@def{atan}{344}{18.98321}    \pgfmath@def{atan}{345}{19.03443}
\pgfmath@def{atan}{346}{19.08562}    \pgfmath@def{atan}{347}{19.13677}
\pgfmath@def{atan}{348}{19.18789}    \pgfmath@def{atan}{349}{19.23898}
\pgfmath@def{atan}{350}{19.29004}    \pgfmath@def{atan}{351}{19.34107}
\pgfmath@def{atan}{352}{19.39206}    \pgfmath@def{atan}{353}{19.44303}
\pgfmath@def{atan}{354}{19.49396}    \pgfmath@def{atan}{355}{19.54486}
\pgfmath@def{atan}{356}{19.59572}    \pgfmath@def{atan}{357}{19.64656}
\pgfmath@def{atan}{358}{19.69736}    \pgfmath@def{atan}{359}{19.74813}
\pgfmath@def{atan}{360}{19.79887}    \pgfmath@def{atan}{361}{19.84958}
\pgfmath@def{atan}{362}{19.90025}    \pgfmath@def{atan}{363}{19.95089}
\pgfmath@def{atan}{364}{20.00150}    \pgfmath@def{atan}{365}{20.05208}
\pgfmath@def{atan}{366}{20.10262}    \pgfmath@def{atan}{367}{20.15313}
\pgfmath@def{atan}{368}{20.20361}    \pgfmath@def{atan}{369}{20.25406}
\pgfmath@def{atan}{370}{20.30447}    \pgfmath@def{atan}{371}{20.35485}
\pgfmath@def{atan}{372}{20.40520}    \pgfmath@def{atan}{373}{20.45551}
\pgfmath@def{atan}{374}{20.50579}    \pgfmath@def{atan}{375}{20.55604}
\pgfmath@def{atan}{376}{20.60626}    \pgfmath@def{atan}{377}{20.65644}
\pgfmath@def{atan}{378}{20.70659}    \pgfmath@def{atan}{379}{20.75670}
\pgfmath@def{atan}{380}{20.80679}    \pgfmath@def{atan}{381}{20.85684}
\pgfmath@def{atan}{382}{20.90685}    \pgfmath@def{atan}{383}{20.95684}
\pgfmath@def{atan}{384}{21.00678}    \pgfmath@def{atan}{385}{21.05670}
\pgfmath@def{atan}{386}{21.10658}    \pgfmath@def{atan}{387}{21.15643}
\pgfmath@def{atan}{388}{21.20625}    \pgfmath@def{atan}{389}{21.25603}
\pgfmath@def{atan}{390}{21.30578}    \pgfmath@def{atan}{391}{21.35549}
\pgfmath@def{atan}{392}{21.40517}    \pgfmath@def{atan}{393}{21.45482}
\pgfmath@def{atan}{394}{21.50444}    \pgfmath@def{atan}{395}{21.55402}
\pgfmath@def{atan}{396}{21.60356}    \pgfmath@def{atan}{397}{21.65307}
\pgfmath@def{atan}{398}{21.70255}    \pgfmath@def{atan}{399}{21.75200}
\pgfmath@def{atan}{400}{21.80140}    \pgfmath@def{atan}{401}{21.85078}
\pgfmath@def{atan}{402}{21.90012}    \pgfmath@def{atan}{403}{21.94943}
\pgfmath@def{atan}{404}{21.99870}    \pgfmath@def{atan}{405}{22.04794}
\pgfmath@def{atan}{406}{22.09715}    \pgfmath@def{atan}{407}{22.14632}
\pgfmath@def{atan}{408}{22.19546}    \pgfmath@def{atan}{409}{22.24456}
\pgfmath@def{atan}{410}{22.29362}    \pgfmath@def{atan}{411}{22.34266}
\pgfmath@def{atan}{412}{22.39166}    \pgfmath@def{atan}{413}{22.44062}
\pgfmath@def{atan}{414}{22.48955}    \pgfmath@def{atan}{415}{22.53845}
\pgfmath@def{atan}{416}{22.58731}    \pgfmath@def{atan}{417}{22.63613}
\pgfmath@def{atan}{418}{22.68492}    \pgfmath@def{atan}{419}{22.73368}
\pgfmath@def{atan}{420}{22.78240}    \pgfmath@def{atan}{421}{22.83109}
\pgfmath@def{atan}{422}{22.87974}    \pgfmath@def{atan}{423}{22.92836}
\pgfmath@def{atan}{424}{22.97694}    \pgfmath@def{atan}{425}{23.02549}
\pgfmath@def{atan}{426}{23.07400}    \pgfmath@def{atan}{427}{23.12248}
\pgfmath@def{atan}{428}{23.17092}    \pgfmath@def{atan}{429}{23.21933}
\pgfmath@def{atan}{430}{23.26770}    \pgfmath@def{atan}{431}{23.31604}
\pgfmath@def{atan}{432}{23.36434}    \pgfmath@def{atan}{433}{23.41261}
\pgfmath@def{atan}{434}{23.46084}    \pgfmath@def{atan}{435}{23.50904}
\pgfmath@def{atan}{436}{23.55720}    \pgfmath@def{atan}{437}{23.60532}
\pgfmath@def{atan}{438}{23.65341}    \pgfmath@def{atan}{439}{23.70147}
\pgfmath@def{atan}{440}{23.74949}    \pgfmath@def{atan}{441}{23.79747}
\pgfmath@def{atan}{442}{23.84542}    \pgfmath@def{atan}{443}{23.89334}
\pgfmath@def{atan}{444}{23.94122}    \pgfmath@def{atan}{445}{23.98906}
\pgfmath@def{atan}{446}{24.03687}    \pgfmath@def{atan}{447}{24.08464}
\pgfmath@def{atan}{448}{24.13238}    \pgfmath@def{atan}{449}{24.18008}
\pgfmath@def{atan}{450}{24.22774}    \pgfmath@def{atan}{451}{24.27537}
\pgfmath@def{atan}{452}{24.32296}    \pgfmath@def{atan}{453}{24.37052}
\pgfmath@def{atan}{454}{24.41804}    \pgfmath@def{atan}{455}{24.46553}
\pgfmath@def{atan}{456}{24.51298}    \pgfmath@def{atan}{457}{24.56040}
\pgfmath@def{atan}{458}{24.60778}    \pgfmath@def{atan}{459}{24.65512}
\pgfmath@def{atan}{460}{24.70243}    \pgfmath@def{atan}{461}{24.74970}
\pgfmath@def{atan}{462}{24.79693}    \pgfmath@def{atan}{463}{24.84413}
\pgfmath@def{atan}{464}{24.89130}    \pgfmath@def{atan}{465}{24.93842}
\pgfmath@def{atan}{466}{24.98551}    \pgfmath@def{atan}{467}{25.03257}
\pgfmath@def{atan}{468}{25.07959}    \pgfmath@def{atan}{469}{25.12657}
\pgfmath@def{atan}{470}{25.17352}    \pgfmath@def{atan}{471}{25.22043}
\pgfmath@def{atan}{472}{25.26731}    \pgfmath@def{atan}{473}{25.31414}
\pgfmath@def{atan}{474}{25.36095}    \pgfmath@def{atan}{475}{25.40771}
\pgfmath@def{atan}{476}{25.45444}    \pgfmath@def{atan}{477}{25.50114}
\pgfmath@def{atan}{478}{25.54780}    \pgfmath@def{atan}{479}{25.59442}
\pgfmath@def{atan}{480}{25.64100}    \pgfmath@def{atan}{481}{25.68755}
\pgfmath@def{atan}{482}{25.73406}    \pgfmath@def{atan}{483}{25.78054}
\pgfmath@def{atan}{484}{25.82698}    \pgfmath@def{atan}{485}{25.87338}
\pgfmath@def{atan}{486}{25.91975}    \pgfmath@def{atan}{487}{25.96608}
\pgfmath@def{atan}{488}{26.01237}    \pgfmath@def{atan}{489}{26.05863}
\pgfmath@def{atan}{490}{26.10485}    \pgfmath@def{atan}{491}{26.15103}
\pgfmath@def{atan}{492}{26.19718}    \pgfmath@def{atan}{493}{26.24329}
\pgfmath@def{atan}{494}{26.28937}    \pgfmath@def{atan}{495}{26.33541}
\pgfmath@def{atan}{496}{26.38141}    \pgfmath@def{atan}{497}{26.42737}
\pgfmath@def{atan}{498}{26.47330}    \pgfmath@def{atan}{499}{26.51919}
\pgfmath@def{atan}{500}{26.56505}    \pgfmath@def{atan}{501}{26.61086}
\pgfmath@def{atan}{502}{26.65665}    \pgfmath@def{atan}{503}{26.70239}
\pgfmath@def{atan}{504}{26.74810}    \pgfmath@def{atan}{505}{26.79377}
\pgfmath@def{atan}{506}{26.83941}    \pgfmath@def{atan}{507}{26.88500}
\pgfmath@def{atan}{508}{26.93057}    \pgfmath@def{atan}{509}{26.97609}
\pgfmath@def{atan}{510}{27.02158}    \pgfmath@def{atan}{511}{27.06703}
\pgfmath@def{atan}{512}{27.11244}    \pgfmath@def{atan}{513}{27.15782}
\pgfmath@def{atan}{514}{27.20316}    \pgfmath@def{atan}{515}{27.24846}
\pgfmath@def{atan}{516}{27.29373}    \pgfmath@def{atan}{517}{27.33896}
\pgfmath@def{atan}{518}{27.38415}    \pgfmath@def{atan}{519}{27.42931}
\pgfmath@def{atan}{520}{27.47443}    \pgfmath@def{atan}{521}{27.51951}
\pgfmath@def{atan}{522}{27.56455}    \pgfmath@def{atan}{523}{27.60956}
\pgfmath@def{atan}{524}{27.65453}    \pgfmath@def{atan}{525}{27.69947}
\pgfmath@def{atan}{526}{27.74437}    \pgfmath@def{atan}{527}{27.78923}
\pgfmath@def{atan}{528}{27.83405}    \pgfmath@def{atan}{529}{27.87884}
\pgfmath@def{atan}{530}{27.92359}    \pgfmath@def{atan}{531}{27.96830}
\pgfmath@def{atan}{532}{28.01297}    \pgfmath@def{atan}{533}{28.05761}
\pgfmath@def{atan}{534}{28.10221}    \pgfmath@def{atan}{535}{28.14678}
\pgfmath@def{atan}{536}{28.19130}    \pgfmath@def{atan}{537}{28.23579}
\pgfmath@def{atan}{538}{28.28025}    \pgfmath@def{atan}{539}{28.32466}
\pgfmath@def{atan}{540}{28.36904}    \pgfmath@def{atan}{541}{28.41338}
\pgfmath@def{atan}{542}{28.45769}    \pgfmath@def{atan}{543}{28.50196}
\pgfmath@def{atan}{544}{28.54619}    \pgfmath@def{atan}{545}{28.59038}
\pgfmath@def{atan}{546}{28.63454}    \pgfmath@def{atan}{547}{28.67865}
\pgfmath@def{atan}{548}{28.72274}    \pgfmath@def{atan}{549}{28.76678}
\pgfmath@def{atan}{550}{28.81079}    \pgfmath@def{atan}{551}{28.85476}
\pgfmath@def{atan}{552}{28.89869}    \pgfmath@def{atan}{553}{28.94259}
\pgfmath@def{atan}{554}{28.98645}    \pgfmath@def{atan}{555}{29.03027}
\pgfmath@def{atan}{556}{29.07405}    \pgfmath@def{atan}{557}{29.11780}
\pgfmath@def{atan}{558}{29.16151}    \pgfmath@def{atan}{559}{29.20519}
\pgfmath@def{atan}{560}{29.24882}    \pgfmath@def{atan}{561}{29.29242}
\pgfmath@def{atan}{562}{29.33598}    \pgfmath@def{atan}{563}{29.37951}
\pgfmath@def{atan}{564}{29.42299}    \pgfmath@def{atan}{565}{29.46644}
\pgfmath@def{atan}{566}{29.50986}    \pgfmath@def{atan}{567}{29.55323}
\pgfmath@def{atan}{568}{29.59657}    \pgfmath@def{atan}{569}{29.63987}
\pgfmath@def{atan}{570}{29.68314}    \pgfmath@def{atan}{571}{29.72636}
\pgfmath@def{atan}{572}{29.76955}    \pgfmath@def{atan}{573}{29.81270}
\pgfmath@def{atan}{574}{29.85582}    \pgfmath@def{atan}{575}{29.89890}
\pgfmath@def{atan}{576}{29.94194}    \pgfmath@def{atan}{577}{29.98494}
\pgfmath@def{atan}{578}{30.02791}    \pgfmath@def{atan}{579}{30.07084}
\pgfmath@def{atan}{580}{30.11373}    \pgfmath@def{atan}{581}{30.15658}
\pgfmath@def{atan}{582}{30.19940}    \pgfmath@def{atan}{583}{30.24218}
\pgfmath@def{atan}{584}{30.28492}    \pgfmath@def{atan}{585}{30.32763}
\pgfmath@def{atan}{586}{30.37030}    \pgfmath@def{atan}{587}{30.41293}
\pgfmath@def{atan}{588}{30.45552}    \pgfmath@def{atan}{589}{30.49808}
\pgfmath@def{atan}{590}{30.54060}    \pgfmath@def{atan}{591}{30.58308}
\pgfmath@def{atan}{592}{30.62553}    \pgfmath@def{atan}{593}{30.66794}
\pgfmath@def{atan}{594}{30.71031}    \pgfmath@def{atan}{595}{30.75264}
\pgfmath@def{atan}{596}{30.79494}    \pgfmath@def{atan}{597}{30.83720}
\pgfmath@def{atan}{598}{30.87942}    \pgfmath@def{atan}{599}{30.92160}
\pgfmath@def{atan}{600}{30.96375}    \pgfmath@def{atan}{601}{31.00586}
\pgfmath@def{atan}{602}{31.04794}    \pgfmath@def{atan}{603}{31.08997}
\pgfmath@def{atan}{604}{31.13197}    \pgfmath@def{atan}{605}{31.17393}
\pgfmath@def{atan}{606}{31.21586}    \pgfmath@def{atan}{607}{31.25775}
\pgfmath@def{atan}{608}{31.29960}    \pgfmath@def{atan}{609}{31.34141}
\pgfmath@def{atan}{610}{31.38319}    \pgfmath@def{atan}{611}{31.42493}
\pgfmath@def{atan}{612}{31.46663}    \pgfmath@def{atan}{613}{31.50829}
\pgfmath@def{atan}{614}{31.54992}    \pgfmath@def{atan}{615}{31.59151}
\pgfmath@def{atan}{616}{31.63306}    \pgfmath@def{atan}{617}{31.67458}
\pgfmath@def{atan}{618}{31.71606}    \pgfmath@def{atan}{619}{31.75750}
\pgfmath@def{atan}{620}{31.79891}    \pgfmath@def{atan}{621}{31.84028}
\pgfmath@def{atan}{622}{31.88161}    \pgfmath@def{atan}{623}{31.92290}
\pgfmath@def{atan}{624}{31.96416}    \pgfmath@def{atan}{625}{32.00538}
\pgfmath@def{atan}{626}{32.04656}    \pgfmath@def{atan}{627}{32.08771}
\pgfmath@def{atan}{628}{32.12882}    \pgfmath@def{atan}{629}{32.16989}
\pgfmath@def{atan}{630}{32.21092}    \pgfmath@def{atan}{631}{32.25192}
\pgfmath@def{atan}{632}{32.29288}    \pgfmath@def{atan}{633}{32.33381}
\pgfmath@def{atan}{634}{32.37469}    \pgfmath@def{atan}{635}{32.41554}
\pgfmath@def{atan}{636}{32.45636}    \pgfmath@def{atan}{637}{32.49713}
\pgfmath@def{atan}{638}{32.53787}    \pgfmath@def{atan}{639}{32.57857}
\pgfmath@def{atan}{640}{32.61924}    \pgfmath@def{atan}{641}{32.65987}
\pgfmath@def{atan}{642}{32.70046}    \pgfmath@def{atan}{643}{32.74101}
\pgfmath@def{atan}{644}{32.78153}    \pgfmath@def{atan}{645}{32.82201}
\pgfmath@def{atan}{646}{32.86246}    \pgfmath@def{atan}{647}{32.90286}
\pgfmath@def{atan}{648}{32.94323}    \pgfmath@def{atan}{649}{32.98357}
\pgfmath@def{atan}{650}{33.02386}    \pgfmath@def{atan}{651}{33.06412}
\pgfmath@def{atan}{652}{33.10435}    \pgfmath@def{atan}{653}{33.14453}
\pgfmath@def{atan}{654}{33.18468}    \pgfmath@def{atan}{655}{33.22479}
\pgfmath@def{atan}{656}{33.26487}    \pgfmath@def{atan}{657}{33.30491}
\pgfmath@def{atan}{658}{33.34491}    \pgfmath@def{atan}{659}{33.38488}
\pgfmath@def{atan}{660}{33.42481}    \pgfmath@def{atan}{661}{33.46470}
\pgfmath@def{atan}{662}{33.50455}    \pgfmath@def{atan}{663}{33.54437}
\pgfmath@def{atan}{664}{33.58416}    \pgfmath@def{atan}{665}{33.62390}
\pgfmath@def{atan}{666}{33.66361}    \pgfmath@def{atan}{667}{33.70328}
\pgfmath@def{atan}{668}{33.74292}    \pgfmath@def{atan}{669}{33.78252}
\pgfmath@def{atan}{670}{33.82208}    \pgfmath@def{atan}{671}{33.86161}
\pgfmath@def{atan}{672}{33.90110}    \pgfmath@def{atan}{673}{33.94055}
\pgfmath@def{atan}{674}{33.97997}    \pgfmath@def{atan}{675}{34.01935}
\pgfmath@def{atan}{676}{34.05869}    \pgfmath@def{atan}{677}{34.09800}
\pgfmath@def{atan}{678}{34.13727}    \pgfmath@def{atan}{679}{34.17650}
\pgfmath@def{atan}{680}{34.21570}    \pgfmath@def{atan}{681}{34.25486}
\pgfmath@def{atan}{682}{34.29398}    \pgfmath@def{atan}{683}{34.33307}
\pgfmath@def{atan}{684}{34.37212}    \pgfmath@def{atan}{685}{34.41114}
\pgfmath@def{atan}{686}{34.45012}    \pgfmath@def{atan}{687}{34.48906}
\pgfmath@def{atan}{688}{34.52797}    \pgfmath@def{atan}{689}{34.56684}
\pgfmath@def{atan}{690}{34.60567}    \pgfmath@def{atan}{691}{34.64447}
\pgfmath@def{atan}{692}{34.68323}    \pgfmath@def{atan}{693}{34.72195}
\pgfmath@def{atan}{694}{34.76064}    \pgfmath@def{atan}{695}{34.79930}
\pgfmath@def{atan}{696}{34.83791}    \pgfmath@def{atan}{697}{34.87649}
\pgfmath@def{atan}{698}{34.91504}    \pgfmath@def{atan}{699}{34.95354}
\pgfmath@def{atan}{700}{34.99202}    \pgfmath@def{atan}{701}{35.03045}
\pgfmath@def{atan}{702}{35.06885}    \pgfmath@def{atan}{703}{35.10721}
\pgfmath@def{atan}{704}{35.14554}    \pgfmath@def{atan}{705}{35.18383}
\pgfmath@def{atan}{706}{35.22209}    \pgfmath@def{atan}{707}{35.26031}
\pgfmath@def{atan}{708}{35.29849}    \pgfmath@def{atan}{709}{35.33664}
\pgfmath@def{atan}{710}{35.37475}    \pgfmath@def{atan}{711}{35.41282}
\pgfmath@def{atan}{712}{35.45086}    \pgfmath@def{atan}{713}{35.48886}
\pgfmath@def{atan}{714}{35.52683}    \pgfmath@def{atan}{715}{35.56476}
\pgfmath@def{atan}{716}{35.60266}    \pgfmath@def{atan}{717}{35.64052}
\pgfmath@def{atan}{718}{35.67834}    \pgfmath@def{atan}{719}{35.71613}
\pgfmath@def{atan}{720}{35.75388}    \pgfmath@def{atan}{721}{35.79160}
\pgfmath@def{atan}{722}{35.82928}    \pgfmath@def{atan}{723}{35.86692}
\pgfmath@def{atan}{724}{35.90453}    \pgfmath@def{atan}{725}{35.94211}
\pgfmath@def{atan}{726}{35.97965}    \pgfmath@def{atan}{727}{36.01715}
\pgfmath@def{atan}{728}{36.05461}    \pgfmath@def{atan}{729}{36.09204}
\pgfmath@def{atan}{730}{36.12944}    \pgfmath@def{atan}{731}{36.16680}
\pgfmath@def{atan}{732}{36.20412}    \pgfmath@def{atan}{733}{36.24141}
\pgfmath@def{atan}{734}{36.27866}    \pgfmath@def{atan}{735}{36.31588}
\pgfmath@def{atan}{736}{36.35306}    \pgfmath@def{atan}{737}{36.39021}
\pgfmath@def{atan}{738}{36.42732}    \pgfmath@def{atan}{739}{36.46440}
\pgfmath@def{atan}{740}{36.50144}    \pgfmath@def{atan}{741}{36.53844}
\pgfmath@def{atan}{742}{36.57541}    \pgfmath@def{atan}{743}{36.61234}
\pgfmath@def{atan}{744}{36.64924}    \pgfmath@def{atan}{745}{36.68611}
\pgfmath@def{atan}{746}{36.72293}    \pgfmath@def{atan}{747}{36.75973}
\pgfmath@def{atan}{748}{36.79648}    \pgfmath@def{atan}{749}{36.83321}
\pgfmath@def{atan}{750}{36.86989}    \pgfmath@def{atan}{751}{36.90654}
\pgfmath@def{atan}{752}{36.94316}    \pgfmath@def{atan}{753}{36.97974}
\pgfmath@def{atan}{754}{37.01629}    \pgfmath@def{atan}{755}{37.05280}
\pgfmath@def{atan}{756}{37.08928}    \pgfmath@def{atan}{757}{37.12572}
\pgfmath@def{atan}{758}{37.16212}    \pgfmath@def{atan}{759}{37.19849}
\pgfmath@def{atan}{760}{37.23483}    \pgfmath@def{atan}{761}{37.27113}
\pgfmath@def{atan}{762}{37.30740}    \pgfmath@def{atan}{763}{37.34363}
\pgfmath@def{atan}{764}{37.37982}    \pgfmath@def{atan}{765}{37.41598}
\pgfmath@def{atan}{766}{37.45211}    \pgfmath@def{atan}{767}{37.48820}
\pgfmath@def{atan}{768}{37.52426}    \pgfmath@def{atan}{769}{37.56028}
\pgfmath@def{atan}{770}{37.59627}    \pgfmath@def{atan}{771}{37.63222}
\pgfmath@def{atan}{772}{37.66814}    \pgfmath@def{atan}{773}{37.70402}
\pgfmath@def{atan}{774}{37.73987}    \pgfmath@def{atan}{775}{37.77568}
\pgfmath@def{atan}{776}{37.81146}    \pgfmath@def{atan}{777}{37.84720}
\pgfmath@def{atan}{778}{37.88291}    \pgfmath@def{atan}{779}{37.91859}
\pgfmath@def{atan}{780}{37.95423}    \pgfmath@def{atan}{781}{37.98983}
\pgfmath@def{atan}{782}{38.02540}    \pgfmath@def{atan}{783}{38.06094}
\pgfmath@def{atan}{784}{38.09644}    \pgfmath@def{atan}{785}{38.13191}
\pgfmath@def{atan}{786}{38.16734}    \pgfmath@def{atan}{787}{38.20274}
\pgfmath@def{atan}{788}{38.23811}    \pgfmath@def{atan}{789}{38.27344}
\pgfmath@def{atan}{790}{38.30873}    \pgfmath@def{atan}{791}{38.34399}
\pgfmath@def{atan}{792}{38.37922}    \pgfmath@def{atan}{793}{38.41441}
\pgfmath@def{atan}{794}{38.44957}    \pgfmath@def{atan}{795}{38.48469}
\pgfmath@def{atan}{796}{38.51979}    \pgfmath@def{atan}{797}{38.55484}
\pgfmath@def{atan}{798}{38.58986}    \pgfmath@def{atan}{799}{38.62485}
\pgfmath@def{atan}{800}{38.65980}    \pgfmath@def{atan}{801}{38.69472}
\pgfmath@def{atan}{802}{38.72961}    \pgfmath@def{atan}{803}{38.76446}
\pgfmath@def{atan}{804}{38.79928}    \pgfmath@def{atan}{805}{38.83406}
\pgfmath@def{atan}{806}{38.86881}    \pgfmath@def{atan}{807}{38.90353}
\pgfmath@def{atan}{808}{38.93821}    \pgfmath@def{atan}{809}{38.97285}
\pgfmath@def{atan}{810}{39.00747}    \pgfmath@def{atan}{811}{39.04205}
\pgfmath@def{atan}{812}{39.07659}    \pgfmath@def{atan}{813}{39.11111}
\pgfmath@def{atan}{814}{39.14558}    \pgfmath@def{atan}{815}{39.18003}
\pgfmath@def{atan}{816}{39.21444}    \pgfmath@def{atan}{817}{39.24882}
\pgfmath@def{atan}{818}{39.28316}    \pgfmath@def{atan}{819}{39.31747}
\pgfmath@def{atan}{820}{39.35175}    \pgfmath@def{atan}{821}{39.38599}
\pgfmath@def{atan}{822}{39.42020}    \pgfmath@def{atan}{823}{39.45438}
\pgfmath@def{atan}{824}{39.48852}    \pgfmath@def{atan}{825}{39.52263}
\pgfmath@def{atan}{826}{39.55670}    \pgfmath@def{atan}{827}{39.59074}
\pgfmath@def{atan}{828}{39.62475}    \pgfmath@def{atan}{829}{39.65873}
\pgfmath@def{atan}{830}{39.69267}    \pgfmath@def{atan}{831}{39.72658}
\pgfmath@def{atan}{832}{39.76045}    \pgfmath@def{atan}{833}{39.79429}
\pgfmath@def{atan}{834}{39.82810}    \pgfmath@def{atan}{835}{39.86188}
\pgfmath@def{atan}{836}{39.89562}    \pgfmath@def{atan}{837}{39.92933}
\pgfmath@def{atan}{838}{39.96300}    \pgfmath@def{atan}{839}{39.99665}
\pgfmath@def{atan}{840}{40.03025}    \pgfmath@def{atan}{841}{40.06383}
\pgfmath@def{atan}{842}{40.09737}    \pgfmath@def{atan}{843}{40.13088}
\pgfmath@def{atan}{844}{40.16436}    \pgfmath@def{atan}{845}{40.19781}
\pgfmath@def{atan}{846}{40.23122}    \pgfmath@def{atan}{847}{40.26459}
\pgfmath@def{atan}{848}{40.29794}    \pgfmath@def{atan}{849}{40.33125}
\pgfmath@def{atan}{850}{40.36453}    \pgfmath@def{atan}{851}{40.39778}
\pgfmath@def{atan}{852}{40.43099}    \pgfmath@def{atan}{853}{40.46417}
\pgfmath@def{atan}{854}{40.49732}    \pgfmath@def{atan}{855}{40.53044}
\pgfmath@def{atan}{856}{40.56352}    \pgfmath@def{atan}{857}{40.59657}
\pgfmath@def{atan}{858}{40.62959}    \pgfmath@def{atan}{859}{40.66257}
\pgfmath@def{atan}{860}{40.69553}    \pgfmath@def{atan}{861}{40.72845}
\pgfmath@def{atan}{862}{40.76133}    \pgfmath@def{atan}{863}{40.79419}
\pgfmath@def{atan}{864}{40.82701}    \pgfmath@def{atan}{865}{40.85980}
\pgfmath@def{atan}{866}{40.89256}    \pgfmath@def{atan}{867}{40.92528}
\pgfmath@def{atan}{868}{40.95798}    \pgfmath@def{atan}{869}{40.99064}
\pgfmath@def{atan}{870}{41.02326}    \pgfmath@def{atan}{871}{41.05586}
\pgfmath@def{atan}{872}{41.08842}    \pgfmath@def{atan}{873}{41.12095}
\pgfmath@def{atan}{874}{41.15345}    \pgfmath@def{atan}{875}{41.18592}
\pgfmath@def{atan}{876}{41.21836}    \pgfmath@def{atan}{877}{41.25076}
\pgfmath@def{atan}{878}{41.28313}    \pgfmath@def{atan}{879}{41.31547}
\pgfmath@def{atan}{880}{41.34777}    \pgfmath@def{atan}{881}{41.38005}
\pgfmath@def{atan}{882}{41.41229}    \pgfmath@def{atan}{883}{41.44450}
\pgfmath@def{atan}{884}{41.47668}    \pgfmath@def{atan}{885}{41.50882}
\pgfmath@def{atan}{886}{41.54094}    \pgfmath@def{atan}{887}{41.57302}
\pgfmath@def{atan}{888}{41.60507}    \pgfmath@def{atan}{889}{41.63709}
\pgfmath@def{atan}{890}{41.66908}    \pgfmath@def{atan}{891}{41.70103}
\pgfmath@def{atan}{892}{41.73296}    \pgfmath@def{atan}{893}{41.76485}
\pgfmath@def{atan}{894}{41.79671}    \pgfmath@def{atan}{895}{41.82854}
\pgfmath@def{atan}{896}{41.86034}    \pgfmath@def{atan}{897}{41.89210}
\pgfmath@def{atan}{898}{41.92383}    \pgfmath@def{atan}{899}{41.95554}
\pgfmath@def{atan}{900}{41.98721}    \pgfmath@def{atan}{901}{42.01885}
\pgfmath@def{atan}{902}{42.05046}    \pgfmath@def{atan}{903}{42.08203}
\pgfmath@def{atan}{904}{42.11358}    \pgfmath@def{atan}{905}{42.14509}
\pgfmath@def{atan}{906}{42.17657}    \pgfmath@def{atan}{907}{42.20802}
\pgfmath@def{atan}{908}{42.23944}    \pgfmath@def{atan}{909}{42.27083}
\pgfmath@def{atan}{910}{42.30219}    \pgfmath@def{atan}{911}{42.33352}
\pgfmath@def{atan}{912}{42.36481}    \pgfmath@def{atan}{913}{42.39607}
\pgfmath@def{atan}{914}{42.42731}    \pgfmath@def{atan}{915}{42.45851}
\pgfmath@def{atan}{916}{42.48968}    \pgfmath@def{atan}{917}{42.52082}
\pgfmath@def{atan}{918}{42.55193}    \pgfmath@def{atan}{919}{42.58300}
\pgfmath@def{atan}{920}{42.61405}    \pgfmath@def{atan}{921}{42.64507}
\pgfmath@def{atan}{922}{42.67605}    \pgfmath@def{atan}{923}{42.70701}
\pgfmath@def{atan}{924}{42.73793}    \pgfmath@def{atan}{925}{42.76882}
\pgfmath@def{atan}{926}{42.79968}    \pgfmath@def{atan}{927}{42.83051}
\pgfmath@def{atan}{928}{42.86131}    \pgfmath@def{atan}{929}{42.89208}
\pgfmath@def{atan}{930}{42.92282}    \pgfmath@def{atan}{931}{42.95353}
\pgfmath@def{atan}{932}{42.98421}    \pgfmath@def{atan}{933}{43.01485}
\pgfmath@def{atan}{934}{43.04547}    \pgfmath@def{atan}{935}{43.07605}
\pgfmath@def{atan}{936}{43.10661}    \pgfmath@def{atan}{937}{43.13713}
\pgfmath@def{atan}{938}{43.16763}    \pgfmath@def{atan}{939}{43.19809}
\pgfmath@def{atan}{940}{43.22853}    \pgfmath@def{atan}{941}{43.25893}
\pgfmath@def{atan}{942}{43.28930}    \pgfmath@def{atan}{943}{43.31964}
\pgfmath@def{atan}{944}{43.34996}    \pgfmath@def{atan}{945}{43.38024}
\pgfmath@def{atan}{946}{43.41049}    \pgfmath@def{atan}{947}{43.44071}
\pgfmath@def{atan}{948}{43.47090}    \pgfmath@def{atan}{949}{43.50106}
\pgfmath@def{atan}{950}{43.53119}    \pgfmath@def{atan}{951}{43.56130}
\pgfmath@def{atan}{952}{43.59137}    \pgfmath@def{atan}{953}{43.62141}
\pgfmath@def{atan}{954}{43.65142}    \pgfmath@def{atan}{955}{43.68140}
\pgfmath@def{atan}{956}{43.71135}    \pgfmath@def{atan}{957}{43.74127}
\pgfmath@def{atan}{958}{43.77116}    \pgfmath@def{atan}{959}{43.80102}
\pgfmath@def{atan}{960}{43.83086}    \pgfmath@def{atan}{961}{43.86066}
\pgfmath@def{atan}{962}{43.89043}    \pgfmath@def{atan}{963}{43.92017}
\pgfmath@def{atan}{964}{43.94988}    \pgfmath@def{atan}{965}{43.97957}
\pgfmath@def{atan}{966}{44.00922}    \pgfmath@def{atan}{967}{44.03884}
\pgfmath@def{atan}{968}{44.06844}    \pgfmath@def{atan}{969}{44.09800}
\pgfmath@def{atan}{970}{44.12754}    \pgfmath@def{atan}{971}{44.15704}
\pgfmath@def{atan}{972}{44.18652}    \pgfmath@def{atan}{973}{44.21597}
\pgfmath@def{atan}{974}{44.24538}    \pgfmath@def{atan}{975}{44.27477}
\pgfmath@def{atan}{976}{44.30413}    \pgfmath@def{atan}{977}{44.33346}
\pgfmath@def{atan}{978}{44.36276}    \pgfmath@def{atan}{979}{44.39203}
\pgfmath@def{atan}{980}{44.42127}    \pgfmath@def{atan}{981}{44.45048}
\pgfmath@def{atan}{982}{44.47966}    \pgfmath@def{atan}{983}{44.50882}
\pgfmath@def{atan}{984}{44.53794}    \pgfmath@def{atan}{985}{44.56704}
\pgfmath@def{atan}{986}{44.59610}    \pgfmath@def{atan}{987}{44.62514}
\pgfmath@def{atan}{988}{44.65415}    \pgfmath@def{atan}{989}{44.68313}
\pgfmath@def{atan}{990}{44.71208}    \pgfmath@def{atan}{991}{44.74100}
\pgfmath@def{atan}{992}{44.76989}    \pgfmath@def{atan}{993}{44.79876}
\pgfmath@def{atan}{994}{44.82759}    \pgfmath@def{atan}{995}{44.85640}
\pgfmath@def{atan}{996}{44.88517}    \pgfmath@def{atan}{997}{44.91392}
\pgfmath@def{atan}{998}{44.94264}    \pgfmath@def{atan}{999}{44.97133}
\pgfmath@def{atan}{1000}{45.00000}

\pgfmath@def{acos}{0}{90.00000}    \pgfmath@def{acos}{1}{89.94270}
\pgfmath@def{acos}{2}{89.88540}    \pgfmath@def{acos}{3}{89.82811}
\pgfmath@def{acos}{4}{89.77081}    \pgfmath@def{acos}{5}{89.71352}
\pgfmath@def{acos}{6}{89.65622}    \pgfmath@def{acos}{7}{89.59892}
\pgfmath@def{acos}{8}{89.54162}    \pgfmath@def{acos}{9}{89.48433}
\pgfmath@def{acos}{10}{89.42703}    \pgfmath@def{acos}{11}{89.36973}
\pgfmath@def{acos}{12}{89.31243}    \pgfmath@def{acos}{13}{89.25513}
\pgfmath@def{acos}{14}{89.19783}    \pgfmath@def{acos}{15}{89.14053}
\pgfmath@def{acos}{16}{89.08322}    \pgfmath@def{acos}{17}{89.02592}
\pgfmath@def{acos}{18}{88.96862}    \pgfmath@def{acos}{19}{88.91131}
\pgfmath@def{acos}{20}{88.85400}    \pgfmath@def{acos}{21}{88.79670}
\pgfmath@def{acos}{22}{88.73939}    \pgfmath@def{acos}{23}{88.68208}
\pgfmath@def{acos}{24}{88.62476}    \pgfmath@def{acos}{25}{88.56745}
\pgfmath@def{acos}{26}{88.51014}    \pgfmath@def{acos}{27}{88.45282}
\pgfmath@def{acos}{28}{88.39550}    \pgfmath@def{acos}{29}{88.33818}
\pgfmath@def{acos}{30}{88.28086}    \pgfmath@def{acos}{31}{88.22354}
\pgfmath@def{acos}{32}{88.16622}    \pgfmath@def{acos}{33}{88.10889}
\pgfmath@def{acos}{34}{88.05156}    \pgfmath@def{acos}{35}{87.99423}
\pgfmath@def{acos}{36}{87.93690}    \pgfmath@def{acos}{37}{87.87957}
\pgfmath@def{acos}{38}{87.82223}    \pgfmath@def{acos}{39}{87.76489}
\pgfmath@def{acos}{40}{87.70755}    \pgfmath@def{acos}{41}{87.65021}
\pgfmath@def{acos}{42}{87.59286}    \pgfmath@def{acos}{43}{87.53552}
\pgfmath@def{acos}{44}{87.47817}    \pgfmath@def{acos}{45}{87.42081}
\pgfmath@def{acos}{46}{87.36346}    \pgfmath@def{acos}{47}{87.30610}
\pgfmath@def{acos}{48}{87.24874}    \pgfmath@def{acos}{49}{87.19138}
\pgfmath@def{acos}{50}{87.13401}    \pgfmath@def{acos}{51}{87.07664}
\pgfmath@def{acos}{52}{87.01927}    \pgfmath@def{acos}{53}{86.96190}
\pgfmath@def{acos}{54}{86.90452}    \pgfmath@def{acos}{55}{86.84714}
\pgfmath@def{acos}{56}{86.78975}    \pgfmath@def{acos}{57}{86.73237}
\pgfmath@def{acos}{58}{86.67497}    \pgfmath@def{acos}{59}{86.61758}
\pgfmath@def{acos}{60}{86.56018}    \pgfmath@def{acos}{61}{86.50278}
\pgfmath@def{acos}{62}{86.44538}    \pgfmath@def{acos}{63}{86.38797}
\pgfmath@def{acos}{64}{86.33056}    \pgfmath@def{acos}{65}{86.27314}
\pgfmath@def{acos}{66}{86.21572}    \pgfmath@def{acos}{67}{86.15830}
\pgfmath@def{acos}{68}{86.10087}    \pgfmath@def{acos}{69}{86.04344}
\pgfmath@def{acos}{70}{85.98601}    \pgfmath@def{acos}{71}{85.92857}
\pgfmath@def{acos}{72}{85.87113}    \pgfmath@def{acos}{73}{85.81368}
\pgfmath@def{acos}{74}{85.75623}    \pgfmath@def{acos}{75}{85.69877}
\pgfmath@def{acos}{76}{85.64131}    \pgfmath@def{acos}{77}{85.58385}
\pgfmath@def{acos}{78}{85.52638}    \pgfmath@def{acos}{79}{85.46891}
\pgfmath@def{acos}{80}{85.41143}    \pgfmath@def{acos}{81}{85.35395}
\pgfmath@def{acos}{82}{85.29646}    \pgfmath@def{acos}{83}{85.23897}
\pgfmath@def{acos}{84}{85.18147}    \pgfmath@def{acos}{85}{85.12397}
\pgfmath@def{acos}{86}{85.06646}    \pgfmath@def{acos}{87}{85.00895}
\pgfmath@def{acos}{88}{84.95144}    \pgfmath@def{acos}{89}{84.89392}
\pgfmath@def{acos}{90}{84.83639}    \pgfmath@def{acos}{91}{84.77886}
\pgfmath@def{acos}{92}{84.72132}    \pgfmath@def{acos}{93}{84.66378}
\pgfmath@def{acos}{94}{84.60623}    \pgfmath@def{acos}{95}{84.54868}
\pgfmath@def{acos}{96}{84.49112}    \pgfmath@def{acos}{97}{84.43355}
\pgfmath@def{acos}{98}{84.37598}    \pgfmath@def{acos}{99}{84.31841}
\pgfmath@def{acos}{100}{84.26083}    \pgfmath@def{acos}{101}{84.20324}
\pgfmath@def{acos}{102}{84.14564}    \pgfmath@def{acos}{103}{84.08805}
\pgfmath@def{acos}{104}{84.03044}    \pgfmath@def{acos}{105}{83.97283}
\pgfmath@def{acos}{106}{83.91521}    \pgfmath@def{acos}{107}{83.85759}
\pgfmath@def{acos}{108}{83.79996}    \pgfmath@def{acos}{109}{83.74232}
\pgfmath@def{acos}{110}{83.68468}    \pgfmath@def{acos}{111}{83.62703}
\pgfmath@def{acos}{112}{83.56938}    \pgfmath@def{acos}{113}{83.51171}
\pgfmath@def{acos}{114}{83.45405}    \pgfmath@def{acos}{115}{83.39637}
\pgfmath@def{acos}{116}{83.33869}    \pgfmath@def{acos}{117}{83.28100}
\pgfmath@def{acos}{118}{83.22330}    \pgfmath@def{acos}{119}{83.16560}
\pgfmath@def{acos}{120}{83.10789}    \pgfmath@def{acos}{121}{83.05018}
\pgfmath@def{acos}{122}{82.99245}    \pgfmath@def{acos}{123}{82.93472}
\pgfmath@def{acos}{124}{82.87698}    \pgfmath@def{acos}{125}{82.81924}
\pgfmath@def{acos}{126}{82.76149}    \pgfmath@def{acos}{127}{82.70373}
\pgfmath@def{acos}{128}{82.64596}    \pgfmath@def{acos}{129}{82.58819}
\pgfmath@def{acos}{130}{82.53040}    \pgfmath@def{acos}{131}{82.47261}
\pgfmath@def{acos}{132}{82.41482}    \pgfmath@def{acos}{133}{82.35701}
\pgfmath@def{acos}{134}{82.29920}    \pgfmath@def{acos}{135}{82.24138}
\pgfmath@def{acos}{136}{82.18355}    \pgfmath@def{acos}{137}{82.12571}
\pgfmath@def{acos}{138}{82.06786}    \pgfmath@def{acos}{139}{82.01001}
\pgfmath@def{acos}{140}{81.95215}    \pgfmath@def{acos}{141}{81.89428}
\pgfmath@def{acos}{142}{81.83640}    \pgfmath@def{acos}{143}{81.77851}
\pgfmath@def{acos}{144}{81.72062}    \pgfmath@def{acos}{145}{81.66272}
\pgfmath@def{acos}{146}{81.60480}    \pgfmath@def{acos}{147}{81.54688}
\pgfmath@def{acos}{148}{81.48895}    \pgfmath@def{acos}{149}{81.43102}
\pgfmath@def{acos}{150}{81.37307}    \pgfmath@def{acos}{151}{81.31511}
\pgfmath@def{acos}{152}{81.25715}    \pgfmath@def{acos}{153}{81.19917}
\pgfmath@def{acos}{154}{81.14119}    \pgfmath@def{acos}{155}{81.08320}
\pgfmath@def{acos}{156}{81.02520}    \pgfmath@def{acos}{157}{80.96719}
\pgfmath@def{acos}{158}{80.90917}    \pgfmath@def{acos}{159}{80.85114}
\pgfmath@def{acos}{160}{80.79310}    \pgfmath@def{acos}{161}{80.73505}
\pgfmath@def{acos}{162}{80.67699}    \pgfmath@def{acos}{163}{80.61893}
\pgfmath@def{acos}{164}{80.56085}    \pgfmath@def{acos}{165}{80.50276}
\pgfmath@def{acos}{166}{80.44466}    \pgfmath@def{acos}{167}{80.38656}
\pgfmath@def{acos}{168}{80.32844}    \pgfmath@def{acos}{169}{80.27031}
\pgfmath@def{acos}{170}{80.21218}    \pgfmath@def{acos}{171}{80.15403}
\pgfmath@def{acos}{172}{80.09587}    \pgfmath@def{acos}{173}{80.03770}
\pgfmath@def{acos}{174}{79.97953}    \pgfmath@def{acos}{175}{79.92134}
\pgfmath@def{acos}{176}{79.86314}    \pgfmath@def{acos}{177}{79.80493}
\pgfmath@def{acos}{178}{79.74671}    \pgfmath@def{acos}{179}{79.68848}
\pgfmath@def{acos}{180}{79.63024}    \pgfmath@def{acos}{181}{79.57198}
\pgfmath@def{acos}{182}{79.51372}    \pgfmath@def{acos}{183}{79.45545}
\pgfmath@def{acos}{184}{79.39716}    \pgfmath@def{acos}{185}{79.33886}
\pgfmath@def{acos}{186}{79.28056}    \pgfmath@def{acos}{187}{79.22224}
\pgfmath@def{acos}{188}{79.16391}    \pgfmath@def{acos}{189}{79.10556}
\pgfmath@def{acos}{190}{79.04721}    \pgfmath@def{acos}{191}{78.98885}
\pgfmath@def{acos}{192}{78.93047}    \pgfmath@def{acos}{193}{78.87208}
\pgfmath@def{acos}{194}{78.81368}    \pgfmath@def{acos}{195}{78.75527}
\pgfmath@def{acos}{196}{78.69685}    \pgfmath@def{acos}{197}{78.63841}
\pgfmath@def{acos}{198}{78.57997}    \pgfmath@def{acos}{199}{78.52151}
\pgfmath@def{acos}{200}{78.46304}    \pgfmath@def{acos}{201}{78.40455}
\pgfmath@def{acos}{202}{78.34606}    \pgfmath@def{acos}{203}{78.28755}
\pgfmath@def{acos}{204}{78.22903}    \pgfmath@def{acos}{205}{78.17050}
\pgfmath@def{acos}{206}{78.11195}    \pgfmath@def{acos}{207}{78.05339}
\pgfmath@def{acos}{208}{77.99482}    \pgfmath@def{acos}{209}{77.93624}
\pgfmath@def{acos}{210}{77.87764}    \pgfmath@def{acos}{211}{77.81903}
\pgfmath@def{acos}{212}{77.76041}    \pgfmath@def{acos}{213}{77.70178}
\pgfmath@def{acos}{214}{77.64313}    \pgfmath@def{acos}{215}{77.58447}
\pgfmath@def{acos}{216}{77.52579}    \pgfmath@def{acos}{217}{77.46711}
\pgfmath@def{acos}{218}{77.40841}    \pgfmath@def{acos}{219}{77.34969}
\pgfmath@def{acos}{220}{77.29096}    \pgfmath@def{acos}{221}{77.23222}
\pgfmath@def{acos}{222}{77.17347}    \pgfmath@def{acos}{223}{77.11470}
\pgfmath@def{acos}{224}{77.05591}    \pgfmath@def{acos}{225}{76.99712}
\pgfmath@def{acos}{226}{76.93831}    \pgfmath@def{acos}{227}{76.87948}
\pgfmath@def{acos}{228}{76.82064}    \pgfmath@def{acos}{229}{76.76179}
\pgfmath@def{acos}{230}{76.70292}    \pgfmath@def{acos}{231}{76.64404}
\pgfmath@def{acos}{232}{76.58515}    \pgfmath@def{acos}{233}{76.52624}
\pgfmath@def{acos}{234}{76.46731}    \pgfmath@def{acos}{235}{76.40837}
\pgfmath@def{acos}{236}{76.34942}    \pgfmath@def{acos}{237}{76.29045}
\pgfmath@def{acos}{238}{76.23147}    \pgfmath@def{acos}{239}{76.17247}
\pgfmath@def{acos}{240}{76.11346}    \pgfmath@def{acos}{241}{76.05443}
\pgfmath@def{acos}{242}{75.99538}    \pgfmath@def{acos}{243}{75.93632}
\pgfmath@def{acos}{244}{75.87725}    \pgfmath@def{acos}{245}{75.81816}
\pgfmath@def{acos}{246}{75.75906}    \pgfmath@def{acos}{247}{75.69994}
\pgfmath@def{acos}{248}{75.64080}    \pgfmath@def{acos}{249}{75.58165}
\pgfmath@def{acos}{250}{75.52248}    \pgfmath@def{acos}{251}{75.46330}
\pgfmath@def{acos}{252}{75.40410}    \pgfmath@def{acos}{253}{75.34489}
\pgfmath@def{acos}{254}{75.28566}    \pgfmath@def{acos}{255}{75.22641}
\pgfmath@def{acos}{256}{75.16715}    \pgfmath@def{acos}{257}{75.10787}
\pgfmath@def{acos}{258}{75.04857}    \pgfmath@def{acos}{259}{74.98926}
\pgfmath@def{acos}{260}{74.92993}    \pgfmath@def{acos}{261}{74.87059}
\pgfmath@def{acos}{262}{74.81123}    \pgfmath@def{acos}{263}{74.75185}
\pgfmath@def{acos}{264}{74.69245}    \pgfmath@def{acos}{265}{74.63304}
\pgfmath@def{acos}{266}{74.57361}    \pgfmath@def{acos}{267}{74.51417}
\pgfmath@def{acos}{268}{74.45471}    \pgfmath@def{acos}{269}{74.39523}
\pgfmath@def{acos}{270}{74.33573}    \pgfmath@def{acos}{271}{74.27621}
\pgfmath@def{acos}{272}{74.21668}    \pgfmath@def{acos}{273}{74.15713}
\pgfmath@def{acos}{274}{74.09757}    \pgfmath@def{acos}{275}{74.03798}
\pgfmath@def{acos}{276}{73.97838}    \pgfmath@def{acos}{277}{73.91876}
\pgfmath@def{acos}{278}{73.85912}    \pgfmath@def{acos}{279}{73.79946}
\pgfmath@def{acos}{280}{73.73979}    \pgfmath@def{acos}{281}{73.68010}
\pgfmath@def{acos}{282}{73.62039}    \pgfmath@def{acos}{283}{73.56066}
\pgfmath@def{acos}{284}{73.50091}    \pgfmath@def{acos}{285}{73.44115}
\pgfmath@def{acos}{286}{73.38136}    \pgfmath@def{acos}{287}{73.32156}
\pgfmath@def{acos}{288}{73.26174}    \pgfmath@def{acos}{289}{73.20190}
\pgfmath@def{acos}{290}{73.14204}    \pgfmath@def{acos}{291}{73.08216}
\pgfmath@def{acos}{292}{73.02226}    \pgfmath@def{acos}{293}{72.96235}
\pgfmath@def{acos}{294}{72.90241}    \pgfmath@def{acos}{295}{72.84246}
\pgfmath@def{acos}{296}{72.78248}    \pgfmath@def{acos}{297}{72.72249}
\pgfmath@def{acos}{298}{72.66248}    \pgfmath@def{acos}{299}{72.60244}
\pgfmath@def{acos}{300}{72.54239}    \pgfmath@def{acos}{301}{72.48232}
\pgfmath@def{acos}{302}{72.42223}    \pgfmath@def{acos}{303}{72.36212}
\pgfmath@def{acos}{304}{72.30198}    \pgfmath@def{acos}{305}{72.24183}
\pgfmath@def{acos}{306}{72.18166}    \pgfmath@def{acos}{307}{72.12147}
\pgfmath@def{acos}{308}{72.06125}    \pgfmath@def{acos}{309}{72.00102}
\pgfmath@def{acos}{310}{71.94077}    \pgfmath@def{acos}{311}{71.88049}
\pgfmath@def{acos}{312}{71.82019}    \pgfmath@def{acos}{313}{71.75988}
\pgfmath@def{acos}{314}{71.69954}    \pgfmath@def{acos}{315}{71.63918}
\pgfmath@def{acos}{316}{71.57880}    \pgfmath@def{acos}{317}{71.51840}
\pgfmath@def{acos}{318}{71.45798}    \pgfmath@def{acos}{319}{71.39754}
\pgfmath@def{acos}{320}{71.33707}    \pgfmath@def{acos}{321}{71.27658}
\pgfmath@def{acos}{322}{71.21608}    \pgfmath@def{acos}{323}{71.15555}
\pgfmath@def{acos}{324}{71.09499}    \pgfmath@def{acos}{325}{71.03442}
\pgfmath@def{acos}{326}{70.97382}    \pgfmath@def{acos}{327}{70.91321}
\pgfmath@def{acos}{328}{70.85257}    \pgfmath@def{acos}{329}{70.79190}
\pgfmath@def{acos}{330}{70.73122}    \pgfmath@def{acos}{331}{70.67051}
\pgfmath@def{acos}{332}{70.60978}    \pgfmath@def{acos}{333}{70.54903}
\pgfmath@def{acos}{334}{70.48826}    \pgfmath@def{acos}{335}{70.42746}
\pgfmath@def{acos}{336}{70.36664}    \pgfmath@def{acos}{337}{70.30579}
\pgfmath@def{acos}{338}{70.24493}    \pgfmath@def{acos}{339}{70.18404}
\pgfmath@def{acos}{340}{70.12312}    \pgfmath@def{acos}{341}{70.06218}
\pgfmath@def{acos}{342}{70.00122}    \pgfmath@def{acos}{343}{69.94024}
\pgfmath@def{acos}{344}{69.87923}    \pgfmath@def{acos}{345}{69.81820}
\pgfmath@def{acos}{346}{69.75714}    \pgfmath@def{acos}{347}{69.69606}
\pgfmath@def{acos}{348}{69.63496}    \pgfmath@def{acos}{349}{69.57383}
\pgfmath@def{acos}{350}{69.51268}    \pgfmath@def{acos}{351}{69.45150}
\pgfmath@def{acos}{352}{69.39030}    \pgfmath@def{acos}{353}{69.32908}
\pgfmath@def{acos}{354}{69.26783}    \pgfmath@def{acos}{355}{69.20655}
\pgfmath@def{acos}{356}{69.14525}    \pgfmath@def{acos}{357}{69.08393}
\pgfmath@def{acos}{358}{69.02258}    \pgfmath@def{acos}{359}{68.96120}
\pgfmath@def{acos}{360}{68.89980}    \pgfmath@def{acos}{361}{68.83837}
\pgfmath@def{acos}{362}{68.77692}    \pgfmath@def{acos}{363}{68.71544}
\pgfmath@def{acos}{364}{68.65394}    \pgfmath@def{acos}{365}{68.59241}
\pgfmath@def{acos}{366}{68.53086}    \pgfmath@def{acos}{367}{68.46928}
\pgfmath@def{acos}{368}{68.40767}    \pgfmath@def{acos}{369}{68.34604}
\pgfmath@def{acos}{370}{68.28438}    \pgfmath@def{acos}{371}{68.22269}
\pgfmath@def{acos}{372}{68.16098}    \pgfmath@def{acos}{373}{68.09924}
\pgfmath@def{acos}{374}{68.03748}    \pgfmath@def{acos}{375}{67.97568}
\pgfmath@def{acos}{376}{67.91386}    \pgfmath@def{acos}{377}{67.85202}
\pgfmath@def{acos}{378}{67.79014}    \pgfmath@def{acos}{379}{67.72824}
\pgfmath@def{acos}{380}{67.66631}    \pgfmath@def{acos}{381}{67.60436}
\pgfmath@def{acos}{382}{67.54237}    \pgfmath@def{acos}{383}{67.48036}
\pgfmath@def{acos}{384}{67.41832}    \pgfmath@def{acos}{385}{67.35626}
\pgfmath@def{acos}{386}{67.29416}    \pgfmath@def{acos}{387}{67.23204}
\pgfmath@def{acos}{388}{67.16988}    \pgfmath@def{acos}{389}{67.10770}
\pgfmath@def{acos}{390}{67.04550}    \pgfmath@def{acos}{391}{66.98326}
\pgfmath@def{acos}{392}{66.92099}    \pgfmath@def{acos}{393}{66.85870}
\pgfmath@def{acos}{394}{66.79637}    \pgfmath@def{acos}{395}{66.73402}
\pgfmath@def{acos}{396}{66.67164}    \pgfmath@def{acos}{397}{66.60923}
\pgfmath@def{acos}{398}{66.54679}    \pgfmath@def{acos}{399}{66.48432}
\pgfmath@def{acos}{400}{66.42182}    \pgfmath@def{acos}{401}{66.35929}
\pgfmath@def{acos}{402}{66.29673}    \pgfmath@def{acos}{403}{66.23414}
\pgfmath@def{acos}{404}{66.17152}    \pgfmath@def{acos}{405}{66.10887}
\pgfmath@def{acos}{406}{66.04619}    \pgfmath@def{acos}{407}{65.98348}
\pgfmath@def{acos}{408}{65.92074}    \pgfmath@def{acos}{409}{65.85796}
\pgfmath@def{acos}{410}{65.79516}    \pgfmath@def{acos}{411}{65.73233}
\pgfmath@def{acos}{412}{65.66946}    \pgfmath@def{acos}{413}{65.60657}
\pgfmath@def{acos}{414}{65.54364}    \pgfmath@def{acos}{415}{65.48068}
\pgfmath@def{acos}{416}{65.41769}    \pgfmath@def{acos}{417}{65.35467}
\pgfmath@def{acos}{418}{65.29161}    \pgfmath@def{acos}{419}{65.22853}
\pgfmath@def{acos}{420}{65.16541}    \pgfmath@def{acos}{421}{65.10226}
\pgfmath@def{acos}{422}{65.03908}    \pgfmath@def{acos}{423}{64.97586}
\pgfmath@def{acos}{424}{64.91261}    \pgfmath@def{acos}{425}{64.84933}
\pgfmath@def{acos}{426}{64.78602}    \pgfmath@def{acos}{427}{64.72267}
\pgfmath@def{acos}{428}{64.65929}    \pgfmath@def{acos}{429}{64.59588}
\pgfmath@def{acos}{430}{64.53244}    \pgfmath@def{acos}{431}{64.46896}
\pgfmath@def{acos}{432}{64.40544}    \pgfmath@def{acos}{433}{64.34190}
\pgfmath@def{acos}{434}{64.27832}    \pgfmath@def{acos}{435}{64.21470}
\pgfmath@def{acos}{436}{64.15105}    \pgfmath@def{acos}{437}{64.08737}
\pgfmath@def{acos}{438}{64.02365}    \pgfmath@def{acos}{439}{63.95990}
\pgfmath@def{acos}{440}{63.89611}    \pgfmath@def{acos}{441}{63.83229}
\pgfmath@def{acos}{442}{63.76844}    \pgfmath@def{acos}{443}{63.70455}
\pgfmath@def{acos}{444}{63.64062}    \pgfmath@def{acos}{445}{63.57666}
\pgfmath@def{acos}{446}{63.51266}    \pgfmath@def{acos}{447}{63.44863}
\pgfmath@def{acos}{448}{63.38456}    \pgfmath@def{acos}{449}{63.32045}
\pgfmath@def{acos}{450}{63.25631}    \pgfmath@def{acos}{451}{63.19213}
\pgfmath@def{acos}{452}{63.12792}    \pgfmath@def{acos}{453}{63.06367}
\pgfmath@def{acos}{454}{62.99938}    \pgfmath@def{acos}{455}{62.93506}
\pgfmath@def{acos}{456}{62.87070}    \pgfmath@def{acos}{457}{62.80630}
\pgfmath@def{acos}{458}{62.74187}    \pgfmath@def{acos}{459}{62.67740}
\pgfmath@def{acos}{460}{62.61289}    \pgfmath@def{acos}{461}{62.54834}
\pgfmath@def{acos}{462}{62.48376}    \pgfmath@def{acos}{463}{62.41913}
\pgfmath@def{acos}{464}{62.35447}    \pgfmath@def{acos}{465}{62.28977}
\pgfmath@def{acos}{466}{62.22504}    \pgfmath@def{acos}{467}{62.16026}
\pgfmath@def{acos}{468}{62.09545}    \pgfmath@def{acos}{469}{62.03059}
\pgfmath@def{acos}{470}{61.96570}    \pgfmath@def{acos}{471}{61.90077}
\pgfmath@def{acos}{472}{61.83580}    \pgfmath@def{acos}{473}{61.77079}
\pgfmath@def{acos}{474}{61.70574}    \pgfmath@def{acos}{475}{61.64065}
\pgfmath@def{acos}{476}{61.57552}    \pgfmath@def{acos}{477}{61.51035}
\pgfmath@def{acos}{478}{61.44514}    \pgfmath@def{acos}{479}{61.37988}
\pgfmath@def{acos}{480}{61.31459}    \pgfmath@def{acos}{481}{61.24926}
\pgfmath@def{acos}{482}{61.18389}    \pgfmath@def{acos}{483}{61.11847}
\pgfmath@def{acos}{484}{61.05302}    \pgfmath@def{acos}{485}{60.98752}
\pgfmath@def{acos}{486}{60.92199}    \pgfmath@def{acos}{487}{60.85641}
\pgfmath@def{acos}{488}{60.79078}    \pgfmath@def{acos}{489}{60.72512}
\pgfmath@def{acos}{490}{60.65941}    \pgfmath@def{acos}{491}{60.59367}
\pgfmath@def{acos}{492}{60.52787}    \pgfmath@def{acos}{493}{60.46204}
\pgfmath@def{acos}{494}{60.39616}    \pgfmath@def{acos}{495}{60.33025}
\pgfmath@def{acos}{496}{60.26428}    \pgfmath@def{acos}{497}{60.19828}
\pgfmath@def{acos}{498}{60.13223}    \pgfmath@def{acos}{499}{60.06613}
\pgfmath@def{acos}{500}{60.00000}    \pgfmath@def{acos}{501}{59.93381}
\pgfmath@def{acos}{502}{59.86759}    \pgfmath@def{acos}{503}{59.80132}
\pgfmath@def{acos}{504}{59.73500}    \pgfmath@def{acos}{505}{59.66864}
\pgfmath@def{acos}{506}{59.60224}    \pgfmath@def{acos}{507}{59.53579}
\pgfmath@def{acos}{508}{59.46929}    \pgfmath@def{acos}{509}{59.40275}
\pgfmath@def{acos}{510}{59.33617}    \pgfmath@def{acos}{511}{59.26953}
\pgfmath@def{acos}{512}{59.20285}    \pgfmath@def{acos}{513}{59.13613}
\pgfmath@def{acos}{514}{59.06936}    \pgfmath@def{acos}{515}{59.00254}
\pgfmath@def{acos}{516}{58.93568}    \pgfmath@def{acos}{517}{58.86876}
\pgfmath@def{acos}{518}{58.80180}    \pgfmath@def{acos}{519}{58.73480}
\pgfmath@def{acos}{520}{58.66774}    \pgfmath@def{acos}{521}{58.60064}
\pgfmath@def{acos}{522}{58.53349}    \pgfmath@def{acos}{523}{58.46629}
\pgfmath@def{acos}{524}{58.39905}    \pgfmath@def{acos}{525}{58.33175}
\pgfmath@def{acos}{526}{58.26441}    \pgfmath@def{acos}{527}{58.19702}
\pgfmath@def{acos}{528}{58.12957}    \pgfmath@def{acos}{529}{58.06208}
\pgfmath@def{acos}{530}{57.99454}    \pgfmath@def{acos}{531}{57.92695}
\pgfmath@def{acos}{532}{57.85931}    \pgfmath@def{acos}{533}{57.79162}
\pgfmath@def{acos}{534}{57.72388}    \pgfmath@def{acos}{535}{57.65608}
\pgfmath@def{acos}{536}{57.58824}    \pgfmath@def{acos}{537}{57.52035}
\pgfmath@def{acos}{538}{57.45240}    \pgfmath@def{acos}{539}{57.38441}
\pgfmath@def{acos}{540}{57.31636}    \pgfmath@def{acos}{541}{57.24826}
\pgfmath@def{acos}{542}{57.18010}    \pgfmath@def{acos}{543}{57.11190}
\pgfmath@def{acos}{544}{57.04364}    \pgfmath@def{acos}{545}{56.97533}
\pgfmath@def{acos}{546}{56.90697}    \pgfmath@def{acos}{547}{56.83855}
\pgfmath@def{acos}{548}{56.77008}    \pgfmath@def{acos}{549}{56.70156}
\pgfmath@def{acos}{550}{56.63298}    \pgfmath@def{acos}{551}{56.56435}
\pgfmath@def{acos}{552}{56.49567}    \pgfmath@def{acos}{553}{56.42693}
\pgfmath@def{acos}{554}{56.35813}    \pgfmath@def{acos}{555}{56.28928}
\pgfmath@def{acos}{556}{56.22038}    \pgfmath@def{acos}{557}{56.15141}
\pgfmath@def{acos}{558}{56.08240}    \pgfmath@def{acos}{559}{56.01333}
\pgfmath@def{acos}{560}{55.94420}    \pgfmath@def{acos}{561}{55.87501}
\pgfmath@def{acos}{562}{55.80577}    \pgfmath@def{acos}{563}{55.73647}
\pgfmath@def{acos}{564}{55.66712}    \pgfmath@def{acos}{565}{55.59770}
\pgfmath@def{acos}{566}{55.52823}    \pgfmath@def{acos}{567}{55.45871}
\pgfmath@def{acos}{568}{55.38912}    \pgfmath@def{acos}{569}{55.31947}
\pgfmath@def{acos}{570}{55.24977}    \pgfmath@def{acos}{571}{55.18001}
\pgfmath@def{acos}{572}{55.11019}    \pgfmath@def{acos}{573}{55.04030}
\pgfmath@def{acos}{574}{54.97036}    \pgfmath@def{acos}{575}{54.90036}
\pgfmath@def{acos}{576}{54.83030}    \pgfmath@def{acos}{577}{54.76018}
\pgfmath@def{acos}{578}{54.69000}    \pgfmath@def{acos}{579}{54.61976}
\pgfmath@def{acos}{580}{54.54945}    \pgfmath@def{acos}{581}{54.47909}
\pgfmath@def{acos}{582}{54.40866}    \pgfmath@def{acos}{583}{54.33817}
\pgfmath@def{acos}{584}{54.26762}    \pgfmath@def{acos}{585}{54.19701}
\pgfmath@def{acos}{586}{54.12633}    \pgfmath@def{acos}{587}{54.05559}
\pgfmath@def{acos}{588}{53.98479}    \pgfmath@def{acos}{589}{53.91392}
\pgfmath@def{acos}{590}{53.84299}    \pgfmath@def{acos}{591}{53.77199}
\pgfmath@def{acos}{592}{53.70093}    \pgfmath@def{acos}{593}{53.62981}
\pgfmath@def{acos}{594}{53.55862}    \pgfmath@def{acos}{595}{53.48736}
\pgfmath@def{acos}{596}{53.41604}    \pgfmath@def{acos}{597}{53.34466}
\pgfmath@def{acos}{598}{53.27320}    \pgfmath@def{acos}{599}{53.20168}
\pgfmath@def{acos}{600}{53.13010}    \pgfmath@def{acos}{601}{53.05844}
\pgfmath@def{acos}{602}{52.98672}    \pgfmath@def{acos}{603}{52.91494}
\pgfmath@def{acos}{604}{52.84308}    \pgfmath@def{acos}{605}{52.77115}
\pgfmath@def{acos}{606}{52.69916}    \pgfmath@def{acos}{607}{52.62710}
\pgfmath@def{acos}{608}{52.55497}    \pgfmath@def{acos}{609}{52.48276}
\pgfmath@def{acos}{610}{52.41049}    \pgfmath@def{acos}{611}{52.33815}
\pgfmath@def{acos}{612}{52.26574}    \pgfmath@def{acos}{613}{52.19326}
\pgfmath@def{acos}{614}{52.12070}    \pgfmath@def{acos}{615}{52.04808}
\pgfmath@def{acos}{616}{51.97538}    \pgfmath@def{acos}{617}{51.90261}
\pgfmath@def{acos}{618}{51.82976}    \pgfmath@def{acos}{619}{51.75685}
\pgfmath@def{acos}{620}{51.68386}    \pgfmath@def{acos}{621}{51.61080}
\pgfmath@def{acos}{622}{51.53766}    \pgfmath@def{acos}{623}{51.46445}
\pgfmath@def{acos}{624}{51.39117}    \pgfmath@def{acos}{625}{51.31781}
\pgfmath@def{acos}{626}{51.24437}    \pgfmath@def{acos}{627}{51.17086}
\pgfmath@def{acos}{628}{51.09728}    \pgfmath@def{acos}{629}{51.02361}
\pgfmath@def{acos}{630}{50.94987}    \pgfmath@def{acos}{631}{50.87606}
\pgfmath@def{acos}{632}{50.80216}    \pgfmath@def{acos}{633}{50.72819}
\pgfmath@def{acos}{634}{50.65414}    \pgfmath@def{acos}{635}{50.58001}
\pgfmath@def{acos}{636}{50.50580}    \pgfmath@def{acos}{637}{50.43152}
\pgfmath@def{acos}{638}{50.35715}    \pgfmath@def{acos}{639}{50.28270}
\pgfmath@def{acos}{640}{50.20818}    \pgfmath@def{acos}{641}{50.13357}
\pgfmath@def{acos}{642}{50.05888}    \pgfmath@def{acos}{643}{49.98411}
\pgfmath@def{acos}{644}{49.90926}    \pgfmath@def{acos}{645}{49.83432}
\pgfmath@def{acos}{646}{49.75930}    \pgfmath@def{acos}{647}{49.68420}
\pgfmath@def{acos}{648}{49.60902}    \pgfmath@def{acos}{649}{49.53375}
\pgfmath@def{acos}{650}{49.45839}    \pgfmath@def{acos}{651}{49.38296}
\pgfmath@def{acos}{652}{49.30743}    \pgfmath@def{acos}{653}{49.23182}
\pgfmath@def{acos}{654}{49.15613}    \pgfmath@def{acos}{655}{49.08035}
\pgfmath@def{acos}{656}{49.00448}    \pgfmath@def{acos}{657}{48.92852}
\pgfmath@def{acos}{658}{48.85248}    \pgfmath@def{acos}{659}{48.77634}
\pgfmath@def{acos}{660}{48.70012}    \pgfmath@def{acos}{661}{48.62381}
\pgfmath@def{acos}{662}{48.54741}    \pgfmath@def{acos}{663}{48.47092}
\pgfmath@def{acos}{664}{48.39434}    \pgfmath@def{acos}{665}{48.31767}
\pgfmath@def{acos}{666}{48.24091}    \pgfmath@def{acos}{667}{48.16405}
\pgfmath@def{acos}{668}{48.08710}    \pgfmath@def{acos}{669}{48.01006}
\pgfmath@def{acos}{670}{47.93293}    \pgfmath@def{acos}{671}{47.85570}
\pgfmath@def{acos}{672}{47.77838}    \pgfmath@def{acos}{673}{47.70096}
\pgfmath@def{acos}{674}{47.62345}    \pgfmath@def{acos}{675}{47.54585}
\pgfmath@def{acos}{676}{47.46814}    \pgfmath@def{acos}{677}{47.39034}
\pgfmath@def{acos}{678}{47.31244}    \pgfmath@def{acos}{679}{47.23445}
\pgfmath@def{acos}{680}{47.15635}    \pgfmath@def{acos}{681}{47.07816}
\pgfmath@def{acos}{682}{46.99987}    \pgfmath@def{acos}{683}{46.92147}
\pgfmath@def{acos}{684}{46.84298}    \pgfmath@def{acos}{685}{46.76439}
\pgfmath@def{acos}{686}{46.68569}    \pgfmath@def{acos}{687}{46.60690}
\pgfmath@def{acos}{688}{46.52800}    \pgfmath@def{acos}{689}{46.44899}
\pgfmath@def{acos}{690}{46.36989}    \pgfmath@def{acos}{691}{46.29068}
\pgfmath@def{acos}{692}{46.21136}    \pgfmath@def{acos}{693}{46.13194}
\pgfmath@def{acos}{694}{46.05241}    \pgfmath@def{acos}{695}{45.97278}
\pgfmath@def{acos}{696}{45.89304}    \pgfmath@def{acos}{697}{45.81319}
\pgfmath@def{acos}{698}{45.73323}    \pgfmath@def{acos}{699}{45.65317}
\pgfmath@def{acos}{700}{45.57299}    \pgfmath@def{acos}{701}{45.49271}
\pgfmath@def{acos}{702}{45.41231}    \pgfmath@def{acos}{703}{45.33180}
\pgfmath@def{acos}{704}{45.25118}    \pgfmath@def{acos}{705}{45.17045}
\pgfmath@def{acos}{706}{45.08961}    \pgfmath@def{acos}{707}{45.00865}
\pgfmath@def{acos}{708}{44.92757}    \pgfmath@def{acos}{709}{44.84638}
\pgfmath@def{acos}{710}{44.76508}    \pgfmath@def{acos}{711}{44.68366}
\pgfmath@def{acos}{712}{44.60212}    \pgfmath@def{acos}{713}{44.52046}
\pgfmath@def{acos}{714}{44.43869}    \pgfmath@def{acos}{715}{44.35680}
\pgfmath@def{acos}{716}{44.27478}    \pgfmath@def{acos}{717}{44.19265}
\pgfmath@def{acos}{718}{44.11039}    \pgfmath@def{acos}{719}{44.02802}
\pgfmath@def{acos}{720}{43.94552}    \pgfmath@def{acos}{721}{43.86289}
\pgfmath@def{acos}{722}{43.78014}    \pgfmath@def{acos}{723}{43.69727}
\pgfmath@def{acos}{724}{43.61427}    \pgfmath@def{acos}{725}{43.53115}
\pgfmath@def{acos}{726}{43.44790}    \pgfmath@def{acos}{727}{43.36452}
\pgfmath@def{acos}{728}{43.28101}    \pgfmath@def{acos}{729}{43.19737}
\pgfmath@def{acos}{730}{43.11360}    \pgfmath@def{acos}{731}{43.02970}
\pgfmath@def{acos}{732}{42.94567}    \pgfmath@def{acos}{733}{42.86151}
\pgfmath@def{acos}{734}{42.77721}    \pgfmath@def{acos}{735}{42.69278}
\pgfmath@def{acos}{736}{42.60821}    \pgfmath@def{acos}{737}{42.52351}
\pgfmath@def{acos}{738}{42.43867}    \pgfmath@def{acos}{739}{42.35370}
\pgfmath@def{acos}{740}{42.26858}    \pgfmath@def{acos}{741}{42.18333}
\pgfmath@def{acos}{742}{42.09793}    \pgfmath@def{acos}{743}{42.01240}
\pgfmath@def{acos}{744}{41.92672}    \pgfmath@def{acos}{745}{41.84090}
\pgfmath@def{acos}{746}{41.75493}    \pgfmath@def{acos}{747}{41.66882}
\pgfmath@def{acos}{748}{41.58257}    \pgfmath@def{acos}{749}{41.49617}
\pgfmath@def{acos}{750}{41.40962}    \pgfmath@def{acos}{751}{41.32292}
\pgfmath@def{acos}{752}{41.23607}    \pgfmath@def{acos}{753}{41.14908}
\pgfmath@def{acos}{754}{41.06193}    \pgfmath@def{acos}{755}{40.97463}
\pgfmath@def{acos}{756}{40.88717}    \pgfmath@def{acos}{757}{40.79956}
\pgfmath@def{acos}{758}{40.71180}    \pgfmath@def{acos}{759}{40.62388}
\pgfmath@def{acos}{760}{40.53580}    \pgfmath@def{acos}{761}{40.44756}
\pgfmath@def{acos}{762}{40.35916}    \pgfmath@def{acos}{763}{40.27061}
\pgfmath@def{acos}{764}{40.18189}    \pgfmath@def{acos}{765}{40.09300}
\pgfmath@def{acos}{766}{40.00396}    \pgfmath@def{acos}{767}{39.91474}
\pgfmath@def{acos}{768}{39.82537}    \pgfmath@def{acos}{769}{39.73582}
\pgfmath@def{acos}{770}{39.64611}    \pgfmath@def{acos}{771}{39.55622}
\pgfmath@def{acos}{772}{39.46617}    \pgfmath@def{acos}{773}{39.37594}
\pgfmath@def{acos}{774}{39.28554}    \pgfmath@def{acos}{775}{39.19496}
\pgfmath@def{acos}{776}{39.10421}    \pgfmath@def{acos}{777}{39.01328}
\pgfmath@def{acos}{778}{38.92218}    \pgfmath@def{acos}{779}{38.83089}
\pgfmath@def{acos}{780}{38.73942}    \pgfmath@def{acos}{781}{38.64777}
\pgfmath@def{acos}{782}{38.55594}    \pgfmath@def{acos}{783}{38.46392}
\pgfmath@def{acos}{784}{38.37171}    \pgfmath@def{acos}{785}{38.27932}
\pgfmath@def{acos}{786}{38.18673}    \pgfmath@def{acos}{787}{38.09396}
\pgfmath@def{acos}{788}{38.00100}    \pgfmath@def{acos}{789}{37.90784}
\pgfmath@def{acos}{790}{37.81448}    \pgfmath@def{acos}{791}{37.72093}
\pgfmath@def{acos}{792}{37.62719}    \pgfmath@def{acos}{793}{37.53324}
\pgfmath@def{acos}{794}{37.43909}    \pgfmath@def{acos}{795}{37.34474}
\pgfmath@def{acos}{796}{37.25019}    \pgfmath@def{acos}{797}{37.15542}
\pgfmath@def{acos}{798}{37.06046}    \pgfmath@def{acos}{799}{36.96528}
\pgfmath@def{acos}{800}{36.86989}    \pgfmath@def{acos}{801}{36.77429}
\pgfmath@def{acos}{802}{36.67848}    \pgfmath@def{acos}{803}{36.58245}
\pgfmath@def{acos}{804}{36.48621}    \pgfmath@def{acos}{805}{36.38974}
\pgfmath@def{acos}{806}{36.29305}    \pgfmath@def{acos}{807}{36.19615}
\pgfmath@def{acos}{808}{36.09901}    \pgfmath@def{acos}{809}{36.00165}
\pgfmath@def{acos}{810}{35.90406}    \pgfmath@def{acos}{811}{35.80625}
\pgfmath@def{acos}{812}{35.70820}    \pgfmath@def{acos}{813}{35.60991}
\pgfmath@def{acos}{814}{35.51139}    \pgfmath@def{acos}{815}{35.41263}
\pgfmath@def{acos}{816}{35.31364}    \pgfmath@def{acos}{817}{35.21440}
\pgfmath@def{acos}{818}{35.11491}    \pgfmath@def{acos}{819}{35.01518}
\pgfmath@def{acos}{820}{34.91520}    \pgfmath@def{acos}{821}{34.81497}
\pgfmath@def{acos}{822}{34.71449}    \pgfmath@def{acos}{823}{34.61375}
\pgfmath@def{acos}{824}{34.51276}    \pgfmath@def{acos}{825}{34.41150}
\pgfmath@def{acos}{826}{34.30999}    \pgfmath@def{acos}{827}{34.20821}
\pgfmath@def{acos}{828}{34.10616}    \pgfmath@def{acos}{829}{34.00385}
\pgfmath@def{acos}{830}{33.90126}    \pgfmath@def{acos}{831}{33.79840}
\pgfmath@def{acos}{832}{33.69526}    \pgfmath@def{acos}{833}{33.59184}
\pgfmath@def{acos}{834}{33.48814}    \pgfmath@def{acos}{835}{33.38416}
\pgfmath@def{acos}{836}{33.27989}    \pgfmath@def{acos}{837}{33.17533}
\pgfmath@def{acos}{838}{33.07047}    \pgfmath@def{acos}{839}{32.96532}
\pgfmath@def{acos}{840}{32.85988}    \pgfmath@def{acos}{841}{32.75413}
\pgfmath@def{acos}{842}{32.64807}    \pgfmath@def{acos}{843}{32.54171}
\pgfmath@def{acos}{844}{32.43504}    \pgfmath@def{acos}{845}{32.32806}
\pgfmath@def{acos}{846}{32.22076}    \pgfmath@def{acos}{847}{32.11314}
\pgfmath@def{acos}{848}{32.00520}    \pgfmath@def{acos}{849}{31.89693}
\pgfmath@def{acos}{850}{31.78833}    \pgfmath@def{acos}{851}{31.67939}
\pgfmath@def{acos}{852}{31.57012}    \pgfmath@def{acos}{853}{31.46051}
\pgfmath@def{acos}{854}{31.35056}    \pgfmath@def{acos}{855}{31.24026}
\pgfmath@def{acos}{856}{31.12961}    \pgfmath@def{acos}{857}{31.01860}
\pgfmath@def{acos}{858}{30.90724}    \pgfmath@def{acos}{859}{30.79551}
\pgfmath@def{acos}{860}{30.68341}    \pgfmath@def{acos}{861}{30.57095}
\pgfmath@def{acos}{862}{30.45811}    \pgfmath@def{acos}{863}{30.34489}
\pgfmath@def{acos}{864}{30.23128}    \pgfmath@def{acos}{865}{30.11729}
\pgfmath@def{acos}{866}{30.00291}    \pgfmath@def{acos}{867}{29.88813}
\pgfmath@def{acos}{868}{29.77294}    \pgfmath@def{acos}{869}{29.65736}
\pgfmath@def{acos}{870}{29.54136}    \pgfmath@def{acos}{871}{29.42494}
\pgfmath@def{acos}{872}{29.30810}    \pgfmath@def{acos}{873}{29.19084}
\pgfmath@def{acos}{874}{29.07315}    \pgfmath@def{acos}{875}{28.95502}
\pgfmath@def{acos}{876}{28.83645}    \pgfmath@def{acos}{877}{28.71743}
\pgfmath@def{acos}{878}{28.59796}    \pgfmath@def{acos}{879}{28.47803}
\pgfmath@def{acos}{880}{28.35763}    \pgfmath@def{acos}{881}{28.23677}
\pgfmath@def{acos}{882}{28.11542}    \pgfmath@def{acos}{883}{27.99360}
\pgfmath@def{acos}{884}{27.87128}    \pgfmath@def{acos}{885}{27.74847}
\pgfmath@def{acos}{886}{27.62516}    \pgfmath@def{acos}{887}{27.50134}
\pgfmath@def{acos}{888}{27.37700}    \pgfmath@def{acos}{889}{27.25214}
\pgfmath@def{acos}{890}{27.12675}    \pgfmath@def{acos}{891}{27.00082}
\pgfmath@def{acos}{892}{26.87434}    \pgfmath@def{acos}{893}{26.74731}
\pgfmath@def{acos}{894}{26.61973}    \pgfmath@def{acos}{895}{26.49157}
\pgfmath@def{acos}{896}{26.36283}    \pgfmath@def{acos}{897}{26.23351}
\pgfmath@def{acos}{898}{26.10359}    \pgfmath@def{acos}{899}{25.97306}
\pgfmath@def{acos}{900}{25.84193}    \pgfmath@def{acos}{901}{25.71017}
\pgfmath@def{acos}{902}{25.57778}    \pgfmath@def{acos}{903}{25.44475}
\pgfmath@def{acos}{904}{25.31106}    \pgfmath@def{acos}{905}{25.17671}
\pgfmath@def{acos}{906}{25.04169}    \pgfmath@def{acos}{907}{24.90598}
\pgfmath@def{acos}{908}{24.76958}    \pgfmath@def{acos}{909}{24.63247}
\pgfmath@def{acos}{910}{24.49464}    \pgfmath@def{acos}{911}{24.35608}
\pgfmath@def{acos}{912}{24.21678}    \pgfmath@def{acos}{913}{24.07672}
\pgfmath@def{acos}{914}{23.93588}    \pgfmath@def{acos}{915}{23.79427}
\pgfmath@def{acos}{916}{23.65185}    \pgfmath@def{acos}{917}{23.50863}
\pgfmath@def{acos}{918}{23.36457}    \pgfmath@def{acos}{919}{23.21967}
\pgfmath@def{acos}{920}{23.07391}    \pgfmath@def{acos}{921}{22.92728}
\pgfmath@def{acos}{922}{22.77975}    \pgfmath@def{acos}{923}{22.63132}
\pgfmath@def{acos}{924}{22.48195}    \pgfmath@def{acos}{925}{22.33164}
\pgfmath@def{acos}{926}{22.18036}    \pgfmath@def{acos}{927}{22.02810}
\pgfmath@def{acos}{928}{21.87483}    \pgfmath@def{acos}{929}{21.72053}
\pgfmath@def{acos}{930}{21.56518}    \pgfmath@def{acos}{931}{21.40876}
\pgfmath@def{acos}{932}{21.25124}    \pgfmath@def{acos}{933}{21.09260}
\pgfmath@def{acos}{934}{20.93281}    \pgfmath@def{acos}{935}{20.77185}
\pgfmath@def{acos}{936}{20.60969}    \pgfmath@def{acos}{937}{20.44630}
\pgfmath@def{acos}{938}{20.28165}    \pgfmath@def{acos}{939}{20.11570}
\pgfmath@def{acos}{940}{19.94844}    \pgfmath@def{acos}{941}{19.77982}
\pgfmath@def{acos}{942}{19.60981}    \pgfmath@def{acos}{943}{19.43837}
\pgfmath@def{acos}{944}{19.26546}    \pgfmath@def{acos}{945}{19.09105}
\pgfmath@def{acos}{946}{18.91509}    \pgfmath@def{acos}{947}{18.73754}
\pgfmath@def{acos}{948}{18.55835}    \pgfmath@def{acos}{949}{18.37748}
\pgfmath@def{acos}{950}{18.19487}    \pgfmath@def{acos}{951}{18.01047}
\pgfmath@def{acos}{952}{17.82423}    \pgfmath@def{acos}{953}{17.63609}
\pgfmath@def{acos}{954}{17.44598}    \pgfmath@def{acos}{955}{17.25385}
\pgfmath@def{acos}{956}{17.05962}    \pgfmath@def{acos}{957}{16.86322}
\pgfmath@def{acos}{958}{16.66457}    \pgfmath@def{acos}{959}{16.46359}
\pgfmath@def{acos}{960}{16.26020}    \pgfmath@def{acos}{961}{16.05430}
\pgfmath@def{acos}{962}{15.84580}    \pgfmath@def{acos}{963}{15.63459}
\pgfmath@def{acos}{964}{15.42057}    \pgfmath@def{acos}{965}{15.20360}
\pgfmath@def{acos}{966}{14.98357}    \pgfmath@def{acos}{967}{14.76033}
\pgfmath@def{acos}{968}{14.53374}    \pgfmath@def{acos}{969}{14.30364}
\pgfmath@def{acos}{970}{14.06986}    \pgfmath@def{acos}{971}{13.83221}
\pgfmath@def{acos}{972}{13.59049}    \pgfmath@def{acos}{973}{13.34447}
\pgfmath@def{acos}{974}{13.09392}    \pgfmath@def{acos}{975}{12.83856}
\pgfmath@def{acos}{976}{12.57811}    \pgfmath@def{acos}{977}{12.31225}
\pgfmath@def{acos}{978}{12.04060}    \pgfmath@def{acos}{979}{11.76278}
\pgfmath@def{acos}{980}{11.47834}    \pgfmath@def{acos}{981}{11.18676}
\pgfmath@def{acos}{982}{10.88748}    \pgfmath@def{acos}{983}{10.57984}
\pgfmath@def{acos}{984}{10.26309}    \pgfmath@def{acos}{985}{9.93636}
\pgfmath@def{acos}{986}{9.59863}    \pgfmath@def{acos}{987}{9.24870}
\pgfmath@def{acos}{988}{8.88512}    \pgfmath@def{acos}{989}{8.50614}
\pgfmath@def{acos}{990}{8.10961}    \pgfmath@def{acos}{991}{7.69281}
\pgfmath@def{acos}{992}{7.25224}    \pgfmath@def{acos}{993}{6.78328}
\pgfmath@def{acos}{994}{6.27958}    \pgfmath@def{acos}{995}{5.73196}
\pgfmath@def{acos}{996}{5.12640}    \pgfmath@def{acos}{997}{4.43922}
\pgfmath@def{acos}{998}{3.62430}    \pgfmath@def{acos}{999}{2.56255}
\pgfmath@def{acos}{1000}{0.00000}



==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathode.code.tex ====
\def\pgfmathode@stopadd{\pgfmathode@stopadd}

\def\pgfmathode@addindextofunc[#1]#2{%
  \begingroup
    \gdef\pgfmathode@func{}%
    \pgfmathode@addindextofunc@i[#1]#2\pgfmathode@stopadd}

\def\pgfmathode@addindextofunc@i[#1]#2#3{%
    \ifx#1#2
      \expandafter\gdef\expandafter\pgfmathode@func\expandafter{%
        \pgfmathode@func #2[\pgfmathode@timeindex]}%
    \else
      \expandafter\gdef\expandafter\pgfmathode@func\expandafter{%
        \pgfmathode@func #2}%
    \fi
    \ifx#3\pgfmathode@stopadd
      \expandafter\gdef\expandafter\pgfmathode@func\expandafter{%
        \expandafter{\pgfmathode@func}}%
      \let\next\endgroup
    \else
      \def\next{\pgfmathode@addindextofunc@i[#1]#3}%
    \fi
    \next}



\def\pgfmathode@generic@init@RK{%
  \begingroup
    \gdef#1{{#3}}%
    \pgfmathode@addindextofunc[#1]#2%
    \pgfmathsetmacro\pgfmathode@Sol@t{#1[0][0]}%
    \pgfmathsetmacro\pgfmathode@Deltat{(#4-\pgfmathode@Sol@t)/#5}%
    \pgfmathsetmacro\pgfmathode@dimfunc{dim(#3)-1}%
    \pgfmathsetmacro\pgfmathode@numstep{#5-1}}

\def\pgfmathodeRKI#1#2#3#4#5{%
    \pgfmathode@generic@init@RK
    \foreach \pgfmathode@timeindex in {0,...,\pgfmathode@numstep} {%
      \message{Step \pgfmathode@timeindex...}%
      \foreach \pgfmathode@funcindex in {1,...,\pgfmathode@dimfunc} {%
        \pgfmathparse{%
          \pgfmathode@Deltat*(\pgfmathode@func[\pgfmathode@funcindex-1])+
          #1[\pgfmathode@timeindex][\pgfmathode@funcindex]}%
        \expandafter\xdef\csname pgfmathode@Sol@\pgfmathode@funcindex
          \endcsname{\pgfmathresult}%
      }
      \pgfmathparse{\pgfmathode@Sol@t+\pgfmathode@Deltat}%
      \xdef\pgfmathode@Sol@t{\pgfmathresult}%
      \xdef\pgfmathode@temp{}%
      \foreach \pgfmathode@funcindex in {1,...,\pgfmathode@dimfunc} {%
        \ifx\pgfmathode@temp\pgfutil@empty
          \xdef\pgfmathode@temp{%
            \csname pgfmathode@Sol@\pgfmathode@funcindex\endcsname}%
        \else
          \xdef\pgfmathode@temp{%
            \pgfmathode@temp,
            \csname pgfmathode@Sol@\pgfmathode@funcindex\endcsname}%
        \fi}
      \xdef#1{%
        {\expandafter\pgfutil@firstofone#1,%
          {\pgfmathode@Sol@t,\pgfmathode@temp}}}%
    }
  \endgroup}

\def\pgfmathodeRKIV#1#2#3#4#5{%
    \pgfmathode@generic@init@RK
    \foreach \pgfmathode@timeindex in {0,...,\pgfmathode@numstep} {%
      \message{Step \pgfmathode@timeindex...}%
      \foreach \pgfmathode@funcindex in {1,...,\pgfmathode@dimfunc} {%
        \pgfmathparse{%
          \pgfmathode@Deltat*(\pgfmathode@func[\pgfmathode@funcindex-1])+
          #1[\pgfmathode@timeindex][\pgfmathode@funcindex]}%
        \expandafter\xdef\csname pgfmathode@RKIV@1@\pgfmathode@funcindex
          \endcsname{\pgfmathresult}%
        \pgfmathparse{%
          \pgfmathode@Deltat*(\pgfmathode@func[\pgfmathode@funcindex-1])+
          #1[\pgfmathode@timeindex][\pgfmathode@funcindex]}%
        \expandafter\xdef\csname pgfmathode@RKIV@1@\pgfmathode@funcindex
          \endcsname{\pgfmathresult}%
      }
      \pgfmathparse{\pgfmathode@Sol@t+\pgfmathode@Deltat}%
      \xdef\pgfmathode@Sol@t{\pgfmathresult}%
      \xdef\pgfmathode@temp{}%
      \foreach \pgfmathode@funcindex in {1,...,\pgfmathode@dimfunc} {%
        \ifx\pgfmathode@temp\pgfutil@empty
          \xdef\pgfmathode@temp{%
            \csname pgfmathode@Sol@\pgfmathode@funcindex\endcsname}%
        \else
          \xdef\pgfmathode@temp{%
            \pgfmathode@temp,
            \csname pgfmathode@Sol@\pgfmathode@funcindex\endcsname}%
        \fi}
      \xdef#1{%
        {\expandafter\pgfutil@firstofone#1,%
          {\pgfmathode@Sol@t,\pgfmathode@temp}}}%
    }
  \endgroup}


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathode.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathparser.code.tex ====

\newdimen\pgfmath@dimen
\newcount\pgfmath@count
\newbox\pgfmath@box
\newtoks\pgfmath@toks

\newif\ifpgfmath@quickparse
\newif\ifpgfmathfloat
\newif\ifpgfmathunitsdeclared
\newif\ifpgfmathmathunitsdeclared
\newif\ifpgfmathignoreunitscale

\let\pgfmath@protected@edef=\edef
\ifcsname protected@edef\endcsname
  \let\pgfmath@protected@edef=\protected@edef
\fi

\def\pgfmathprint#1{\pgfmathparse{#1}\pgfmathresult}

\def\pgfmathparse{%
  \begingroup
    \pgfmath@catcodes
    \pgfmath@quickparsefalse
    \ifpgfmathfloat
      \let\pgfmath@parse@next=\pgfmathfloatparsenumber
    \else
      \let\pgfmath@parse@next=\pgfmathparse@
    \fi
    \pgfmath@parse@next}

\begingroup
  \lccode`\~=`\"
  \lowercase{\endgroup
    \def\pgfmath@catcodes{%
      \catcode`\==12 %
      \catcode`\,=12 %
      \catcode`\|=12 %
      \catcode`\&=12 %
      \let~\pgfmath@char@quote
    }}%

\def\pgfmathqparse{%
  \begingroup
    \pgfmath@catcodes
    \pgfmath@quickparsetrue
    \pgfmathparse@}

\def\pgfmathparse@#1{%
    \global\pgfmathunitsdeclaredfalse
    \global\pgfmathmathunitsdeclaredfalse
    \pgfmath@protected@edef\pgfmath@expression{#1}%
    \expandafter\pgfmathparse@trynumber@loop\pgfmath@expression\pgfmath@parse@stop
}

\def\pgfmath@parse@stop{\pgfmath@parse@stop}%

\def\pgfmathparse@trynumber@token{numeric}
\begingroup
\def\\{\global\let\pgf@let@space@token= } \\ %
\endgroup

\def\pgfmathparse@trynumber@loop{%
    \futurelet\pgfmath@token@let\pgfmathparse@trynumber@loop@
}%
\def\pgfmathparse@trynumber@loop@#1{%
    \ifx\pgfmath@token@let\pgf@let@space@token
        \def\pgfmath@parse@next{\pgfmathparse@@#1}%
    \else
        \ifx\pgfmath@token@let\bgroup%
            \let\pgfmath@parse@next=\pgfmathparse@@
        \else
            \ifx\pgfmath@token@let\pgfmath@parse@stop
                \let\pgfmath@parse@next=\pgfmathparse@expression@is@number
            \else
                \expandafter\ifx\csname pgfmath@token@\pgfmathparse@trynumber@token @\string#1\endcsname\relax%
                    \let\pgfmath@parse@next=\pgfmathparse@@
                \else
                    \let\pgfmath@parse@next=\pgfmathparse@trynumber@loop
                \fi
            \fi
        \fi
    \fi
    \pgfmath@parse@next
}%

\def\pgfmathparse@expression@is@number{%
    \let\pgfmathresult=\pgfmath@expression
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup
  \ignorespaces
}%
\def\pgfmathparse@@#1\pgfmath@parse@stop{%
    \let\real=\pgfmath@calc@real
    \let\minof=\pgfmath@calc@minof
    \let\maxof=\pgfmath@calc@maxof
    \let\ratio=\pgfmath@calc@ratio
    \let\widthof=\pgfmath@calc@widthof
    \let\heightof=\pgfmath@calc@heightof
    \let\depthof=\pgfmath@calc@depthof
    \pgfmath@selectfont
    \pgfmath@stack@operation={{}{}{}}%
    \pgfmath@stack@operand={{}{}{}}%
    \let\pgfmath@stack@operation@top=\pgfmath@stack@empty
    \let\pgfmath@stack@operand@top=\pgfmath@stack@empty
    \expandafter\pgfmath@bgroup@strip\expandafter{\pgfmath@expression}%
    \expandafter\pgfmath@parse@@operand\pgfmath@bgroup@stripped @@@@\pgfmath@parse@stop%
}

\def\pgfmath@parse@end#1\pgfmath@parse@stop{%
    \pgfmathpostparse
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup
  \ignorespaces}

\let\pgfmathpostparse=\relax

\def\pgfmathscaleresult{%
  \ifpgfmathunitsdeclared
  \else
    \ifpgfmathignoreunitscale
    \else
       \afterassignment\pgfmath@gobbletilpgfmath@%
      \pgfmath@x\pgfmathresultunitscale pt\relax\pgfmath@%
      \expandafter\pgfmath@x\pgfmathresult\pgfmath@x%
      \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
    \fi
  \fi
}

\def\pgfmathsetresultunitscale#1{\def\pgfmathresultunitscale{#1}}

\def\pgfmathresultunitscale{1}


\def\pgfmathifexpression#1#2#3{%
    \pgfmathparse{#1}%
    \pgfmath@iftrue{#2}{#3}%
}%
\def\pgfmath@iftrue{%
    \ifdim\pgfmathresult pt=1.0pt %
        \let\pgfmath@next=\pgfutil@firstoftwo
    \else
        \let\pgfmath@next=\pgfutil@secondoftwo
    \fi
    \pgfmath@next%
}%

\def\pgfmath@calc@real#1{#1}
\def\pgfmath@calc@minof#1#2{min(#1,#2)}
\def\pgfmath@calc@maxof#1#2{max(#1,#2)}
\def\pgfmath@calc@ratio#1#2{#1/#2}
\def\pgfmath@calc@widthof#1{width("#1")}
\def\pgfmath@calc@heightof#1{height("#1")}
\def\pgfmath@calc@depthof#1{depth("#1")}

\def\pgfmath@bgroup{\string\pgfmath@bgroup}
\def\pgfmath@egroup{\string\pgfmath@egroup}
\def\pgfmath@egroup@token{\pgfmath@egroup}

\def\pgfmath@text@@{@}
\def\pgfmath@text@operator{operator}
\def\pgfmath@text@function{function}
\def\pgfmath@dots{...}
\def\pgfmath@char@zero{0}
\def\pgfmath@char@quote{"}
\def\pgfmath@char@exclamation{!}
\def\pgfmath@char@plus{+}
\def\pgfmath@char@minus{-}
\def\pgfmath@char@period{.}
\def\pgfmath@char@leftangle{<}
\def\pgfmath@char@leftbracket{[}
\pgfmath@toks={#}
\edef\pgfmath@char@hash{\the\pgfmath@toks}

\def\pgfmath@tokens@make#1#2{%
  \def\pgfmath@prefix{#1}%
  \expandafter\pgfmath@tokens@@make#2{}}

\def\pgfmath@tokens@@make#1{%
  \def\pgfmath@token{#1}%
  \ifx\pgfmath@token\pgfmath@empty
  \else
    \pgfmath@namedef{pgfmath@token@\pgfmath@prefix @\string#1}{#1}%
    \expandafter\pgfmath@tokens@@make%
  \fi}

\pgfmath@tokens@make{box}{\wd\ht\dp}
\ifx\dimexpr\@undefined\else %
  \pgfmath@tokens@make{dimexpr}{\dimexpr\glueexpr}
\fi
\pgfmath@tokens@make{unit}{{bp}{cc}{cm}{dd}{em}{ex}{in}{mm}{pc}{pt}{sp}}
\ifx\pdftexversion\@undefined\else %
  \pgfmath@tokens@make{unit}{{nc}{nd}{px}}
\fi
\ifx\directlua\@undefined\else %
  \pgfmath@tokens@make{unit}{{nc}{nd}{px}}
\fi
\ifx\kanjiskip\@undefined\else %
  \pgfmath@tokens@make{unit}{{H}{Q}{zh}{zw}}
\fi
\pgfmath@tokens@make{mathunit}{{mu}}
\pgfmath@tokens@make{numeric}{.0123456789}
\pgfmath@tokens@make{number}{0123456789}
\pgfmath@tokens@make{functional}{_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ}
\pgfmath@tokens@make{exponent}{eE}
\pgfmath@tokens@make{group}{{()}{[]}{\pgfmath@bgroup\pgfmath@egroup}}
\pgfmath@tokens@make{specials}{@)]\pgfmath@egroup}
\pgfmath@tokens@make{hexadecimal}{0123456789ABCDEFabcdef}
\pgfmath@tokens@make{octal}{01234567}
\pgfmath@tokens@make{binary}{01}

\pgfmath@namedef{pgfmath@base@0x}{16}
\pgfmath@namedef{pgfmath@base@0X}{16}
\pgfmath@namedef{pgfmath@base@0b}{2}
\pgfmath@namedef{pgfmath@base@0B}{2}

\newif\ifpgfmath@dimen@
\def\pgfmath@dimen@#1{%
  \begingroup
    \afterassignment\pgfmath@dimen@@%
    #1=0.0pt\relax\pgfmath@}
\def\pgfmath@dimen@@#1#2\pgfmath@{%
  \endgroup
  \ifx#1.%
    \pgfmath@dimen@false
  \else
    \pgfmath@dimen@true
  \fi}

\def\pgfmath@parse@ifbgroup#1#2{%
  \let\pgfmath@parse@bgroup@after=#1%
  \let\pgfmath@parse@nobgroup@after=#2%
  \futurelet\pgfmath@token@let%
  \pgfmath@parse@@ifbgroup}

\def\pgfmath@parse@@ifbgroup{%
  \ifx\pgfmath@token@let\bgroup
    \let\pgfmath@parse@next=\pgfmath@parse@@@ifbgroup
  \else
    \ifx\pgfmath@token@let\pgfmath@sptoken
      \let\pgfmath@parse@next=\pgfmath@parse@@@@ifbgroup
    \else
      \let\pgfmath@parse@next=\pgfmath@parse@nobgroup@after
    \fi
  \fi
  \pgfmath@parse@next}

\newif\ifpgfmath@octalparsing
\pgfmath@octalparsingtrue

\def\pgfmath@parse@@@ifbgroup#1{%
  \pgfmath@parse@bgroup@after\pgfmath@bgroup#1\pgfmath@egroup}

{
\def\:{\pgfmath@parse@@@@ifbgroup}
\expandafter\gdef\: {\futurelet\pgfmath@token@let\pgfmath@parse@@ifbgroup}
}

\def\pgfmath@parse@operand{%
  \expandafter\pgfmath@parse@@operand\pgfmath@token@next}

\def\pgfmath@parse@@operand{%
  \pgfmath@parse@ifbgroup{\pgfmath@parse@@operand}{\pgfmath@parse@@operand@}}

\def\pgfmath@parse@@operand@#1{%
  \def\pgfmath@token{#1}%
  \ifx\pgfmath@token\pgfmath@char@plus
    \let\pgfmath@parse@next=\pgfmath@parse@@operand%
  \else
    \ifx\pgfmath@token\pgfmath@char@minus
      \pgfmath@stack@push@operation{neg}%
      \let\pgfmath@parse@next=\pgfmath@parse@@operand
    \else
      \expandafter\ifx\csname pgfmath@operation@\expandafter\string\pgfmath@token @prefix\endcsname\pgfmath@token
        \let\pgfmath@parse@next=\pgfmath@parse@prefix@operator
      \else
        \ifpgfmath@quickparse
          \let\pgfmath@parse@next=\pgfmath@qparse@operand
        \else
          \let\pgfmath@number=\pgfmath@empty
          \expandafter\ifx\csname pgfmath@token@functional@\string#1\endcsname\relax%
            \let\pgfmath@base=\pgfmath@empty%
            \let\pgfmath@token@next=\pgfmath@token%
            \if#10%
              \ifpgfmath@octalparsing%
                \def\pgfmath@base{8}%
              \fi%
            \fi%
            \let\pgfmath@parse@next=\pgfmath@parse@number%
          \else%
            \let\pgfmath@function=\pgfmath@token%
            \let\pgfmath@parse@next=\pgfmath@parse@function%
          \fi%
        \fi%
      \fi%
    \fi%
  \fi%
  \pgfmath@parse@next%
}

\def\pgfmath@parse@prefix@operator{%
  \ifx\pgfmath@token\pgfmath@char@quote%
    \let\pgfmath@parse@next=\pgfmath@parse@operand@quote%
  \else%
    \ifx\pgfmath@token\pgfmath@char@exclamation%
      \pgfmath@stack@push@operation{not}%
      \let\pgfmath@parse@next=\pgfmath@parse@@operand%
    \else%
      \expandafter\pgfmath@stack@push@operation\expandafter{\pgfmath@token}%
      \let\pgfmath@parse@next=\pgfmath@parse@@operand%
    \fi%
  \fi%
  \pgfmath@parse@next%
}%


\def\pgfmath@parse@operand@quote#1"{%
  \def\pgfmathresult{#1}%
  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
  \pgfmath@parse@@operator%
}

\def\pgfmath@qparse@operand{%
  \afterassignment\pgfmath@qparse@@operand%
  \pgfmath@dimen\pgfmath@token}
\def\pgfmath@qparse@@operand{%
  \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
  \pgfmath@parse@@operator%
}

\def\pgfmath@parse@number{\pgfmath@parse@ifbgroup{\pgfmath@parse@number}{\pgfmath@parse@number@}}
\def\pgfmath@parse@number@#1{%
  \let\pgfmath@token=\pgfmath@token@next%
  \def\pgfmath@token@next{#1}%
  \pgfmath@parse@@number}

\def\pgfmath@parse@@number{%
  \ifx\pgfmath@token\pgfmath@egroup@token%
    \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmath@number}%
    \let\pgfmath@parse@next=\pgfmath@parse@@@operator%
  \else%
    \expandafter\ifcat\pgfmath@token\relax%
      \expandafter\ifx\csname pgfmath@token@dimexpr@\expandafter\string\pgfmath@token\endcsname\relax%
        \expandafter\ifx\pgfmath@token\numexpr%
          \let\pgfmath@parse@next=\pgfmath@parse@numexpr%
        \else%
          \expandafter\ifx\pgfmath@token\muexpr%
            \let\pgfmath@parse@next=\pgfmath@parse@muexpr%
          \else%
            \expandafter\ifx\csname pgfmath@token@box@\expandafter\string\pgfmath@token\endcsname\relax%
              \expandafter\pgfmath@dimen@\pgfmath@token%
              \ifpgfmath@dimen@%
                \global\pgfmathunitsdeclaredtrue%
                \pgfmath@dimen=\pgfmath@number\pgfmath@token%
                \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
                \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
                \let\pgfmath@parse@next=\pgfmath@parse@operator%
              \else%
                \pgfmath@count=\pgfmath@token%
                \expandafter\def\expandafter\pgfmath@number\expandafter{\the\pgfmath@count}%
                \expandafter\ifcat\pgfmath@token@next\relax%
                  \let\pgfmath@parse@next=\pgfmath@parse@number%
                \else%
                  \let\pgfmathresult=\pgfmath@number%
                  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
                  \let\pgfmath@parse@next=\pgfmath@parse@operator%
                \fi%
              \fi%
            \else%
              \global\pgfmathunitsdeclaredtrue%
              \pgfmath@dimen=\pgfmath@number\pgfmath@token\pgfmath@token@next%
              \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
              \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
              \let\pgfmath@parse@next=\pgfmath@parse@@operator%
            \fi%
          \fi%
        \fi%
      \else%
        \global\pgfmathunitsdeclaredtrue%
        \let\pgfmath@parse@next=\pgfmath@parse@dimexpr%
      \fi%
    \else%
      \expandafter\ifx\csname pgfmath@token@numeric@\expandafter\string\pgfmath@token\endcsname\relax%
        \expandafter\ifx\csname pgfmath@token@unit@\pgfmath@token\expandafter\string\pgfmath@token@next\endcsname\relax%
        \expandafter\ifx\csname pgfmath@token@unit@\pgfmath@token\endcsname\relax%
          \expandafter\ifx\csname pgfmath@token@exponent@\pgfmath@token\endcsname\relax%
            \expandafter\ifx\csname pgfmath@base@\pgfmath@number\pgfmath@token\endcsname\relax%
              \expandafter\ifx\csname pgfmath@token@mathunit@\pgfmath@token\expandafter\string\pgfmath@token@next\endcsname\relax%
                  \ifx\pgfmath@base\pgfmath@empty%
                    \let\pgfmathresult=\pgfmath@number%
                  \else%
                    \ifx\pgfmath@number\pgfmath@char@zero%
                      \let\pgfmathresult=\pgfmath@number%
                    \else%
                      \expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\pgfmath@number}{8}{10}%
                    \fi%
                  \fi%
                  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
                  \let\pgfmath@parse@next=\pgfmath@parse@@@operator%
              \else%
                \global\pgfmathunitsdeclaredtrue%
                \global\pgfmathmathunitsdeclaredtrue%
                \pgfmath@dimen=\pgfmath@number pt\relax%
                \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
                \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
                \let\pgfmath@parse@next=\pgfmath@parse@@operator%
              \fi%
            \else%
              \expandafter\let\expandafter\pgfmath@base\expandafter=%
                \csname pgfmath@base@\pgfmath@number\pgfmath@token\endcsname%
              \let\pgfmath@parse@next=\pgfmath@parse@base%
            \fi%
          \else%
            \let\pgfmath@parse@next=\pgfmath@parse@exponent%
          \fi%
        \else%
          \global\pgfmathunitsdeclaredtrue%
          \pgfmath@dimen=\pgfmath@number\pgfmath@token\relax%
          \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
          \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
          \let\pgfmath@parse@next=\pgfmath@parse@@operator%
        \fi%
        \else%
          \global\pgfmathunitsdeclaredtrue%
          \pgfmath@dimen=\pgfmath@number\pgfmath@token\pgfmath@token@next\relax%
          \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
          \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
          \let\pgfmath@parse@next=\pgfmath@parse@@operator%
        \fi%
      \else%
        \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfmath@number%
          \expandafter\expandafter\expandafter{\expandafter\pgfmath@number\pgfmath@token}%
        \ifx\pgfmath@token\pgfmath@char@period%
          \let\pgfmath@base=\pgfmath@empty%
        \fi%
        \let\pgfmath@parse@next=\pgfmath@parse@number%
      \fi%
    \fi%
  \fi%
  \pgfmath@parse@next%
}


\def\pgfmath@parse@dimexpr{%
  \afterassignment\pgfmath@parse@dimexpr@%
  \expandafter\expandafter\expandafter\pgfmath@dimen\expandafter\pgfmath@token\pgfmath@token@next%
}
\def\pgfmath@parse@dimexpr@{%
  \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
  \pgfmath@parse@@operator%
}


\def\pgfmath@parse@muexpr{%
  \begingroup%
    \afterassignment\pgfmath@parse@muexpr@%
    \expandafter\expandafter\expandafter\muskip\expandafter\expandafter\expandafter0\expandafter\pgfmath@token\expandafter\pgfmath@token@next%
}
\def\pgfmath@parse@muexpr@{%
  \expandafter\endgroup%
  \expandafter\edef\expandafter\pgfmathresult\expandafter{\expandafter\pgfMATH@STRIPMU\the\muskip0}%
  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
  \pgfmath@parse@@operator%
}

{
\catcode`\m=12
\catcode`\u=12
\gdef\pgfMATH@STRIPMU#1mu{#1}
}


\def\pgfmath@parse@numexpr{%
  \afterassignment\pgfmath@parse@numexpr@%
  \expandafter\expandafter\expandafter\pgfmath@count\expandafter\pgfmath@token\pgfmath@token@next%
}
\def\pgfmath@parse@numexpr@#1{%
  \expandafter\def\expandafter\pgfmath@number\expandafter{\the\pgfmath@count}%
  \def\pgfmath@token@next{#1}%
  \expandafter\ifcat\pgfmath@token@next\relax%
    \let\pgfmath@parse@next=\pgfmath@parse@number%
  \else%
    \let\pgfmathresult=\pgfmath@number%
    \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
    \let\pgfmath@parse@next=\pgfmath@parse@operator%
  \fi%
  \pgfmath@parse@next%
}


\def\pgfmath@parse@exponent{%
  \afterassignment\pgfmath@parse@@exponent%
  \pgfmath@count\pgfmath@token@next}
\def\pgfmath@parse@@exponent{%
  \pgfmathscientific{\pgfmath@number}{\the\pgfmath@count}%
  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
  \pgfmath@parse@@operator%
}

\def\pgfmath@parse@base{%
  \ifnum\pgfmath@base=2\relax%
    \let\pgfmath@parse@next=\pgfmath@parse@binary%
  \else%
    \ifnum\pgfmath@base=16\relax%
      \let\pgfmath@parse@next=\pgfmath@parse@hexadecimal%
    \else%
      \pgfmath@error{Unexpected numerical base `\pgfmath@base'}{}%
      \def\pgfmathresult{0}%
      \let\pgfmath@parse@next=\pgfmath@parse@end%
    \fi%
  \fi%
  \let\pgfmath@number=\pgfmath@empty%
  \expandafter\pgfmath@parse@next\pgfmath@token@next%
}

\def\pgfmath@parse@binary#1{%
  \expandafter\ifx\csname pgfmath@token@binary@#1\endcsname\relax%
    \expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\pgfmath@number}{2}{10}%
    \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
    \def\pgfmath@token@next{#1}%
    \let\pgfmath@parse@next=\pgfmath@parse@operator%
  \else%
    \expandafter\def\expandafter\pgfmath@number\expandafter{\pgfmath@number#1}%
    \let\pgfmath@parse@next=\pgfmath@parse@binary%
  \fi%
  \pgfmath@parse@next%
}

\def\pgfmath@parse@hexadecimal#1{%
  \expandafter\ifx\csname pgfmath@token@hexadecimal@#1\endcsname\relax%
    \expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\pgfmath@number}{16}{10}%
    \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
    \def\pgfmath@token@next{#1}%
    \let\pgfmath@parse@next=\pgfmath@parse@operator%
  \else%
    \expandafter\def\expandafter\pgfmath@number\expandafter{\pgfmath@number#1}%
    \let\pgfmath@parse@next=\pgfmath@parse@hexadecimal%
  \fi%
  \pgfmath@parse@next%
}

\def\pgfmath@parse@function{\pgfmath@parse@ifbgroup{\pgfmath@parse@function}{\pgfmath@parse@@function}}
\def\pgfmath@parse@function@{\futurelet\pgfmath@token@let\pgfmath@parse@@function}
\def\pgfmath@parse@@function{%
  \ifx\pgfmath@token@let\pgfmath@sptoken%
    \let\pgfmath@token=\pgfmath@empty%
    \let\pgfmath@parse@next=\pgfmath@parse@@@@function%
  \else%
    \let\pgfmath@parse@next=\pgfmath@parse@@@function%
  \fi%
  \pgfmath@parse@next}

\def\pgfmath@parse@@@function#1{%
  \expandafter\ifx\csname pgfmath@token@functional@\expandafter\string#1\endcsname\relax%
    \expandafter\ifx\csname pgfmath@token@number@\expandafter\string#1\endcsname\relax%
      \def\pgfmath@token{#1}%
      \let\pgfmath@parse@next=\pgfmath@parse@@@@function%
    \else%
      \expandafter\def\expandafter\pgfmath@function\expandafter{\pgfmath@function#1}%
      \let\pgfmath@parse@next=\pgfmath@parse@function@%
    \fi%
  \else%
    \edef\pgfmath@function{\pgfmath@function#1}%
    \let\pgfmath@parse@next=\pgfmath@parse@function@%
  \fi%
  \pgfmath@parse@next}

\def\pgfmath@parse@@@@function{%
  \expandafter\ifx\csname pgfmath@function@\pgfmath@function\endcsname\relax%
    \pgfmath@error{Unknown function `\pgfmath@function'}{}%
    \def\pgfmathresult{0}%
    \let\pgfmath@parse@next=\pgfmath@parse@end%
  \else%
    \expandafter\ifnum\csname pgfmath@operation@\pgfmath@function @arity\endcsname=0\relax%
      \csname pgfmath\pgfmath@function @\endcsname%
      \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
      \let\pgfmath@parse@next=\pgfmath@parse@@operator%
    \else%
      \expandafter\pgfmath@stack@push@operation\expandafter{\pgfmath@function}%
      \let\pgfmath@parse@next=\pgfmath@parse@@operand%
    \fi%
  \fi%
  \expandafter\pgfmath@parse@next\pgfmath@token}

\def\pgfmath@parse@operator{\pgfmath@parse@ifbgroup{\pgfmath@parse@operator}{\pgfmath@parse@operator@}}%
\def\pgfmath@parse@operator@#1{%
  \let\pgfmath@token=\pgfmath@token@next%
  \def\pgfmath@token@next{#1}%
  \pgfmath@parse@@@operator}

\def\pgfmath@parse@@operator{\pgfmath@parse@ifbgroup{\pgfmath@parse@@operator}{\pgfmath@parse@@operator@}}%
\def\pgfmath@parse@@operator@#1{%
  \def\pgfmath@token{#1}%
  \pgfmath@parse@ifbgroup{\pgfmath@parse@@operator@@}{\pgfmath@parse@@operator@@}}%
\def\pgfmath@parse@@operator@@#1{%
  \def\pgfmath@token@next{#1}%
  \pgfmath@parse@@@operator}

\def\pgfmath@parse@@@operator{%
  \expandafter\ifx\csname pgfmath@operator@\pgfmath@token\expandafter\string\pgfmath@token@next\endcsname\relax%
    \expandafter\ifx\csname pgfmath@operator@\pgfmath@token\endcsname\relax%
      \pgfmath@error{Unknown operator `\pgfmath@token' or `\pgfmath@token\pgfmath@token@next'}{}%
      \def\pgfmathresult{0}%
    \let\pgfmath@parse@next=\pgfmath@parse@end%
    \else%
      \expandafter\pgfmath@operation@process\expandafter{\pgfmath@token}%
      \ifx\pgfmath@token\pgfmath@text@@%
        \let\pgfmath@parse@next=\pgfmath@parse@end%
      \else%
        \expandafter\ifx\csname pgfmath@operation@\pgfmath@token @postfix\endcsname\pgfmath@token%
          \ifx\pgfmath@token@next\pgfmath@char@leftbracket%
            \let\pgfmath@parse@next=\pgfmath@parse@operand%
          \else%
            \let\pgfmath@parse@next=\pgfmath@parse@operator%
          \fi%
        \else%
          \let\pgfmath@parse@next=\pgfmath@parse@operand%
        \fi%
      \fi%
    \fi%
  \else%
    \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
      \pgfmath@token\expandafter\expandafter\expandafter%
        {\expandafter\pgfmath@token\pgfmath@token@next}%
    \expandafter\pgfmath@operation@process\expandafter{\pgfmath@token}%
    \let\pgfmath@parse@next=\pgfmath@parse@@operand%
  \fi%
  \pgfmath@parse@next%
}


\def\pgfmath@operation@process#1{%
  \def\pgfmath@operator{#1}%
  \ifx\pgfmath@stack@operation@top\pgfmath@stack@empty%
  \else%
    \pgfmath@operation@@process%
  \fi%
  \expandafter\ifx\csname pgfmath@token@specials@#1\endcsname\relax%
    \pgfmath@stack@push@operation{#1}%
  \fi%
}

\def\pgfmath@operation@@process{%
  \ifx\pgfmath@stack@operation@top\pgfmath@stack@empty%
    \let\pgfmath@parse@next=\relax%
  \else%
    \ifnum\csname pgfmath@operation@\pgfmath@operator @precedence\endcsname>%
      \csname pgfmath@operation@\pgfmath@stack@operation@top @precedence\endcsname\relax%
      \let\pgfmath@parse@next=\relax%
    \else%
      \let\pgfmath@stack@operation@last=\pgfmath@stack@operation@top%
      \expandafter\ifx\csname pgfmath@operator@\pgfmath@stack@operation@top\endcsname\relax%
        \pgfmath@function@@@process%
      \else%
        \pgfmath@operator@@@process%
      \fi%
      \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
      \expandafter\ifx\csname pgfmath@token@group@\pgfmath@stack@operation@last\pgfmath@operator\endcsname\relax%
        \let\pgfmath@parse@next=\pgfmath@operation@@process%
      \else%
        \let\pgfmath@parse@next=\relax%
      \fi%
    \fi%
  \fi%
  \pgfmath@parse@next%
}

\def\pgfmath@operator@@@process{%
  \pgfmath@stack@pop@operation\pgfmath@@operator%
  \pgfmath@stack@pop@operand\pgfmath@operand@a%
  \ifcase\csname pgfmath@operation@\pgfmath@@operator @arity\endcsname\relax%
  \or%
    \pgfmath@operator@@@@process{\pgfmath@operand@a}%
  \or%
    \pgfmath@stack@pop@operand\pgfmath@operand@b%
    \pgfmath@operator@@@@process{\pgfmath@operand@b}{\pgfmath@operand@a}%
  \or%
    \pgfmath@stack@pop@operand\pgfmath@operand@b%
    \expandafter\pgfmath@operator@@@@process\expandafter%
      {\expandafter\pgfmath@operand@b\expandafter}\pgfmath@operand@a%
  \else%
  \fi%
}

\def\pgfmath@operator@@@@process{%
  \csname pgfmath%
    \csname pgfmath@operation@\pgfmath@@operator @name\endcsname%
  @\endcsname}

\def\pgfmath@function@@@process{%
  \ifnum\csname pgfmath@operation@\pgfmath@stack@operation@top @arity\endcsname>0\relax%
    \pgfmath@stack@pop@operation\pgfmath@@function%
    \pgfmath@stack@pop@operand\pgfmath@@operand%
    \ifnum\csname pgfmath@operation@\pgfmath@@function @arity\endcsname>1\relax%
      \ifnum\csname pgfmath@operation@\pgfmath@@function @arity\endcsname>9\relax%
        \csname pgfmath\pgfmath@@function @\endcsname{\pgfmath@@operand}%
      \else%
        \expandafter\pgfmath@function@@@@process\pgfmath@@operand%
      \fi
    \else%
      \expandafter\pgfmath@function@@@@process\expandafter{\pgfmath@@operand}%
    \fi%
  \fi%
}

\def\pgfmath@function@@@@process{\csname pgfmath\pgfmath@@function @\endcsname}

\newtoks\pgfmath@stack@operand
\newtoks\pgfmath@stack@operation
\let\pgfmath@stack@empty=\pgfmath@empty

\def\pgfmath@stack@push#1#2{%
  \def\pgfmath@stack@top{#2}%
  \expandafter\expandafter\expandafter#1%
    \expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter%
      {\expandafter\pgfmath@stack@top\expandafter}\the#1}}%

\def\pgfmath@stack@pop#1#2{\expandafter\pgfmath@stack@@pop\the#1\pgfmath@stack@stop{#1}{#2}}
\def\pgfmath@stack@@pop#1#2#3\pgfmath@stack@stop#4#5{\def#5{#1}#4={{#2}#3}\def\pgfmath@stack@top{#2}}

\def\pgfmath@stack@push@operation#1{%
  \pgfmath@stack@push\pgfmath@stack@operation{#1}%
  \let\pgfmath@stack@operation@top=\pgfmath@stack@top}

\def\pgfmath@stack@pop@operation#1{%
  \pgfmath@stack@pop\pgfmath@stack@operation{#1}%
  \let\pgfmath@stack@operation@top=\pgfmath@stack@top}

\def\pgfmath@stack@push@operand#1{%
  \pgfmath@stack@push\pgfmath@stack@operand{#1}%
  \let\pgfmath@stack@operand@top=\pgfmath@stack@top}

\def\pgfmath@stack@pop@operand#1{%
  \pgfmath@stack@pop\pgfmath@stack@operand{#1}%
  \let\pgfmath@stack@operand@top=\pgfmath@stack@top}


\def\pgfmathdeclareoperator#1#2#3#4#5{%
  \ifx\pgfmath@operatorlist\pgfutil@empty
    \edef\pgfmath@operatorlist{{\string#1}}%
  \else
    \edef\pgfmath@operatorlist{\pgfmath@operatorlist,{\string#1}}%
  \fi
  \pgfmath@namedef{pgfmath@operator@\string#1}{#1}%
  \pgfmath@namedef{pgfmath@operation@\string#1@name}{#2}%
  \pgfmath@namedef{pgfmath@operation@\string#1@arity}{#3}%
  \pgfmath@namedef{pgfmath@operation@\string#1@#4}{#1}%
  \pgfmath@namedef{pgfmath@operation@\string#1@precedence}{#5}%
}

\def\pgfmath@operatorlist{}

\pgfmathdeclareoperator{+}{add}     {2}{infix}{500}
\pgfmathdeclareoperator{-}{subtract}{2}{infix}{500}
\pgfmathdeclareoperator{*}{multiply}{2}{infix}{700}
\pgfmathdeclareoperator{/}{divide}  {2}{infix}{700}
\pgfmathdeclareoperator{^}{pow}     {2}{infix}{900}

\pgfmathdeclareoperator{<} {}       {1}{prefix} {1}

\pgfmathdeclareoperator{>} {greater}   {2}{infix} {250}
\pgfmathdeclareoperator{<} {less}      {2}{infix} {250}
\pgfmathdeclareoperator{==}{equal}     {2}{infix} {250}
\pgfmathdeclareoperator{>=}{notless}   {2}{infix} {250}
\pgfmathdeclareoperator{<=}{notgreater}{2}{infix} {250}
\pgfmathdeclareoperator{&&}{and}       {2}{infix} {200}
\pgfmathdeclareoperator{||}{or}        {2}{infix} {200}
\pgfmathdeclareoperator{!=}{notequal}  {2}{infix} {250}
\pgfmathdeclareoperator{!} {not}       {1}{prefix}{975}
\pgfmathdeclareoperator{?} {ifthenelse}{3}{infix} {100}
\pgfmathdeclareoperator{:} {@@collect}  {2}{infix}{101}

\pgfmathdeclareoperator{!}{factorial}{1}{postfix}{800}%
\pgfmathdeclareoperator{r}{deg}      {1}{postfix}{600}

\pgfmathdeclareoperator{,}{@collect}   {2}{infix}  {10}
\pgfmathdeclareoperator{[}{@startindex}{2}{prefix} {7}
\pgfmathdeclareoperator{]}{@endindex}  {0}{postfix}{6}
\pgfmathdeclareoperator{(}{@startgroup}{1}{prefix} {5}
\pgfmathdeclareoperator{)}{@endgroup}  {0}{postfix}{4}

\pgfmathdeclareoperator{\pgfmath@bgroup}{@startarray}{1}{prefix} {3}
\pgfmathdeclareoperator{\pgfmath@egroup}{@endarray}  {1}{postfix}{2}%

\pgfmathdeclareoperator{"}{}{1}{prefix}{1}
\pgfmathdeclareoperator{@}{}{0}{postfix}{0}


\def\pgfmath@startgroup@#1{\pgfmath@protected@edef\pgfmathresult{#1}}
\def\pgfmath@endgroup@{}%

\def\pgfmath@startindex@#1#2{%
  \expandafter\pgfmatharray@#1{#2}%
  \expandafter\pgfmath@bgroup@strip\expandafter{\pgfmathresult}%
  \ifx\pgfmath@token@let\bgroup%
    \expandafter\def\expandafter\pgfmathresult\expandafter{\expandafter{\pgfmathresult}}%
  \fi}
\def\pgfmath@endindex@{}%

\def\pgfmath@startarray@#1{\expandafter\def\expandafter\pgfmathresult\expandafter{\expandafter{#1}}}
\def\pgfmath@endarray@#1{\expandafter\def\expandafter\pgfmathresult\expandafter{#1}}%


\def\pgfmath@@collect@#1#2{%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
    \pgfmathresult\expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter%
      {\expandafter#1\expandafter}\expandafter{#2}}%
}
\def\pgfmath@collect@#1#2{%
  \expandafter\def\expandafter\pgfmath@collect@original\expandafter{#1}%
  \expandafter\pgfmath@bgroup@strip\expandafter{#1}%
  \ifx\pgfmath@token@let\bgroup%
    \ifx\pgfmath@collect@original\pgfmath@bgroup@stripped%
      \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmath@bgroup@stripped}%
    \else%
      \expandafter\def\expandafter\pgfmathresult\expandafter{\expandafter{\pgfmath@bgroup@stripped}}%
    \fi%
  \else%
    \expandafter\def\expandafter\pgfmathresult\expandafter{\expandafter{\pgfmath@bgroup@stripped}}%
  \fi%
  \expandafter\pgfmath@bgroup@strip\expandafter{#2}%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
    \pgfmathresult\expandafter\expandafter\expandafter%
      {\expandafter\pgfmathresult\expandafter{\pgfmath@bgroup@stripped}}%
}

\def\pgfmath@bgroup@strip#1{%
  \def\pgfmath@bgroup@strip@last{#1}%
  \pgfmath@bgroup@@strip{#1}\pgfmath@\pgfmath@@\pgfmath@@@}

\def\pgfmath@bgroup@strip@#1{%
  \def\pgfmath@bgroup@strip@last{#1}%
  \pgfmath@bgroup@@strip#1\pgfmath@\pgfmath@@\pgfmath@@@}

\def\pgfmath@bgroup@pgfmath@{\pgfmath@}

\def\pgfmath@bgroup@@strip{%
  \futurelet\pgfmath@token@let\pgfmath@bgroup@@@strip}

\def\pgfmath@bgroup@@@strip#1#2#3\pgfmath@@@{%
  \ifx\pgfmath@token@let\bgroup
    \def\pgfmath@bgroup@test{#2}%
    \ifx\pgfmath@bgroup@test\pgfmath@bgroup@pgfmath@
      \def\pgfmath@next{\pgfmath@bgroup@strip@{#1}}%
    \else
      \let\pgfmath@bgroup@stripped=\pgfmath@bgroup@strip@last
      \let\pgfmath@next=\relax
    \fi
  \else
    \pgfmath@bgroup@@@@strip#1#2#3%
    \let\pgfmath@next=\relax
  \fi
  \pgfmath@next}

\def\pgfmath@bgroup@@@@strip#1\pgfmath@\pgfmath@@{%
  \def\pgfmath@bgroup@stripped{#1}}

==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathparser.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathutil.code.tex ====


\def\pgfmathincluded{}

\def\pgfmath@grabv#1#2#3#4#5#6#7\pgfmath@grabv{#2#3#4#5\ifx#6!!\fi}
\def\pgfmath@ifskip@extract#1{\expandafter\pgfmath@grabv\meaning#1!!!!!!\pgfmath@grabv}
\def\pgfmath@iftoks@extract#1{\expandafter\pgfmath@grabv\meaning#1!!!!!!\pgfmath@grabv}

\def\pgfmath@grabvi#1#2#3#4#5#6#7#8\pgfmath@grabvi{#2#3#4#5#6\ifx#7!!\fi}
\def\pgfmath@ifdimen@extract#1{\expandafter\pgfmath@grabvi\meaning#1!!!!!!\pgfmath@grabvi}
\def\pgfmath@ifcount@extract#1{\expandafter\pgfmath@grabvi\meaning#1!!!!!!\pgfmath@grabvi}

\def\pgfmath@grabvii#1#2#3#4#5#6#7#8#9\pgfmath@grabvii{#2#3#4#5#6#7\ifx#8!!\fi}
\def\pgfmath@ifmuskip@extract#1{\expandafter\pgfmath@grabvii\meaning#1!!!!!!\pgfmath@grabvii}

\def\pgfmath@ifregister@unguarded#1#2{%
    \expandafter\ifx\csname\csname pgfmath@if#1@extract\endcsname{#2}\expandafter\endcsname\csname #1\endcsname
        \expandafter\pgfutil@firstoftwo
    \else
        \expandafter\pgfutil@secondoftwo
    \fi}

\def\pgfmath@ifregister#1#2{%
    \pgfutil@IfUndefined{pgfmath@if#1@extract}%
        {\errmessage{Package PGF Math Error: Cannot test for #1 register}}%
        {\pgfutil@IfUndefined{\csname pgfmath@if#1@extract\endcsname{#2}}%
            {\pgfutil@secondoftwo}}%
            {\pgfmath@ifregister@unguarded{#1}{#2}}}

\def\pgfmath@ensureregister#1#2{%
    \pgfmath@ifregister{#1}{#2}%
        {}%
        {\csname new#1\endcsname#2}%
}

\pgfmath@ensureregister{dimen}{\pgf@x}
\pgfmath@ensureregister{dimen}{\pgf@xa}
\pgfmath@ensureregister{dimen}{\pgf@xb}
\pgfmath@ensureregister{dimen}{\pgf@xc}

\pgfmath@ensureregister{dimen}{\pgf@y}
\pgfmath@ensureregister{dimen}{\pgf@ya}
\pgfmath@ensureregister{dimen}{\pgf@yb}
\pgfmath@ensureregister{dimen}{\pgf@yc}

\pgfmath@ensureregister{dimen}{\pgfutil@tempdima}
\pgfmath@ensureregister{dimen}{\pgfutil@tempdimb}

\pgfmath@ensureregister{count}{\c@pgf@counta}
\pgfmath@ensureregister{count}{\c@pgf@countb}
\pgfmath@ensureregister{count}{\c@pgf@countc}
\pgfmath@ensureregister{count}{\c@pgf@countd}

\pgfmath@ensureregister{count}{\pgfutil@tempcnta}
\pgfmath@ensureregister{count}{\pgfutil@tempcntb}

\let\pgfmath@x\pgf@x
\let\pgfmath@xa\pgf@xa
\let\pgfmath@xb\pgf@xb
\let\pgfmath@xc\pgf@xc

\let\pgfmath@y\pgf@y
\let\pgfmath@ya\pgf@ya
\let\pgfmath@yb\pgf@yb
\let\pgfmath@yc\pgf@yc

\let\pgfmath@tempdima\pgfutil@tempdima
\let\pgfmath@tempdimb\pgfutil@tempdimb

\let\c@pgfmath@counta\c@pgf@counta
\let\c@pgfmath@countb\c@pgf@countb
\let\c@pgfmath@countc\c@pgf@countc
\let\c@pgfmath@countd\c@pgf@countd

\let\pgfmath@tempcnta\pgfutil@tempcnta
\let\pgfmath@tempcntb\pgfutil@tempcntb


\ifx\pgfutil@ifnextchar\pgfmath@undefined%
    \long\def\pgfmath@ifnextchar#1#2#3{%
  \let\pgfmath@reserved@d#1%
  \def\pgfmath@reserved@a{#2}%
  \def\pgfmath@reserved@b{#3}%
  \futurelet\pgfmath@let@token\pgfmath@ifnch}
    \def\pgfmath@ifnch{%
      \ifx\pgfmath@let@token\pgfmath@sptoken%
        \let\pgfmath@reserved@c\pgfmath@xifnch%
      \else%
        \ifx\pgfmath@let@token\pgfmath@reserved@d%
          \let\pgfmath@reserved@c\pgfmath@reserved@a%
        \else%
          \let\pgfmath@reserved@c\pgfmath@reserved@b%
        \fi%
      \fi%
      \pgfmath@reserved@c}
    {%
      \def\:{\global\let\pgfmath@sptoken= } \:
      \def\:{\pgfmath@xifnch} \expandafter\gdef\: {\futurelet\pgfmath@let@token\pgfmath@ifnch}
    }%
\else%
    \let\pgfmath@ifnextchar\pgfutil@ifnextchar%
    {%
        \def\:{\global\let\pgfmath@sptoken= } \:
    }%
\fi%

\ifx\pgfutil@ifundefined\pgfmath@undefined%
    \long\def\pgfmath@ifundefined#1{%
      \expandafter\ifx\csname#1\endcsname\relax%
        \expandafter\pgfmath@firstoftwo%
      \else%
        \expandafter\pgfmath@secondoftwo%
      \fi}%
\else%
    \let\pgfmath@ifundefined\pgfutil@ifundefined%
\fi%

\ifx\pgfutil@selectfont\pgfmath@undefined%
    \ifx\selectfont\pgfmath@undefined%
        \let\pgfmath@selectfont\rm%
    \else%
        \let\pgfmath@selectfont\selectfont%
    \fi%
\else%
    \let\pgfmath@selectfont\pgfutil@selectfont%
\fi%

\newif\ifpgfmath@in@
\def\pgfmath@in@#1#2{%
 \def\pgfmath@in@@##1#1##2##3\pgfmath@in@@{%
  \ifx\pgfmath@in@##2\pgfmath@in@false\else\pgfmath@in@true\fi}%
 \pgfmath@in@@#2#1\pgfmath@in@\pgfmath@in@@}


\ifx\pgf@sys@tonumber\pgfmath@undefined%
  {\catcode`\p=12\catcode`\t=12\gdef\Pgf@geT#1pt{#1}}
    \def\pgfmath@tonumber#1{\expandafter\Pgf@geT\the#1}
\else%
    \let\pgfmath@tonumber\pgf@sys@tonumber%
\fi%


\ifx\PackageWarning\pgfmath@undefined
    \def\pgfmath@PackageWarning#1#2{\immediate\write-1{Package #1: Warning! #2.}}%
\else%
    \let\pgfmath@PackageWarning\PackageWarning%
\fi%
\ifx\PackageError\pgfmath@undefined
    \def\pgfmath@PackageError#1#2#3{\errmessage{Package #1 Error: #2.}}%
\else%
    \let\pgfmath@PackageError\PackageError%
\fi%

\def\pgfmath@error#1#2{%
    \pgfmath@PackageError{PGF Math}{%
        #1%
        \pgfutil@ifundefined{pgfmath@expression}{}{ (in '\pgfmath@expression')}%
    }{#2}%
}
\def\pgfmath@warning#1{%
    \pgfmath@PackageWarning{PGF Math}{%
        #1%
        \pgfutil@ifundefined{pgfmath@expression}{}{ (in '\pgfmath@expression')}%
    }%
}

{\catcode`\p=12\catcode`\t=12\gdef\PgfmaTh@PT{pt}}
\edef\pgfmath@pt{\PgfmaTh@PT}%

\def\pgfmath@empty{}

\def\pgfmath@firstoftwo#1#2{#1}
\def\pgfmath@secondoftwo#1#2{#2}

\def\pgfmath@gobbletilpgfmath@#1\pgfmath@{}
\def\pgfmath@gobbleone#1{}%


\def\pgfmath@namedef#1{\expandafter\def\csname#1\endcsname}
\def\pgfmath@nameedef#1{\expandafter\edef\csname#1\endcsname}

\newif\ifpgfmathcontinueloop
\def\pgfmathloop#1\repeatpgfmathloop{%
    \def\pgfmathcounter{1}%
    \def\pgfmath@iterate{%
        #1\relax%
        {%
            \c@pgfmath@counta\pgfmathcounter%
            \advance\c@pgfmath@counta1\relax%
            \xdef\pgfmathloop@temp{\the\c@pgfmath@counta}%
        }%
        \edef\pgfmathcounter{\pgfmathloop@temp}%
        \expandafter\pgfmath@iterate\fi}%
    \pgfmath@iterate\let\pgfmath@iterate\relax}
\let\repeatpgfmathloop\fi
\def\pgfmathbreakloop{\let\pgfmath@iterate\relax}%

\def\pgfmath@returnone#1\endgroup{%
  \pgfmath@x#1%
  \edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@x}}%
  \expandafter\endgroup\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmath@temp}%
}

\let\pgfmathreturn=\pgfmath@returnone

\def\pgfmath@smuggleone#1\endgroup{%
  \expandafter\endgroup\expandafter\def\expandafter#1\expandafter{#1}}

\let\pgfmathsmuggle=\pgfmath@smuggleone
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/math/pgfmathutil.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleanimations.code.tex ====

\ProvidesFileRCS{pgfmoduleanimations.code.tex}



\input pgfsysanimations.code.tex



\def\pgfanimateattribute#1#2{%
  \pgfanimateattributecode{#1}{\pgfkeys{/pgf/animation/.cd,#2}}%
}%



\def\pgfanimateattributecode#1#2{%
  {%
    \pgfkeys{/pgf/@animation attributes/.cd,#1}%
    #2%
    \csname pgf@animation@check@\pgf@animation@attribute\endcsname%
    \pgfsysanimate{\pgf@animation@attribute}%
  }%
}%




\def\pgfsnapshot#1{\pgfparsetime{#1}\expandafter\pgfsysanimsnapshot\expandafter{\pgftimeresult}}%
\def\pgfsnapshotafter#1{\pgfparsetime{#1}\expandafter\pgfsysanimsnapshotafter\expandafter{\pgftimeresult}}%



\pgfkeys{/pgf/@animation attributes/.cd,
  visible/.code=\pgf@animate@attr{visibility}{mapped}\def\pgf@anim@map@true{visible}\def\pgf@anim@map@false{hidden},
  stage/.code=\pgf@animate@attr{visibility}{mapped}\def\pgf@anim@map@true{visible}\def\pgf@anim@map@false{hidden}\pgfsysanimkeybase\pgfsysanimvaltext{hidden},
  opacity/.code=\pgf@animate@attr{opacity}{scalar},
  fill opacity/.code=\pgf@animate@attr{fillopacity}{scalar},
  draw opacity/.code=\pgf@animate@attr{strokeopacity}{scalar},
  stroke opacity/.style=draw opacity,
  line width/.code=\pgf@animate@attr{linewidth}{dimension},
  fill/.code=\pgf@animate@attr{fillcolor}{color},
  draw/.code=\pgf@animate@attr{strokecolor}{color},
  color/.code=\pgf@animate@attr{color}{color},
  stroke/.style=draw,
  motion/.code=\pgf@animate@attr{motion}{scalar},
  translate/.code=\pgf@animate@attr{translate}{point},
  scale/.code=\pgf@animate@attr{scale}{scaling},
  rotate/.code=\pgf@animate@attr{rotate}{scalar},
  xskew/.code=\pgf@animate@attr{skewx}{scalar},
  yskew/.code=\pgf@animate@attr{skewy}{scalar},
  skew x/.style=xskew,
  skew y/.style=yskew,
  path/.code=\pgf@animate@attr{path}{path},
  softpath/.code=\pgf@animate@attr{path}{softpath},
  view/.code=\pgf@animate@attr{viewbox}{viewbox},
  dash/.code=\pgf@animate@attr{dash}{dash},
  none/.code=\pgf@animate@attr{none}{none},
}%

\def\pgf@animate@attr#1#2{%
  \def\pgf@animation@attribute{#1}%
  \expandafter\let\expandafter\pgfanim@type@parser\csname pgfanim@parse@type@#2\endcsname%
}%




\def\pgfparsetime#1{%
  \begingroup%
    \pgfmathdeclareoperator{s}{@seconds}{1}{postfix}{600}%
    \pgfmathdeclareoperator{m}{m@encountered}{1}{postfix}{600}%
    \pgfmathdeclareoperator{i}{i@encountered}{1}{postfix}{600}%
    \pgfmathdeclareoperator{n}{@minutes}{1}{postfix}{600}%
    \pgfmathdeclareoperator{h}{@hours}{1}{postfix}{600}%
    \pgfmathdeclareoperator{:}{time@colon}{2}{infix}{50}%
    \pgfmath@octalparsingfalse%
    \pgfmathparse{#1}%
  \expandafter\endgroup%
  \expandafter\def\expandafter\pgftimeresult\expandafter{\pgfmathresult}%
}%

\newif\ifpgfanim@m@encountered
\newif\ifpgfanim@i@encountered
\pgfmathdeclarefunction{@seconds}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \ifpgfanim@m@encountered%
      \divide\pgfmath@x by1000\relax%
    \fi%
    \global\pgfanim@m@encounteredfalse%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}%
\pgfmathdeclarefunction{m@encountered}{1}{%
  \global\pgfanim@m@encounteredtrue%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}%
\pgfmathdeclarefunction{i@encountered}{1}{%
  \ifpgfanim@m@encountered%
    \global\pgfanim@m@encounteredfalse%
    \global\pgfanim@i@encounteredtrue%
  \else%
    \pgfmath@error{Unexpected i}{}%
  \fi%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}%
\pgfmathdeclarefunction{@minutes}{1}{%
  \ifpgfanim@i@encountered%
    \global\pgfanim@i@encounteredfalse%
  \else%
    \pgfmath@error{Unexpected n}{}%
  \fi%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \pgfmath@x60\pgfmath@x\relax%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}%
\pgfmathdeclarefunction{@hours}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \pgfmath@x3600\pgfmath@x\relax%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}%
\pgfmathdeclarefunction{time@colon}{2}{%
  \begingroup%
    \pgfmath@x=#1pt\relax%
    \pgfmath@x=60\pgfmath@x\relax%
    \pgfmath@y=#2pt\relax%
    \advance\pgfmath@x by\pgfmath@y%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}%




\def\pgfanimationset{\pgfqkeys{/pgf/animation}}%



\pgfanimationset{
  whom/.code={%
    \pgf@anim@decomp{#1}%
    \pgfidrefnextuse\pgf@anim@id\pgf@anim@id@name%
    \expandafter\expandafter\expandafter\pgfsysanimkeywhom\expandafter\expandafter\expandafter{\expandafter\pgf@anim@id\expandafter}\expandafter{\pgf@anim@type}%
    \let\pgf@anim@whom@id\pgf@anim@id%
    \let\pgf@anim@whom@type\pgf@anim@type%
  }
}%

\def\pgf@anim@decomp#1{%
  \edef\pgf@temp{#1}%
  \expandafter\pgfutil@in@\expandafter.\expandafter{\pgf@temp}%
  \ifpgfutil@in@%
    \expandafter\pgf@anim@decomp@\pgf@temp\pgf@stop%
  \else%
    \expandafter\pgf@anim@decomp@\pgf@temp.\pgf@stop%
  \fi%
}%
\def\pgf@anim@decomp@#1.#2\pgf@stop{%
  \def\pgf@anim@id@name{#1}%
  \def\pgf@anim@type{#2}%
}%



\pgfanimationset{
  name/.code=\pgfuseid{#1},
}%





\pgfanimationset{
  restart/.is choice,
  restart/.default=true,
  restart/true/.code=\pgfsysanimkeyrestartalways,
  restart/false/.code=\pgfsysanimkeyrestartnever,
  restart/never/.code=\pgfsysanimkeyrestartnever,
  restart/when not active/.code=\pgfsysanimkeyrestartwhennotactive,
}%



\pgfanimationset{
  repeats/.code={%
    \pgfutil@in@{accumulating\pgf@stop}{#1\pgf@stop}%
    \ifpgfutil@in@%
      \pgfsysanimkeyaccumulate%
      \pgfanim@parse@acc#1\pgf@stop%
    \else%
      \pgfsysanimkeynoaccumulate%
      \pgfanim@parse@noacc{#1}%
    \fi%
  },
  repeats/.default=,
  repeat/.style={repeats={#1}},
  repeat/.default=,
}%
\def\pgfanim@parse@acc#1accumulating\pgf@stop{%
  \pgfanim@parse@noacc{#1}%
}%
\def\pgfanim@parse@noacc#1{%
  \pgfutil@in@{\pgf@stop for}{\pgf@stop#1}%
  \ifpgfutil@in@%
    \pgfanim@parse@for#1\pgf@stop%
  \else%
    \def\pgf@temp{#1}%
    \ifx\pgf@temp\pgfutil@empty%
      \pgfsysanimkeyrepeatindefinite%
    \else%
      \pgfmathparse{#1}%
      \expandafter\pgfsysanimkeyrepeat\expandafter{\pgfmathresult}%
    \fi%
  \fi%
}%
\def\pgfanim@parse@for for#1\pgf@stop{\pgfparsetime{#1}\expandafter\pgfsysanimkeyrepeatdur\expandafter{\pgftimeresult}}%






\pgfanimationset{
  begin/.code=\pgfparsetime{#1}\expandafter\pgfsysanimkeyoffset\expandafter{\pgftimeresult}{begin},
  end/.code=\pgfparsetime{#1}\expandafter\pgfsysanimkeyoffset\expandafter{\pgftimeresult}{end},
}%




\pgfanimationset{
  begin on/.code={\pgfanim@make@event{#1}{begin}},%
  end on/.code={\pgfanim@make@event{#1}{end}},
}%

\def\pgfanim@make@event#1#2{%
  \let\pgfanim@event@event\pgfutil@empty%
  \let\pgf@anim@id\pgfutil@empty%
  \let\pgf@anim@type\pgfutil@empty%
  \let\pgfanim@event@key\pgfutil@empty%
  \let\pgfanim@event@repeat\pgfutil@empty%
  \let\pgfanim@event@delay\pgfutil@empty%
  \pgfkeys{/pgf/animation/events/.cd,#1}%
  \ifx\pgfanim@event@key\pgfutil@empty%
    \ifx\pgfanim@event@repeat\pgfutil@empty%
      \ifx\pgfanim@event@event\pgfutil@empty%
        \pgferror{No event specified}%
      \else%
        \pgfsysanimkeyevent{\pgf@anim@id}{\pgf@anim@type}{\pgfanim@event@event}{\pgfanim@event@delay}{#2}%
      \fi%
    \else%
      \pgfsysanimkeyrepeatevent{\pgf@anim@id}{\pgf@anim@type}{\pgfanim@event@repeat}{\pgfanim@event@delay}{#2}%
    \fi%
  \else%
    \pgfsysanimkeyaccesskey{\pgfanim@event@key}{\pgfanim@event@delay}{#2}%
  \fi%
}%

\pgfkeys{/pgf/animation/events/.cd,
  event/.store in=\pgfanim@event@event,
  of/.code={%
    \pgf@anim@decomp{#1}%
    \pgfidrefprevuse\pgf@anim@id\pgf@anim@id@name%
    \ifx\pgf@anim@id\pgfutil@empty%
      \pgferror{Unknown object/node name '\pgf@anim@id@name'. Did you
        mean 'of next=\pgf@anim@id@name'?}%
    \fi%
  },
  of next/.code={%
    \pgf@anim@decomp{#1}%
    \pgfidrefnextuse\pgf@anim@id\pgf@anim@id@name%
  },
  of id/.code=\def\pgf@anim@id{#1},
  key/.store in=\pgfanim@event@key,
  repeat/.code=\pgfmathparse{#1}\let\pgfanim@event@repeat\pgfmathresult,
  delay/.code=\pgfparsetime{#1}\let\pgfanim@event@delay\pgftimeresult,
  click/.style={event=click},
  focus in/.style={event=focusin},
  focus out/.style={event=focusout},
  mouse down/.style={event=mousedown},
  mouse up/.style={event=mouseup},
  mouse over/.style={event=mouseover},
  mouse move/.style={event=mousemove},
  mouse out/.style={event=mouseout},
  begin/.style={event=begin},
  end/.style={event=end},
}%



\pgfanimationset{
  begin snapshot/.code=
    \pgfparsetime{#1}\expandafter\pgfsysanimkeysnapshotstart\expandafter{\pgftimeresult}
}%



\pgfanimationset{
  origin/.code={%
    \pgf@process{#1}%
    \edef\pgf@marshal{%
      \noexpand\pgfsysanimkeycanvastransform%
      {\noexpand\pgftransformshift{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}{\noexpand\pgflowlevelsynccm}}%
      {\noexpand\pgftransforminvert\noexpand\pgflowlevelsynccm}%
      \noexpand\pgf@anim@save@transform{\noexpand\pgftransformshift{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
    }%
    \pgf@marshal%
  },
}%

\pgfsysanimkeycanvastransform{{\pgflowlevelsynccm}}{\pgftransforminvert\pgflowlevelsynccm}%




\pgfanimationset{
  transform/.code={%
    \pgfsysanimkeycanvastransform{#1{\pgflowlevelsynccm}}{\pgftransforminvert\pgflowlevelsynccm}%
    \pgf@anim@save@transform{#1}%
  },
}%




\pgfanimationset{
  along/.code=%
  {%
    \pgfsyssoftpath@getcurrentpath\pgfanim@save@path%
    \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
    #1%
    \pgfsyssoftpath@getcurrentpath\pgfanim@the@path%
    \global\let\pgfanim@the@path\pgfanim@the@path%
    \pgfsyssoftpath@setcurrentpath\pgfanim@save@path%
  }%
  \expandafter\pgf@anim@protocol@path@size\pgfanim@the@path\pgf@stop%
  \expandafter\pgfsysanimkeymovealong\expandafter{\pgfanim@the@path}%
}%



\pgfanimationset{
  along softpath/.code=%
  \pgf@anim@protocol@path@size#1\pgf@stop%
  \pgfsysanimkeymovealong{#1}%
}%


\def\pgf@anim@protocol@path@size{%
  \pgfutil@ifnextchar\pgf@stop\pgfutil@gobble\pgf@anim@protocol@path@size@%
}%
\def\pgf@anim@protocol@path@size@#1#2#3{%
  \pgf@protocolanimsizes@direct{#2}{#3}%
  \pgf@anim@protocol@path@size%
}%



\pgfanimationset{
  rotate along/.is choice,
  rotate along/.default=true,
  rotate along/true/.code=\pgfsysanimkeyrotatealong,
  rotate along/false/.code=\pgfsysanimkeynorotatealong,
}%




\pgfanimationset{entry/.code 2 args=\pgf@anim@entry{#1}{#2}}%
\def\pgf@anim@entry#1#2{%
  \pgf@anim@entry@giventrue%
  \pgfparsetime{#1}%
  \edef\pgf@marshal{\noexpand\pgfsysanimkeytime{\pgftimeresult}\pgf@anim@entry@spline\pgf@anim@exit@spline}%
  \pgf@marshal%
  \def\pgf@temp{#2}%
  \ifx\pgf@temp\pgf@special@current@text%
    \pgfsysanimvalcurrent%
  \else%
    \pgfanim@type@parser{#2}%
  \fi%
}%
\def\pgf@special@current@text{current value}%
\newif\ifpgf@anim@entry@given



\pgfanimationset{base/.code=\pgf@anim@base{#1}}%
\def\pgf@anim@base#1{%
  \pgfsysanimkeybase%
  \pgfanim@type@parser{#1}%
}%



\pgfanimationset{
  freeze at end/.is choice,
  freeze at end/.default=true,
  freeze at end/true/.code=\pgfsysanimkeyfreezeatend,
  freeze at end/false/.code=\pgfsysanimkeyremoveatend,
}%




\pgfanimationset{
  entry control/.code 2 args={%
    \pgfmathsetmacro\pgf@temp@t{#1}%
    \pgfmathsetmacro\pgf@temp@a{#2}%
    \edef\pgf@anim@entry@spline{{\pgf@temp@t}{\pgf@temp@a}}%
  },
  exit control/.code 2 args={%
    \pgfmathsetmacro\pgf@temp@t{#1}%
    \pgfmathsetmacro\pgf@temp@a{#2}%
    \edef\pgf@anim@exit@spline{{\pgf@temp@t}{\pgf@temp@a}}%
  },
  stay/.code=\let\pgf@anim@exit@spline\pgfsys@stay@text,%
  jump/.code=\let\pgf@anim@entry@spline\pgfsys@jump@text,%
  linear/.style={entry control={1}{1},exit control={0}{0}},
}%
\def\pgf@anim@entry@spline@base{{1}{1}}%
\def\pgf@anim@exit@spline@base{{0}{0}}%

\def\pgf@anim@reset@linear{\let\pgf@anim@entry@spline\pgf@anim@entry@spline@base\let\pgf@anim@exit@spline\pgf@anim@exit@spline@base}%
\pgf@anim@reset@linear




\pgfanimationset{
  shorten /.code={%
    \ifpgf@anim@entry@given%
      \pgferror{You must specify shorten < prior to the path entries}%
    \else%
      \pgfmathsetmacro\pgf@anim@marker@extra@shorten@end{#1}%
      \edef\pgf@anim@marker@extra@shorten@end{\pgf@anim@marker@extra@shorten@end pt}%
    \fi%
  },
}%
\def\pgf@anim@marker@extra@shorten@start{0pt}%
\def\pgf@anim@marker@extra@shorten@end{0pt}%
\def\pgf@anim@marker@shorten@start{0pt}%
\def\pgf@anim@marker@shorten@end{0pt}%


\pgfanimationset{
  arrows/.code={%
    \ifpgf@anim@entry@given%
      \pgferror{You must specify animation arrows prior to the path entries}%
    \else%
      \pgf@anim@parser@arrows#1\pgf@stop%
    \fi%
  },
}%

\def\pgf@anim@parser@arrows#1-#2\pgf@stop{%
  \pgf@anim@prepare@arrow@start{#1}%
  \pgf@anim@prepare@arrow@end{#2}%
  \expandafter\expandafter\expandafter\pgfsysanimkeytipmarkers\expandafter\expandafter\expandafter{\expandafter\pgf@anim@marker@id@start\expandafter}\expandafter{\pgf@anim@marker@id@end}%
}%

\def\pgf@anim@prepare@arrow@start#1{%
  \def\pgf@anim@temp{#1}%
  \ifx\pgf@anim@temp\pgfutil@empty%
    \let\pgf@anim@marker@id@start\pgfutil@empty%
    \def\pgf@anim@marker@shorten@start{0pt}%
  \else%
    {%
      \pgfsetarrowsstart{#1}%
      \pgf@anim@prep@marker@arrow\pgf@start@tip@sequence\pgf@anim@marker@id\pgf@anim@marker@shorten%
      \global\let\pgf@anim@marker@id@start\pgf@anim@marker@id%
      \global\let\pgf@anim@temp\pgf@anim@marker@shorten%
    }%
    \let\pgf@anim@marker@shorten@start\pgf@anim@temp%
  \fi%
}%

\def\pgf@anim@prepare@arrow@end#1{%
  \def\pgf@anim@temp{#1}%
  \ifx\pgf@anim@temp\pgfutil@empty%
    \let\pgf@anim@marker@id@end\pgfutil@empty%
    \def\pgf@anim@marker@shorten@end{0pt}%
  \else%
    {%
      \pgfsetarrowsend{#1}%
      \pgf@anim@prep@marker@arrow\pgf@end@tip@sequence\pgf@anim@marker@id\pgf@anim@marker@shorten%
      \global\let\pgf@anim@marker@id@end\pgf@anim@marker@id%
    }%
    \let\pgf@anim@marker@shorten@end\pgf@anim@marker@shorten%
  \fi%
}%



\def\pgf@anim@prep@marker@arrow#1#2#3{%
  {%
    \let\pgf@arrow@handle\pgf@anim@marker@id@test%
    \let\pgf@arrow@handle@dot\relax%
    \global\let\pgf@anim@marker@id@list\pgfutil@empty%
    #1%
  }%
  \expandafter\let\expandafter#2\csname pgfanim@marker@cache@\pgf@anim@marker@id@list\endcsname%
  \expandafter\let\expandafter#3\csname pgfanim@marker@cachel@\pgf@anim@marker@id@list\endcsname%
  \ifx#2\relax%
    \pgf@relevantforpicturesizefalse%
    \pgfinterruptpath%
      \pgf@arrow@compute@shortening{#1}%
      \xdef#3{\the\pgf@xa}%
      {%
        \let\pgf@arrow@handle\pgf@anim@drawer@marker
        \let\pgf@arrow@handle@dot\relax%
        \pgfsys@marker@declare#2{%
          \pgftransformxshift{-\pgf@xb}%
          \pgftransformxshift{\pgf@xa}%
          #1%
        }%
      }%
    \endpgfinterruptpath%
    \expandafter\global\expandafter\let\csname pgfanim@marker@cache@\pgf@anim@marker@id@list\endcsname#2%
    \expandafter\global\expandafter\let\csname pgfanim@marker@cachel@\pgf@anim@marker@id@list\endcsname#3%
  \fi%
}%

\def\pgf@anim@marker@id@test#1#2{%
  \pgfarrows@getid{#1}{#2}%
  \expandafter\expandafter\expandafter\pgf@arrow@drawer@shift\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
  \xdef\pgf@anim@marker@id@list{\pgf@anim@marker@id@list:\pgf@arrow@id\ifpgfarrowswap s\else n\fi\pgfarrows@slant w\the\pgf@xc}%
}%

\def\pgf@anim@drawer@marker#1#2{%
  {%
    \pgfarrows@getid{#1}{#2}%
    \expandafter\expandafter\expandafter\pgf@arrow@drawer@shift\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
    \ifdim\pgfarrows@slant pt=0pt%
    \else%
      \pgftransformxslant{\pgfarrows@slant}%
    \fi%
    \ifpgfarrowswap%
      \pgftransformyscale{-1}%
    \fi%
    {%
      \csname pgf@ar@saves@\pgf@arrow@id\endcsname%
      \pgfsys@beginscope%
        \pgf@arrows@color@setup%
        \pgflowlevelsynccm\csname pgf@ar@cache@\pgf@arrow@id\endcsname%
      \pgfsys@endscope%
    }%
  \expandafter}%
  \expandafter\pgftransformxshift\expandafter{\the\pgf@xc}%
}%











\def\pgfanim@parse@type@none#1{%
  \pgfsysanimvalnone%
}%


\def\pgfanim@parse@type@scalar#1{%
  \pgfmathparse{#1}%
  \expandafter\pgfsysanimvalscalar\expandafter{\pgfmathresult}%
}%



\def\pgfanim@parse@type@dimension#1{%
  \pgfmathparse{#1}%
  \expandafter\pgfsysanimvaldimension\expandafter{\pgfmathresult pt}%
}%




\def\pgfanim@parse@type@mapped#1{%
  {%
    \expandafter\let\expandafter\pgf@temp\csname pgf@anim@map@#1\endcsname\relax%
    \ifx\pgf@temp\relax%
      \pgferror{Value '#1' not allowed for an animation for this attribute}%
      \let\pgf@temp\pgfutil@empty%
    \fi%
  \expandafter}%
  \expandafter\pgfsysanimvaltext\expandafter{\pgf@temp}%
}%



\def\pgfanim@parse@type@color#1{%
  \pgfsysanimvalcolor{#1}%
}%



\def\pgfanim@parse@type@path#1{%
  {%
    \pgfsyssoftpath@getcurrentpath\pgfanim@save@path%
    \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
    #1%
    \pgfsyssoftpath@getcurrentpath\pgfanim@the@path%
    \pgfprocessround{\pgfanim@the@path}{\pgfanim@the@path}%
    \global\let\pgfanim@the@path\pgfanim@the@path%
    \pgfsyssoftpath@setcurrentpath\pgfanim@save@path%
  }%
  \expandafter\pgfanim@parse@type@softpath\expandafter{\pgfanim@the@path}%
}%



\def\pgfanim@parse@type@softpath#1{%
  {%
    \def\pgf@anim@path{#1}%
    \pgf@worryfalse%
    \pgf@xb=\pgf@anim@marker@extra@shorten@start%
    \advance\pgf@xb by\pgf@anim@marker@shorten@start%
    \pgf@xc=\pgf@anim@marker@extra@shorten@end%
    \advance\pgf@xc by\pgf@anim@marker@shorten@end%
    \ifdim\pgf@xb=0pt\else\pgf@worrytrue\fi%
    \ifdim\pgf@xc=0pt\else\pgf@worrytrue\fi%
    \ifpgf@worry%
      \edef\pgf@path@shortening@distance@end{\the\pgf@xc}%
      \edef\pgf@path@shortening@distance@start{\the\pgf@xb}%
      \pgf@anim@shorten@path%
    \fi%
  \expandafter}%
  \expandafter\pgfsysanimvalpath\expandafter{\pgf@anim@path}%
}%


\def\pgf@anim@shorten@path{%
  \pgf@precise@shorteningfalse%
  \let\pgf@path@shortening@distance\pgf@path@shortening@distance@end%
  \pgfprocesssplitpath{\pgf@anim@path}%
  \pgfprocesssplitsubpath{\pgfprocessresultpathsuffix}%
  \expandafter\pgf@parse@end\pgfprocessresultsubpathsuffix\pgf@stop\pgf@stop\pgf@stop%
  \pgf@prep@end%
  \ifdim\pgf@path@shortening@distance=0pt\else\pgf@do@shorten@end\fi%
  \let\pgf@path@shortening@distance\pgf@path@shortening@distance@start%
  \expandafter\pgf@parse@start\pgfprocessresultpathsuffix\pgf@stop\pgf@stop\pgf@stop%
  \pgf@prep@start%
  \ifdim\pgf@path@shortening@distance=0pt\else\pgf@do@shorten@start\fi%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgf@anim@path%
  \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathprefix\pgfprocessresultpathsuffix}%
}%




\def\pgfanim@parse@type@point#1{%
  \pgf@process{#1}%
  \pgf@protocolanimsizes\pgf@x\pgf@y%
  \expandafter\expandafter\expandafter\pgfsysanimvaltranslate\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgf@x\expandafter}\expandafter{\the\pgf@y}%
}%



\def\pgfanim@parse@type@scaling#1{%
  \pgfutil@in@{,}{#1}%
  \ifpgfutil@in@%
    \pgfanim@unpack@comma#1\pgf@stop%
  \else%
    \pgfmathparse{#1}%
    \expandafter\pgfsysanimvalscale\expandafter{\pgfmathresult}{\pgfmathresult}%
  \fi%
}%
\def\pgfanim@unpack@comma#1,#2\pgf@stop{%
  \pgfmathsetmacro{\pgf@anim@temp@x}{#1}%
  \pgfmathsetmacro{\pgf@anim@temp@y}{#2}%
  \expandafter\expandafter\expandafter\pgfsysanimvalscale\expandafter\expandafter\expandafter{\expandafter\pgf@anim@temp@x\expandafter}\expandafter{\pgf@anim@temp@y}%
}%




\def\pgfanim@parse@type@viewbox#1{%
  {%
    \pgfanim@unpack@viewbox#1%
    \xdef\pgf@anim@caller{\noexpand\pgfsysanimvalviewbox{\the\pgf@x}{\the\pgf@y}{\the\pgf@xa}{\the\pgf@ya}}%
  }%
  \pgf@anim@caller%
}%
\def\pgfanim@unpack@viewbox#1#2{%
  \pgfpointtransformed{#2}%
  \pgf@xa\pgf@x%
  \pgf@ya\pgf@y%
  \pgfpointtransformed{#1}%
  \ifdim\pgf@xa<\pgf@x%
    \pgf@xb=\pgf@x%
    \pgf@x=\pgf@xa%
    \pgf@xa=\pgf@xb%
  \fi%
  \ifdim\pgf@ya<\pgf@y%
    \pgf@yb=\pgf@y%
    \pgf@y=\pgf@ya%
    \pgf@ya=\pgf@yb%
  \fi%
}%





\def\pgfanim@parse@type@dash#1{\pgfanim@parse@type@dash@#1}%
\def\pgfanim@parse@type@dash@#1#2{%
  \def\pgf@temp{}%
  \def\pgf@next{\pgf@strip}%
  \pgf@strip#1{pgf@stop}%
  \expandafter\pgfsysanimvaldash\expandafter{\pgf@temp}{#2}%
}%






\def\pgf@protocolanimsizes#1#2{%
  \edef\pgf@temp{\noexpand\pgf@anim@handle@point{\the#1}{\the#2}}%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@protocolanim@list\expandafter\expandafter\expandafter{\expandafter\pgf@protocolanim@list\pgf@temp}%
}%
\def\pgf@protocolanimsizes@direct#1#2{%
  \expandafter\def\expandafter\pgf@protocolanim@list\expandafter{\pgf@protocolanim@list\pgf@anim@handle@point{#1}{#2}}%
}%
\let\pgf@protocolanim@list\pgfutil@empty

\def\pgf@animation@check@translate{%
  \ifx\pgf@protocolanim@list\pgfutil@empty%
  \else%
    \expandafter\expandafter\expandafter\pgf@animation@check@translate@\expandafter\expandafter\expandafter{\expandafter\pgf@protocolanim@list\expandafter}\expandafter{\pgf@anim@saved@transform}%
  \fi%
}%
\let\pgf@animation@check@motion\pgf@animation@check@translate

\def\pgf@animation@check@translate@#1#2{%
  \pgfsys@attach@to@id\pgf@anim@whom@id\pgf@anim@whom@type{%
    \pgf@size@hookedtrue%
    {%
      #2%
      \pgf@pt@x0pt%
      \pgf@pt@y0pt%
      \pgf@picmaxx=-16000pt\relax%
      \pgf@picminx=16000pt\relax%
      \pgf@picmaxy=-16000pt\relax%
      \pgf@picminy=16000pt\relax%
      #1%
      \edef\pgf@temp{{\the\pgf@picminx}{\the\pgf@picminy}{\the\pgf@picmaxx}{\the\pgf@picmaxy}}%
      \expandafter%
    }\expandafter%
    \def\expandafter\pgf@temp\expandafter{\pgf@temp}%
    \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@path@size@hook\expandafter\expandafter\expandafter{%
      \expandafter\pgf@path@size@hook\expandafter\pgf@anim@bb\pgf@temp}%
  }{}%
}%
\def\pgf@anim@handle@point#1#2{%
  \pgf@x#1\pgf@y#2%
  \pgf@pos@transform\pgf@x\pgf@y%
  \ifdim\pgf@x<\pgf@picminx\pgf@picminx\pgf@x\fi%
  \ifdim\pgf@x>\pgf@picmaxx\pgf@picmaxx\pgf@x\fi%
  \ifdim\pgf@y<\pgf@picminy\pgf@picminy\pgf@y\fi%
  \ifdim\pgf@y>\pgf@picmaxy\pgf@picmaxy\pgf@y\fi%
}%

\newdimen\pgf@anim@dim

\def\pgf@anim@bb#1#2#3#4{%
  \pgf@anim@dim\pgf@size@hook@x%
  \advance\pgf@anim@dim by#1\relax%
  \ifdim\pgf@anim@dim<\pgf@picminx\global\pgf@picminx\pgf@anim@dim\fi%
  \pgf@anim@dim\pgf@size@hook@x%
  \advance\pgf@anim@dim by#3\relax%
  \ifdim\pgf@anim@dim>\pgf@picmaxx\global\pgf@picmaxx\pgf@anim@dim\fi%
  \pgf@anim@dim\pgf@size@hook@y%
  \advance\pgf@anim@dim by#2\relax%
  \ifdim\pgf@anim@dim<\pgf@picminy\global\pgf@picminy\pgf@anim@dim\fi%
  \pgf@anim@dim\pgf@size@hook@y%
  \advance\pgf@anim@dim by#4\relax%
  \ifdim\pgf@anim@dim>\pgf@picmaxy\global\pgf@picmaxy\pgf@anim@dim\fi%
}%

\def\pgf@anim@save@transform#1{%
  \def\pgf@anim@saved@transform{#1}%
}%
\let\pgf@anim@saved@transform\pgfutil@empty%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleanimations.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulebending.code.tex ====

\ProvidesFileRCS{pgfmodulebending.code.tex}



\usepgfmodule{nonlineartransformations}%
\usepgflibrary{curvilinear}%



\pgfkeys{
  /pgf/arrow keys/flex/.code=\pgfarrowsaddtooptions{\pgf@arrows@the@rigidity#1pt\let\pgf@arrow@flex@mode\pgf@arrow@mode@is@flex},
  /pgf/arrow keys/flex/.default=1,
  /pgf/arrow keys/flex'/.code=\pgfarrowsaddtooptions{\pgf@arrows@the@rigidity#1pt\let\pgf@arrow@flex@mode\pgf@arrow@mode@is@flex@prime},
  /pgf/arrow keys/flex'/.default=1,
  /pgf/arrow
  keys/bend/.code=\pgfarrowsaddtooptions{\let\pgf@arrow@flex@mode\pgf@arrow@mode@is@bend},
}%


\def\pgf@arrow@mode@is@flex{1}%
\def\pgf@arrow@mode@is@flex@prime{2}%
\def\pgf@arrow@mode@is@bend{3}%

\newdimen\pgf@arrows@the@rigidity



\def\pgf@prep@curveend{
  \pgftransformreset%
  \pgfsetcurvilinearbeziercurve{\pgfpointlastonpath}{\pgfpointsecondlastonpath}{\pgfpointthirdlastonpath}{\pgfpointfourthlastonpath}
}%


\def\pgf@do@shorten@curvedend{%
  \expandafter\expandafter\expandafter\pgf@do@shorten@curvedend@unpack\expandafter\pgfpointfourthlastonpath\pgfpointthirdlastonpath%
}%
\def\pgf@do@shorten@curvedend@unpack\pgfqpoint#1#2\pgfqpoint#3#4{%
  \pgf@process{\pgfcurvilineardistancetotime{\pgf@path@shortening@distance}}%
  \pgfpointcurveattime{\pgf@x}{\pgfpointlastonpath}{\pgfpointsecondlastonpath}{\pgfpointthirdlastonpath}{\pgfpointfourthlastonpath}%
  \pgf@xb#3%
  \pgf@yb#4%
  \pgf@xb\pgf@time@t\pgf@xb%
  \pgf@yb\pgf@time@t\pgf@yb%
  \advance\pgf@xb by\pgf@time@s\pgf@xc%
  \advance\pgf@yb by\pgf@time@s\pgf@yc%
  \edef\pgfprocessresultsubpathsuffix{%
    \expandafter\noexpand\pgfsubpathfourthlasttoken{#1}{#2}%
    \noexpand\pgfsyssoftpath@curvetosupportatoken{\the\pgf@xb}{\the\pgf@yb}%
    \noexpand\pgfsyssoftpath@curvetosupportbtoken{\the\pgf@xa}{\the\pgf@ya}%
    \noexpand\pgfsyssoftpath@curvetotoken{\the\pgf@x}{\the\pgf@y}}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgfprocessresultpathsuffix%
  \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultsubpathprefix\pgfprocessresultsubpathsuffix}%
}%


\def\pgf@do@draw@curvedend{%
  \pgf@do@draw@curved\pgf@end@tip@sequence%
}%

\def\pgf@do@draw@curved#1{%
  {%
    \pgftransformreset%
    \pgf@xb\pgf@arrow@tip@total@length%
    \let\pgf@arrow@handle\pgf@draw@curved%
    \let\pgf@arrow@handle@dot\relax%
    #1%
  }%
}%

\def\pgf@draw@curved#1#2{%
  {%
    \pgfarrows@getid{#1}{#2}%
    \expandafter\expandafter\expandafter\pgf@arrow@drawer@rigid@shift\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
    \expandafter\let\expandafter\pgf@arrow@bending@mode\csname pgf@ar@bending@mode@#1\endcsname%
    \ifx\pgf@arrow@bending@mode\pgfutil@empty\let\pgf@arrow@flex@mode\pgf@arrow@mode@is@flex\fi%
    {%
      \csname pgf@ar@saves@\pgf@arrow@id\endcsname%
      \ifcase\pgf@arrow@flex@mode\relax%
        \expandafter\expandafter\expandafter\pgf@arrow@drawer@rigid\csname pgf@ar@visual@\pgf@arrow@id\endcsname%
      \or%
        \expandafter\expandafter\expandafter\pgf@arrow@drawer@rigid\csname pgf@ar@visual@\pgf@arrow@id\endcsname%
      \or%
        \expandafter\expandafter\expandafter\pgf@arrow@drawer@rigid\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
      \or%
        \pgf@arrow@drawer@bend%
      \fi%
    }%
  \expandafter}%
  \expandafter\pgf@xb\the\pgf@xb%
}%
\def\pgf@falsetext{false}%

\def\pgf@arrow@drawer@rigid@shift#1#2#3{%
  \advance\pgf@xb by#2%
  \pgf@xa\pgf@xb%
  \pgf@x#1%
  \advance\pgf@x by\pgfarrowsep%
  \advance\pgf@xb by-\pgf@x%
}%


\def\pgf@arrow@drawer@bend{%
  \pgftransformnonlinear{\pgf@arrow@bending@mode{\pgf@x}{\pgf@y}}
  \pgftransformscale{-1}%
  \pgftransformxshift{-\pgf@xa}%
  \ifdim\pgfarrows@slant pt=0pt%
  \else%
    \pgftransformxslant{\pgfarrows@slant}%
  \fi%
  \ifpgfarrowswap%
    \pgftransformyscale{-1}%
  \fi%
  {%
    \pgf@relevantforpicturesizefalse%
    \pgfscope%
      \pgf@arrows@color@setup%
      \csname pgf@ar@inst@code@\pgf@arrow@id\endcsname%
    \endpgfscope%
  }%
  \pgf@arrows@bending@hull%
}%

\def\pgf@arrow@drawer@rigid#1#2#3{%
  \pgf@x#1%
  \pgf@y#2%
  \advance\pgf@y by-\pgf@x%
  \pgf@y\pgf@sys@tonumber\pgf@arrows@the@rigidity\pgf@y%
  \advance\pgf@y by\pgf@x%
  \ifdim\pgf@x=\pgf@y%
    \pgf@bending@do@tangent%
  \else%
    \pgf@bending@do@flex%
  \fi%
  \pgf@xc#1%
  \pgf@xc-\pgf@xc%
  \pgftransformxshift{+\pgf@xc}%
  \ifdim\pgfarrows@slant pt=0pt%
  \else%
    \pgftransformxslant{\pgfarrows@slant}%
  \fi%
  \ifpgfarrowswap%
    \pgftransformyscale{-1}%
  \fi%
  \pgfscope%
    \pgf@arrows@color@setup%
    \pgflowlevelsynccm\csname pgf@ar@cache@\pgf@arrow@id\endcsname%
  \endpgfscope%
  \pgf@arrows@rigid@hull%
}%

\def\pgf@bending@do@tangent{%
  \pgf@xb\pgf@xa%
  \advance\pgf@xb by-\pgf@x%
  \pgfcurvilineardistancetotime{\pgf@xb}%
  \pgf@xb\pgf@x%
  \ifdim\pgf@xb=0pt%
    \pgf@bending@possible@degenerate%
  \else%
    \pgf@bending@do@tangent@normal%
  \fi%
  \pgf@ya-\pgf@y%
  \pgfsettransformentries%
    {\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
    {\pgf@sys@tonumber\pgf@ya}{\pgf@sys@tonumber\pgf@x}{\pgf@xc}{\pgf@yc}%
}%

\def\pgf@bending@do@tangent@normal{%
  \pgfpointcurveattime{\pgf@xb}{\pgf@curvilinear@line@a}{\pgf@curvilinear@line@b}{\pgf@curvilinear@line@c}{\pgf@curvilinear@line@d}%
  \pgf@xc\pgf@x%
  \pgf@yc\pgf@y%
  \advance\pgf@xb by-\pgf@xa%
  \advance\pgf@yb by-\pgf@ya%
  \pgf@process{\pgfpointnormalised{\pgf@x=\pgf@xb\pgf@y=\pgf@yb}}
}%

\def\pgf@bending@possible@degenerate{%
  \ifx\pgf@curvilinear@line@a\pgf@curvilinear@line@b%
    \ifx\pgf@curvilinear@line@a\pgf@curvilinear@line@c%
      \let\pgf@ref\pgf@curvilinear@line@d%
    \else
      \let\pgf@ref\pgf@curvilinear@line@c%
    \fi%
    \pgf@process{\pgf@curvilinear@line@a}%
    \pgf@xc\pgf@x%
    \pgf@yc\pgf@y%
    \pgf@process{\pgf@ref}%
    \advance\pgf@x by-\pgf@xc
    \advance\pgf@y by-\pgf@yc
    \pgf@process{\pgfpointnormalised{}}
    \pgf@x-\pgf@x
    \pgf@y-\pgf@y
  \else%
    \pgf@bending@do@tangent@normal%
  \fi%
}%

\def\pgf@bending@do@flex{
  \pgf@xb\pgf@xa%
  \pgf@xc\pgf@xa%
  \advance\pgf@xc by-\pgf@x%
  \advance\pgf@xb by-\pgf@y%
  \pgfcurvilineardistancetotime{\pgf@xc}%
  \pgf@xc\pgf@x%
  \pgfcurvilineardistancetotime{\pgf@xb}%
  \pgf@xb\pgf@x%
  \pgf@process{\pgfpointcurveattime{\pgf@xc}{\pgf@curvilinear@line@a}{\pgf@curvilinear@line@b}{\pgf@curvilinear@line@c}{\pgf@curvilinear@line@d}}%
  \pgf@xc\pgf@x\pgf@yc\pgf@y%
  \pgf@process{\pgfpointcurveattime{\pgf@xb}{\pgf@curvilinear@line@a}{\pgf@curvilinear@line@b}{\pgf@curvilinear@line@c}{\pgf@curvilinear@line@d}}%
  \pgf@xb\pgf@x\pgf@yb\pgf@y%
  \pgftransformarrow{\pgfqpoint{\pgf@xb}{\pgf@yb}}{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
}%







\def\pgf@arrows@bending@hull{%
  \ifpgf@relevantforpicturesize%
    \expandafter\let\expandafter\pgf@temp\csname pgf@ar@hull@\pgf@arrow@id\endcsname%
    \ifx\pgf@temp\pgfutil@empty\else%
      \let\pgf@arrow@hull@point\pgf@arrow@bending@hull@point@first%
      \pgf@temp%
      \pgf@arrow@bending@update@bb%
    \fi%
  \fi%
}%

\def\pgf@arrow@bending@hull@point@first#1#2{%
  \pgfpointtransformednonlinear{\pgfqpoint{#1}{#2}}%
  \pgf@xa\pgf@x\pgf@xb\pgf@x%
  \pgf@ya\pgf@y\pgf@yb\pgf@y%
  \let\pgf@arrow@hull@point\pgf@arrow@bending@hull@point@other%
}%
\def\pgf@arrow@bending@hull@point@other#1#2{%
  \pgfpointtransformednonlinear{\pgfqpoint{#1}{#2}}%
  \ifdim\pgf@x<\pgf@xa\pgf@xa\pgf@x\else\ifdim\pgf@x>\pgf@xb\pgf@xb\pgf@x\fi\fi%
  \ifdim\pgf@y<\pgf@ya\pgf@ya\pgf@y\else\ifdim\pgf@y>\pgf@yb\pgf@yb\pgf@y\fi\fi%
}%

\def\pgf@arrow@bending@update@bb{%
  \ifdim\pgf@picmaxx=-16000pt\relax%
    \global\pgf@picminx\pgf@xa%
    \global\pgf@picmaxx\pgf@xb%
    \global\pgf@picminy\pgf@ya%
    \global\pgf@picmaxy\pgf@yb%
  \else%
    \ifdim\pgf@xa<\pgf@picminx\global\pgf@picminx\pgf@xa\fi%
    \ifdim\pgf@ya<\pgf@picminy\global\pgf@picminy\pgf@ya\fi%
    \ifdim\pgf@xb>\pgf@picmaxx\global\pgf@picmaxx\pgf@xb\fi%
    \ifdim\pgf@yb>\pgf@picmaxy\global\pgf@picmaxy\pgf@yb\fi%
  \fi%
}%







\def\pgf@prep@curvedstart{
  \pgftransformreset%
  \pgfsetcurvilinearbeziercurve{\pgfpointfirstonpath}{\pgfpointsecondonpath}{\pgfpointthirdonpath}{\pgfpointfourthonpath}%
}%


\def\pgf@do@shorten@curvedstart{%
  \expandafter\expandafter\expandafter\pgf@do@shorten@curvedstart@unpack\expandafter\pgfpointthirdonpath\pgfpointfourthonpath%
}%
\def\pgf@do@shorten@curvedstart@unpack\pgfqpoint#1#2\pgfqpoint#3#4{%
  \pgf@process{\pgfcurvilineardistancetotime{\pgf@path@shortening@distance}}%
  \pgfpointcurveattime{\pgf@x}{\pgfpointfirstonpath}{\pgfpointsecondonpath}{\pgfpointthirdonpath}{\pgfpointfourthonpath}%
  \pgf@xb#1%
  \pgf@yb#2%
  \pgf@xb\pgf@time@t\pgf@xb%
  \pgf@yb\pgf@time@t\pgf@yb%
  \advance\pgf@xb by\pgf@time@s\pgf@xc%
  \advance\pgf@yb by\pgf@time@s\pgf@yc%
  \edef\pgfpointfirstonpath{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \edef\pgfpointsecondonpath{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \edef\pgfprocessresultpathsuffix{%
    \noexpand\pgfsyssoftpath@movetotoken{\the\pgf@x}{\the\pgf@y}%
    \noexpand\pgfsyssoftpath@curvetosupportatoken{\the\pgf@xa}{\the\pgf@ya}%
    \noexpand\pgfsyssoftpath@curvetosupportbtoken{\the\pgf@xb}{\the\pgf@yb}%
    \noexpand\pgfsyssoftpath@curvetotoken{#3}{#4}%
  }
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgfprocessresultpathsuffix%
  \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathsuffix\pgfsubpathend}%
}%



\def\pgf@do@draw@curvedstart{%
  \pgf@do@draw@curved\pgf@start@tip@sequence%
}%





\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulebending.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduledatavisualization.code.tex ====

\ProvidesFileRCS{pgfmoduledatavisualization.code.tex}

\usepgfmodule{oo,shapes}%
\usepgflibrary{fpu}%




\pgfooclass{data visualization}
{%


  \attribute before survey;%
  \attribute at start survey;%
  \attribute at end survey;%
  \attribute after survey;%
  \attribute before visualization;%
  \attribute at start visualization;%
  \attribute at end visualization;%
  \attribute after visualization;%


  \attribute survey count=1;%

  \attribute number of surveys=1;%


  \attribute data;%


  \attribute prepare datapoint signal;%
  \attribute map datapoint signal;%
  \attribute transform datapoint signal;%
  \attribute visualize datapoint signal;%
  \attribute finish datapoint signal;%
  \attribute survey datapoint signal;%
  \attribute phase signal;%
  \attribute path signal;%
  \attribute direction signal;%
  \attribute style signal;%


  \method data visualization() {
    \pgfoonew{prepare datapoint signal}=new signal()%
    \pgfoonew{map datapoint signal}=new signal()%
    \pgfoonew{transform datapoint signal}=new signal()%
    \pgfoonew{visualize datapoint signal}=new signal()%
    \pgfoonew{finish datapoint signal}=new signal()%
    \pgfoonew{survey datapoint signal}=new signal()%
    \pgfoonew{phase signal}=new signal()%
    \pgfoonew{path signal}=new signal()%
    \pgfoonew{direction signal}=new signal()%
    \pgfoonew{style signal}=new signal()%
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeyslet{/pgf/data visualization/obj}\pgf@dv@me
  }%

  \def\pgfdvbeforesurvey{1}%
  \def\pgfdvbeginsurvey{2}%
  \def\pgfdvendsurvey{3}%
  \def\pgfdvaftersurvey{4}%
  \def\pgfdvbeforevisualization{5}%
  \def\pgfdvbeginvisualization{6}%
  \def\pgfdvendvisualization{7}%
  \def\pgfdvaftervisualization{8}%

  \def\pgfdvpathmovetotoken{5}%
  \def\pgfdvpathlinetotoken{6}%
  \def\pgfdvdirectionfromtoken{7}%
  \def\pgfdvdirectiontotoken{8}%
  \def\pgfdvdirectionattoken{9}%

  \method connect(#1,#2,#3) {
    \pgfoovalueof{#3}.connect(#1,#2)
  }%

  \method add data(#1) {
    \pgf@dv@stripped@add#1\pgf@stop
  }%
  \def\pgf@dv@stripped@add#1\pgf@stop{%
    \pgfooappend{data}{#1}%
  }%


  \method before survey(#1) {
    \pgfooappend{before survey}{#1}
  }%
  \method at start survey(#1) {
    \pgfooappend{at start survey}{#1}
  }%
  \method before visualization(#1) {
    \pgfooappend{before visualization}{#1}
  }%
  \method at start visualization(#1) {
    \pgfooappend{at start visualization}{#1}
  }%

  \method at end survey(#1) {
    \pgfooprefix{at end survey}{#1}
  }%
  \method after survey(#1) {
    \pgfooprefix{after survey}{#1}
  }%
  \method at end visualization(#1) {
    \pgfooprefix{at end visualization}{#1}
  }%
  \method after visualization(#1) {
    \pgfooprefix{after visualization}{#1}
  }%


  \method prepare signal macros() {
    \pgfooget{prepare datapoint signal}\pgf@signalpreparedatapoint
    \pgfooget{map datapoint signal}\pgf@signalmapdatapoint
    \pgfooget{transform datapoint signal}\pgf@signaltransformdatapoint
    \pgfooget{visualize datapoint signal}\pgf@signalvisualizedatapoint
    \pgfooget{finish datapoint signal}\pgf@signalfinishdatapoint
    \pgfooget{survey datapoint signal}\pgf@signalsurveydatapoint
    \pgfooget{phase signal}\pgf@signalphase
    \pgfooget{path signal}\pgf@signalpath
    \pgfooget{direction signal}\pgf@signaldirection
    \pgfooget{style signal}\pgf@signalstyle
  }%


  \method survey() {
    \let\pgfdatapoint=\pgfdatapoint@surveyphase%
    \pgfoothis.prepare signal macros()
    \pgfooset{survey count}{1}
    \pgfutil@loop
      \pgf@signalphase.emit(\pgfdvbeforesurvey)
      \pgfoovalueof{before survey}%
      \pgf@signalphase.emit(\pgfdvbeginsurvey)
      \pgfoovalueof{at start survey}
      \pgfoovalueof{data}%
      \pgfoovalueof{at end survey}
      \pgf@signalphase.emit(\pgfdvendsurvey)%
      \pgfoovalueof{after survey}
      \pgf@signalphase.emit(\pgfdvaftersurvey)
      \c@pgf@counta=\pgfoovalueof{survey count}\relax
      \c@pgf@countb=\pgfoovalueof{number of surveys}\relax
    \ifnum\c@pgf@counta<\c@pgf@countb
      \advance\c@pgf@counta by1\relax
      \pgfooeset{survey count}{\the\c@pgf@counta}
    \pgfutil@repeat
  }%

  \method get survey count(#1) {
    \pgfooget{survey count}{#1}
  }%

  \method do an additional survey() {
    \c@pgf@counta=\pgfoovalueof{number of surveys}\relax
    \advance\c@pgf@counta by1\relax
    \pgfooeset{number of surveys}{\the\c@pgf@counta}
  }%

  \method visualize() {
    \let\pgfdatapoint=\pgfdatapoint@visualizationphase%
    \pgfoothis.prepare signal macros()
    \pgf@signalphase.emit(\pgfdvbeforevisualization)%
    \pgfoovalueof{before visualization}
    \pgf@signalphase.emit(\pgfdvbeginvisualization)%
    \pgfoovalueof{at start visualization}
    \pgfoovalueof{data}%
    \pgfoovalueof{at end visualization}
    \pgf@signalphase.emit(\pgfdvendvisualization)%
    \pgfoovalueof{after visualization}
    \pgf@signalphase.emit(\pgfdvaftervisualization)%
  }%
}%


\pgfkeys{/data point/.unknown/.code={%
    \pgfkeyssetvalue{/data point/\pgfkeyscurrentname}{#1}
  },
}%





\def\pgfdatapoint@surveyphase{%
  \pgf@signalpreparedatapoint.emit()%
  \pgf@signalmapdatapoint.emit()%
  \pgf@signalsurveydatapoint.emit()%
}%

\def\pgfdatapoint@visualizationphase{%
  \pgf@signalpreparedatapoint.emit()%
  \pgfdvmapdatapointtocanvas%
  \pgfkeysifdefined{/data point/name}
  {%
    \pgfcoordinate{\pgfkeysvalueof{/data point/name}}{\pgfpointdvdatapoint}%
  }{}%
  \pgf@signalvisualizedatapoint.emit()%
  \pgf@signalfinishdatapoint.emit()%
}%




\def\pgfdvmapdatapointtocanvas{%
  {%
    \pgfpointdvlocaldatapoint
    \expandafter%
  }%
  \edef\pgf@marshal{%
    \noexpand\pgfkeyssetvalue{/data point/canvas x}{\the\pgf@x}
    \noexpand\pgfkeyssetvalue{/data point/canvas y}{\the\pgf@y}
  }%
  \pgf@marshal%
}%


\def\pgfpointdvdatapoint{%
  \pgfqpoint{\pgfkeysvalueof{/data point/canvas x}}{\pgfkeysvalueof{/data point/canvas y}}%
}%

\def\pgfpointdvlocaldatapoint{%
  {%
    \pgf@signalmapdatapoint.emit()%
    \pgftransformreset%
    \pgf@signaltransformdatapoint.emit()%
    \pgfpointtransformed{\pgfpointorigin}%
  }%
}%




\newif\ifpgfdvhandled

\def\pgfdv@generic#1#2#3{%
  {%
    \pgfdvhandledfalse%
    \pgf@signalmapdatapoint.emit()%
    #1.emit(#2)%
    \ifpgfdvhandled%
    \else%
      \pgf@process{%
        \pgftransformreset%
        \pgf@signaltransformdatapoint.emit()%
        \pgfpointtransformed{\pgfpointorigin}%
      }%
      #3{}%
    \fi%
  }%
}%


\def\pgfpathdvmoveto{%
  \pgfdv@generic{\pgf@signalpath}{\pgfdvpathmovetotoken}{\pgfpathmoveto}
}%


\def\pgfpathdvlineto{%
  \pgfdv@generic{\pgf@signalpath}{\pgfdvpathlinetotoken}{\pgfpathlineto}
}%




\def\pgfpointdvdirection#1#2{%
  {
    {
      #1
      \pgfdv@generic{\pgf@signaldirection}{\pgfdvdirectionfromtoken}{\xdef\pgf@dv@from{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}
    }
    {
      #2
      \pgfdv@generic{\pgf@signaldirection}{\pgfdvdirectiontotoken}{\xdef\pgf@dv@to{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}
    }
    {\pgfdv@generic{\pgf@signaldirection}{\pgfdvdirectionattoken}{%
        \pgf@process{
          \pgfpointnormalised{%
            \pgfpointdiff{\pgf@dv@from}{\pgf@dv@to}
          }
        }}}
  }
}%









\def\pgfdata{\pgfutil@ifnextchar[{\pgf@datagroup@data@opt}{\pgf@datagroup@data@opt[]}}%
\def\pgf@datagroup@data@opt[#1]{%
  \begingroup%
    \pgfkeys{/pgf/data/.cd,/pgf/every data/.try,#1}%
    \pgfkeysgetvalue{/pgf/data/continue code}\pgf@dv@cont@code%
    \global\let\pgf@dv@cont@code\pgf@dv@cont@code%
    \pgfkeysgetvalue{/pgf/data/use group}\pgf@dv@use@group%
    \ifx\pgf@dv@use@group\pgfutil@empty%
      \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data(\pgf@do@data{#1})}%
      \expandafter\pgf@datagroup@data@opt@cont%
    \else%
      \expandafter\ifx\csname pgf@dv@group@@\pgf@dv@use@group\endcsname\relax%
        \pgferror{Undefined data group '\pgf@dv@use@group'}%
      \else%
        {%
          \pgfkeys{/pgf/data/define group/.code=}%
          \csname pgf@dv@group@@\pgf@dv@use@group\endcsname%
        }%
      \fi%
  \endgroup%
  \expandafter\pgf@dv@cont@code%
      \fi%
}%
\def\pgf@datagroup@data@opt@cont{%
  \pgfkeysgetvalue{/pgf/data/format}\pgf@dv@format%
  \expandafter\let\expandafter\pgf@dv@format@catcodes\csname pgfdv@format@\pgf@dv@format @catcodes\endcsname%
  \ifx\pgf@dv@format@catcodes\relax
    \pgferror{Unknown data format '\pgf@dv@format'}%
  \else%
    \pgfkeysgetvalue{/pgf/data/read from file}\pgf@dv@source%
    \ifx\pgf@dv@source\pgfutil@empty%
      \let\pgf@next\pgf@datagroup@grab@inline%
    \else%
      \let\pgf@next\pgf@datagroup@grab@external%
    \fi%
    \pgf@next%
}%

\def\pgf@datagroup@grab@inline{%
  \pgfutil@ifnextchar\bgroup{%
    \begingroup%
    \catcode`\^^M=\active%
    \pgf@dv@format@catcodes%
    \pgf@datagroup@grab@@inline}%
  {\pgferror{Opening brace expected}}%
}%
\def\pgf@datagroup@grab@external{%
    \fi%
  \endgroup%
  \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data({{{\pgf@datagroup@do@external}}})}%
  \pgf@dv@cont@code%
}%

\def\pgf@dv@do@adddata#1{%
  \pgfkeysgetvalue{/pgf/data/store in group}\pgf@dv@temp%
  \ifx\pgf@dv@temp\pgfutil@empty%
    #1%
  \else%
    \expandafter\pgfutil@g@addto@macro\csname pgf@dv@group@@\pgf@dv@temp\endcsname{#1}%
  \fi%
}%

{\catcode`\^=7 \catcode`\^^M=13
  \gdef\pgf@datagroup@grab@@inline#1{%
    \endgroup%
    \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data({{{\pgf@datagroup@do@inline#1^^M\pgf@@eol}}})}%
    \fi%
  \endgroup%
  \pgf@dv@cont@code%
  }%
}%
\def\pgf@@eol{\pgf@eol}%

\def\pgf@do@data#1#2{%
  \begingroup%
    \pgfkeys{/pgf/data/.cd,/pgf/every data/.try,#1}%
    \pgfkeysgetvalue{/pgf/data/format}\pgf@dv@format%
    \expandafter\let\expandafter\pgf@dv@format@line\csname pgfdv@format@\pgf@dv@format @line\endcsname%
    \expandafter\let\expandafter\pgf@dv@format@emptyline\csname pgfdv@format@\pgf@dv@format @empty\endcsname%
    \csname pgfdv@format@\pgfkeysvalueof{/pgf/data/format}@startup\endcsname%
    #2%
    \csname pgfdv@format@\pgfkeysvalueof{/pgf/data/format}@end\endcsname%
  \endgroup%
}%



\def\pgf@datagroup@do@external{%
  \csname pgfdv@format@\pgfkeysvalueof{/pgf/data/format}@catcodes\endcsname%
  \immediate\openin\r@pgf@reada=\pgfkeysvalueof{/pgf/data/read from file} %
  \ifeof\r@pgf@reada\relax
     \pgferror{Data file '\pgfkeysvalueof{/pgf/data/read from file}' not found}%
  \else
    \pgf@datagroup@readline%
  \fi
  \immediate\closein\r@pgf@reada%
}%

\def\pgf@partext{\par}%
\def\pgf@datagroup@readline{%
  \endlinechar=-1 %
  \immediate\read\r@pgf@reada to \pgf@temp%
  \ifx\pgf@temp\pgf@partext%
    \pgf@dv@format@emptyline%
  \else%
    \ifx\pgf@temp\pgfutil@empty%
      \pgf@dv@format@emptyline%
    \else%
      \expandafter\pgf@dv@format@line\pgf@temp\pgfeol%
    \fi%
  \fi%
  \ifeof\r@pgf@reada\else\expandafter\pgf@datagroup@readline\fi%
}%



\def\pgf@datagroup@do@inline{%
  \pgf@dv@handle@line%
}%

{\catcode`\^=7 \catcode`\^^M=13
\gdef\pgf@dv@handle@line{%
  \pgfutil@ifnextchar^^M{\pgf@dv@format@emptyline\expandafter\pgf@dv@handle@line\pgfutil@gobble}%
  {\pgfutil@ifnextchar\pgf@@eol{\pgfutil@gobble}{\pgf@dv@handle@nonemptyline}}%
}%
\gdef\pgf@dv@handle@nonemptyline#1^^M{%
  \pgf@dv@format@line#1\pgfeol%
  \pgf@dv@handle@line%
}%
}%

\pgfkeys{
  /pgf/data/data visualization obj/.initial=\undefined,
  /pgf/data/format/.initial=table,%
  /pgf/data/read from file/.initial=,
  /pgf/data/inline/.style={read from file=},
  /pgf/data/continue code/.initial=,
  /pgf/data/store in group/.initial=,
  /pgf/data/new group/.code={\expandafter\global\expandafter\let\csname pgf@dv@group@@#1\endcsname\pgfutil@empty},
  /pgf/data/use group/.initial=,
}%







\def\pgfdeclaredataformat#1#2#3#4#5#6#7{%
  \expandafter\def\csname pgfdv@format@#1@catcodes\endcsname{#2}%
  \expandafter\def\csname pgfdv@format@#1@startup\endcsname{#3}%
  \expandafter\def\csname pgfdv@format@#1@line\endcsname#4\pgfeol{#5}%
  \expandafter\def\csname pgfdv@format@#1@empty\endcsname{#6}%
  \expandafter\def\csname pgfdv@format@#1@end\endcsname{#7}%
}%





\pgfdeclaredataformat{TeX code}{}{}{#1}{#1 }{}{}%




\pgfdeclaredataformat{named}{}{}{#1}{\pgf@dv@parse@named#1,\pgf@stop}{}{}%
\def\pgf@dv@parse@named{%
  \pgfutil@ifnextchar\pgf@stop{\pgfdatapoint\pgfutil@gobble}{\pgf@dv@parse@named@}
}%
\def\pgf@dv@parse@named@#1=#2,#3\pgf@stop{%
  \foreach \pgf@dv@temp in {#2} {%
    \def\pgf@dv@tempb{/data point/#1=}%
    \expandafter\expandafter\expandafter\pgfkeys%
    \expandafter\expandafter\expandafter{\expandafter\pgf@dv@tempb\pgf@dv@temp}%
    \pgf@dv@parse@named#3\pgf@stop%
  }
}%






\pgfdeclaredataformat{table}
{} %
{
  \pgfkeysgetvalue{/pgf/data/headline}\pgf@dv@headline
  \pgfkeysgetvalue{/pgf/data/separator}\pgf@dv@separator
  \ifx\pgf@dv@separator\pgfutil@empty
    \let\pgf@dv@separator\space
  \fi
  \ifx\pgf@dv@separator\pgf@dv@spacetext
    \let\pgf@dv@separator\space
  \fi
  \expandafter\def\expandafter\pgf@dv@till@separator%
  \expandafter##\expandafter1\pgf@dv@separator{\pgf@dv@table@handle{##1}}
  \expandafter\def\expandafter\pgf@dv@till@separator@head%
  \expandafter##\expandafter1\pgf@dv@separator{\pgf@dv@head@handle{##1}}
  \ifx\pgf@dv@headline\pgfutil@empty
    \pgfdv@firstlinetrue
  \else
    \pgfdv@firstlinefalse
    \expandafter\pgf@dv@parse@headline\expandafter{\pgf@dv@headline}
  \fi
}
{#1} %
{
  \ifpgfdv@firstline
    \pgfdv@firstlinefalse
    \pgf@dv@parse@headline{#1}
  \else
    {
      \c@pgf@counta=0\relax%
      \def\pgf@marshal{\pgf@dv@parse@table#1}
      \expandafter\expandafter\expandafter\pgf@marshal%
      \expandafter\pgf@dv@separator\expandafter\pgfeol\pgf@dv@separator
      \pgfdatapoint
    }
  \fi
}
{}%
{}%

\newif\ifpgfdv@firstline

\pgfkeys{
  /pgf/data/separator/.initial={,},
  /pgf/data/headline/.initial=
}%
\def\pgf@dv@spacetext{\space}%

\def\pgf@dv@parse@table{%
  \pgfutil@ifnextchar"%
  {\pgferror{csv with quotes not yet implemented}}
  {\pgf@dv@till@separator}
}%
\def\pgf@dv@table@handle#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgfeoltext%
    \let\pgf@next=\relax%
  \else%
    \advance\c@pgf@counta by1\relax%
    \pgfkeysgetvalue{/pgf/data/table/attribute \the\c@pgf@counta}\pgf@dv@target
    \ifx\pgf@dv@target\relax%
      \edef\pgf@dv@target{attribute \the\c@pgf@counta}
      \pgfkeyslet{/pgf/data/table/attribute \the\c@pgf@counta}\pgf@dv@target
    \fi
    \pgfkeyssetvalue{/data point/\pgf@dv@target}{#1}
    \let\pgf@next=\pgf@dv@parse@table%
  \fi%
  \pgf@next%
}%



\def\pgf@dv@parse@headline#1{
  \c@pgf@counta=0\relax%
  \def\pgf@marshal{\pgf@dv@doparse@headline#1}
  \expandafter\expandafter\expandafter\pgf@marshal%
  \expandafter\pgf@dv@separator\expandafter\pgfeol\pgf@dv@separator
}%

\def\pgf@dv@doparse@headline{%
  \pgfutil@ifnextchar"%
  {\pgferror{csv with quotes not yet implemented}}
  {\pgf@dv@till@separator@head}
}%
\def\pgf@dv@head@handle#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgfeoltext%
    \let\pgf@next=\relax%
  \else%
    \advance\c@pgf@counta by1\relax%
    \pgfkeyssetvalue{/pgf/data/table/attribute \the\c@pgf@counta}{#1}
    \let\pgf@next=\pgf@dv@doparse@headline%
  \fi%
  \pgf@next%
}%

\def\pgfeoltext{\pgfeol}%







\def\pgfdvmathenter#1#2{%
  \expandafter\pgfdvmathenter@check\expandafter#1#2\pgfdvmath@end%
}%
\def\pgfdvmathenter@check#1{%
  \pgfutil@ifnextchar @{\pgfdvmath@internal#1}{%
    \pgfutil@ifnextchar ({\pgfdvmath@expression#1}{%
      \pgfutil@ifnextchar !{\pgfdvmath@execute#1}{\pgfdvmath@normal#1}}}%
}%

\def\pgfdvmath@internal#1@#2\pgfdvmath@end{%
  \def#1{#2}%
}%
\def\pgfdvmath@expression#1(#2)#3\pgfdvmath@end{%
  \pgfmathparse{#2}%
  \pgfmathfloatparsenumber{\pgfmathresult}%
  \let#1=\pgfmathresult%
}%
\def\pgfdvmath@execute#1!#2\pgfdvmath@end{%
  #2%
  \let#1=\pgfdvmathvalue%
}%
\def\pgfdvmath@normal#1#2\pgfdvmath@end{%
  \pgfmathfloatparsenumber{#2}%
  \let#1=\pgfmathresult%
}%




\def\pgfdvmathexitbyprinting#1{%
  \pgfmathprintnumber{#1}%
}%




\def\pgfdvmathexitbyscientificformat#1#2{%
  \edef#1{\pgfmathfloatvalueof#2}%
}%




\def\pgfdvmathexitbyserializing#1#2{%
  \edef#1{@#2}%
}%






\def\pgfdvmathadd#1#2#3{%
  \pgfmathfloatadd{#2}{#3}%
  \let#1=\pgfmathresult%
}%
\def\pgfdvmathsub#1#2#3{%
  \pgfmathfloatsubtract{#2}{#3}%
  \let#1=\pgfmathresult%
}%
\def\pgfdvmathmul#1#2#3{%
  \pgfmathfloatmultiply{#2}{#3}%
  \let#1=\pgfmathresult%
}%
\def\pgfdvmathdiv#1#2#3{%
  \pgfmathfloatdivide{#2}{#3}%
  \let#1=\pgfmathresult%
}%


\def\pgfdvmathmulfixed#1#2#3{%
  \pgfmathfloatmultiplyfixed{#2}{#3}%
  \let#1=\pgfmathresult%
}%




\def\pgfdvmathln#1#2{%
  \pgfmathfloatln{#2}%
  \let#1=\pgfmathresult%
}%

\def\pgfdvmathlog#1#2{%
  \pgfmathfloatln{#2}%
  \pgfmathfloatmultiply{\pgfmathresult}{\pgfdvmathalwaysloge}%
  \let#1=\pgfmathresult%
}%

\def\pgfdvmathexp#1#2{%
  \pgfmathfloatexp{#2}%
  \let#1=\pgfmathresult%
}%

\def\pgfdvmathpowten#1#2{%
  \pgfmathfloattofixed{#2}%
  \let\pgf@dv@temp=\pgfmathresult%
  \pgfmathround{\pgf@dv@temp}%
  \let\pgf@dv@temp@round=\pgfmathresult%
  \pgf@x=\pgf@dv@temp@round pt%
  \pgf@x=-\pgf@x%
  \advance\pgf@x by\pgf@dv@temp pt\relax%
  \ifdim\pgf@x>0.0002pt%
    \pgfmathfloatmultiply{#2}{\pgfdvmathalwayslnten}%
    \pgfmathfloatexp{\pgfmathresult}%
  \else
    \ifdim\pgf@x<-0.0002pt%
      \pgfmathfloatmultiply{#2}{\pgfdvmathalwayslnten}%
      \pgfmathfloatexp{\pgfmathresult}%
    \else
      \pgf@x=\pgf@dv@temp@round sp%
      \c@pgf@counta=\pgf@x%
      \pgfmathfloatcreate{1}{1.0}{\the\c@pgf@counta}%
    \fi
  \fi
  \let#1=\pgfmathresult%
}%



\def\pgfdvmathfloor#1#2{%
  \pgfmathifisint{#2}{%
    \let#1=#2%
  }{%
    \pgfmathfloatgetflags#2\c@pgf@counta%
    \ifcase\c@pgf@counta
      \let#1=\pgfdvmathalwayszero%
    \or
      \pgfmathfloatfloor{#2}%
      \let#1=\pgfmathresult%
    \or
      \pgfmathfloatsubtract{\pgfdvmathalwaysone}{#2}%
      \pgfmathfloatfloor{\pgfmathresult}%
      \pgfmathfloatsubtract{\pgfdvmathalwayszero}{\pgfmathresult}%
      \let#1=\pgfmathresult%
    \or\let#1=#2%
    \or\let#1=#2%
    \or\let#1=#2%
    \fi%
  }%
}%



\def\pgfdvmathunaryop#1#2#3{%
  \csname pgfmathfloat#2\endcsname{#3}%
  \let#1=\pgfmathresult%
}%



\def\pgfdvmathbinop#1#2#3#4{%
  \csname pgfmathfloat#2\endcsname{#3}{#4}%
  \let#1=\pgfmathresult%
}%




\def\pgfdvmathifless#1#2#3#4{%
  \pgfmathfloatlessthan{#1}{#2}%
  \ifpgfmathfloatcomparison#3\else#4\fi%
}%







\pgfooclass{linear transformer}
{%


  \attribute attribute;%

  \attribute origin = \pgfpointorigin;%

  \attribute unit vector;%


  \method linear transformer(#1,#2) {
    \pgfooset{attribute}{#1}
    \pgf@process{#2}
    \edef\pgf@temp{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
    \pgfoolet{unit vector}\pgf@temp%
  }%

  \method default connects() {
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,transform,transform datapoint signal)
  }%

  \method set origin(#1) {
    \pgf@process{#1}
    \edef\pgf@temp{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
    \pgfoolet{origin}\pgf@temp%
  }%

  \method transform() {
    \pgfkeysgetvalue{/data point/\pgfoovalueof{attribute}}\pgf@dv@val%
    \ifx\pgf@dv@val\pgfutil@empty%
    \else%
      \ifx\pgf@dv@val\relax%
      \else%
        \pgfdvmathenter{\pgf@dv@math@var}{\pgf@dv@val}%
        \pgfdvmathexitbyscientificformat{\pgf@dv@val}{\pgf@dv@math@var}%
        \pgftransformshift{\pgfoovalueof{origin}}%
        \pgfmathfloatgetexponent\pgf@dv@math@var\c@pgf@counta%
        \ifnum\c@pgf@counta<-3\relax%
        \else%
          \pgftransformshift{\pgfpointscale{\pgf@dv@val}{\pgfoovalueof{unit vector}}}%
        \fi%
      \fi%
    \fi%
  }%
}%



\pgfooclass{interval mapper}
{%


  \attribute in;%

  \attribute out;%

  \attribute trans;%

  \attribute out min;%

  \attribute out min;%

  \attribute trans in min;%

  \attribute scale;%


  \method interval mapper(#1,#2,#3) {
    \pgfooset{in}{#1}
    \pgfooset{out}{#2}
    \def\pgf@temp{#3}%
    \ifx\pgf@temp\pgfutil@empty%
    \else%
      \pgfooset{trans}{%
        #3%
      }%
    \fi%
  }%

  \method default connects() {
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,map,map datapoint signal)
  }%

  \method set interval values(#1,#2,#3,#4) {
    {%
      \pgfdvmathenter{\pgf@in@interval@min}{#1}
      \pgfdvmathenter{\pgf@in@interval@max}{#2}
      \pgfdvmathenter{\pgf@out@interval@min}{#3}
      \pgfdvmathenter{\pgf@out@interval@max}{#4}
      \pgfoolet{out min}{\pgf@out@interval@min}
      \pgfoolet{out max}{\pgf@out@interval@max}
      \pgfdvmathifless{\pgf@in@interval@min}{\pgf@in@interval@max}{%
        \pgfdvmathsub{\pgf@out@diff}{\pgf@out@interval@max}{\pgf@out@interval@min}
        \let\pgfvalue=\pgf@in@interval@min
        \pgfoovalueof{trans}
        \let\pgf@in@interval@min@transformed=\pgfvalue
        \pgfoolet{trans in min}{\pgf@in@interval@min@transformed}%
        \let\pgfvalue=\pgf@in@interval@max
        \pgfoovalueof{trans}
        \let\pgf@in@interval@max@transformed=\pgfvalue
        \pgfdvmathsub{\pgf@diff@in@transformed}{\pgf@in@interval@max@transformed}{\pgf@in@interval@min@transformed}
        \pgfdvmathdiv{\pgf@scale}{\pgf@out@diff}{\pgf@diff@in@transformed}%
        \pgfoolet{scale}{\pgf@scale}%
      }{%
        \pgfoolet{scale}\pgf@dv@no@scale%
      }%
    }%
  }%
  \def\pgf@dv@no@scale{noscale}%

  \method map() {
    \pgfooget{scale}\pgf@dv@scale
    \ifx\pgf@dv@scale\pgfutil@empty%
    \else%
      \pgfkeysgetvalue{/data point/\pgfoovalueof{in}/is min or max}\pgf@dv@is%
      \ifx\pgf@dv@is\pgf@min@text%
        \pgf@dv@set@out@min%
      \else%
        \ifx\pgf@dv@is\pgf@max@text%
          \pgf@dv@set@out@max%
        \else%
          \ifx\pgf@dv@scale\pgf@dv@no@scale%
            \pgf@dv@mapper@goto@mid%
          \else%
            \pgfkeysgetvalue{/data point/\pgfoovalueof{in}/const}\pgf@dv@external@value%
            \ifx\pgf@dv@external@value\relax%
              \pgfkeysgetvalue{/data point/\pgfoovalueof{in}}\pgf@dv@external@value%
            \fi%
            \ifx\pgf@dv@external@value\pgfutil@empty%
              \pgf@dv@mapper@pos@check%
            \else%
              \ifx\pgf@dv@external@value\relax%
                \pgf@dv@mapper@pos@check%
              \else%
                \pgfdvmathenter{\pgfvalue}{\pgf@dv@external@value}%
                \pgf@dv@mapper@trans
              \fi%
            \fi%
          \fi%
        \fi%
      \fi%
    \fi%
  }%

  \def\pgf@dv@set@out@min{%
    \pgfkeyslet{/data point/\pgfoovalueof{out}/is min or max}\pgf@min@text%
    \pgfooget{out min}{\pgf@minmax@temp}%
    \pgf@dv@set@out@now%
  }%
  \def\pgf@dv@set@out@max{%
    \pgfkeyslet{/data point/\pgfoovalueof{out}/is min or max}\pgf@max@text%
    \pgfooget{out max}{\pgf@minmax@temp}%
    \pgf@dv@set@out@now%
  }%
  \def\pgf@dv@set@out@now{%
    \pgfkeysgetvalue{/data point/\pgfoovalueof{out}/offset}\pgf@dv@external@offset%
    \ifx\pgf@dv@external@offset\relax\else%
      \ifx\pgf@dv@external@offset\pgfutil@empty\else%
        \pgfdvmathenter{\pgfvalue}{\pgf@minmax@temp}%
        \pgfdvmathenter{\pgf@dv@offset}{\pgf@dv@external@offset}%
        \pgfdvmathadd{\pgfvalue}{\pgfvalue}{\pgf@dv@offset}
        \pgfdvmathexitbyserializing{\pgf@minmax@temp}{\pgfvalue}%
      \fi
    \fi
    \pgfkeyslet{/data point/\pgfoovalueof{out}}\pgf@minmax@temp%
  }%

  \def\pgf@dv@mapper@trans{
    \pgfooget{trans in min}{\pgf@dv@trans@in@min}%
    \pgfooget{scale}{\pgf@dv@scale}%
    \pgfooget{out min}{\pgf@dv@out@min}%
    \pgfoovalueof{trans}%
    \pgfdvmathsub{\pgfvalue}{\pgfvalue}{\pgf@dv@trans@in@min}%
    \pgfdvmathmul{\pgfvalue}{\pgfvalue}{\pgf@dv@scale}%
    \pgfdvmathadd{\pgfvalue}{\pgfvalue}{\pgf@dv@out@min}%
    \pgfkeysgetvalue{/data point/\pgfoovalueof{out}/offset}\pgf@dv@external@offset%
    \ifx\pgf@dv@external@offset\relax\else%
      \ifx\pgf@dv@external@offset\pgfutil@empty\else%
        \pgfdvmathenter{\pgf@dv@offset}{\pgf@dv@external@offset}%
        \pgfdvmathadd{\pgfvalue}{\pgfvalue}{\pgf@dv@offset}
      \fi
    \fi
    \pgfdvmathexitbyserializing{\pgf@temp}{\pgfvalue}%
    \pgfkeyslet{/data point/\pgfoovalueof{out}}\pgf@temp%
  }%

  \def\pgf@dv@mapper@pos@check{%
    \pgfkeysgetvalue{/data point/\pgfoovalueof{in}/out pos}\pgf@dv@pos@value%
    \ifx\pgf@dv@pos@value\relax\else\if\pgf@dv@pos@value\pgfutil@empty\else%
      \pgfmathsetmacro{\pgf@dv@pos@num}{\pgf@dv@pos@value}%
      \pgfmathsetmacro{\pgf@dv@pos@num@prime}{1-\pgf@dv@pos@num}%
      \pgfooget{out min}{\pgf@out@interval@min}
      \pgfooget{out max}{\pgf@out@interval@max}
      \pgfdvmathmulfixed{\pgf@out@interval@min}{\pgf@out@interval@min}{\pgf@dv@pos@num@prime}
      \pgfdvmathmulfixed{\pgf@out@interval@max}{\pgf@out@interval@max}{\pgf@dv@pos@num}
      \pgfdvmathadd{\pgf@out@val}{\pgf@out@interval@min}{\pgf@out@interval@max}%
      \pgfdvmathexitbyserializing{\pgf@temp}{\pgf@out@val}%
      \pgfkeyslet{/data point/\pgfoovalueof{out}}\pgf@temp%
    \fi\fi%
  }%

  \def\pgf@dv@mapper@goto@mid{%
    \pgfooget{out min}{\pgf@out@interval@min}
    \pgfooget{out max}{\pgf@out@interval@max}
    \pgfdvmathmulfixed{\pgf@out@interval@min}{\pgf@out@interval@min}{.5}
    \pgfdvmathmulfixed{\pgf@out@interval@max}{\pgf@out@interval@max}{.5}
    \pgfdvmathadd{\pgf@out@val}{\pgf@out@interval@min}{\pgf@out@interval@max}%
    \pgfdvmathexitbyserializing{\pgf@temp}{\pgf@out@val}%
    \pgfkeyslet{/data point/\pgfoovalueof{out}}\pgf@temp%
  }%
}%





\newif\ifpgf@dvignore

\pgfooclass{scaling mapper}
{%

  \attribute in;%

  \attribute out;%

  \attribute in range obj;%

  \attribute scaling spec;%

  \attribute spec maps min;%

  \attribute spec maps max;%

  \attribute function;%

  \attribute interval mapper;%

  \attribute range surveyor;%


  \method scaling mapper(#1,#2,#3,#4) {
    \pgfooset{in}{#1}
    \pgfooset{out}{#2}
    \pgfooset{scaling spec}{#3}
    \pgfooset{function}{#4}
    \pgfoonew \pgf@dv@in@range@obj=new interval(,)
    \pgfoolet{in range obj}\pgf@dv@in@range@obj
    \pgfoonew \pgf@dv@range@obj=new range surveyor(#1,\pgf@dv@in@range@obj)
    \pgf@dv@range@obj.default connects()
    \pgfoolet{range surveyor}\pgf@dv@range@obj
    \pgfoonew{interval mapper}=new interval mapper(#1,#2,#4)
    \pgfoovalueof{interval mapper}.default connects()
  }%

  \method default connects() {
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,phase,phase signal)
  }%

  \method get in range interval() {
    \pgfooget{in range obj}\pgfdvinrangeinterval
  }%


  \method get out() {
    \pgfooget{out}\pgfdvout
  }%

  \method get function(#1) {
    \pgfooget{function}#1
  }%

  \method include in value(#1) {
    \pgfoovalueof{range surveyor}.include attribute value({#1})
  }%


  \method set in to(#1) {%
    \edef\pgf@temp{#1}%
    \ifx\pgf@temp\pgf@min@text%
      \pgf@dv@lib@set@mm%
      \let\pgf@dv@value\pgfdvmin%
      \pgfoovalueof{spec maps min}{\pgfkeyslet{/data point/\pgfoovalueof{in}/is min or max}\pgf@min@text}{}%
    \else%
      \ifx\pgf@temp\pgf@max@text%
        \pgf@dv@lib@set@mm%
        \let\pgf@dv@value\pgfdvmax%
        \pgfoovalueof{spec maps min}{\pgfkeyslet{/data point/\pgfoovalueof{in}/is min or max}\pgf@max@text}{}%
      \else%
        \pgfdvmathenter{\pgf@dv@value}{\pgf@temp}%
      \fi%
    \fi%
    \pgfdvmathexitbyserializing{\pgf@dv@serial}{\pgf@dv@value}%
    \pgfkeyslet{/data point/\pgfoovalueof{in}}\pgf@dv@serial%
  }%
  \def\pgf@dv@lib@set@mm{
    \pgfooget{in range obj}\pgfdvinrangeinterval
    \pgfdvinrangeinterval.get min and max()%
  }%


  \method phase(#1) {
    \ifx#1\pgfdvendsurvey
      \pgfoovalueof{in range obj}.get min and max()
      \ifx\pgfdvmin\pgfutil@empty%
      \else%
        \pgfooget{scaling spec}\pgf@temp%
        \expandafter\pgf@lib@dv@parse@scaling\pgf@temp\pgf@stop%
        \pgfoovalueof{interval mapper}.set interval values(%
          \pgf@lib@dv@min,\pgf@lib@dv@max,%
          \pgf@lib@dv@min@at,\pgf@lib@dv@max@at)
      \fi
    \fi
  }%


  \def\pgf@lib@dv@parse@scaling#1 at#2and #3 at#4\pgf@stop{%
    \def\pgf@lib@dv@min{#1}%
    \pgfdvmathenter{\pgf@lib@dv@min@at@mv}{#2}
    \def\pgf@lib@dv@max{#3}%
    \pgfdvmathenter{\pgf@lib@dv@max@at@mv}{#4}
    \ifx\pgf@lib@dv@min\pgf@min@text%
      \let\pgf@lib@dv@min@mv\pgfdvmin
      \pgfoolet{spec maps min}\pgfutil@firstoftwo%
    \else
      \pgfdvmathenter{\pgf@lib@dv@min@mv}{\pgf@lib@dv@min}
      \pgfoolet{spec maps min}\pgfutil@secondoftwo%
    \fi
    \ifx\pgf@lib@dv@max\pgf@max@text%
      \let\pgf@lib@dv@max@mv\pgfdvmax
      \pgfoolet{spec maps max}\pgfutil@firstoftwo%
    \else
      \pgfdvmathenter{\pgf@lib@dv@max@mv}{\pgf@lib@dv@max}
      \pgfoolet{spec maps max}\pgfutil@secondoftwo%
    \fi
    \pgfdvmathexitbyserializing{\pgf@lib@dv@min}{\pgf@lib@dv@min@mv}
    \pgfdvmathexitbyserializing{\pgf@lib@dv@min@at}{\pgf@lib@dv@min@at@mv}
    \pgfdvmathexitbyserializing{\pgf@lib@dv@max}{\pgf@lib@dv@max@mv}
    \pgfdvmathexitbyserializing{\pgf@lib@dv@max@at}{\pgf@lib@dv@max@at@mv}
  }%
  \def\pgf@min@text{min}%
  \def\pgf@max@text{max}%
}%






\pgfooclass{range surveyor}
{%

  \attribute attribute;%

  \attribute interval obj;%


  \method range surveyor(#1,#2) {
    \pgfooset{attribute}{#1}
    \pgfoolet{interval obj}#2
  }%

  \method default connects() {
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,survey,survey datapoint signal)
  }%

  \method include attribute value(#1) {
    \pgf@dv@assign@val@stripped#1\pgf@stop%
    \pgfoovalueof{interval obj}.adjust(\pgf@dv@range@surv)
  }%
  \def\pgf@dv@assign@val@stripped#1\pgf@stop{%
    \def\pgf@dv@val{#1}
  }%

  \method survey() {
    \let\pgfdvsub\pgf@dv@range@surv@sub
    \pgfdvsub{}%
    \pgfkeysvalueof{/data point/\pgfoovalueof{attribute}/sub attributes}
  }%

  \def\pgf@dv@range@surv@sub#1{
    \pgfkeysgetvalue{/data point/\pgfoovalueof{attribute}#1}\pgf@dv@val%
    \ifx\pgf@dv@val\relax%
    \else%
      \edef\pgf@dv@val{\pgf@dv@val}%
      \ifx\pgf@dv@val\pgfutil@empty%
      \else%
        \pgfoovalueof{interval obj}.adjust(\pgf@dv@range@surv)%
      \fi%
    \fi%
  }%

  \def\pgf@dv@range@surv{%
    \pgfdvmathenter{\pgf@dv@value}{\pgf@dv@val}%
    \ifx\pgfdvmin\pgfutil@empty%
      \let\pgfdvmin\pgf@dv@value%
    \else%
      \pgfdvmathifless{\pgf@dv@value}{\pgfdvmin}{\let\pgfdvmin\pgf@dv@value}{}%
    \fi%
    \ifx\pgfdvmax\pgfutil@empty%
      \let\pgfdvmax\pgf@dv@value%
    \else%
      \pgfdvmathifless{\pgfdvmax}{\pgf@dv@value}{\let\pgfdvmax\pgf@dv@value}{}%
    \fi%
  }%
}%




\usepgflibrary{plothandlers}%



\pgfooclass{plot handler visualizer}
{%

  \attribute handlers;%

  \attribute name;%

  \attribute filter=\pgfdvnamedvisualizerfilter;%

  \attribute positions;%

  \attribute cache;%

  \attribute projection code;%

  \method plot handler visualizer(#1,#2) {
    \pgfooset{name}{#1}
    \pgfooset{handlers}{#2}
  }%

  \method default connects() {
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,protocol,visualize datapoint signal)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,phase,phase signal)
  }%

  \method set filter(#1) {
    \pgfooset{filter}{#1}
  }%

  \method set projection code(#1) {
    \pgfooset{projection code}{#1}
  }%

  \method protocol() {
    \pgfdvfilterpassedtrue
    \pgfoovalueof{filter}
    \ifpgfdvfilterpassed%
      \pgf@dv@line@cache@it
    \fi%
  }%

  \def\pgf@dv@line@cache@it{
    \pgfooget{cache}\pgf@dv@cache
    \pgfkeysgetvalue{/data point/outlier}\pgf@temp%
    \ifx\pgf@temp\pgfutil@empty
      {%
        \pgfoovalueof{projection code}
        \xdef\pgf@dv@add{\noexpand\pgf@dv@ph{\pgfkeysvalueof{/data
              point/canvas x}}{\pgfkeysvalueof{/data point/canvas y}}}%
      }
    \else%
      \gdef\pgf@dv@add{\pgf@dv@outliner}%
    \fi%
    \expandafter\expandafter\expandafter\def%
    \expandafter\expandafter\expandafter\pgf@dv@cache%
    \expandafter\expandafter\expandafter{\expandafter\pgf@dv@cache\pgf@dv@add}%
    \global\advance\pgf@lib@dv@cache@count by1\relax%
    \ifnum\pgf@lib@dv@cache@count=100\relax%
      \global\pgf@lib@dv@cache@count=0\relax%
      \pgfooget{positions}\pgf@dv@temp
      \expandafter\expandafter\expandafter\def%
      \expandafter\expandafter\expandafter\pgf@dv@temp%
      \expandafter\expandafter\expandafter{\expandafter\pgf@dv@temp\pgf@dv@cache}%
      \pgfoolet{positions}\pgf@dv@temp
      \let\pgf@dv@cache\pgfutil@empty
    \fi
    \pgfoolet{cache}\pgf@dv@cache
  }%

  \method phase(#1) {%
    \ifx#1\pgfdvendvisualization%
      \pgfoothis.render()%
    \fi%
  }%

  \method render() {
    \pgfscope
      \pgfooget{handlers}\tikz@dv@temp@list
      \foreach\tikz@dv@temp in\tikz@dv@temp@list{
        \ifx\tikz@dv@temp\pgfutil@empty
        \else
          \pgfkeysvalueof{/data point/\pgfoovalueof{name}/execute at begin}
          \tikz@dv@temp
          \pgfdvnewstreamtrue
          \pgfoovalueof{positions}
          \pgfoovalueof{cache}
          \ifpgfdvnewstream\else\pgfplotstreamend\fi
          \pgfkeysvalueof{/data point/\pgfoovalueof{name}/execute at end}
        \fi
      }
    \endpgfscope
    \pgfoolet{positions}\pgfutil@empty
    \pgfoolet{cache}\pgfutil@empty
  }%

  \def\pgf@dv@ph#1#2{\ifpgfdvnewstream\pgfplotstreamstart\pgfdvnewstreamfalse\fi\pgfplotstreampoint{\pgfqpoint{#1}{#2}}}%
  \def\pgf@dv@outliner{\ifpgfdvnewstream\else\pgfplotstreamend\pgfdvnewstreamtrue\fi}%
}%

\newif\ifpgfdvnewstream
\newcount\pgf@lib@dv@cache@count

\pgfkeys{%
  /data point/outlier/.initial=,
  /data point/outlier/.default=true,
}%



\def\pgfdvvisualizerfilter#1{%
  \pgfkeysgetvalue{/data point/set}\pgf@dv@visualizer%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgf@dv@visualizer%
  \else
    \pgfdvfilterpassedfalse
  \fi%
}%




\def\pgfdvnamedvisualizerfilter{%
  \pgfkeysgetvalue{/data point/set}\pgf@dv@visualizer%
  \pgfooget{name}\pgf@temp%
  \ifx\pgf@temp\pgf@dv@visualizer%
  \else
    \pgfdvfilterpassedfalse
  \fi%
}%



\pgfooclass{rectangle visualizer}
{%


  \attribute name;%

  \attribute a1;%
  \attribute a2;%


  \method rectangle visualizer(#1) {
    \pgfooset{name}{#1}
  }%

  \method default connects() {
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,visualize,visualize datapoint signal)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,phase,phase signal)
  }%

  \method phase(#1) {%
    \ifx#1\pgfdvbeginsurvey%
      \pgfooeset{a1}{/data point/\pgfkeysvalueof{/data point/\pgfoovalueof{name}/attribute 1}}
      \pgfooeset{a2}{/data point/\pgfkeysvalueof{/data point/\pgfoovalueof{name}/attribute 2}}
      \pgfkeyssetvalue{\pgfoovalueof{a1}/sub attributes}{\pgfdvsub{/min}\pgfdvsub{/max}}
      \pgfkeyssetvalue{\pgfoovalueof{a2}/sub attributes}{\pgfdvsub{/min}\pgfdvsub{/max}}
    \fi%
  }%

  \method visualize() {
    {
      \pgfkeysgetvalue{/data point/set}\pgf@dv@visualizer%
      \pgfooget{name}\pgf@temp%
      \ifx\pgf@temp\pgf@dv@visualizer%
        \pgf@dv@rect@do
      \fi
    }
  }%

  \def\pgf@dv@rect@do{
      \pgfkeysgetvalue{\pgfoovalueof{a1}/min}\pgf@dv@amin
      \ifx\pgf@dv@amin\relax\else\ifx\pgf@dv@amin\pgfutil@empty\else
      \pgfkeysgetvalue{\pgfoovalueof{a1}/max}\pgf@dv@amax
      \ifx\pgf@dv@amax\relax\else\ifx\pgf@dv@amax\pgfutil@empty\else
      \pgfkeysgetvalue{\pgfoovalueof{a2}/min}\pgf@dv@bmin
      \ifx\pgf@dv@bmin\relax\else\ifx\pgf@dv@bmin\pgfutil@empty\else
      \pgfkeysgetvalue{\pgfoovalueof{a2}/max}\pgf@dv@bmax
      \ifx\pgf@dv@bmax\relax\else\ifx\pgf@dv@bmax\pgfutil@empty\else
      \pgfkeysvalueof{/data point/\pgfoovalueof{name}/execute at begin}
        \pgfkeyssetvalue{\pgfoovalueof{a1}}{\pgf@dv@amin}
        \pgfkeyssetvalue{\pgfoovalueof{a2}}{\pgf@dv@bmin}
        \pgfpathdvmoveto
        \pgfkeyssetvalue{\pgfoovalueof{a2}}{\pgf@dv@bmax}
        \pgfpathdvlineto
        \pgfkeyssetvalue{\pgfoovalueof{a1}}{\pgf@dv@amax}
        \pgfpathdvlineto
        \pgfkeyssetvalue{\pgfoovalueof{a2}}{\pgf@dv@bmin}
        \pgfpathdvlineto
        \pgfkeyssetvalue{\pgfoovalueof{a1}}{\pgf@dv@amin}
        \pgfpathdvlineto
        \pgfpathclose
      \pgfkeysvalueof{/data point/\pgfoovalueof{name}/execute at end}
      \fi\fi
      \fi\fi
      \fi\fi
      \fi\fi
  }%
}%

\newcount\pgf@lib@dv@cache@count




\pgfooclass{label visualizer}
{%

  \attribute attribute;%

  \attribute filter;%

  \attribute threshold;%

  \attribute before canvas position=;%

  \attribute canvas position=;%

  \attribute code;%


  \method label visualizer(#1,#2,#3,#4) {
    \pgfooset{attribute}{#1}
    \expandafter\pgfdvmathenter\expandafter{\expandafter\pgf@temp\expandafter}\expandafter{#2}
    \pgfoolet{threshold}\pgf@temp
    \pgfooset{code}{#3}
    \pgfooset{filter}{#4}
  }%

  \method default connects() {
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,test,visualize datapoint signal)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,phase,phase signal)
  }%

  \method test() {
    \pgfdvfilterpassedtrue
    \pgfoovalueof{filter}
    \ifpgfdvfilterpassed%
      \pgfooget{attribute}\pgf@dv@attribute
      \ifx\pgf@dv@attribute\pgfutil@empty%
      \else%
        \pgf@dv@label@vis@record
      \fi%
    \fi%
  }%

  \def\pgf@dv@label@vis@record{
    \edef\pgf@dv@pos{%
      \noexpand\pgfqpoint%
      {\pgfkeysvalueof{/data point/canvas x}}%
      {\pgfkeysvalueof{/data point/canvas y}}}%
    \pgfooget{canvas position}\pgf@dv@temp%
    \pgfoolet{before canvas position}\pgf@dv@temp%
    \pgfoolet{canvas position}\pgf@dv@pos%
    \pgfooget{threshold}\pgf@dv@thres%
    \ifx\pgf@dv@thres\pgfutil@empty%
    \else%
      \pgfkeysgetvalue{/data point/\pgfoovalueof{attribute}}\pgf@dv@val
      \ifx\pgf@dv@val\relax%
      \else\ifx\pgf@dv@val\pgfutil@empty%
      \else%
        \pgfdvmathenter{\pgf@dv@value}{\pgf@dv@val}%
        \pgfooget{threshold}{\pgf@dv@thres}
        \pgfdvmathifless{\pgf@dv@value}{\pgf@dv@thres}{}{%
          \pgfoolet{attribute}\pgfutil@empty%
        }%
      \fi\fi%
    \fi%
  }%

  \method phase(#1) {%
    \ifx#1\pgfdvendvisualization%
      \scope
        \pgfcoordinate{label visualizer coordinate}{\pgfoovalueof{canvas position}}
        \pgfcoordinate{label visualizer coordinate'}{\pgfoovalueof{before canvas position}}
        \pgfoovalueof{code}
      \endscope
    \fi%
  }%
}%



\pgfooclass{style attribute}
{%

  \attribute attribute;%

  \attribute style sheet name;%

  \method style attribute(#1,#2) {
    \pgfooset{attribute}{#1}
    \pgfooset{style sheet name}{#2}
  }%

  \method default connects() {
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,invoke style,style signal)
  }%

  \method invoke style() {
    \pgfooget{attribute}\pgf@dv@temp
    \pgfkeysgetvalue{\pgf@dv@temp}\pgf@dv@temp@val
    \ifx\pgf@dv@temp@val\pgfutil@empty%
    \else\ifx\pgf@dv@temp@val\relax%
    \else%
      \pgfkeysifdefined{\pgf@dv@temp/\pgf@dv@temp@val}{\pgfkeysgetvalue{\pgf@dv@temp/\pgf@dv@temp@val}\pgf@dv@temp@val}{}%
      \edef\pgf@temp{/pgf/data visualization/style sheets/\pgfoovalueof{style sheet name}}
      \pgfkeysifassignable{\pgf@temp/\pgf@dv@temp@val}{%
        \pgfkeysalso{\pgf@temp/\pgf@dv@temp@val}}{%
        \pgfkeysalso{\pgf@temp/default style/.expand once=\pgf@dv@temp@val}
      }
    \fi\fi%
  }%
}%



\def\pgfdvdeclarestylesheet#1#2{
  \pgfkeys{/pgf/data visualization/style sheets/#1/.cd,#2}
}%










\pgfooclass{legend}
{%


  \attribute entries;%

  \attribute columns or rows;%

  \attribute ideal;%

  \attribute max;%

  \attribute strategy;%

  \attribute number of entries=0;%


  \method legend(#1,#2,#3,#4) {
    \pgfooset{columns or rows}{#1}
    \pgfooset{ideal}{#2}
    \pgfooset{max}{#3}
    \pgfooset{strategy}{#4}
  }%

  \method default connects() {
  }%

  \method add entry(#1) {
    \pgfooappend{entries}{{#1}}
    \c@pgf@counta=\pgfoovalueof{number of entries}\relax%
    \advance\c@pgf@counta by1\relax%
    \pgfooeset{number of entries}{\the\c@pgf@counta}
  }%

  \method get arrangement(#1) {
    {
      \ifnum\pgfoovalueof{number of entries}>\pgfoovalueof{ideal}\relax%
        \c@pgf@counta=\pgfoovalueof{ideal}\relax%
        \multiply\c@pgf@counta by\pgfoovalueof{max}\relax%
        \ifnum\c@pgf@counta>\pgfoovalueof{number of entries}\relax
          \c@pgf@counta=\pgfoovalueof{ideal}\relax%
          \c@pgf@countb=\pgfoovalueof{number of entries}\relax
          \advance\c@pgf@countb by-1\relax
          \divide\c@pgf@countb by\c@pgf@counta\relax%
          \advance\c@pgf@countb by1\relax%
        \else
          \c@pgf@countb=\pgfoovalueof{max}\relax%
          \c@pgf@counta=\pgfoovalueof{number of entries}\relax
          \advance\c@pgf@counta by-1\relax
          \divide\c@pgf@counta by\c@pgf@countb\relax%
          \advance\c@pgf@counta by1\relax%
        \fi
      \else
        \c@pgf@counta=\pgfoovalueof{number of entries}\relax%
        \c@pgf@countb=1\relax%
      \fi%
      \pgfooget{columns or rows}\pgf@temp
      \ifx\pgf@temp\pgf@dv@columnstext%
        \c@pgf@countc=\c@pgf@counta\relax
        \c@pgf@counta=\c@pgf@countb\relax
        \c@pgf@countb=\c@pgf@countc\relax
      \fi
      \csname pgf@dv@legend@init@\pgfoovalueof{strategy}\endcsname
      \expandafter\let\expandafter\pgf@dv@updater\csname pgf@dv@legend@update@\pgfoovalueof{strategy}\endcsname
      \pgfooget{entries}\pgf@temp
      \expandafter\pgf@dv@legend@arrange\pgf@temp\pgf@stop
      \edef\pgf@dv@row@list{1,...,\the\c@pgf@counta}
      \edef\pgf@dv@column@list{1,...,\the\c@pgf@countb}
      \global\let\pgf@dv@matrix\pgfutil@empty
      \foreach \pgf@dv@row in \pgf@dv@row@list
      {
        \global\let\pgf@dv@matrix@row\pgf@dv@first@mark
        \foreach \pgf@dv@column in \pgf@dv@column@list
        {
          \expandafter\let\expandafter\pgf@temp\csname pgf@dv@legend@entry@\pgf@dv@row @\pgf@dv@column\endcsname
          \ifx\pgf@temp\relax
            \let\pgf@temp\pgfutil@empty
          \fi
          \ifx\pgf@dv@matrix@row\pgf@dv@first@mark
            \global\let\pgf@dv@matrix@row\pgf@temp
          \else
            \expandafter\pgfutil@g@addto@macro\expandafter\pgf@dv@matrix@row\expandafter{\expandafter\pgfdvnextcell\pgf@temp}
          \fi
        }
        \pgfutil@g@addto@macro\pgf@dv@matrix@row{\pgfdvendrow}
        \expandafter\pgfutil@g@addto@macro\expandafter\pgf@dv@matrix\expandafter{\pgf@dv@matrix@row}
      }
      \global\let\pgf@dv@matrix@row\relax
    }
    \let#1\pgf@dv@matrix
    \global\let\pgf@dv@matrix\relax
  }%

  \def\pgf@dv@first@mark{\pgf@dv@first@mark}%

  \def\pgf@dv@legend@arrange{%
    \pgfutil@ifnextchar\pgf@stop{\pgfutil@gobble}{\pgf@dv@legend@handle@entry}
  }%

  \def\pgf@dv@legend@handle@entry#1{
    \expandafter\def\csname pgf@dv@legend@entry@\the\c@pgf@countc @\the\c@pgf@countd\endcsname{#1}%
    \pgf@dv@updater%
    \pgf@dv@legend@arrange%
  }%

  \expandafter\def\csname pgf@dv@legend@init@down then right\endcsname{%
    \c@pgf@countc=1\relax%
    \c@pgf@countd=1\relax%
  }%

  \expandafter\def\csname pgf@dv@legend@update@down then right\endcsname{%
    \advance\c@pgf@countc by1\relax
    \ifnum\c@pgf@countc>\c@pgf@counta\relax%
      \c@pgf@countc=1\relax%
      \advance\c@pgf@countd by1\relax%
    \fi%
  }%

  \expandafter\def\csname pgf@dv@legend@init@right then down\endcsname{%
    \c@pgf@countc=1\relax%
    \c@pgf@countd=1\relax%
  }%

  \expandafter\def\csname pgf@dv@legend@update@right then down\endcsname{%
    \advance\c@pgf@countd by1\relax
    \ifnum\c@pgf@countd>\c@pgf@countb\relax%
      \c@pgf@countd=1\relax%
      \advance\c@pgf@countc by1\relax%
    \fi%
  }%

  \expandafter\def\csname pgf@dv@legend@init@up then right\endcsname{%
    \c@pgf@countc=\c@pgf@counta\relax%
    \c@pgf@countd=1\relax%
  }%

  \expandafter\def\csname pgf@dv@legend@update@up then right\endcsname{%
    \advance\c@pgf@countc by-1\relax
    \ifnum\c@pgf@countc=0\relax%
      \c@pgf@countc=\c@pgf@counta\relax%
      \advance\c@pgf@countd by1\relax%
    \fi%
  }%

  \expandafter\def\csname pgf@dv@legend@init@right then up\endcsname{%
    \c@pgf@countc=\c@pgf@counta\relax%
    \c@pgf@countd=1\relax%
  }%

  \expandafter\def\csname pgf@dv@legend@update@right then up\endcsname{%
    \advance\c@pgf@countd by1\relax
    \ifnum\c@pgf@countd>\c@pgf@countb\relax%
      \c@pgf@countd=1\relax%
      \advance\c@pgf@countc by-1\relax%
    \fi%
  }%

  \expandafter\def\csname pgf@dv@legend@init@left then up\endcsname{%
    \c@pgf@countc=\c@pgf@counta\relax%
    \c@pgf@countd=\c@pgf@countb\relax%
  }%

  \expandafter\def\csname pgf@dv@legend@update@left then up\endcsname{%
    \advance\c@pgf@countd by-1\relax
    \ifnum\c@pgf@countd=0\relax%
      \c@pgf@countd=\c@pgf@countb\relax%
      \advance\c@pgf@countc by-1\relax%
    \fi%
  }%

  \expandafter\def\csname pgf@dv@legend@init@up then left\endcsname{%
    \c@pgf@countc=\c@pgf@counta\relax%
    \c@pgf@countd=\c@pgf@countb\relax%
  }%

  \expandafter\def\csname pgf@dv@legend@update@up then left\endcsname{%
    \advance\c@pgf@countc by-1\relax
    \ifnum\c@pgf@countc=0\relax%
      \c@pgf@countc=\c@pgf@counta\relax%
      \advance\c@pgf@countd by-1\relax%
    \fi%
  }%

  \expandafter\def\csname pgf@dv@legend@init@left then down\endcsname{%
    \c@pgf@countc=1\relax%
    \c@pgf@countd=\c@pgf@countb\relax%
  }%

  \expandafter\def\csname pgf@dv@legend@update@left then down\endcsname{%
    \advance\c@pgf@countd by-1\relax
    \ifnum\c@pgf@countd=0\relax%
      \c@pgf@countd=\c@pgf@countb\relax%
      \advance\c@pgf@countc by1\relax%
    \fi%
  }%

  \expandafter\def\csname pgf@dv@legend@init@down then left\endcsname{%
    \c@pgf@countc=1\relax%
    \c@pgf@countd=\c@pgf@countb\relax%
  }%

  \expandafter\def\csname pgf@dv@legend@update@down then left\endcsname{%
    \advance\c@pgf@countc by1\relax
    \ifnum\c@pgf@countc>\c@pgf@countb\relax%
      \c@pgf@countc=1\relax%
      \advance\c@pgf@countd by-1\relax%
    \fi%
  }%

  \def\pgf@dv@columnstext{columns}%
}%




\pgfooclass{interval}
{%

  \attribute min;%

  \attribute max;%

  \method interval(#1,#2) {
    \pgfooset{min}{#1}
    \pgfooset{max}{#2}
  }%

  \method default connects() {
  }%

  \method set min(#1) {
    \pgfooset{min}{#1}
  }%
  \method set max(#1) {
    \pgfooset{max}{#1}
  }%
  \method let min(#1) {
    \pgfoolet{min}{#1}
  }%
  \method let max(#1) {
    \pgfoolet{max}{#1}
  }%

  \method get min and max() {
    \pgfooget{min}\pgfdvmin
    \pgfooget{max}\pgfdvmax
  }%

  \method adjust(#1) {
    {%
      \pgfooget{min}\pgfdvmin
      \pgfooget{max}\pgfdvmax
      #1%
      \pgfoolet{min}\pgfdvmin
      \pgfoolet{max}\pgfdvmax
    }%
  }%
}%



\pgfooclass{count}
{%


  \attribute attribute;%

  \attribute val=0;%

  \attribute max=0;%

  \attribute step=1;%

  \attribute start val=0;%

  \attribute filter=;%


  \method count(#1) {
    \pgfooset{attribute}{#1}
  }%

  \method default connects() {
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,apply,prepare datapoint signal)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,phase,phase signal)
  }%

  \method get max(#1) {
    \pgfooget{max}{#1}
  }%

  \method set value(#1) {
    \pgfooset{val}{#1}
    \pgfkeyssetvalue{/data point/\pgfoovalueof{attribute}}{#1}%
  }%

  \method set start value(#1) {
    \pgfooset{start val}{#1}
    \pgfooset{max}{#1}
  }%

  \method set filter(#1) {
    \pgfooset{filter}{#1}
  }%

  \method set step(#1) {
    \pgfooset{step}{#1}
  }%

  \method apply() {
    \pgfdvfilterpassedtrue%
    \pgfoovalueof{filter}%
    \ifpgfdvfilterpassed%
      \pgfmathparse{\pgfoovalueof{val}+\pgfoovalueof{step}}%
      \pgfoolet{val}\pgfmathresult%
      \pgfkeyslet{/data point/\pgfoovalueof{attribute}}\pgfmathresult%
      \ifdim\pgfmathresult pt>\pgfoovalueof{max}pt\relax%
        \pgfoolet{max}\pgfmathresult%
      \fi%
      \pgfooget{max}\pgfmathresult%
      \pgfkeyslet{/data point/\pgfoovalueof{attribute}/max}\pgfmathresult%
    \fi%
  }%

  \method phase(#1) {
    \ifx#1\pgfdvbeginsurvey
      \pgfooeset{val}{\pgfoovalueof{start val}}
    \else \ifx#1\pgfdvbeginvisualization
      \pgfooeset{val}{\pgfoovalueof{start val}}
    \fi\fi
  }%
}%

\newif\ifpgfdvfilterpassed




\pgfooclass{accumulator}
{%

  \attribute attribute;%

  \attribute sum;%

  \method accumulator(#1) {
    \pgfooset{attribute}{#1}
    \pgfoothis.reset()
  }%

  \method default connects() {
    \pgfoothis.get handle(\pgf@dv@me)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,apply,prepare datapoint signal)
    \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,phase,phase signal)
  }%

  \method apply() {%
    \pgfkeysgetvalue{/data point/\pgfoovalueof{attribute}/sum}\pgf@temp%
    \pgfkeyslet{/data point/\pgfoovalueof{attribute}/prev sum}\pgf@temp%
    \pgfkeysgetvalue{/data point/\pgfoovalueof{attribute}}{\pgf@temp@b}%
    \pgfdvmathenter{\pgf@dv@new@val}{\pgf@temp@b}%
    \pgfooget{sum}\pgf@dv@sum%
    \pgfdvmathadd{\pgf@dv@sum}{\pgf@dv@new@val}{\pgf@dv@sum}%
    \pgfoolet{sum}\pgf@dv@sum
    \pgfdvmathexitbyscientificformat{\pgf@dv@serial@sum}{\pgf@dv@sum}
    \pgfkeyslet{/data point/\pgfoovalueof{attribute}/sum}\pgf@dv@serial@sum
  }%

  \method reset() {
    \pgfdvmathenter{\pgf@dv@temp}{0}
    \pgfoolet{sum}{\pgf@dv@temp}
    \pgfdvmathexitbyserializing{\pgf@dv@zero}{\pgf@dv@temp}
    \pgfkeyslet{/data point/\pgfoovalueof{attribute}/prev sum}{\pgf@dv@zero}
    \pgfkeyslet{/data point/\pgfoovalueof{attribute}/sum}{\pgf@dv@zero}
  }%

  \method phase(#1) {
    \ifx#1\pgfdvbeginsurvey
      \pgfoothis.reset()
    \else \ifx#1\pgfdvbeginvisualization
      \pgfoothis.reset()
    \fi\fi
  }%
}%








\pgfkeys{%
  /data point/always true/.initial=true,
  /data point/always false/.initial=false,
  /data point/always 0/.initial=0,
  /data point/always 1/.initial=1,
  /data point/always empty/.initial=,
  /data point/always pgfusepath stroke/.initial=\pgfusepath{stroke},
}%

\pgfdvmathenter{\pgfdvmathalwaysloge}{0.434294481903252}%
\pgfdvmathenter{\pgfdvmathalwayslnten}{2.302585092994046}%
\pgfdvmathenter{\pgfdvmathalwayszero}{0}%
\pgfdvmathenter{\pgfdvmathalwaysone}{1}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduledatavisualization.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduledecorations.code.tex ====





\def\pgfgetpath#1{\pgfsyssoftpath@getcurrentpath{#1}}%
\def\pgfsetpath#1{\pgfsyssoftpath@setcurrentpath{#1}}%


\newdimen\pgfdecoratedcompleteddistance
\newdimen\pgfdecoratedremainingdistance
\newdimen\pgfdecoratedinputsegmentcompleteddistance
\newdimen\pgfdecoratedinputsegmentremainingdistance
\newdimen\pgf@decorate@distancetomove

\newcount\pgf@decorate@repeatstate



\newdimen\pgfdecorationsegmentamplitude
\newdimen\pgfdecorationsegmentlength
\pgfdecorationsegmentamplitude2.5pt
\pgfdecorationsegmentlength10pt
\def\pgfdecorationsegmentangle{45}%
\def\pgfdecorationsegmentaspect{0.5}%
\def\pgfmetadecorationsegmentamplitude{2.5pt}%
\def\pgfmetadecorationsegmentlength{1cm}%

\pgfkeys{%
  /pgf/decoration/.code={\pgfkeys{/pgf/decoration/.cd,#1}},
  /pgf/decoration/.cd,
  amplitude/.code={\pgfmathsetlength\pgfdecorationsegmentamplitude{#1}},
  meta-amplitude/.store in=\pgfmetadecorationsegmentamplitude,
  segment length/.code={\pgfmathsetlength\pgfdecorationsegmentlength{#1}},
  meta-segment length/.store in=\pgfmetadecorationsegmentlength,
  angle/.code={\pgfmathparse{#1}\let\pgfdecorationsegmentangle\pgfmathresult},
  aspect/.code={\pgfmathparse{#1}\let\pgfdecorationsegmentaspect\pgfmathresult},
  start radius/.initial=2.5pt,
  end radius/.initial=2.5pt,
  radius/.style={start radius={#1},end radius={#1}},
  path has corners/.is if=pgfdecoratepathhascorners,
  reverse path/.is if=pgf@decorate@inputsegmentobjects@reverse,
}%
\newif\ifpgfdecoratepathhascorners
\newif\ifpgf@decorate@inputsegmentobjects@reverse


\long\def\pgfdeclaredecoration#1#2#3{%
  \let\pgf@mod@dec@next=\pgf@mod@dec@firstofone%
  \pgfifmetadecoration{#1}{%
    \pgferror{You cannot declare a decoration of the same
      name as a meta-decoration}%
    \let\pgf@mod@dec@next=\pgfutil@gobble%
  }{}%
  \pgf@mod@dec@next
  {%
    \def\pgf@decorate@name{#1}%
    \pgfutil@namedef{pgf@decorate@@#1@initial}{#2}%
    \let\pgf@orig@state\state%
    \let\state\pgf@decorate@state
    #3%
    \let\state\pgf@orig@state%
  }%
}%

\def\pgf@decorate@state#1{\pgfutil@ifnextchar[{\pgf@decorate@@start#1}{\pgf@decorate@@start#1[]}}%
\def\pgf@decorate@@start#1[#2]#3{%
  \pgfutil@namedef{pgf@decorate@@\pgf@decorate@name @#1@options}{#2}%
  \pgfutil@namedef{pgf@decorate@@\pgf@decorate@name @#1@code}{#3}%
}%
\long\def\pgf@mod@dec@firstofone#1{#1}%



\def\pgfifdecoration#1#2#3{\pgfutil@ifundefined{pgf@decorate@@#1@initial}{#3}{#2}}%




\long\def\pgfdeclaremetadecoration#1#2#3{%
  \let\pgf@mod@dec@next=\pgf@mod@dec@firstofone%
  \pgfifdecoration{#1}{%
    \pgferror{You cannot declare a meta-decoration of the
      same name as a decoration}%
    \let\pgf@mod@dec@next=\pgfutil@gobble%
  }{}%
  \pgf@mod@dec@next{%
    \def\pgf@metadecoration@name{#1}%
    \pgfutil@namedef{pgf@metadecoration@@#1@initial}{#2}%
    \let\pgf@orig@state\state%
    \let\state\pgf@metadecoration@state
    #3%
    \let\state\pgf@orig@state%
  }%
}%

\def\pgf@metadecoration@state#1{\pgfutil@ifnextchar[{\pgf@metadecoration@@state#1}{\pgf@metadecoration@@state#1[]}}%
\def\pgf@metadecoration@@state#1[#2]#3{%
  \pgfutil@namedef{pgf@metadecoration@@\pgf@metadecoration@name @#1@options}{#2}%
  \pgfutil@namedef{pgf@metadecoration@@\pgf@metadecoration@name @#1@code}{#3}%
}%



\def\pgfifmetadecoration#1#2#3{\pgfutil@ifundefined{pgf@metadecoration@@#1@initial}{#3}{#2}}%





\let\pgfdecoratebeforecode\pgfutil@empty
\let\pgfdecorateaftercode\pgfutil@empty

\long\def\pgfdecoratepath#1#2{%
  \pgfdecoration{{#1}{\pgfdecoratedpathlength}{\pgfdecoratebeforecode}{\pgfdecorateaftercode}}%
  #2%
  \endpgfdecoration}%




\def\pgfdecoratecurrentpath#1{%
  \pgfgetpath\pgf@decorate@currentpath%
  \pgfsetpath\pgfutil@empty%
  \pgfdecoration{{#1}{\pgfdecoratedpathlength}{\pgfdecoratebeforecode}{\pgfdecorateaftercode}}%
    \pgfsetpath\pgf@decorate@currentpath%
  \endpgfdecoration}%




\def\pgfdecoration#1{%
  \begingroup%
    \def\pgf@decorate@decorationlist{#1}%
    \pgf@decoration@env%
}%

\def\endpgfdecoration{%
    \pgf@decoration@endenv%
    \ifx\pgfdecoratedpath\pgfutil@empty%
    \else%
      \pgf@decorate@for\pgf@temp:=\pgf@decorate@decorationlist\do{%
        \ifx\pgf@temp\pgfutil@empty%
        \else%
          \expandafter\pgf@decorate@invoke\expandafter{\pgf@temp}%
        \fi%
      }%
    \fi%
    \pgfgetpath\pgfdecorationpath%
    \global\let\pgf@decorate@decorationpathtemp\pgfdecorationpath%
    \global\let\pgf@decorate@decoratedpathtemp\pgfdecoratedpath%
    \global\let\pgf@decorate@existingpathtemp\pgfdecorateexistingpath%
    \global\let\pgfpoint@decorated@pathlasttemp\pgfpoint@decorated@pathlast%
  \endgroup%
  \pgfutil@ifnextchar\@checkend{\aftergroup\pgf@decorate@installmacrosatend}%
  {\pgf@decorate@installmacrosatend}%
}%



\def\pgfmetadecoration#1{%
  \begingroup%
    \let\decoration\pgf@metadecoration@decoration%
    \let\beforedecoration\pgf@metadecoration@beforedecoration%
    \let\afterdecoration\pgf@metadecoration@afterdecoration%
    \def\pgf@metadecoration@name{#1}%
    \pgf@decoration@env%
}%

\def\endpgfmetadecoration{%
    \pgf@decoration@endenv%
    \ifx\pgfdecoratedpath\pgfutil@empty%
    \else%
      \let\pgfmetadecoratedpathlength\pgf@decorate@totalpathlength%
      \def\pgfmetadecoratedinputsegmentremainingdistance{\pgfdecoratedremainingdistance}%
      \def\pgfmetadecoratedinputsegmentcompleteddistance{\pgfdecoratedcompleteddistance}%
      \expandafter\let\expandafter\pgf@metadecoration@current@state%
      \csname pgf@metadecoration@@\pgf@metadecoration@name @initial\endcsname%
      \pgf@metadecoration@run%
      \let\pgf@decorate@tempname\pgfutil@empty%
      \let\pgf@decorate@tempbefore\pgfutil@empty%
      \let\pgf@decorate@tempafter\pgfutil@empty%
      \csname pgf@metadecoration@@\pgf@metadecoration@name @\pgf@metadecoration@current@state @code\endcsname%
      \ifx\pgf@decorate@tempname\pgfutil@empty%
        \def\pgf@decorate@tempname{moveto}
      \fi%
      \pgf@decorate@invoke{%
        {\pgf@decorate@tempname}{\pgfdecoratedremainingdistance}%
        {\pgf@decorate@tempbefore}{\pgf@decorate@tempafter}%
      }%
    \fi%
    \pgfgetpath\pgfdecorationpath%
     \global\let\pgf@decorate@decorationpathtemp\pgfdecorationpath%
    \global\let\pgf@decorate@decoratedpathtemp\pgfdecoratedpath%
    \global\let\pgf@decorate@existingpathtemp\pgfdecorateexistingpath%
    \global\let\pgfpoint@decorated@pathlasttemp\pgfpoint@decorated@pathlast%
  \endgroup%
  \pgfutil@ifnextchar\@checkend{\aftergroup\pgf@decorate@installmacrosatend}%
    {\pgf@decorate@installmacrosatend}%
}%






\def\pgf@decoration@env{%
  \pgfgetpath\pgfdecorateexistingpath%
  \pgfsetpath\pgfutil@empty%
  \let\pgfdecorationpath\pgfutil@empty%
  \let\pgfdecoratedpath\pgfutil@empty%
  \let\pgfpoint@decorated@pathlast\pgfpointorigin%
  \edef\pgfpoint@decorate@existingpathlast{\pgf@x\the\pgf@path@lastx\pgf@y\the\pgf@path@lasty}%
  \bgroup%
}%

\def\pgf@decorate@path@check@moveto#1{%
  \expandafter\pgf@decorate@path@@check@moveto#1\pgf@decorate@stop\pgf@decorate@@stop}%

\def\pgf@decorate@token@stop{\pgf@decorate@stop}%
\def\pgf@decorate@path@@check@moveto#1#2#3#4\pgf@decorate@@stop#5#6{%
  \def\pgf@decorate@temp{#4}%
  \pgf@x=#2\relax%
  \pgf@y=#3\relax%
  \ifx\pgf@decorate@temp\pgf@decorate@token@stop%
    #5%
  \else%
    #6%
  \fi%
}%

\def\pgf@decoration@endenv{%
  \egroup%
  \pgftransformreset%
  \pgfgetpath\pgfdecoratedpath%
  \pgfsetpath\pgfdecorateexistingpath%
  \ifx\pgfdecoratedpath\pgfutil@empty%
    \pgferror{I cannot decorate an empty path}%
  \else%
    \pgf@decorate@path@check@moveto\pgfdecoratedpath{%
      \advance\pgf@x by0.0001pt\relax%
      \edef\pgfdecoratedpath{%
        \expandafter\noexpand\pgfdecoratedpath%
        \noexpand\pgfsyssoftpath@linetotoken{\the\pgf@x}{\the\pgf@y}%
      }%
    }%
    {}%
    \pgfprocessround{\pgfdecoratedpath}{\pgfdecoratedpath}%
    \pgf@decorate@parsesoftpath{\pgfdecoratedpath}{\pgf@decorate@inputsegmentobjects}%
    \pgfkeys{/pgf/every decoration/.try}%
    \ifpgf@decorate@inputsegmentobjects@reverse%
      \pgf@decorate@inputsegmentobjects@reverse{\pgf@decorate@inputsegmentobjects}{\pgf@decorate@inputsegmentobjects}%
    \fi%
    \let\pgf@decorated@remainingdistance\pgf@decorate@totalpathlength%
    \let\pgfpoint@decorated@totalpathfirst\pgfpoint@decorated@firstparsed%
    \let\pgfpoint@decorated@totalpathlast\pgfpoint@decorate@lastnonmovetoparsed%
    \let\pgfpoint@decorated@pathfirst\pgfpoint@decorated@totalpathfirst
    \let\pgfpoint@decorated@pathlast\pgfpoint@decorated@totalpathlast%
    \let\pgf@decorate@currentinputsegmentobjects\pgf@decorate@inputsegmentobjects%
    \let\pgf@decorate@transformtoinputsegment\pgfutil@empty%
    \pgf@decorate@getnextinputsegmentobject\pgf@decorate@nextinputsegmentobject%
    \pgf@decorate@processnextinputsegmentobject%
    \pgf@decorate@distancetomove0pt\relax%
  \fi%
}%




\def\pgf@decorate@installmacrosatend{%
  \let\pgfdecorationpath\pgf@decorate@decorationpathtemp%
  \let\pgfdecoratedpath\pgf@decorate@decoratedpathtemp%
  \let\pgfdecorateexistingpath\pgf@decorate@existingpathtemp%
  \let\pgfpoint@decorated@pathlast\pgfpoint@decorated@pathlasttemp%
}%

\let\pgfdecorationpath\pgfutil@empty
\let\pgfdecoratedpath\pgfutil@empty
\let\pgfdecorateexisitingpath\pgfutil@empty

\let\pgfpoint@decorated@pathlast\pgfpointorigin



\def\pgf@decorate@for#1:=#2\do#3{%
  \def\pgf@decorate@for@var{#1}%
  \def\pgf@decorate@for@action{#3}%
  \expandafter\pgf@decorate@@for#2,\pgf@stop,}%

\def\pgf@decorate@@for#1,{%
  \ifx#1\pgf@stop%
    \expandafter\let\pgf@decorate@for@var\pgfutil@empty%
  \else%
    \expandafter\def\pgf@decorate@for@var{#1}%
    \pgf@decorate@for@action%
    \expandafter\pgf@decorate@@for%
  \fi%
}%


\def\pgf@decorate@invoke#1{%
  \pgf@decorate@@invoke#1\pgf@decorate@invoke\pgf@decorate@invoke\pgf@decorate@invoke\pgf@stop}%

\def\pgf@decorate@@invoke#1#2#3#4#5\pgf@stop{%
  \pgfutil@ifundefined{pgf@decorate@@#1@initial}%
  {%
    \pgferror{Unknown decoration `#1'}%
  }%
  {%
    \def\pgf@decorate@name{#1}%
    \ifx\pgf@decorate@invoke#3%
      \let\pgf@decorate@beforecode\pgfutil@empty%
    \else%
      \def\pgf@decorate@beforecode{#3}%
    \fi%
    \ifx\pgf@decorate@invoke#4%
      \let\pgf@decorate@aftercode\pgfutil@empty%
    \else%
      \def\pgf@decorate@aftercode{#4}%
    \fi%
    \pgfdecoratedremainingdistance\pgf@decorated@remainingdistance\relax%
    \let\pgfdecoratedpathlength\pgf@decorate@totalpathlength%
    \pgfmathsetlength\pgf@xa{#2}%
    \ifdim\pgf@xa>\pgf@decorated@remainingdistance\relax%
      \pgf@xa\pgf@decorated@remainingdistance\relax%
    \fi%
    \edef\pgf@decorate@currentpathlength{\the\pgf@xa}%
    \pgf@xa-\pgf@decorate@currentpathlength\relax%
    \advance\pgf@xa\pgf@decorated@remainingdistance\relax%
    \edef\pgf@decorated@remainingdistance{\the\pgf@xa}%
    \let\pgfdecoratedpathlength\pgf@decorate@currentpathlength%
    \pgfdecoratedremainingdistance\pgfdecoratedpathlength\relax%
    \pgfdecoratedcompleteddistance0pt\relax%
    \pgf@decorate@beforecode%
    \expandafter\let\expandafter\pgf@decorate@current@state%
      \csname pgf@decorate@@\pgf@decorate@name @initial\endcsname%
    \pgf@decorate@run%
    \ifdim\pgf@decorated@remainingdistance<1pt\relax%
      \let\pgfpoint@decorated@pathlast\pgfpoint@decorated@totalpathlast%
    \else%
      {%
        \pgf@decorate@movealonginputsegment{\the\pgfdecoratedremainingdistance}%
        \pgf@decorate@transformtoinputsegment%
        \pgfpointorigin%
        \pgf@pos@transform@glob%
        \global\pgf@x\pgf@x%
        \global\pgf@y\pgf@y%
      }%
      \edef\pgfpoint@decorated@pathlast{\pgf@x\the\pgf@x\pgf@y\the\pgf@y}%
    \fi%
    {%
      \pgftransformreset%
      \pgf@decorate@transformtoinputsegment%
      \pgf@decorate@additionaltransform%
      \csname pgf@decorate@@\pgf@decorate@name @final@code\endcsname%
    }%
    \pgf@decorate@movealonginputsegment{\the\pgfdecoratedremainingdistance}%
    \pgf@decorate@aftercode%
    \let\pgf@decorate@additionaltransform\pgfutil@empty%
    \let\pgf@decorate@inputsegmentobjects\pgf@decorate@inputsegmentobjects@aftersplit%
    \let\pgfpoint@decorated@pathfirst\pgfpoint@decorated@pathlast%
   }%
}%



\let\pgf@decorate@transformtoinputsegment\pgfutil@empty%
\let\pgf@decorate@additionaltransform\pgfutil@empty%


\def\pgfpointdecoratedpathfirst{%
  {%
    \pgftransforminvert%
    \pgfpoint@decorated@pathfirst%
    \pgf@pos@transform@glob%
    \global\pgf@x\pgf@x%
    \global\pgf@y\pgf@y%
  }%
}%

\def\pgfpointdecoratedpathlast{%
  {%
    \pgftransforminvert%
    \pgfpoint@decorated@pathlast%
    \pgf@pos@transform@glob%
    \global\pgf@x\pgf@x%
    \global\pgf@y\pgf@y%
  }%
}%

\def\pgfpointdecoratedinputsegmentfirst{%
  {%
    \pgftransforminvert%
    \pgf@decorate@inputsegment@first%
    \pgf@pos@transform@glob%
    \global\pgf@x\pgf@x%
    \global\pgf@y\pgf@y%
  }%
}%

\def\pgfpointdecoratedinputsegmentlast{%
  {%
    \pgftransforminvert%
    \pgf@decorate@inputsegment@last%
    \pgf@pos@transform@glob%
    \global\pgf@x\pgf@x%
    \global\pgf@y\pgf@y%
  }%
}%


\def\pgf@final@text{final}%

\def\pgf@decorate@run{%
  \let\pgf@decorate@next\pgf@decorate@do@state%
  \ifx\pgf@decorate@current@state\pgf@final@text%
    \let\pgf@decorate@next\relax%
  \fi%
  \pgf@decorate@next%
}%

\def\pgf@decorate@do@state{%
  \let\pgf@decorate@next\relax%
  \let\pgf@decorate@next@state\pgf@decorate@current@state%
  \let\pgf@decorate@persistent@pre=\relax%
  \let\pgf@decorate@persistent@post=\relax%
  \expandafter\expandafter\expandafter\pgf@decorate@setter
  \expandafter\expandafter\expandafter{\csname pgf@decorate@@\pgf@decorate@name @\pgf@decorate@current@state @options\endcsname}%
  \ifx\pgf@decorate@next\relax%
    \let\pgf@decorate@next\pgf@decorate@do@code%
  \fi%
  \pgf@decorate@next%
}%

\def\pgf@decorate@setter{\pgfqkeys{/pgf/decoration automaton}}%

\pgf@decorate@repeatstate-1\relax

\def\pgf@decorate@do@code{%
  \pgf@decorate@persistent@pre%
  {%
    \pgftransformreset%
    \pgf@decorate@transformtoinputsegment%
    \pgf@decorate@additionaltransform%
    \csname pgf@decorate@@\pgf@decorate@name @\pgf@decorate@current@state @code\endcsname%
  }%
  \pgf@decorate@persistent@post%
  \pgf@decorate@movealongpath{\pgf@decorate@width}%
  \ifnum\pgf@decorate@repeatstate>0\relax%
    \advance\pgf@decorate@repeatstate-1\relax%
  \else%
    \pgf@decorate@repeatstate-1\relax%
    \let\pgf@decorate@current@state\pgf@decorate@next@state%
  \fi%
  \pgf@decorate@run%
}%

\pgfkeys{
  /pgf/decoration automaton/width/.code=\def\pgf@decorate@width{#1}\pgf@decorate@switch@if#1 to final\pgf@stop,%
  /pgf/decoration automaton/switch if less than/.code=\pgf@decorate@switch@if#1\pgf@stop,%
  /pgf/decoration automaton/switch if input segment less than/.code=\pgf@decorate@switch@ifinputsegment#1\pgf@stop,%
  /pgf/decoration automaton/next state/.store in=\pgf@decorate@next@state,%
  /pgf/decoration automaton/persistent precomputation/.store in=\pgf@decorate@persistent@pre,%
  /pgf/decoration automaton/persistent postcomputation/.store in=\pgf@decorate@persistent@post,%
  /pgf/decoration automaton/repeat state/.code={%
    \ifnum\pgf@decorate@repeatstate=-1\relax%
      \pgfmathsetcount\pgf@decorate@repeatstate{#1}%
    \fi%
  },%
  /pgf/decoration automaton/if input segment is closepath/.code={%
    \ifpgf@decorate@is@closepath@%
      \pgfkeysalso{#1}%
    \fi%
  },
  /pgf/decoration automaton/auto end on length/.code=\pgf@decorate@auto@end{#1},
  /pgf/decoration automaton/auto corner on length/.code=\pgf@decorate@auto@corner{#1},
}%

\def\pgf@decorate@auto@end#1{%
  \ifx\pgf@decorate@next\relax%
    \pgfmathsetlength\pgf@x{#1}%
    \ifpgf@decorate@is@closepath@%
      \ifdim\pgfdecoratedremainingdistance>\pgf@x%
        \ifdim\pgfdecoratedinputsegmentremainingdistance>\pgf@x%
        \else%
          \pgfpathclose%
          \pgf@decorate@movealongpath{\pgfdecoratedinputsegmentremainingdistance}%
          \pgf@decorate@repeatstate-1\relax%
          \let\pgf@decorate@next\pgf@decorate@run%
        \fi%
      \else%
        \pgfpathclose%
        \def\pgf@decorate@current@state{final}%
        \def\pgf@decorate@width{\pgfdecoratedremainingdistance}
        \pgf@decorate@repeatstate-1\relax%
        \let\pgf@decorate@next\pgf@decorate@run%
      \fi%
    \else%
      \ifdim\pgfdecoratedremainingdistance>\pgf@x%
      \else%
        {%
          \pgftransformreset%
          \pgf@decorate@transformtoinputsegment%
          \pgf@decorate@additionaltransform%
          \pgfpathlineto{\pgfpoint{\pgfdecoratedremainingdistance}{0pt}}
        }%
        \def\pgf@decorate@current@state{final}%
        \def\pgf@decorate@width{\pgfdecoratedremainingdistance}
        \pgf@decorate@repeatstate-1\relax%
        \let\pgf@decorate@next\pgf@decorate@run%
      \fi%
    \fi%
  \fi%
}%

\def\pgf@decorate@auto@corner#1{%
  \ifpgfdecoratepathhascorners%
    \ifx\pgf@decorate@next\relax%
      \pgfmathsetlength\pgf@x{#1}%
      \ifdim\pgfdecoratedinputsegmentremainingdistance>\pgf@x%
      \else%
        {%
          \pgftransformreset%
          \pgf@decorate@transformtoinputsegment%
          \pgf@decorate@additionaltransform%
          \pgfpathlineto{\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}}
        }%
        \pgf@decorate@movealongpath{\pgfdecoratedinputsegmentremainingdistance}%
        \pgf@decorate@repeatstate-1\relax%
        \let\pgf@decorate@next\pgf@decorate@run%
      \fi%
    \fi%
  \fi%
}%

\def\pgf@decorate@switch@if#1to #2\pgf@stop{%
  \ifx\pgf@decorate@next\relax%
    \ifdim\pgfdecoratedremainingdistance=0pt\relax%
      \def\pgf@decorate@current@state{#2}%
      \pgf@decorate@repeatstate-1\relax%
      \let\pgf@decorate@next\pgf@decorate@run%
    \else%
      \pgfmathsetlength\pgf@x{#1}%
      \ifdim\pgfdecoratedremainingdistance<\pgf@x%
        \def\pgf@decorate@current@state{#2}%
        \pgf@decorate@repeatstate-1\relax%
        \let\pgf@decorate@next\pgf@decorate@run%
      \fi%
    \fi%
  \fi%
}%

\def\pgf@decorate@switch@ifinputsegment#1to #2\pgf@stop{%
  \ifx\pgf@decorate@next\relax%
    \pgfmathsetlength\pgf@x{#1}%
    \ifdim\pgfdecoratedinputsegmentremainingdistance<\pgf@x%
      \def\pgf@decorate@current@state{#2}%
      \pgf@decorate@repeatstate-1\relax%
      \let\pgf@decorate@next\pgf@decorate@run%
    \fi%
  \fi%
}%




\def\pgfsetdecorationsegmenttransformation#1{\def\pgf@decorate@additionaltransform{#1}}%
\let\pgf@decorate@additionaltransform\pgfutil@empty%




\def\pgf@metadecoration@decoration#1{%
  \edef\pgf@decorate@tempname{#1}%
}%
\def\pgf@metadecoration@beforedecoration#1{%
  \def\pgf@decorate@tempbefore{#1}%
}%
\def\pgf@metadecoration@afterdecoration#1{%
  \def\pgf@decorate@tempafter{#1}%
}%


\def\pgf@final@text{final}%

\def\pgf@metadecoration@run{%
  \let\pgf@metadecoration@next\pgf@metadecoration@do@state%
  \ifx\pgf@metadecoration@current@state\pgf@final@text%
    \let\pgf@metadecoration@next\relax%
  \fi%
  \pgf@metadecoration@next%
}%

\def\pgf@metadecoration@do@state{%
  \let\pgf@metadecoration@next\relax%
  \let\pgf@metadecoration@next@state\pgf@metadecoration@current@state%
  \let\pgfmetadecoratedremainingdistance\pgf@decorated@remainingdistance%
  \pgf@x-\pgfmetadecoratedremainingdistance\relax%
  \advance\pgf@x\pgf@decorate@totalpathlength\relax%
  \edef\pgfmetadecoratedcompleteddistance{\the\pgf@x}%
  \expandafter\expandafter\expandafter\pgf@metadecoration@setter
  \expandafter\expandafter\expandafter{\csname pgf@metadecoration@@\pgf@metadecoration@name @\pgf@metadecoration@current@state @options\endcsname}%
  \ifx\pgf@metadecoration@next\relax%
    \let\pgf@metadecoration@next\pgf@metadecoration@do@code%
  \fi%
  \pgf@metadecoration@next%
}%

\def\pgf@metadecoration@do@code{%
  \let\pgf@decorate@tempname\pgfutil@empty%
  \let\pgf@decorate@tempbefore\pgfutil@empty%
  \let\pgf@decorate@tempafter\pgfutil@empty%
  \let\pgfpointmetadecoratedpathfirst\pgfpointdecoratedpathfirst%
  \let\pgfpointmetadecoratedpathlast\pgfpointdecoratedpathlast%
  \csname pgf@metadecoration@@\pgf@metadecoration@name @\pgf@metadecoration@current@state @code\endcsname%
  \ifx\pgf@decorate@tempname\pgfutil@empty%
    \def\pgf@decorate@tempname{moveto}
  \fi%
  \pgf@decorate@invoke{%
    {\pgf@decorate@tempname}{\pgf@metadecoration@width}%
    {\pgf@decorate@tempbefore}{\pgf@decorate@tempafter}%
  }%
  \let\pgf@metadecoration@current@state\pgf@metadecoration@next@state%
  \pgf@metadecoration@run%
}%

\def\pgf@metadecoration@setter{\pgfqkeys{/pgf/meta-decoration automaton}}%

\pgfkeys{
  /pgf/meta-decoration automaton/width/.code=\def\pgf@metadecoration@width{#1}\pgf@metadecoration@switch@if#1 to final\pgf@stop,%
  /pgf/meta-decoration automaton/switch if less than/.code=\pgf@metadecoration@switch@if#1\pgf@stop,%
  /pgf/meta-decoration automaton/switch if input segment less than/.code=\pgf@metadecoration@switch@ifinputsegment#1\pgf@stop,%
  /pgf/meta-decoration automaton/next state/.store in=\pgf@metadecoration@next@state,%
}%

\def\pgf@metadecoration@switch@if#1to #2\pgf@stop{%
  \ifx\pgf@metadecoration@next\relax%
    \pgfmathsetlength\pgf@x{#1}%
    \ifdim\pgf@decorated@remainingdistance<\pgf@x%
      \def\pgf@metadecoration@current@state{#2}%
      \let\pgf@metadecoration@next\pgf@metadecoration@run%
    \fi%
  \fi%
}%

\def\pgf@metadecoration@switch@ifinputsegment#1to #2\pgf@stop{%
  \ifx\pgf@metadecoration@next\relax%
    \pgfmathsetlength\pgf@x{#1}%
    \ifdim\pgfdecoratedinputsegmentremainingdistance<\pgf@x%
      \def\pgf@metadecoration@current@state{#2}%
      \let\pgf@metadecoration@next\pgf@metadecoration@run%
    \fi%
  \fi%
}%



\def\pgf@decorate@movealongpath#1{%
  \pgfmathsetlength\pgf@decorate@distancetomove{#1}%
  \advance\pgfdecoratedcompleteddistance\pgf@decorate@distancetomove%
  \advance\pgfdecoratedremainingdistance-\pgf@decorate@distancetomove%
  \pgf@decorate@@movealongpath%
}%
\def\pgf@decorate@@movealongpath{%
  \advance\pgfdecoratedinputsegmentcompleteddistance\pgf@decorate@distancetomove%
  \advance\pgfdecoratedinputsegmentremainingdistance-\pgf@decorate@distancetomove%
  \ifdim\pgfdecoratedinputsegmentremainingdistance>0pt\relax%
    \let\pgf@next\pgf@decorate@@@movealongpath%
  \else%
    \pgf@decorate@distancetomove-\pgfdecoratedinputsegmentremainingdistance%
    \pgf@decorate@processnextinputsegmentobject%
    \ifx\pgf@decorate@currentinputsegmentobjects\pgfutil@empty%
      \pgfdecoratedremainingdistance0pt\relax%
      \let\pgf@next\relax%
    \else%
      \let\pgf@next\pgf@decorate@@movealongpath%
    \fi%
  \fi%
  \pgf@next%
}%

\def\pgf@decorate@@@movealongpath{%
  \pgf@decorate@movealonginputsegment{\the\pgf@decorate@distancetomove}%
  \pgf@decorate@distancetomove0pt\relax%
  \ifdim\pgf@decorate@inputsegmenttime pt>1pt\relax%
    \let\pgf@decorate@inputsegmenttimetemp\pgf@decorate@inputsegmenttime%
    \pgf@decorate@processnextinputsegmentobject%
    \pgf@x\pgf@decorate@inputsegmenttimetemp pt\relax%
    \advance\pgf@x-1pt\relax%
    \edef\pgf@decorate@inputsegmenttime{\pgfmath@tonumber{\pgf@x}}%
    \ifx\pgf@decorate@currentinputsegmentobjects\pgfutil@empty%
      \pgfdecoratedremainingdistance0pt\relax%
    \fi%
  \fi%
}%

\def\pgf@decorate@getnextinputsegmentobject#1{%
  \ifx\pgf@decorate@currentinputsegmentobjects\pgfutil@empty%
    \let\pgf@next\relax%
  \else%
    \def\pgf@decorate@temp{#1}%
    \let\pgf@next\pgf@decorate@@getnextinputsegmentobject%
  \fi%
  \pgf@next%
}%
\def\pgf@decorate@@getnextinputsegmentobject{%
  \expandafter\pgf@decorate@@@getnextinputsegmentobject\pgf@decorate@currentinputsegmentobjects\pgf@stop}%
\def\pgf@decorate@@@getnextinputsegmentobject#1#2\pgf@stop{%
  \expandafter\def\pgf@decorate@temp{#1}%
  \def\pgf@decorate@currentinputsegmentobjects{#2}}%

\def\pgf@decorate@processnextinputsegmentobject{%
  \let\pgfdecorationpreviousinputsegment\pgfdecoratecurrentinputsegment%
  \let\pgf@decorate@currentinputsegmentobject\pgf@decorate@nextinputsegmentobject%
  \pgf@decorate@getnextinputsegmentobject\pgf@decorate@nextinputsegmentobject%
  \pgf@decorate@is@closepath@false%
  \pgf@decorate@currentinputsegmentobject%
  \ifx\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentmoveto%
    \pgfpathmoveto{\pgf@decorate@inputsegment@first}%
    \let\pgfdecorationpreviousinputsegment\pgfdecorationcurrentinputsegment%
    \let\pgf@decorate@currentinputsegmentobject\pgf@decorate@nextinputsegmentobject%
    \pgf@decorate@getnextinputsegmentobject\pgf@decorate@nextinputsegmentobject%
    \pgf@decorate@is@closepath@false%
    \pgf@decorate@currentinputsegmentobject%
  \fi%
  \ifdim\pgfdecoratedinputsegmentlength=0pt\relax%
    \def\pgfdecoratedinputsegmentlength{0.05pt}%
  \fi%
  \pgfdecoratedinputsegmentremainingdistance\pgfdecoratedinputsegmentlength\relax%
  \pgfdecoratedinputsegmentcompleteddistance0pt\relax%
  \def\pgf@decorate@inputsegmenttime{0}%
  \ifx\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentcurveto%
    \pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
    \let\pgfdecoratedangle\pgfmathresult%
    \let\pgfdecoratedinputsegmentstartangle\pgfmathresult%
    \pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
    \let\pgfdecoratedinputsegmentendangle\pgfmathresult%
  \else%
    \pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@last}%
    \let\pgfdecoratedangle\pgfmathresult%
    \let\pgfdecoratedinputsegmentstartangle\pgfmathresult%
    \let\pgfdecoratedinputsegmentendangle\pgfmathresult%
  \fi%
  \begingroup%
    \pgf@decorate@nextinputsegmentobject%
    \global\let\pgf@decorate@temp\pgfdecorationcurrentinputsegment%
    \ifx\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentmoveto%
      \expandafter\pgf@decorate@currentinputsegmentobject%
    \fi%
    \ifx\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentcurveto%
      \pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
    \else%
      \pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@last}%
    \fi%
    \pgf@x-\pgfdecoratedangle pt\relax%
    \advance\pgf@x\pgfmathresult pt\relax%
    \edef\pgfdecoratedangletonextinputsegment{\the\pgf@x}%
    \pgfmath@smuggleone\pgfdecoratedangletonextinputsegment%
  \endgroup%
  \let\pgfdecorationnextinputsegmentobject\pgf@decorate@temp%
}%



\newif\ifpgf@decorate@is@closepath@%

\def\pgfdecorationinputsegmentmoveto{moveto}%
\def\pgfdecorationinputsegmentlineto{lineto}%
\def\pgfdecorationinputsegmentcurveto{curveto}%
\def\pgfdecorationinputsegmentclosepath{closepath}%
\def\pgfdecorationinputsegmentlast{last}%

\def\pgf@decorate@inputsegmentobject@moveto#1{%
  \def\pgf@decorate@inputsegment@first{#1}%
  \def\pgf@decorate@inputsegment@supporta{#1}%
  \def\pgf@decorate@inputsegment@supportb{#1}%
  \def\pgf@decorate@inputsegment@last{#1}%
  \edef\pgf@decorate@lastmoveto{#1}%
  \def\pgfdecoratedinputsegmentlength{0pt}%
  \let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentmoveto%
}%

\def\pgf@decorate@inputsegmentobject@lineto#1#2#3{%
  \def\pgfdecoratedinputsegmentlength{#1}%
  \def\pgf@decorate@inputsegment@first{#2}%
  \def\pgf@decorate@inputsegment@last{#3}%
  \pgfpointdiff{#2}{#3}%
  \pgf@xa\pgf@x%
  \pgf@ya\pgf@y%
  \pgfextract@process\pgf@decorate@inputsegment@supporta{%
    \pgf@process{#2}%
    \advance\pgf@x0.333333\pgf@xa%
    \advance\pgf@y0.333333\pgf@ya%
  }%
  \pgfextract@process\pgf@decorate@inputsegment@supportb{%
    \pgf@process{#2}%
    \advance\pgf@x0.666666\pgf@xa%
    \advance\pgf@y0.666666\pgf@ya%
  }%
  \let\pgf@decorate@movealonginputsegment\pgf@decorate@movealonginputsegment@line%
  \let\pgf@decorate@transformtoinputsegment\pgf@decorate@transformtoinputsegment@line%
  \let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentlineto%
}%

\def\pgf@decorate@inputsegmentobject@curveto#1#2#3#4#5{%
  \def\pgfdecoratedinputsegmentlength{#1}%
  \def\pgf@decorate@inputsegment@first{#2}%
  \def\pgf@decorate@inputsegment@supporta{#3}%
  \def\pgf@decorate@inputsegment@supportb{#4}%
  \def\pgf@decorate@inputsegment@last{#5}%
  \let\pgf@decorate@movealonginputsegment\pgf@decorate@movealonginputsegment@curve%
  \let\pgf@decorate@transformtoinputsegment\pgf@decorate@transformtoinputsegment@curve%
  \let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentcurveto%
}%

\def\pgf@decorate@inputsegmentobject@closepath#1#2#3{%
  \pgf@decorate@is@closepath@true%
  \def\pgfdecoratedinputsegmentlength{#1}%
  \def\pgf@decorate@inputsegment@first{#2}%
  \def\pgf@decorate@inputsegment@last{#3}%
  \pgfpointdiff{#2}{#3}%
  \pgf@xa\pgf@x%
  \pgf@ya\pgf@y%
  \pgfextract@process\pgf@decorate@inputsegment@supporta{%
    \pgf@process{#2}%
    \advance\pgf@x0.333333\pgf@xa%
    \advance\pgf@y0.333333\pgf@ya%
  }%
  \pgfextract@process\pgf@decorate@inputsegment@supportb{%
    \pgf@process{#2}%
    \advance\pgf@x0.666666\pgf@xa%
    \advance\pgf@y0.666666\pgf@ya%
  }%
  \let\pgf@decorate@movealonginputsegment\pgf@decorate@movealonginputsegment@line%
  \let\pgf@decorate@transformtoinputsegment\pgf@decorate@transformtoinputsegment@line%
  \let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentclosepath%
}%


\def\pgf@decorate@inputsegmentobject@endofinputsegments{%
  \let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentlast%
}%




\def\pgf@decorate@movealonginputsegment@line#1{}%

\def\pgf@decorate@movealonginputsegment@curve#1{%
  \ifdim#1=0pt\relax%
  \else%
    \pgfpointcurveattime{\pgf@decorate@inputsegmenttime}%
      {\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
      {\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
    \pgf@xa\pgf@x%
    \pgf@ya\pgf@y%
    \pgf@xb\pgf@decorate@inputsegmenttime pt\relax%
    \ifdim\pgf@decorate@currentpathlength<128pt\relax%
      \pgf@yb.03125pt\relax%
    \else%
      \ifdim\pgf@decorate@currentpathlength<512pt\relax%
        \pgf@yb.015625pt\relax%
      \else%
        \ifdim\pgf@decorate@currentpathlength<2048pt\relax%
          \pgf@yb.00390625pt\relax%
        \else%
          \pgf@yb.0009765625pt\relax%
        \fi%
      \fi%
    \fi%
    \c@pgf@counta1\relax%
    \pgfutil@tempdima0pt\relax%
    \pgfmathloop%
      \advance\pgf@xb\c@pgf@counta\pgf@yb%
      \edef\pgf@decorate@temp{%
        \pgf@xa\the\pgf@xa%
        \pgf@xb\the\pgf@xb%
        \pgf@ya\the\pgf@ya%
        \pgf@yb\the\pgf@yb%
      }%
      \pgfpoint@decorate@curveattime{\pgfmath@tonumber{\pgf@xb}}%
        {\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
        {\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
      \pgf@decorate@temp%
      \pgf@xc\pgf@xa%
      \pgf@yc\pgf@ya%
      \pgf@xa\pgf@x%
      \pgf@ya\pgf@y%
      \advance\pgf@x-\pgf@xc%
      \advance\pgf@y-\pgf@yc%
      \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
      \pgfutil@tempdimb\pgfmathresult pt\relax%
      \advance\pgfutil@tempdima\c@pgf@counta\pgfutil@tempdimb%
      \ifnum\c@pgf@counta>0\relax%
        \ifdim\pgfutil@tempdima>#1\relax%
          \c@pgf@counta-\c@pgf@counta%
          \pgf@yb.5\pgf@yb%
        \fi%
      \else%
        \ifdim\pgfutil@tempdima<#1\relax%
          \c@pgf@counta-\c@pgf@counta%
          \pgf@yb.5\pgf@yb%
        \fi%
      \fi%
      \ifdim\pgf@yb=0pt\relax%
      \else%
    \repeatpgfmathloop%
    \edef\pgf@decorate@inputsegmenttime{\pgfmath@tonumber{\pgf@xb}}%
    \pgfpointcurveattime{\pgf@decorate@inputsegmenttime}%
      {\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
      {\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
    \edef\pgf@marshal{%
      \noexpand\pgfmathanglebetweenpoints%
        {\pgf@x\the\pgf@xb\pgf@y\the\pgf@yb}%
        {\pgf@x\the\pgf@xa\pgf@y\the\pgf@ya}%
    }%
    \pgf@marshal%
    \let\pgfdecoratedangle\pgfmathresult%
  \fi%
}%

\def\pgfpoint@decorate@curveattime#1#2#3#4#5{%
  \edef\pgf@time@s{#1}%
  \pgf@x-\pgf@time@s pt\relax%
  \advance\pgf@x1pt\relax%
  \edef\pgf@time@t{\pgf@sys@tonumber{\pgf@x}}%
  #5\relax%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  #4\relax%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  #3\relax%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  #2\relax%
  \pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
  \pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
  \pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
  \pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
  \pgf@xb=\pgf@time@t\pgf@xb\advance\pgf@xb by\pgf@time@s\pgf@xc%
  \pgf@yb=\pgf@time@t\pgf@yb\advance\pgf@yb by\pgf@time@s\pgf@yc%
  \pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
  \pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
  \pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
  \pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
  \pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
}%


\def\pgf@decorate@transformtoinputsegment@line{%
  \pgftransformshift{%
    \pgfpointlineatdistance{\pgfdecoratedinputsegmentcompleteddistance}{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@last}
  }%
  \pgftransformrotate{\pgfdecoratedangle}%
}%

\def\pgf@decorate@transformtoinputsegment@curve{%
  \pgfslopedattimetrue%
  \pgfallowupsidedownattimetrue%
  \pgftransformcurveattime{\pgf@decorate@inputsegmenttime}%
    {\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
    {\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
}%






\def\pgf@decorate@parsesoftpath#1#2{%
  \def\pgf@decorate@inputsegmentobjectsmacro{#2}%
  \let\pgf@decorate@inputsegmentobjects\pgfutil@empty%
  \pgfutil@tempdima0pt\relax%
  \let\pgfpoint@decorate@lastparsed\pgfpoint@decorate@existingpathlast%
  \let\pgfpoint@decorate@lastnonmovetoparsed\pgfpoint@origin%
  \let\pgf@decorate@queueinputsegmentobject\pgfutil@empty%
  \let\pgfpoint@decorated@firstparsed\pgfutil@empty%
  \expandafter\pgf@decorate@@parsesoftpath#1\pgf@stop%
}%

\def\pgf@decorate@@parsesoftpath#1{%
  \ifx#1\pgf@stop%
    \let\pgf@decorate@queueinputsegmentobject\pgfutil@empty%
    \pgf@decorate@addtoinputsegmentobjects{\pgf@decorate@inputsegmentobject@endofinputsegments}%
    \pgf@decorate@addtoinputsegmentobjects{\pgf@decorate@inputsegmentobject@endofinputsegments}%
    \expandafter\let\pgf@decorate@inputsegmentobjectsmacro\pgf@decorate@inputsegmentobjects%
    \edef\pgf@decorate@totalpathlength{\the\pgfutil@tempdima}%
    \let\pgf@next\relax%
  \else%
    \ifx#1\pgfsyssoftpath@movetotoken%
      \let\pgf@next\pgf@decorate@parsemoveto%
    \else%
      \ifx#1\pgfsyssoftpath@linetotoken%
        \let\pgf@next\pgf@decorate@parselineto%
      \else%
        \ifx#1\pgfsyssoftpath@curvetosupportatoken%
          \let\pgf@next\pgf@decorate@parsecurveto%
        \else%
          \ifx#1\pgfsyssoftpath@closepathtoken%
            \let\pgf@next\pgf@decorate@parseclosepath%
          \else%
            \ifx#1\pgfsyssoftpath@rectcornertoken%
              \let\pgf@next\pgf@decorate@parserect%
            \else%
              \pgferror{Unrecognised soft path token `#1'}%
            \fi%
          \fi%
        \fi%
      \fi%
    \fi%
  \fi%
  \pgf@next}%


\def\pgf@decorate@addtoinputsegmentobjects#1{%
  \ifx\pgf@decorate@queueinputsegmentobject\pgfutil@empty%
  \else%
    \let\pgf@decorate@temp\pgf@decorate@queueinputsegmentobject%
    \let\pgf@decorate@queueinputsegmentobject\pgfutil@empty%
    \expandafter\pgf@decorate@addtoinputsegmentobjects\expandafter{\pgf@decorate@temp}%
  \fi%
  \ifx\pgfpoint@decorated@firstparsed\pgfutil@empty%
    #1%
    \let\pgfpoint@decorated@firstparsed\pgf@decorate@inputsegment@first%
  \fi%
  \expandafter\def\expandafter\pgf@decorate@inputsegmentobjects\expandafter%
    {\pgf@decorate@inputsegmentobjects{#1}}%
}%

\def\pgf@decorate@parsemoveto#1#2{%
  \def\pgf@decorate@queueinputsegmentobject{\pgf@decorate@inputsegmentobject@moveto{\pgf@x#1\pgf@y#2}}%
  \def\pgfpoint@decorate@lastparsed{\pgf@x#1\pgf@y#2}%
  \pgf@decorate@@parsesoftpath%
}%

\def\pgf@decorate@parselineto#1#2{%
  \pgf@decorate@linelength{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}%
  \advance\pgfutil@tempdima\pgfmathresult pt\relax%
  \edef\pgf@decorate@temp{%
    \noexpand\pgf@decorate@inputsegmentobject@lineto{\pgfmathresult pt}{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}%
  }%
  \edef\pgfpoint@decorate@lastparsed{\pgf@x#1\pgf@y#2}%
  \let\pgfpoint@decorate@lastnonmovetoparsed\pgfpoint@decorate@lastparsed%
  \expandafter\pgf@decorate@addtoinputsegmentobjects\expandafter{\pgf@decorate@temp}%
  \pgf@decorate@@parsesoftpath%
}%

\def\pgf@decorate@parsecurveto#1#2\pgfsyssoftpath@curvetosupportbtoken#3#4\pgfsyssoftpath@curvetotoken#5#6{%
  \pgf@decorate@curvelength{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}{\pgf@x#3\pgf@y#4}{\pgf@x#5\pgf@y#6}%
  \advance\pgfutil@tempdima\pgfmathresult pt\relax%
  \edef\pgf@decorate@temp{%
    \noexpand\pgf@decorate@inputsegmentobject@curveto{\pgfmathresult pt}{\pgfpoint@decorate@lastparsed}%
      {\pgf@x#1\pgf@y#2}{\pgf@x#3\pgf@y#4}{\pgf@x#5\pgf@y#6}%
  }%
  \expandafter\pgf@decorate@addtoinputsegmentobjects\expandafter{\pgf@decorate@temp}%
  \edef\pgfpoint@decorate@lastparsed{\pgf@x#5\pgf@y#6}%
  \let\pgfpoint@decorate@lastnonmovetoparsed\pgfpoint@decorate@lastparsed%
  \pgf@decorate@@parsesoftpath%
}%


\def\pgf@decorate@parseclosepath#1#2{%
  \pgf@decorate@linelength{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}%
  \advance\pgfutil@tempdima\pgfmathresult pt\relax%
  \edef\pgf@decorate@temp{%
    \noexpand\pgf@decorate@inputsegmentobject@closepath{\pgfmathresult pt}{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}%
  }%
  \expandafter\pgf@decorate@addtoinputsegmentobjects\expandafter{\pgf@decorate@temp}%
  \edef\pgfpoint@decorate@lastparsed{\pgf@x#1\pgf@y#2}%
  \let\pgfpoint@decorate@lastnonmovetoparsed\pgfpoint@decorate@lastparsed%
  \pgf@decorate@@parsesoftpath%
}%

\newif\ifpgfdecoraterectangleclockwise
\def\pgf@decorate@parserect#1#2\pgfsyssoftpath@rectsizetoken#3#4{%
  \let\pgf@decorate@orig@@parsesoftpath\pgf@decorate@@parsesoftpath%
  \let\pgf@decorate@@parsesoftpath\relax%
  \pgf@decorate@parsemoveto{#1}{#2}%
  \pgf@xa#1\relax%
  \pgf@ya#2\relax%
  \ifpgfdecoraterectangleclockwise%
    \advance\pgf@ya#4%
    \pgf@yb\pgf@ya%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parselineto\pgf@temp%
    \advance\pgf@xa#3%
    \pgf@xb\pgf@xa%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parselineto\pgf@temp%
    \advance\pgf@ya-#4%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parselineto\pgf@temp%
    \advance\pgf@xa-#3%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parseclosepath\pgf@temp%
  \else%
    \advance\pgf@xa#3%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \pgf@xb\pgf@xa%
    \expandafter\pgf@decorate@parselineto\pgf@temp%
    \advance\pgf@ya#4%
    \pgf@yb\pgf@ya%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parselineto\pgf@temp%
    \advance\pgf@xa-#3%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parselineto\pgf@temp%
    \advance\pgf@ya-#4%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parseclosepath\pgf@temp%
  \fi%
  \let\pgf@decorate@@parsesoftpath\pgf@decorate@orig@@parsesoftpath%
  \edef\pgf@marshal{\noexpand\pgf@decorate@parsemoveto{\the\pgf@xb}{\the\pgf@yb}}%
  \pgf@marshal%
}%




\def\pgf@decorate@linelength#1#2{%
  \pgf@process{\pgfpointdiff{#1}{#2}}%
  \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
}%

\newif\ifpgf@decorate@subdivide
\def\pgf@decorate@curvelength#1#2#3#4{%
  \begingroup%
    \pgf@decorate@recursive@subdividecurve@left{#1}{#2}{#3}{#4}%
    \pgfutil@tempdimb\pgfmathresult pt\relax%
    \pgf@decorate@recursive@subdividecurve@right{#1}{#2}{#3}{#4}%
    \advance\pgfutil@tempdimb\pgfmathresult pt\relax%
    \pgfmath@returnone\pgfutil@tempdimb%
  \endgroup%
}%

\def\pgf@decorate@@curvelength#1#2#3#4{%
  \begingroup%
    \pgf@decorate@curvecordlength{#1}{#2}{#3}{#4}%
    \ifpgf@decorate@subdivide%
      \pgf@decorate@recursive@subdividecurve@left{#1}{#2}{#3}{#4}%
      \pgfutil@tempdimb\pgfmathresult pt\relax%
      \pgf@decorate@recursive@subdividecurve@right{#1}{#2}{#3}{#4}%
      \advance\pgfutil@tempdimb\pgfmathresult pt\relax%
      \expandafter\pgfmath@returnone\expandafter\pgfutil@tempdimb%
    \else%
      \expandafter\pgfmath@returnone\expandafter\pgfmathresult\expandafter p\expandafter t\expandafter%
    \fi%
  \endgroup%
}%

\def\pgf@decorate@curvelength@tolerance{1pt}%

\def\pgf@decorate@curvecordlength#1#2#3#4{%
  #4\relax%
  \pgf@xa\pgf@x\pgf@ya\pgf@y%
  #1\relax%
  \advance\pgf@xa-\pgf@x%
  \advance\pgf@ya-\pgf@y%
  \ifdim\pgf@xa<0pt\relax\pgf@xa-\pgf@xa\fi%
  \ifdim\pgf@ya<0pt\relax\pgf@ya-\pgf@ya\fi%
  \pgf@decorate@subdividetrue%
  \ifdim\pgf@xa<\pgf@decorate@curvelength@tolerance\relax%
    \ifdim\pgf@ya<\pgf@decorate@curvelength@tolerance\relax%
      \pgfmathveclen@{\pgfmath@tonumber{\pgf@xa}}{\pgfmath@tonumber{\pgf@ya}}%
      \pgf@decorate@subdividefalse%
    \fi%
  \fi%
}%

\def\pgf@decorate@recursive@subdividecurve@left#1#2#3#4{%
  {%
    #1\relax%
    \pgfutil@tempdima\pgf@x%
    \pgfutil@tempdimb\pgf@y%
    \pgf@xa.5\pgf@x\pgf@ya.5\pgf@y%
    \pgf@xb.25\pgf@x\pgf@yb.25\pgf@y%
    \pgf@xc.125\pgf@x\pgf@yc.125\pgf@y%
    #2\relax%
    \advance\pgf@xa.5\pgf@x\advance\pgf@ya.5\pgf@y%
    \advance\pgf@xb.5\pgf@x\advance\pgf@yb.5\pgf@y%
    \advance\pgf@xc.375\pgf@x\advance\pgf@yc.375\pgf@y%
    #3\relax%
    \advance\pgf@xb.25\pgf@x\advance\pgf@yb.25\pgf@y%
    \advance\pgf@xc.375\pgf@x\advance\pgf@yc.375\pgf@y%
    #4\relax%
    \advance\pgf@xc.125\pgf@x\advance\pgf@yc.125\pgf@y%
    \xdef\pgf@marshal{%
      \noexpand\pgf@decorate@@curvelength%
        {\pgf@x\the\pgfutil@tempdima\pgf@y\the\pgfutil@tempdimb}%
        {\pgf@x\the\pgf@xa\pgf@y\the\pgf@ya}{\pgf@x\the\pgf@xb\pgf@y\the\pgf@yb}
          {\pgf@x\the\pgf@xc\pgf@y\the\pgf@yc}%
    }%
  }%
  \pgf@marshal%
}%

\def\pgf@decorate@recursive@subdividecurve@right#1#2#3#4{%
  {%
    #1\relax%
    \pgfutil@tempdima.125\pgf@x\pgfutil@tempdimb.125\pgf@y%
    #2\relax%
    \advance\pgfutil@tempdima.375\pgf@x\advance\pgfutil@tempdimb.375\pgf@y%
    \pgf@xa.25\pgf@x\pgf@ya.25\pgf@y%
    #3\relax%
    \advance\pgfutil@tempdima.375\pgf@x\advance\pgfutil@tempdimb.375\pgf@y%
    \advance\pgf@xa.5\pgf@x\advance\pgf@ya.5\pgf@y%
    \pgf@xb.5\pgf@x\pgf@yb.5\pgf@y%
    #4\relax%
    \advance\pgfutil@tempdima.125\pgf@x\advance\pgfutil@tempdimb.125\pgf@y%
    \advance\pgf@xa.25\pgf@x\advance\pgf@ya.25\pgf@y%
    \advance\pgf@xb.5\pgf@x\advance\pgf@yb.5\pgf@y%
    \pgf@xc\pgf@x\pgf@yc\pgf@y%
    \xdef\pgf@marshal{%
      \noexpand\pgf@decorate@@curvelength%
        {\pgf@x\the\pgfutil@tempdima\pgf@y\the\pgfutil@tempdimb}%
        {\pgf@x\the\pgf@xa\pgf@y\the\pgf@ya}{\pgf@x\the\pgf@xb\pgf@y\the\pgf@yb}
          {\pgf@x\the\pgf@xc\pgf@y\the\pgf@yc}%
    }%
  }%
  \pgf@marshal%
}%


\def\pgf@decorate@inputsegmentobjects@reverse#1#2{%
  \def\pgf@decorate@path@storein{#2}%
  \def\pgf@decorate@inputsegments@@temp{}%
  \expandafter\pgf@decorate@inputsegments@@reverse@pass@first#1\pgf@stop}%

\def\pgf@decorate@inputsegments@@reverse@pass@first#1#2\pgf@stop{%
  \def\pgf@decorate@temp{#1}%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
    \pgf@decorate@inputsegments@@temp\expandafter\expandafter\expandafter%
      {\expandafter\pgf@decorate@temp\pgf@decorate@inputsegments@@temp}%
  \def\pgf@decorate@test{#2}
  \ifx\pgf@decorate@test\pgfutil@empty%
    \def\pgf@decorate@next{%
      \expandafter\pgf@decorate@inputsegmentobjects@reverse@pass@second\pgf@decorate@inputsegments@@temp\pgf@stop%
    }%
  \else%
    \def\pgf@decorate@next{\pgf@decorate@inputsegments@@reverse@pass@first#2\pgf@stop}%
  \fi%
  \pgf@decorate@next%
}%
\def\pgf@decorate@inputsegmentobjects@reverse@pass@second#1#2#3\pgf@stop{%
  \def\pgf@decorate@inputsegments@temp{#3}%
  \def\pgf@decorate@inputsegments@@temp{}%
  \let\pgf@decorate@current@inputsegmentobject=\pgfutil@empty
  \let\pgf@decorate@last@object=\pgfutil@empty
  \pgf@decorate@inputsegmentobjects@reverse@moveto@waitingtrue%
  \pgf@decorate@inputsegmentobjects@reverse@closepath@waitingfalse%
  \expandafter\pgf@decorate@path@@reverse@pass@second\pgf@decorate@inputsegments@temp\pgf@stop}%


\def\pgf@decorate@path@@reverse@pass@second#1{%
  \ifx#1\pgf@stop%
    \expandafter\def\expandafter\pgf@decorate@inputsegments@@temp\expandafter{%
      \pgf@decorate@inputsegments@@temp%
      {\pgf@decorate@inputsegmentobject@endofinputsegments}%
      {\pgf@decorate@inputsegmentobject@endofinputsegments}
    }%
    \expandafter\let\pgf@decorate@path@storein=\pgf@decorate@inputsegments@@temp%
    \let\pgf@decorate@next=\relax%
  \else%
    \ifx#1\pgf@decorate@inputsegmentobject@moveto%
      \let\pgf@decorate@next=\pgf@decorate@inputsegmentobjects@reverse@moveto%
    \else%
      \ifx#1\pgf@decorate@inputsegmentobject@lineto%
        \let\pgf@decorate@next=\pgf@decorate@inputsegmentobjects@reverse@lineto%
      \else%
        \ifx#1\pgf@decorate@inputsegmentobject@curveto%
          \let\pgf@decorate@next=\pgf@decorate@inputsegmentobjects@reverse@curveto%
        \else%
          \ifx#1\pgf@decorate@inputsegmentobject@closepath%
            \let\pgf@decorate@next=\pgf@decorate@inputsegmentobjects@reverse@closepath%
          \else%
          \fi%
        \fi%
      \fi%
    \fi%
  \fi%
  \pgf@decorate@next%
}%

\newif\ifpgf@decorate@inputsegmentobjects@reverse@moveto@waiting

\def\pgf@decorate@inputsegmentobjects@reverse@moveto#1{%
  \ifpgf@decorate@inputsegmentobjects@reverse@closepath@waiting%
    \edef\pgf@decorate@current@inputsegmentobject{%
      {\noexpand\pgf@decorate@inputsegmentobject@closepath%
        {\pgf@decorate@reverse@closepath@length}%
        {\pgf@decorate@last}%
        {#1}%
      }%
    }%
    \pgf@decorate@inputsegmentobjects@reverse@closepath@waitingfalse%
  \else%
    \let\pgf@decorate@current@inputsegmentobject=\pgfutil@empty%
  \fi%
  \pgf@decorate@inputsegmentobjects@reverse@moveto@waitingtrue%
  \pgf@decorate@path@@@reverse@pass@second%
}%

\newif\ifpgf@decorate@inputsegmentobjects@reverse@closepath@waiting

\def\pgf@decorate@inputsegmentobjects@reverse@closepath#1#2#3{%
  \pgf@decorate@inputsegmentobjects@reverse@closepath@waitingtrue%
  \def\pgf@decorate@reverse@closepath@length{#1}%
  \def\pgf@decorate@current@inputsegmentobject{}%
  \pgf@decorate@inputsegmentobjects@reverse@lineto{#1}{#2}{#3}%
}%

\def\pgf@decorate@inputsegmentobjects@reverse@lineto#1#2#3#4{%
  \ifpgf@decorate@inputsegmentobjects@reverse@moveto@waiting%
    \def\pgf@decorate@current@inputsegmentobject{{\pgf@decorate@inputsegmentobject@moveto{#3}}}%
    \pgf@decorate@inputsegmentobjects@reverse@moveto@waitingfalse%
  \else%
    \let\pgf@decorate@current@inputsegmentobject=\pgfutil@empty%
  \fi%
  \def\pgf@decorate@append@inputsegmentobject{{\pgf@decorate@inputsegmentobject@lineto{#1}{#3}{#2}}}%
  \ifx#4\pgf@decorate@inputsegmentobject@moveto%
    \ifpgf@decorate@inputsegmentobjects@reverse@closepath@waiting%
      \def\pgf@decorate@append@inputsegmentobject{{\pgf@decorate@inputsegmentobject@closepath{#1}{#3}{#2}}}%
      \pgf@decorate@inputsegmentobjects@reverse@closepath@waitingfalse%
    \else%
      \def\pgf@decorate@append@inputsegmentobject{{\pgf@decorate@inputsegmentobject@lineto{#1}{#3}{#2}}}%
    \fi%
  \fi%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
    \pgf@decorate@current@inputsegmentobject\expandafter\expandafter\expandafter%
      {\expandafter\pgf@decorate@current@inputsegmentobject\pgf@decorate@append@inputsegmentobject}
  \def\pgf@decorate@last{#2}%
  \pgf@decorate@path@@@reverse@pass@second#4%
}%

\def\pgf@decorate@inputsegmentobjects@reverse@curveto#1#2#3#4#5{%
  \ifpgf@decorate@inputsegmentobjects@reverse@moveto@waiting%
    \def\pgf@decorate@current@inputsegmentobject{%
      {\pgf@decorate@inputsegmentobject@moveto{#5}}%
      {\pgf@decorate@inputsegmentobject@curveto{#1}{#5}{#4}{#3}{#2}}%
    }%
    \pgf@decorate@inputsegmentobjects@reverse@moveto@waitingfalse%
  \else%
    \def\pgf@decorate@current@inputsegmentobject{{\pgf@decorate@inputsegmentobject@curveto{#1}{#5}{#4}{#3}{#2}}}%
  \fi%
  \def\pgf@decorate@last{#2}%
  \pgf@decorate@path@@@reverse@pass@second%
}%

\def\pgf@decorate@path@@@reverse@pass@second{%
  \ifx\pgf@decorate@current@inputsegmentobject\pgfutil@empty%
  \else%
    \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
      \pgf@decorate@inputsegments@@temp\expandafter\expandafter\expandafter%
        {\expandafter\pgf@decorate@inputsegments@@temp\pgf@decorate@current@inputsegmentobject}%
  \fi%
  \pgf@decorate@path@@reverse@pass@second%
}%





\let\startpgfdecoration=\pgfdecoration
\let\stoppgfdecoration=\endpgfdecoration

\let\startpgfmetadecoration=\pgfmetadecoration
\let\stoppgfmetadecoration=\endpgfmetadecoration






\pgfdeclaredecoration{lineto}{initial}{%
  \state{initial}[switch if input segment less than=\pgfdecoratedremainingdistance to input segment,
                  width=\pgfdecoratedremainingdistance]
  {
  }%
  \state{input segment}[width=\pgfdecoratedinputsegmentlength,next state=initial]
  {
    \pgfpathlineto{\pgfpointdecoratedinputsegmentlast}
  }%

  \state{final}{\pgfpathlineto{\pgfpointdecoratedpathlast}}%
}%

\pgfdeclaredecoration{moveto}{initial}{%
  \state{initial}[width=\pgfdecoratedremainingdistance]{}%
  \state{final}{\pgfpathmoveto{\pgfpointdecoratedpathlast}}%
}%


\pgfdeclaredecoration{curveto}{initial}{%
  \state{initial}[width=\pgfdecoratedinputsegmentlength/100]
  {
    \pgfpathlineto{\pgfpointorigin}
  }%
  \state{final}{\pgfpathlineto{\pgfpointdecoratedpathlast}}%
}%





\let\pgfsnakeremainingdistance=\pgfdecoratedremainingdistance
\let\pgfsnakecompleteddistance=\pgfdecoratedcompleteddistance
\def\pgfsnakeangle{\pgfdecoratedangle}%
\let\pgfdeclaresnake=\pgfdeclaredecoration
\let\pgfsetsnakesegmenttransformation=\pgfsetdecorationsegmenttransformation
\def\pgfpathsnakesto#1#2{%
  \edef\pgf@temp{#1}%
  \expandafter\pgfdecoration\expandafter{\pgf@temp}%
    \pgfpathlineto{#2}%
  \endpgfdecoration%
}%
\def\pgfpathsnaketo#1#2{\pgfpathsnakesto{{#1}{\pgfsnakeremainingdistance}}{#2}}%
\def\pgfpathsnakealongvector#1#2#3{%
  \pgf@process{#3}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgfmathparse{#2}%
  \pgf@xa=\pgfmathresult\pgf@xa%
  \pgf@ya=\pgfmathresult\pgf@ya%
  \advance\pgf@xa by\pgf@path@lastx%
  \advance\pgf@ya by\pgf@path@lasty%
  \edef\pgf@snake@lib@temp{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \pgfpathsnaketo{#1}{\pgf@snake@lib@temp}%
}%

\let\pgfsnakesegmentamplitude=\pgfdecorationsegmentamplitude
\let\pgfsnakesegmentlength=\pgfdecorationsegmentlength
\def\pgfsnakesegmentangle{\pgfdecorationsegmentangle}%
\def\pgfsnakesegmentobjectlength{\pgfkeysvalueof{/pgf/decoration/shape start width}}%
\def\pgfsnakesegmentaspect{\pgfdecorationsegmentaspect}%

\pgfset{%
  /pgf/segment amplitude/.style={/pgf/decoration={amplitude={#1},shape height={2*(#1)}}},
  /pgf/segment length/.style={/pgf/decoration={segment length={#1}}},
  /pgf/segment angle/.style={/pgf/decoration={angle={#1}}},
  /pgf/segment aspect/.style={/pgf/decoration={aspect={#1}}},
  /pgf/segment object length/.style={/pgf/decoration={shape width={#1},radius={#1}}}}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduledecorations.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulematrix.code.tex ====

\ProvidesFileRCS{pgfmodulematrix.code.tex}

\usepgfmodule{shapes}%

\newif\ifpgfmatrix
\newif\ifpgf@matrix@correct@call

\newif\ifpgf@matrix@fixed

\newcount\pgfmatrixcurrentrow

\newcount\pgfmatrixcurrentcolumn
\newcount\pgf@matrix@numberofcolumns

\let\pgf@matrix@cell=\pgfnodeparttextbox %
\let\pgf@matrix@box=\pgf@matrix@cell %

\long\def\pgfmatrixbeforeassemblenode#1{%
  \long\def\pgf@matrix@before@assemnble@node{#1}}
\pgfmatrixbeforeassemblenode{}


\def\pgfsetmatrixrowsep#1{\def\pgfmatrixrowsep{#1}}%
\def\pgfsetmatrixcolumnsep#1{\def\pgfmatrixcolumnsep{#1}}%

\def\pgfmatrixrowsep{0pt}%
\def\pgfmatrixcolumnsep{0pt}%




\def\pgfmatrix#1#2#3#4#5#6{%
  \ifpgfmatrix%
    \pgferror{You cannot nest pgfmatrix environments, yet}
  \fi%
  \bgroup%
    \everycr{}%
    #6%
    \def\pgf@matrix@par@shape{#1}%
    \def\pgf@matrix@par@anchor{#2}%
    \def\pgf@matrix@par@name{#3}%
    \def\pgf@matrix@par@usage{#4}%
    \def\pgf@matrix@par@shift{#5}%
    \ifx\pgf@matrix@par@name\pgfutil@empty%
      \def\pgf@matrix@par@name{pgf@matrix@internal}%
    \fi%
    \pgfmatrixcurrentrow=0\relax%
    \pgfmatrixcurrentcolumn=0\relax%
    \pgf@matrix@numberofcolumns=0\relax%
    \let\\=\pgfmatrixendrow%
    \tabskip=0pt%
    \offinterlineskip%
    \pgfmatrixtrue%
    \let\pgf@matrix@node@list=\pgfutil@empty%
    \expandafter\let\csname pgf@matrix@column@finish@1\endcsname=\pgfutil@empty%
    \let\pgf@matrix@row@finish=\pgfutil@empty%
    \afterassignment\pgf@matrix@cont\let\pgf@next=%
}%
\def\pgf@matrix@cont{%
    \setbox\pgf@matrix@box=\hbox\bgroup\vbox\bgroup%
    \halign\bgroup%
    \pgf@matrix@init@row%
    \pgf@matrix@step@column%
    {%
      \pgf@matrix@startcell%
      ##%
      \pgf@matrix@endcell%
    }%
    &%
    ##\pgf@matrix@padding&&%
    \pgf@matrix@step@column%
    {%
      \pgf@matrix@startcell%
      ##%
      \pgf@matrix@endcell%
    }&%
    ##\pgf@matrix@padding%
    \cr%
}%

\def\pgf@end@matrix{%
      \egroup\egroup%
    \egroup%
    \pgf@matrix@before@assemnble@node
    \ifx\pgf@matrix@node@list\pgfutil@empty%
    \else%
      \pgf@matrix@compute@origin%
      \pgf@matrix@shift@nodes@initial%
    \fi%
    \pgftransformresetnontranslations%
    \pgftransformshift{\pgf@process{\pgftransformreset\pgf@matrix@par@shift\pgf@x=-\pgf@x\pgf@y=-\pgf@y}}%
    \pgfmultipartnode{\pgf@matrix@par@shape}{\pgf@matrix@par@anchor}{\pgf@matrix@par@name}{\pgf@matrix@par@usage}%
    \ifx\pgf@matrix@node@list\pgfutil@empty%
    \else%
      {%
        \pgftransformreset%
        \pgf@process{\pgfpointanchor{\pgf@matrix@par@name}{text}}%
        \xdef\pgf@matrix@offset{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
        \pgf@matrix@shift@nodes@secondary{\pgf@matrix@offset}%
      }%
    \fi%
}%





\def\pgfmatrixnextcell{%
  \let\pgf@matrix@signal@cell@end=\pgf@matrix@signal@cell@end%
  \pgfutil@ifnextchar[{\pgf@matrix@cell@cont}{\pgf@matrix@cell@cont[0pt]}}%

\def\pgf@matrix@cell@cont[#1]{%
  \xdef\pgf@matrix@last@nextcell@options{#1}%
  &\pgf@matrix@correct@calltrue&%
}%


\def\pgf@matrix@fixed@text{between origins}%
\def\pgf@matrix@natural@text{between borders}%

\def\pgf@matrix@addtolength#1#2{\edef\pgf@temp{#2}\expandafter\pgf@matrix@addtolength@\expandafter#1#2,\pgf@stop}%
\def\pgf@matrix@addtolength@#1#2,#3\pgf@stop{%
  \pgfkeys@spdef\pgf@temp{#2}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \ifx\pgf@temp\pgf@matrix@fixed@text%
      \global\pgf@matrix@fixedtrue%
    \else%
      \ifx\pgf@temp\pgf@matrix@natural@text%
        \global\pgf@matrix@fixedfalse%
      \else%
        \pgfmathaddtolength{#1}{#2}%
      \fi%
    \fi%
  \fi%
  \def\pgf@temp{#3}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \pgf@matrix@addtolength@#1#3\pgf@stop%
  \fi%
}%




\def\pgf@matrix@init@row{%
  \relax%
  \global\advance\pgfmatrixcurrentrow by 1\relax%
  \global\pgfmatrixcurrentcolumn=0\relax%
  \expandafter\gdef\csname pgf@matrix@maxy\the\pgfmatrixcurrentrow\endcsname{0pt}%
  \expandafter\gdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{0pt}%
}%




\def\pgf@matrix@step@column{%
  \relax%
  \global\advance\pgfmatrixcurrentcolumn by1\relax%
}%




\def\pgf@matrix@startcell{%
  \let\pgf@nodecallback=\pgf@matrix@nodecallback%
  \pgfinterruptboundingbox%
  \pgftransformreset%
  \setbox\pgf@matrix@cell=\hbox\bgroup\bgroup%
    \pgf@relevantforpicturesizetrue
    \pgfsys@beginpicture%
    \normalbaselines%
    \pgfutil@ifnextchar\let%
    {%
      \afterassignment\pgf@matrix@empty@check\let\pgf@matrix@temp=%
    }%
    {%
      \pgf@matrix@empty@cell@false%
      \pgfmatrixbegincode%
    }%
}%

\def\pgf@matrix@empty@check{\futurelet\pgf@matrix@check@token\pgf@matrix@empty@check@cont}%
\def\pgf@matrix@empty@check@cont{%
  \ifx\pgf@matrix@check@token\pgf@matrix@signal@cell@end%
    \pgf@matrix@empty@cell@true%
    \expandafter%
    \pgfmatrixemptycode%
    \expandafter%
    \let%
  \else%
    \pgf@matrix@empty@cell@false%
    \expandafter%
    \pgfmatrixbegincode%
    \expandafter
    \let%
  \fi%
}%

\newif\ifpgf@matrix@empty@cell@



\def\pgf@matrix@endcell{%
    \ifpgf@matrix@empty@cell@%
    \else%
      \expandafter\expandafter\expandafter\pgfmatrixendcode%
      \expandafter\ifpgf@matrix@last@cell@in@row\expandafter\pgf@matrix@last@cell@in@rowtrue\expandafter\fi%
    \fi%
    \pgfsys@endpicture%
    \ifnum\pgfmatrixcurrentcolumn<\pgf@matrix@numberofcolumns%
    \else%
    \ifpgf@matrix@last@cell@in@row\else%
    {%
      \global\pgf@matrix@fixedfalse%
      \pgf@x=0pt%
      \pgf@matrix@addtolength{\pgf@x}{\pgfmatrixcolumnsep}%
      \pgf@matrix@addtolength{\pgf@x}{\pgf@matrix@last@nextcell@options}%
      \ifpgf@matrix@fixed%
        \expandafter\pgfutil@g@addto@macro\csname pgf@matrix@column@finish@\the\pgfmatrixcurrentcolumn\endcsname%
          {\global\pgf@picmaxx=0pt}%
      \fi%
      \advance\pgfmatrixcurrentcolumn by1\relax %
      \expandafter\xdef\csname pgf@matrix@column@sep@\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@x}%
      \ifpgf@matrix@fixed%
        \expandafter\gdef\csname pgf@matrix@column@finish@\the\pgfmatrixcurrentcolumn\endcsname{\global\pgf@picminx=0pt}%
      \else%
        \expandafter\global\expandafter\let\csname pgf@matrix@column@finish@\the\pgfmatrixcurrentcolumn\endcsname=\pgfutil@empty%
      \fi%
    }%
    \fi\fi%
    \ifdim\pgf@picmaxx=-16000pt\relax%
      \global\pgf@picmaxx=0pt\relax%
      \global\pgf@picminx=0pt\relax%
      \global\pgf@picmaxy=0pt\relax%
      \global\pgf@picminy=0pt\relax%
    \fi%
    \csname pgf@matrix@column@finish@\the\pgfmatrixcurrentcolumn\endcsname%
    \pgf@matrix@row@finish%
  \egroup\egroup%
  \ifnum\pgfmatrixcurrentcolumn>1\relax%
    \pgf@y=\csname pgf@matrix@column@sep@\the\pgfmatrixcurrentcolumn\endcsname\relax%
    \advance\pgf@picminx by-\pgf@y%
  \fi%
  \ifdim\pgf@picmaxy>\csname pgf@matrix@maxy\the\pgfmatrixcurrentrow\endcsname%
    \expandafter\xdef\csname pgf@matrix@maxy\the\pgfmatrixcurrentrow\endcsname{\the\pgf@picmaxy}%
  \fi%
  \ifdim\pgf@picminy<\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname%
    \expandafter\xdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{\the\pgf@picminy}%
  \fi%
  \ht\pgf@matrix@cell=\pgf@picmaxy%
  \dp\pgf@matrix@cell=-\pgf@picminy%
  \ifnum\pgfmatrixcurrentcolumn>\pgf@matrix@numberofcolumns\relax%
    \expandafter\xdef\csname pgf@matrix@maxx\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@picmaxx}%
    \expandafter\xdef\csname pgf@matrix@minx\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@picminx}%
    \global\pgf@matrix@numberofcolumns=\pgfmatrixcurrentcolumn\relax%
  \else%
    \ifdim\pgf@picmaxx>\csname pgf@matrix@maxx\the\pgfmatrixcurrentcolumn\endcsname%
      \expandafter\xdef\csname pgf@matrix@maxx\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@picmaxx}%
    \fi%
    \ifdim\pgf@picminx<\csname pgf@matrix@minx\the\pgfmatrixcurrentcolumn\endcsname%
      \expandafter\xdef\csname pgf@matrix@minx\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@picminx}%
    \fi%
  \fi%
  \xdef\pgf@matrix@paddingskip{\the\pgf@picmaxx}%
  \hfil\hskip-\pgf@picminx%
  \wd\pgf@matrix@cell=0pt%
  \box\pgf@matrix@cell%
  \endpgfinterruptboundingbox%
}%

\let\pgfmatrixbegincode=\relax
\let\pgfmatrixendcode=\relax
\let\pgfmatrixemptycode=\relax



\def\pgf@matrix@nodecallback#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \xdef\pgf@matrix@node@list{\pgf@matrix@node@list,{#1}}%
    \expandafter\xdef\csname pgf@matrix@node@location@#1\endcsname{{\the\pgfmatrixcurrentrow}{\the\pgfmatrixcurrentcolumn}}%
  \fi%
}%




\def\pgf@matrix@padding{%
  \ifpgf@matrix@correct@call%
  \else%
    \pgferror{Single ampersand used with wrong catcode}%
  \fi%
  \hskip\pgf@matrix@paddingskip\hfil%
}%




\def\pgf@matrix@compute@origin{%
  {%
    \ifnum\pgfmatrixcurrentrow>0\relax%
      \expandafter\gdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{0pt}%
    \fi
    \c@pgf@counta=\pgfmatrixcurrentrow\relax%
    \loop%
    \ifnum\c@pgf@counta>1\relax%
      \pgf@y=\csname pgf@matrix@miny\the\c@pgf@counta\endcsname\relax%
      \advance\pgf@y by\csname pgf@matrix@maxy\the\c@pgf@counta\endcsname\relax
      \advance\c@pgf@counta by-1\relax%
      \pgf@ya=\csname pgf@matrix@miny\the\c@pgf@counta\endcsname\relax%
      \advance\pgf@y by-\pgf@ya\relax%
      \expandafter\xdef\csname pgf@matrix@miny\the\c@pgf@counta\endcsname{\the\pgf@y}%
    \repeat%
  }%
  {%
    \ifnum\pgf@matrix@numberofcolumns>0\relax%
      \pgf@x=\csname pgf@matrix@minx1\endcsname\relax%
      \pgf@x=-\pgf@x%
      \expandafter\xdef\csname pgf@matrix@minx1\endcsname{\the\pgf@x}%
    \fi
    \c@pgf@counta=1\relax%
    \loop%
    \ifnum\c@pgf@counta<\pgf@matrix@numberofcolumns\relax%
      \pgf@x=\csname pgf@matrix@minx\the\c@pgf@counta\endcsname\relax%
      \advance\pgf@x by\csname pgf@matrix@maxx\the\c@pgf@counta\endcsname\relax%
      \advance\c@pgf@counta by1\relax%
      \pgf@xa=\csname pgf@matrix@minx\the\c@pgf@counta\endcsname\relax%
      \advance\pgf@x by-\pgf@xa\relax%
      \expandafter\xdef\csname pgf@matrix@minx\the\c@pgf@counta\endcsname{\the\pgf@x}%
    \repeat%
  }%
}%




\def\pgf@matrix@shift@nodes@initial{%
  {%
  \pgfutil@for\pgf@matrix@node@name:=\pgf@matrix@node@list\do{%
    \ifx\pgf@matrix@node@name\pgfutil@empty%
    \else%
      \expandafter\ifx\csname pgf@matrix@node@visited@\pgf@matrix@node@name\endcsname\relax%
        \pgf@shift@node{\pgf@matrix@node@name}{%
          \pgf@x=\csname pgf@matrix@minx%
            \expandafter\expandafter\expandafter\pgfutil@secondoftwo\csname pgf@matrix@node@location@\pgf@matrix@node@name\endcsname\endcsname%
          \pgf@y=\csname pgf@matrix@miny%
            \expandafter\expandafter\expandafter\pgfutil@firstoftwo\csname pgf@matrix@node@location@\pgf@matrix@node@name\endcsname\endcsname%
          }%
        \expandafter\let\csname pgf@matrix@node@visited@\pgf@matrix@node@name\endcsname=\pgfutil@empty%
      \fi%
    \fi%
  }%
  }%
}%



\def\pgf@matrix@shift@nodes@secondary#1{%
  \pgfutil@for\pgf@matrix@node@name:=\pgf@matrix@node@list\do{%
    \ifx\pgf@matrix@node@name\pgfutil@empty%
    \else%
      \expandafter\ifx\csname pgf@matrix@node@visited@\pgf@matrix@node@name\endcsname\relax%
        \pgf@shift@node{\pgf@matrix@node@name}{#1}%
        \expandafter\let\csname pgf@matrix@node@visited@\pgf@matrix@node@name\endcsname=\pgfutil@empty%
      \fi%
    \fi%
  }%
}%


\def\pgfmatrixendrow{%
  \let\pgf@matrix@signal@cell@end=\pgf@matrix@signal@cell@end
  \pgf@matrix@last@cell@in@rowtrue%
  \xdef\pgf@matrix@rowsep{\pgfmatrixrowsep}%
  &\pgf@matrix@correct@calltrue%
  \global\pgf@matrix@fixedfalse%
  \pgf@y=0pt%
  \pgf@matrix@addtolength\pgf@y{\pgf@matrix@rowsep}%
  \pgfutil@ifnextchar[{\pgfmatrixendrow@skip}{\pgf@matrix@finish@line}%
}%
\newif\ifpgf@matrix@last@cell@in@row

\def\pgf@matrix@signal@cell@end{\pgf@matrix@signal@cell@end}%

\def\pgfmatrixendrow@skip[#1]{%
  \pgf@matrix@addtolength\pgf@y{#1}%
  \pgf@matrix@finish@line%
}%

\def\pgf@matrix@finish@line{%
  \global\pgf@y=\pgf@y%
  \pgf@ya=-\pgf@y%
  \global\advance\pgf@ya by\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname%
  \expandafter\xdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{\the\pgf@ya}%
  \pgfutil@ifnextchar\egroup{\cr\pgf@end@matrix}{\pgf@matrix@no@eom@found}%
}%

\def\pgf@matrix@eom@found{%
  \cr%
  \pgf@end@matrix%
}%

\def\pgf@matrix@no@eom@found{%
  \cr%
  \noalign{\vskip\pgf@y%
  \ifpgf@matrix@fixed%
    \vskip\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname%
    \vskip\pgf@y%
    \pgf@y=-\pgf@y%
    \expandafter\xdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{\the\pgf@y}%
    \gdef\pgf@matrix@row@finish{\global\pgf@picmaxy=0pt}%
  \else%
    \global\let\pgf@matrix@row@finish=\pgfutil@empty%
  \fi%
  }%
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulematrix.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulenonlineartransformations.code.tex ====

\ProvidesFileRCS{pgfmodulenonlineartransformations.code.tex}







\def\pgfpointtransformednonlinear#1{%
  \pgf@process{%
    #1%
    \pgf@pos@transform@glob%
    \pgf@nlt@list%
  }
}%





\def\pgfapproximatenonlineartranslation{%
  \ifx\pgf@nlt@list\pgfutil@empty%
  \else%
    \pgfpointtransformednonlinear{\pgfpointorigin}%
    \pgf@pt@x=\pgf@x%
    \pgf@pt@y=\pgf@y%
    \let\pgf@nlt@list\pgfutil@empty%
    \let\pgf@nlt@moveto\pgf@lt@moveto%
    \let\pgf@nlt@lineto\pgf@lt@lineto%
    \let\pgf@nlt@curveto\pgf@lt@curveto%
    \let\pgf@nlt@closepath\pgf@lt@closepath%
  \fi%
}%




\def\pgfapproximatenonlineartransformation{%
  \ifx\pgf@nlt@list\pgfutil@empty%
  \else%
    \pgfpointtransformednonlinear{\pgfpoint{1pt}{0pt}}%
    \pgf@xa\pgf@x
    \pgf@ya\pgf@y
    \pgfpointtransformednonlinear{\pgfpoint{0pt}{1pt}}%
    \pgf@xb\pgf@x
    \pgf@yb\pgf@y
    \pgfpointtransformednonlinear{\pgfpointorigin}%
    \advance\pgf@xa by-\pgf@x
    \advance\pgf@xb by-\pgf@x
    \advance\pgf@ya by-\pgf@y
    \advance\pgf@yb by-\pgf@y
    \pgfsettransformentries{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@ya}{\pgf@sys@tonumber\pgf@xb}{\pgf@sys@tonumber\pgf@yb}{\pgf@x}{\pgf@y}%
    \let\pgf@nlt@list\pgfutil@empty%
    \let\pgf@nlt@moveto\pgf@lt@moveto%
    \let\pgf@nlt@lineto\pgf@lt@lineto%
    \let\pgf@nlt@curveto\pgf@lt@curveto%
    \let\pgf@nlt@closepath\pgf@lt@closepath%
  \fi%
}%




\def\pgftransformnonlinear#1{%
  \expandafter\def\expandafter\pgf@nlt@list\expandafter{\pgf@nlt@list#1}%
  \let\pgf@nlt@moveto\pgf@nlt@moveto@nlt
  \let\pgf@nlt@lineto\pgf@nlt@lineto@nlt
  \let\pgf@nlt@curveto\pgf@nlt@curveto@nlt
  \let\pgf@nlt@closepath\pgf@nlt@closepath@nlt
}%

\def\pgf@nlt@moveto@nlt#1#2{%
  {%
    \pgfutil@tempdima#1%
    \pgfutil@tempdimb#2%
    \pgf@x\pgfutil@tempdima%
    \pgf@y\pgfutil@tempdimb%
    \xdef\pgf@nlt@last@moveto@orig{{\the\pgf@x}{\the\pgf@y}}%
    \pgf@nlt@list%
    \xdef\pgf@nlt@last@moveto@trans{{\the\pgf@x}{\the\pgf@y}}%
    \xdef\pgf@nlt@last@moveto@xaxis{{\the\pgf@xa}{\the\pgf@ya}}%
    \xdef\pgf@nlt@last@moveto@yaxis{{\the\pgf@xb}{\the\pgf@yb}}%
    \pgf@protocolsizes{\pgf@x}{\pgf@y}%
    \pgfsyssoftpath@moveto{\the\pgf@x}{\the\pgf@y}%
    \global\let\pgf@nlt@last@coord@orig\pgf@nlt@last@moveto@orig%
    \global\let\pgf@nlt@last@coord@trans\pgf@nlt@last@moveto@trans%
    \global\let\pgf@nlt@last@coord@xaxis\pgf@nlt@last@moveto@xaxis%
    \global\let\pgf@nlt@last@coord@yaxis\pgf@nlt@last@moveto@yaxis%
  }%
}%


\def\pgf@nlt@lineto@nlt#1#2{%
  {%
    \edef\pgf@temp{\pgf@xc\the#1\pgf@yc\the#2}%
    \pgf@temp%
    \expandafter\pgfqpoint\pgf@nlt@last@coord@orig%
    \expandafter\pgf@nlt@set@temps\pgf@nlt@last@coord@trans%
    \pgf@xa\pgf@x\advance\pgf@xa by-\pgf@xc%
    \pgf@ya\pgf@y\advance\pgf@ya by-\pgf@yc%
    \pgfutil@tempswafalse%
    \ifdim\pgf@xa<0.1pt\relax\ifdim\pgf@xa>-0.1pt\relax\ifdim\pgf@ya<0.1pt\relax\ifdim\pgf@ya>-0.1pt\relax\pgfutil@tempswatrue\fi\fi\fi\fi%
    \ifpgfutil@tempswa%
      \pgf@x\pgf@xc\pgf@y\pgf@yc%
      \xdef\pgf@nlt@last@coord@orig{{\the\pgf@x}{\the\pgf@y}}%
      \pgf@process{\pgf@nlt@list}%
      \xdef\pgf@nlt@last@coord@trans{{\the\pgf@x}{\the\pgf@y}}%
      \xdef\pgf@nlt@last@coord@xaxis{{\the\pgf@xa}{\the\pgf@ya}}%
      \xdef\pgf@nlt@last@coord@yaxis{{\the\pgf@xb}{\the\pgf@yb}}%
      \pgf@protocolsizes{\pgf@x}{\pgf@y}%
      \pgfsyssoftpath@lineto{\the\pgf@x}{\the\pgf@y}%
    \else%
      \pgf@xb=.333333\pgf@x%
      \advance\pgf@xb by.666666\pgf@xc%
      \pgf@yb=.333333\pgf@y%
      \advance\pgf@yb by.666666\pgf@yc%
      \pgf@xa=.333333\pgf@xc%
      \advance\pgf@xa by.666666\pgf@x%
      \pgf@ya=.333333\pgf@yc%
      \advance\pgf@ya by.666666\pgf@y%
      \pgf@nlt@inner@curve%
    \fi%
  }%
}%

\def\pgf@nlt@set@temps#1#2{%
  \pgfutil@tempdima#1\pgfutil@tempdimb#2%
}%

\def\pgf@nlt@curveto@nlt#1#2#3#4#5#6{%
  {%
    \edef\pgf@temp{\pgf@xa\the#1\pgf@ya\the#2\pgf@xb\the#3\pgf@yb\the#4\pgf@xc\the#5\pgf@yc\the#6}%
    \pgf@temp%
    \pgf@nlt@inner@curve%
  }%
}%

\newdimen\pgftransformnonlinearflatness
\pgftransformnonlinearflatness=5pt
\def\pgfsettransformnonlinearflatness#1{\pgfmathsetlength\pgftransformnonlinearflatness{#1}}%



\def\pgf@nlt@inner@curve{%
  \expandafter\pgfqpoint\pgf@nlt@last@coord@orig%
  \pgfutil@tempdima\pgf@xa\advance\pgfutil@tempdima by-\pgf@xb
  \pgfutil@tempdimb\pgf@ya\advance\pgfutil@tempdimb by-\pgf@yb
  \begingroup
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \advance\pgf@xb by-\pgf@xc%
    \advance\pgf@yb by-\pgf@yc%
    \pgfutil@tempswafalse
    \ifdim\pgfutil@tempdima>\pgftransformnonlinearflatness\pgfutil@tempswatrue\fi%
    \ifdim\pgfutil@tempdima<-\pgftransformnonlinearflatness\pgfutil@tempswatrue\fi%
    \ifdim\pgfutil@tempdimb>\pgftransformnonlinearflatness\pgfutil@tempswatrue\fi%
    \ifdim\pgfutil@tempdimb<-\pgftransformnonlinearflatness\pgfutil@tempswatrue\fi%
    \ifdim\pgf@xa>\pgftransformnonlinearflatness\pgfutil@tempswatrue\fi%
    \ifdim\pgf@xa<-\pgftransformnonlinearflatness\pgfutil@tempswatrue\fi%
    \ifdim\pgf@ya>\pgftransformnonlinearflatness\pgfutil@tempswatrue\fi%
    \ifdim\pgf@ya<-\pgftransformnonlinearflatness\pgfutil@tempswatrue\fi%
    \ifdim\pgf@xb>\pgftransformnonlinearflatness\pgfutil@tempswatrue\fi%
    \ifdim\pgf@xb<-\pgftransformnonlinearflatness\pgfutil@tempswatrue\fi%
    \ifdim\pgf@yb>\pgftransformnonlinearflatness\pgfutil@tempswatrue\fi%
    \ifdim\pgf@yb<-\pgftransformnonlinearflatness\pgfutil@tempswatrue\fi%
  \ifpgfutil@tempswa%
    \endgroup%
    {%
      \edef\pgf@orig@xya{\pgf@xa\the\pgf@xa\pgf@ya\the\pgf@ya}
      \edef\pgf@orig@xyb{\pgf@xb\the\pgf@xb\pgf@yb\the\pgf@yb}
      \edef\pgf@orig@xyc{\pgf@xc\the\pgf@xc\pgf@yc\the\pgf@yc}
      \pgfpointcurveattime{.5}%
        {\expandafter\pgfqpoint\pgf@nlt@last@coord@orig}%
        {\pgf@x\pgf@xa\pgf@y\pgf@ya}%
        {\pgf@x\pgf@xb\pgf@y\pgf@yb}%
        {\pgf@x\pgf@xc\pgf@y\pgf@yc}%
      {%
        \pgf@xc\pgf@x\pgf@yc\pgf@y
        \expandafter\pgfqpoint\pgf@nlt@last@coord@orig%
        \pgf@orig@xya%
        \pgf@xa\pgf@time@s\pgf@xa\advance\pgf@xa by\pgf@time@t\pgf@x%
        \pgf@ya\pgf@time@s\pgf@ya\advance\pgf@ya by\pgf@time@t\pgf@y%
        \pgf@nlt@inner@curve%
      }%
      {%
        \pgf@orig@xyb%
        \pgf@orig@xyc%
        \pgf@xb\pgf@time@t\pgf@xb\advance\pgf@xb by\pgf@time@s\pgf@xc%
        \pgf@yb\pgf@time@t\pgf@yb\advance\pgf@yb by\pgf@time@s\pgf@yc%
        \pgf@nlt@inner@curve%
      }%
    }%
  \else%
    \endgroup%
    \pgf@nlt@do@inner@curve%
  \fi%
}%

\def\pgf@nlt@do@inner@curve{%
  \pgf@process{\pgf@x\pgf@xa\pgf@y\pgf@ya\pgf@nlt@list}%
  \pgf@xa\pgf@x\pgf@ya\pgf@y%
  \pgf@process{\pgf@x\pgf@xb\pgf@y\pgf@yb\pgf@nlt@list}%
  \pgf@xb\pgf@x\pgf@yb\pgf@y%
  \xdef\pgf@nlt@last@coord@orig{{\the\pgf@xc}{\the\pgf@yc}}%
  \pgf@process{\pgf@x\pgf@xc\pgf@y\pgf@yc\pgf@nlt@list}%
  \pgf@xc\pgf@x\pgf@yc\pgf@y%
  \xdef\pgf@nlt@last@coord@trans{{\the\pgf@xc}{\the\pgf@yc}}%
  \pgf@protocolsizes{\pgf@xa}{\pgf@ya}%
  \pgf@protocolsizes{\pgf@xb}{\pgf@yb}%
  \pgf@protocolsizes{\pgf@xc}{\pgf@yc}%
  \pgfsyssoftpath@curveto{\the\pgf@xa}{\the\pgf@ya}{\the\pgf@xb}{\the\pgf@yb}{\the\pgf@xc}{\the\pgf@yc}%
}%


\def\pgf@nlt@closepath@nlt{%
  {%
    \expandafter\pgfqpoint\pgf@nlt@last@moveto@orig%
    \expandafter\pgf@nlt@set@temps\pgf@nlt@last@coord@orig%
    \advance\pgfutil@tempdima by-\pgf@x%
    \advance\pgfutil@tempdimb by-\pgf@y%
    \pgfutil@tempswatrue%
    \ifdim\pgfutil@tempdima<0.01pt\relax\ifdim\pgfutil@tempdima>-0.01pt\relax\ifdim\pgfutil@tempdimb<0.01pt\relax\ifdim\pgfutil@tempdimb>-0.01pt\relax\pgfutil@tempswafalse\fi\fi\fi\fi%
    \ifpgfutil@tempswa%
      \pgf@nlt@lineto@nlt{\pgf@x}{\pgf@y}%
    \fi%
    \pgfsyssoftpath@closepath%
  }%
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulenonlineartransformations.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleoo.code.tex ====










\def\pgfooclass{%
  \pgfutil@ifnextchar ({%
    \pgfooclass@
  }{%
    \pgfooclass@()
  }%
}%
\long\def\pgfooclass@(#1)#2#3{%
  \def\pgfoo@classname{#2}%
  \expandafter\ifx\csname pgfooY\pgfoo@classname.@pgfooinit\endcsname\relax\else
    \pgferror{class #2 is already defined}%
  \fi
  \pgfoo@ciii{#2}{#1}%
  \expandafter\let\csname pgfooY#2@pgfoo@mro\endcsname\pgfoo@mro
  \let\pgfoo@origmethod=\method%
  \let\pgfoo@origattribute=\attribute%
  \let\method=\pgfoo@declaremethod%
  \let\attribute=\pgfoo@declareattribute%
  \let\pgfoo@attributes=\pgfutil@empty%
  \let\pgfoo@methods=\pgfutil@empty%
  #3%
  \def\pgfoo@temp@baseclasses{#1}%
  \pgfoo@inherit@methods
  \pgfoo@inherit@attributes
  \expandafter\let\csname pgfooY\pgfoo@classname.get handle\endcsname\pgfoo@obj%
  \expandafter\let\csname pgfooY\pgfoo@classname.get id\endcsname\pgfoo@id%
  \expandafter\let\expandafter\pgfoo@init\csname pgfooY\pgfoo@classname.init\endcsname
  \expandafter\let\csname pgfooY\pgfoo@classname.\pgfoo@classname\endcsname\pgfoo@init
  \let\method=\pgfoo@origmethod%
  \let\attribute=\pgfoo@origattribute%
}%

\def\pgfoo@emptyinit(){}%
\def\pgfoo@escapeif#1#2\fi{\fi#1}%



\def\pgfoo@ciii#1#2{%
  \def\pgfoo@seq{[#1,].}%
  \pgfutil@for\pgfoo@baseclass:={#2}\do{%
    \edef\pgfoo@baseclass@mro{\csname pgfooY\pgfoo@baseclass @pgfoo@mro\endcsname}%
    \expandafter\ifx\expandafter\relax\pgfoo@baseclass@mro\relax\else
      \edef\pgfoo@seq{\pgfoo@seq[\pgfoo@baseclass@mro,].}%
    \fi
  }%
  \ifx\relax#2\relax\else
    \edef\pgfoo@seq{\pgfoo@seq[#2,].}%
  \fi
  \edef\pgfoo@temp{()(\pgfoo@seq)}%
  \expandafter\pgfoo@ciii@merge\pgfoo@temp
}%

\def\pgfoo@ciii@merge(#1)(#2){%
  \ifx\relax#2\relax
    \pgfoo@ciii@done(#1)%
  \else\pgfoo@escapeif{%
    \pgfoo@ciii@merge@A(#1)(#2)%
  }\fi%
}%
\def\pgfoo@ciii@merge@A(#1)(#2.#3){%
  \ifx\relax#3\relax %
    \pgfoo@ciii@mergeA@done(#1)(#2)%
  \else\pgfoo@escapeif{%
    \pgfoo@ciii@merge@checkHead(#1)()(#2)()(#3)%
  }\fi
}%

\def\pgfoo@ciii@mergeA@done(#1)([#2]){%
  \pgfoo@ciii@done(#1#2)%
}%

\def\pgfoo@ciii@merge@checkHead(#1)(#2)([#3,#4])(#5)(#6){%
  \pgfutil@in@{[#3,}{#2}%
  \ifpgfutil@in@\pgfoo@escapeif{%
    \pgfoo@ciii@clean\pgfoo@ciii@merge@checkHead@P{(#1)(#2[#3,#4].)(#5#6)}%
  }\else\pgfoo@escapeif{%
    \ifx\relax#6\relax\pgfoo@escapeif{%
      \pgfoo@ciii@goodHeadFound(#1)(#3)(#2[#4].#5)%
    }\else\pgfoo@escapeif{%
      \pgfoo@ciii@merge@checkHead@A(#1)(#2)([#3,#4])(#5)(#6)%
    }\fi
  }\fi
}%
\def\pgfoo@ciii@merge@checkHead@A(#1)(#2)([#3,#4])(#5)(#6.#7){%
  \pgfoo@ciii@merge@checkHead@B(#1)(#2)([#3,#4])(#5)(#6)(#7)%
}%
\def\pgfoo@ciii@merge@checkHead@B(#1)(#2)([#3,#4])(#5)([#6,#7])(#8){%
    \pgfutil@in@{,#3,}{,#7}%
    \ifpgfutil@in@\pgfoo@escapeif{%
      \pgfoo@ciii@clean\pgfoo@ciii@merge@checkHead@P{(#1)(#2[#3,#4].)(#5[#6,#7].#8)}%
    }\else\pgfoo@escapeif{%
      \ifx\relax#8\relax\pgfoo@escapeif{%
        \pgfoo@ciii@goodHeadFound(#1)(#3)(#2[#4].#5[#6,#7].)%
      }\else\pgfoo@escapeif{%
        \pgfoo@ciii@clean\pgfoo@ciii@merge@checkHead{(#1)(#2)([#3,#4])(#5[#6,#7].)(#8)}%
      }\fi
    }\fi
}%

\def\pgfoo@ciii@goodHeadFound(#1)(#2)(#3){%
  \pgfutil@in@{,#2,}{#3}%
  \ifpgfutil@in@\pgfoo@escapeif{%
    \def\pgfoo@ciii@removeGoodHead(##1)(##2)(##3,#2,##4){%
      \pgfoo@ciii@goodHeadFound(##1)(##2)(##3,##4)}%
    \pgfoo@ciii@removeGoodHead(#1)(#2)(#3)%
  }\else\pgfoo@escapeif{%
    \pgfutil@in@{[#2,}{#3}%
    \ifpgfutil@in@\pgfoo@escapeif{%
      \def\pgfoo@ciii@removeGoodHead(##1)(##2)(##3[#2,##4){%
        \pgfoo@ciii@goodHeadFound(##1)(##2)(##3[##4)}%
      \pgfoo@ciii@removeGoodHead(#1)(#2)(#3)%
    }\else\pgfoo@escapeif{%
      \pgfoo@ciii@clean\pgfoo@ciii@merge{(#1#2,)(#3)}%
    }\fi
  }\fi
}%

\def\pgfoo@ciii@merge@checkHead@P(#1)(#2)(#3){%
  \if\relax#3\relax %
    \pgferror{Bad MRO: There is no good (monotonic etc.)
      Method Resolution Order for your class hierarchy}%
  \else\pgfoo@escapeif{%
    \pgfoo@ciii@merge@checkHead@Q(#1)(#2)(#3)%
  }\fi
}%
\def\pgfoo@ciii@merge@checkHead@Q(#1)(#2)(#3.#4){%
  \pgfoo@ciii@merge@checkHead(#1)(#2)(#3)()(#4)%
}%

\def\pgfoo@ciii@clean#1#2{%
  \pgfutil@in@{[].}{#2}%
  \ifpgfutil@in@\pgfoo@escapeif{%
    \pgfoo@ciii@clean@dot#1#2\pgfoo@ciii@clean@END
  }\else\pgfoo@escapeif{%
    #1#2%
  }\fi
}%
\def\pgfoo@ciii@clean@dot#1#2[].#3\pgfoo@ciii@clean@END{%
  \pgfoo@ciii@clean#1{#2#3}%
}%

\def\pgfoo@ciii@done(#1,){%
  \def\pgfoo@mro{#1}%
}%




\long\def\pgfoo@declaremethod#1(#2)#3{%
  \def\pgfoo@method{#1}%
  \ifx\pgfoo@classname\pgfoo@method
    \def\pgfoo@method{init}%
  \fi
  \expandafter\long\expandafter\def\csname pgfooY\pgfoo@classname.\pgfoo@method\endcsname(#2){#3}%
  \edef\pgfoo@methods{\pgfoo@methods,\pgfoo@method}%
}%

\def\pgfoo@inherit@methods{%
  \expandafter\ifx\expandafter\relax\pgfoo@temp@baseclasses\relax
    \expandafter\ifx\csname pgfooY\pgfoo@classname.init\endcsname\relax
      \expandafter\let\csname pgfooY\pgfoo@classname.init\endcsname\pgfoo@emptyinit%
      \edef\pgfoo@methods{,init\pgfoo@methods}%
    \fi
  \fi
  \if\relax\pgfoo@methods\relax\else
    \edef\pgfoo@methods{\expandafter\pgfutil@gobble\pgfoo@methods}%
  \fi
  \expandafter\let\csname pgfooY\pgfoo@classname @pgfoo@methods\endcsname\pgfoo@methods
  \expandafter\let\expandafter\pgfoo@mro\csname pgfooY\pgfoo@classname @pgfoo@mro\endcsname
  \pgfutil@for\pgfoo@baseclass:=\pgfoo@mro\do{%
    \ifx\pgfoo@baseclass\pgfoo@classname %
    \else\pgfoo@escapeif{%
      \expandafter\let\expandafter\pgfoo@methods\csname pgfooY\pgfoo@baseclass @pgfoo@methods\endcsname
      \pgfutil@for\pgfoo@method:=\pgfoo@methods\do{%
        \expandafter\ifx\csname pgfooY\pgfoo@classname.\pgfoo@method\endcsname\relax
          \edef\pgfoo@temp{\noexpand\let
            \expandafter\noexpand\csname pgfooY\pgfoo@classname.\pgfoo@method\endcsname
            \expandafter\noexpand\csname pgfooY\pgfoo@baseclass.\pgfoo@method\endcsname}%
          \pgfoo@temp
        \fi
      }%
    }\fi
  }%
}%

\def\pgfoosuper(#1,#2).#3({%
  #2.get id(\pgfoo@temp@id)%
  \edef\pgfoo@classname{\csname pgfooX\pgfoo@temp@id @class\endcsname}%
  \def\pgfoo@super@A##1,#1,##2.##3({%
    \pgfoo@super@B##2.##3(%
  }%
  \expandafter\let\expandafter\pgfoo@mro\csname pgfooY\pgfoo@classname @pgfoo@mro\endcsname
  \expandafter\pgfoo@super@A\expandafter,\pgfoo@mro,.#3(%
}%
\def\pgfoo@super@B#1,#2.#3({%
  \expandafter\ifx\csname pgfooY#1.#3\endcsname\relax
    \pgfoo@escapeif{\pgfoo@super@B#2.#3(}%
  \else
    \pgfoo@escapeif{\expandafter\pgfoo@caller\pgfoo@temp@id.#1.#3(}%
  \fi
}%




\def\pgfoo@declareattribute#1;{%
  \pgfutil@in@{ =}{#1}%
  \ifpgfutil@in@%
    \pgfoo@declareunpackspace#1;%
  \else%
    \pgfutil@in@={#1}%
    \ifpgfutil@in@%
      \pgfoo@declareunpack#1;%
    \else%
      \pgfoo@declareattribute@\let{#1}\pgfutil@empty
    \fi%
  \fi%
}%
\def\pgfoo@declareunpack#1=#2;{\pgfoo@declareattribute@\def{#1}{{#2}}}%
\def\pgfoo@declareunpackspace#1 =#2;{\pgfoo@declareattribute@\def{#1}{{#2}}}%

\def\pgfoo@declareattribute@#1#2#3{%
  \expandafter#1\csname pgfooY\pgfoo@classname @#2\endcsname#3%
  \expandafter\def\expandafter\pgfoo@attributes\expandafter{\pgfoo@attributes,#2}%
}%

\def\pgfoo@inherit@attributes{%
  \if\relax\pgfoo@attributes\relax\else
    \edef\pgfoo@attributes{\expandafter\pgfutil@gobble\pgfoo@attributes}%
  \fi
  \expandafter\let\csname pgfooY\pgfoo@classname.@pgfoo@attributes\endcsname\pgfoo@attributes%
  \expandafter\let\expandafter\pgfoo@mro\csname pgfooY\pgfoo@classname @pgfoo@mro\endcsname
  \def\pgfoo@allattributes{}%
  \pgfutil@for\pgfoo@baseclass:=\pgfoo@mro\do{%
    \expandafter\let\expandafter\pgfoo@attributes\csname pgfooY\pgfoo@baseclass.@pgfoo@attributes\endcsname
    \pgfutil@for\pgfoo@attribute:=\pgfoo@attributes\do{%
      \edef\pgfoo@temp{{,\pgfoo@attribute=}{\pgfoo@allattributes,}}%
      \expandafter\pgfutil@in@\pgfoo@temp
      \ifpgfutil@in@\else %
        \edef\pgfoo@allattributes{\pgfoo@allattributes,\pgfoo@attribute=\pgfoo@baseclass}%
      \fi
    }%
  }%
  \if\relax\pgfoo@allattributes\relax\else
    \edef\pgfoo@allattributes{\expandafter\pgfutil@gobble\pgfoo@allattributes}%
  \fi
  \def\pgfoo@process@attributes{}%
  \pgfutil@for\pgfoo@attributeclass:=\pgfoo@allattributes\do{%
    \expandafter\pgfoo@inherit@attributes@appendattribute\pgfoo@attributeclass.%
  }%
  \expandafter\let\csname pgfooY\pgfoo@classname .@pgfoo@process@attributes\endcsname\pgfoo@process@attributes
}%


\def\pgfoo@inherit@attributes@appendattribute#1=#2.{%
  \def\pgfoo@tempA{\pgfoo@attribute@op{#1}}%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfoo@tempB\expandafter\expandafter\expandafter{\expandafter\pgfoo@tempA\csname pgfooY#2@#1\endcsname}%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfoo@process@attributes\expandafter\expandafter\expandafter{\expandafter\pgfoo@process@attributes\pgfoo@tempB}%
}%

\def\pgfoo@gc@attribute#1#2{\pgfoolet{#1}\relax}%


\newcount\pgfoo@objectcount
\newcount\pgfoothis@count


\def\pgfoovalueof#1{%
  \csname pgfooX\the\pgfoothis@count @#1\endcsname%
}%



\def\pgfooget#1#2{%
  \expandafter\let\expandafter#2\csname pgfooX\the\pgfoothis@count @#1\endcsname%
}%



\long\def\pgfooset#1#2{%
  \expandafter\gdef\csname pgfooX\the\pgfoothis@count @#1\endcsname{#2}%
}%



\long\def\pgfooeset#1#2{%
  \expandafter\xdef\csname pgfooX\the\pgfoothis@count @#1\endcsname{#2}%
}%



\def\pgfoolet#1#2{%
  \expandafter\global\expandafter\let\csname pgfooX\the\pgfoothis@count @#1\endcsname#2%
}%



\def\pgfooappend#1#2{%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgf@oo@temp\expandafter\expandafter\expandafter{\csname pgfooX\the\pgfoothis@count @#1\endcsname#2}%
  \expandafter\global\expandafter\let\csname pgfooX\the\pgfoothis@count @#1\endcsname\pgf@oo@temp%
}%



\def\pgfooprefix#1#2{%
  \pgfooget{#1}\pgf@oo@temp%
  \def\pgf@oo@@temp{#2}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgf@oo@temp%
  \expandafter\expandafter\expandafter{\expandafter\pgf@oo@@temp\pgf@oo@temp}%
  \pgfoolet{#1}\pgf@oo@temp%
}%



\newtoks\pgfoo@toks

\def\pgfoo@collect@args{%
  \pgfutil@ifnextchar\bgroup\pgfoo@collect@args@group\pgfoo@collect@args@nogroup%
}%
\def\pgfoo@collect@args@nogroup#1){%
  \pgfoo@toks{#1}%
  \pgfoo@continue%
}%
\def\pgfoo@collect@args@group#1{%
  \pgfutil@ifnextchar){\pgfoo@toks{{#1}}\expandafter\pgfoo@continue\pgfutil@gobble}{\pgfoo@collect@args@nogroup{#1}}%
}%



\def\pgfoonew{%
  \pgfutil@ifnextchar n{%
    \pgfoo@new\pgfoo@dummy=%
  }{%
    \pgfutil@ifnextchar\bgroup{%
      \pgfoo@new@attribute%
    }{%
      \pgfoo@new%
    }%
  }%
}%
\def\pgfoo@new#1={%
  \def\pgfutil@reserved@a{#1}%
  \let\pgfutil@next\pgfoo@@new
  \futurelet\pgfutil@let@token\pgfutil@ignorespaces}%
\def\pgfoo@@new new #1({%
  \expandafter\ifx\csname pgfooY#1.get id\endcsname\relax%
    \pgferror{Unknown class '#1'}%
  \else%
    \expandafter\pgfoo@new@create\pgfutil@reserved@a{#1}%
    {%
      \pgfoothis@count\pgfoo@objectcount%
      \let\pgfoo@attribute@op\pgfoolet
      \csname pgfooY#1.@pgfoo@process@attributes\endcsname%
    }%
    \let\pgfoo@continue=\pgf@oo@new@cont%
    \expandafter\pgfoo@collect@args%
  \fi%
}%

\def\pgf@oo@new@cont{%
  \expandafter\pgfoolastobj\expandafter.\expandafter i\expandafter n\expandafter i\expandafter t\expandafter(\the\pgfoo@toks)%
  \aftergroup\pgfoogc%
}%

\def\pgfoo@new@attribute#1={%
  \def\pgfutil@reserved@a{#1}%
  \let\pgfutil@next\pgfoo@@new@attribute
  \futurelet\pgfutil@let@token\pgfutil@ignorespaces}%
\def\pgfoo@@new@attribute new #1({%
  \expandafter\ifx\csname pgfooY#1.get id\endcsname\relax%
    \pgferror{Unknown class '#1'}%
  \else%
    \pgfoo@new@create\pgfoo@temp{#1}%
    {%
      \pgfoothis@count\pgfoo@objectcount%
      \let\pgfoo@attribute@op\pgfoolet%
      \csname pgfooY#1.@pgfoo@process@attributes\endcsname%
    }%
    \expandafter\pgfoolet\expandafter{\pgfutil@reserved@a}\pgfoo@temp%
    \let\pgfoo@continue=\pgf@oo@new@cont%
    \expandafter\pgfoo@collect@args%
  \fi%
}%

\def\pgfoo@new@create#1#2{%
  \advance\pgfoo@objectcount by 1\relax%
  \edef\pgfoolastobj{\noexpand\pgfoo@caller{\the\pgfoo@objectcount}}%
  \expandafter\gdef\csname pgfooX\the\pgfoo@objectcount @class\endcsname{#2}%
  \let#1\pgfoolastobj%
}%

\def\pgfoo@caller#1.#2({%
  \expandafter\let\expandafter\pgfoo@caller@temp\csname pgfooY\csname pgfooX#1@class\endcsname.#2\endcsname%
  \ifx\pgfoo@caller@temp\relax%
    \expandafter\let\expandafter\pgfoo@caller@temp\csname pgfooY#2\endcsname%
    \ifx\pgfoo@caller@temp\relax%
      \pgferror{Object #1 has no method '#2'}%
    \fi%
  \fi%
  \def\pgf@marshal{%
    \pgfoothis@count=#1\relax%
  }%
  \let\pgfoo@continue\pgfoo@caller@cont%
  \pgfoo@collect@args%
}%
\def\pgfoo@caller@cont{%
  \edef\pgf@marshal{%
    \pgf@marshal%
    \noexpand\pgfoo@caller@temp(\the\pgfoo@toks)%
  }%
  \expandafter\pgf@marshal\expandafter\pgfoothis@count\the\pgfoothis@count\relax%
}%
\let\pgfoo@orig@caller=\pgfoo@caller


\def\pgfoothis.#1({%
  \expandafter\let\expandafter\pgfoo@caller@temp\csname pgfooY\csname pgfooX\the\pgfoothis@count @class\endcsname.#1\endcsname%
  \ifx\pgfoo@caller@temp\relax%
    \expandafter\let\expandafter\pgfoo@caller@temp\csname pgfooY#1\endcsname%
  \fi%
  \let\pgfoo@continue\pgfoothis@cont%
  \pgfoo@collect@args%
}%
\def\pgfoothis@cont{%
  \expandafter\pgfoo@caller@temp\expandafter(\the\pgfoo@toks)%
}%




\def\pgfoo@id(#1){%
  \edef#1{\the\pgfoothis@count}%
}%


\def\pgfooobj#1{%
  \pgfoo@caller{#1}%
}%



\def\pgfoo@obj(#1){%
  \edef#1{\noexpand\pgfoo@caller{\the\pgfoothis@count}}%
}%




\def\pgfoogc{%
  {%
    \pgfoothis@count\pgfoo@objectcount%
    \let\pgfoo@next=\pgfoo@dogc%
    \pgfoo@next%
  }%
}%
\def\pgfoo@dogc{%
  \advance\pgfoothis@count by 1\relax%
  \expandafter\ifx\csname pgfooX\the\pgfoothis@count @class\endcsname\relax%
    \let\pgfoo@next=\relax%
  \else%
    \let\pgfoo@attribute@op\pgfoo@gc@attribute
    \csname pgfooY\csname pgfooX\the\pgfoothis@count @class\endcsname.@pgfoo@process@attributes\endcsname%
    \expandafter\global\expandafter\let\csname pgfooX\the\pgfoothis@count @class\endcsname\relax%
  \fi%
  \pgfoo@next%
}%




\pgfooclass{object}{%
  \method copy(#1) {%
    \edef\pgfoo@temp@classname{\csname pgfooX\the\pgfoothis@count @class\endcsname}%
    \expandafter\pgfoo@new@create\expandafter#1\expandafter{\pgfoo@temp@classname}%
    \def\pgfoo@copy@attributes##1##2{%
      \pgfooget{##1}\pgfoo@attrvalue
      \expandafter\let\csname pgfooX\the\pgfoo@objectcount @##1\endcsname\pgfoo@attrvalue
    }%
    \let\pgfoo@attribute@op\pgfoo@copy@attributes
    \csname pgfooY\pgfoo@temp@classname .@pgfoo@process@attributes\endcsname
    \aftergroup\pgfoogc%
  }%
}%



\pgfooclass{signal}
{%

  \attribute emitter;%

  \method signal() {}%

  \method connect(#1,#2) {%
    {%
      #1.get id(\pgf@tempid)%
      \pgfooget{emitter}\pgf@temp%
      \let\pgfoo@signal@call=\relax%
      \edef\pgf@temp{\pgf@temp\pgfoo@signal@call{\pgf@tempid}{#2}}%
      \pgfoolet{emitter}\pgf@temp%
    }%
  }%

  \def\pgfoo@signal@call#1#2{%
    \def\pgf@temp{\pgfooobj{#1}.#2}%
    \expandafter\pgf@temp\expandafter(\pgfoo@signal@args)%
  }%

  \method emit(#1) {%
    \def\pgfoo@signal@args{#1}%
    \pgfoovalueof{emitter}
  }%
}%




\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleoo.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleparser.code.tex ====

\ProvidesFileRCS{pgfmoduleparser.code.tex}


\long\def\pgfparserset#1%
  {%
    \pgfqkeys{/pgfparser}{#1}%
  }
\pgfparserset
  {%
    ,silent/.is if=\pgfparser@ifname{every parser silent}%
    ,status/.is if=\pgfparser@ifname{pgfparser status}%
  }

\long\def\pgfparser@fi@Bn\fi#1{\fi}
\long\def\pgfparser@fi@Bg\fi#1#2{\fi}
\long\def\pgfparser@fi@BTb\fi#1#2#3{\fi#2}
\long\def\pgfparser@fi@BTc\fi#1#2#3{\fi#3}

\long\def\pgfparserifmark#1%
  {%
    \ifx\pgfparser@mark#1%
      \pgfparser@fi@BTb
    \fi
    \pgfutil@secondoftwo
  }
\pgfutil@protected\long\def\pgfparser@oarg@oarg#1%
  {%
    \pgfutil@ifnextchar[{\pgfparser@oarg@oarg@{#1}}{#1{\pgfparser@mark}}%
  }
\long\def\pgfparser@oarg@oarg@#1[#2]%
  {%
    #1{#2}%
  }
\pgfutil@protected\long\def\pgfparser@oarg@Oarg#1#2%
  {%
    \pgfutil@ifnextchar[{\pgfparser@oarg@oarg@{#2}}{#2{#1}}%
  }
\pgfutil@protected\long\def\pgfparser@oarg@darg#1#2#3%
  {%
    \long\def\pgfparser@oarg@darg@##1#1##2#2{##1{##2}}%
    \pgfutil@ifnextchar#1{\pgfparser@oarg@darg@{#3}}{#3{\pgfparser@mark}}%
  }
\pgfutil@protected\long\def\pgfparser@oarg@Darg#1#2#3#4%
  {%
    \long\def\pgfparser@oarg@darg@##1#1##2#2{##1{##2}}%
    \pgfutil@ifnextchar#1{\pgfparser@oarg@darg@{#4}}{#4{#3}}%
  }
\pgfutil@protected\long\def\pgfparser@oarg@targ@#1%
  {%
    \def\pgfparser@oarg@targ@next{#1}%
    \afterassignment\pgfparser@oarg@targ@next
    \let\pgfparser@ignored@token=%
  }
\pgfutil@protected\long\def\pgfparser@oarg@targ#1#2%
  {%
    \pgfutil@ifnextchar#1%
      {\pgfparser@oarg@targ@{#2{\pgfparser@mark}}}{#2{\pgfparser@stop}}%
  }

\pgfutil@protected\def\pgfparser@msg#1%
  {%
    \immediate\write0{(pgfparser) #1}%
  }
\pgfutil@protected\def\pgfparser@status@start#1%
  {%
    \pgfparser@if{pgfparser status}{\pgfparser@msg{parser '#1' started}}{}%
  }
\pgfutil@protected\def\pgfparser@status@state#1%
  {%
    \pgfparser@if{pgfparser status}
      {\pgfparser@msg{|= switched to state '#1'}}
      {}%
  }
\pgfutil@protected\def\pgfparser@status@rule
  {%
    \pgfparser@if{pgfparser status}
      {\pgfparser@msg{| \space|= rule '\meaning\pgfparsertoken' executed}}
      {}%
  }
\pgfutil@protected\def\pgfparser@status@rule@all
  {%
    \pgfparser@if{pgfparser status}
      {%
        \pgfparser@msg
          {| \space|= (all) rule '\meaning\pgfparsertoken' executed}%
      }
      {}%
  }
\pgfutil@protected\def\pgfparser@status@rule@undefined
  {%
    \pgfparser@if{pgfparser status}
      {%
        \pgfparser@msg
          {| \space|= unknown for '\meaning\pgfparsertoken' executed}%
      }
      {}%
  }
\pgfutil@protected\def\pgfparser@status@rule@undefined@all
  {%
    \pgfparser@if{pgfparser status}
      {%
        \pgfparser@msg
          {| \space|= (all) unknown for '\meaning\pgfparsertoken' executed}%
      }
      {}%
  }

\begingroup
\lccode`\P=`\P   \lccode`\G=`\G   \lccode`\F=`\F
\lccode`\:=`\X   \lccode`\;=`\r   \lccode`\A=`\-
\lowercase
  {%
    \endgroup
    \def\pgfparser@mark{APGFparse;:mark-}%
    \def\pgfparser@stop{APGFparse;:stop-}%
  }%
\def\pgfparser@final{final}
\def\pgfparser@noarg{noarg}
\def\pgfparser@blankspace{blank space}

\newcount\pgfparserdef@arg@count

\def\pgfparser@name#1%
  {%
    pgfparser #1%
  }
\def\pgfparser@rule#1%
  {%
    \pgfparser@current\space #1\space \meaning\pgfparsertoken
  }
\def\pgfparser@type#1%
  {%
    \pgfparser@rule{#1} type%
  }
\def\pgfparser@code#1%
  {%
    \pgfparser@rule{#1} code%
  }
\def\pgfparser@undefined#1%
  {%
    \pgfparser@current\space #1\space unknown%
  }
\def\pgfparser@ifname#1%
  {%
    pgfparserconditional #1%
  }

\def\pgfparser@if#1%
  {%
    \pgfutil@ifundefined{if\pgfparser@ifname{#1}}
      {%
        \pgferror{Undefined conditional '#1'. Falling back to false}%
        \iffalse
      }
      {\csname if\pgfparser@ifname{#1}\endcsname}%
      \pgfparser@fi@BTb
    \fi
    \pgfutil@secondoftwo
  }
\def\pgfparser@newif#1%
  {%
    \csname newif\expandafter\endcsname
    \csname if\pgfparser@ifname{#1}\endcsname
  }
\pgfparser@newif{every parser silent}
\pgfparser@newif{pgfparserdef abort}
\pgfparser@newif{pgfparser status}

\pgfutil@protected\def\pgfparserdef#1#2%
  {%
    \def\pgfparserdef@twoargs{{#1}{#2}}%
    \pgfparserdef@a
  }
\pgfutil@protected\def\pgfparserdef@a
  {%
    \futurelet\pgfparserdef@arg\pgfparserdef@b
  }
\def\pgfparserdef@b
  {%
    \ifx\pgfparserdef@arg\pgfutil@sptoken
      \pgfparserdef@gobble@space
    \fi
    \pgfparserdef@c
  }
\pgfutil@protected\def\pgfparserdef@gobble@space\fi#1%
  {%
    \fi
    \afterassignment\pgfparserdef@a
    \let\pgfparser@ignored@token= %
  }
\pgfutil@protected\def\pgfparserdef@c#1%
  {%
    \ifx\pgfparserdef@arg\bgroup
      \pgfparser@fi@BTb
    \fi
    \pgfutil@secondoftwo
    {%
      \def\pgfparserdef@arg{#1}%
      \ifx\pgfparser@blankspace\pgfparserdef@arg
        \pgfparser@fi@BTb
      \fi
      \pgfutil@secondoftwo
      {\expandafter\pgfparserdef@d\pgfparserdef@twoargs{blank space \space}}
      {\expandafter\pgfparserdef@d\pgfparserdef@twoargs{#1}}%
    }
    {%
      \expandafter\pgfparserdef@d\pgfparserdef@twoargs
        {\meaning\pgfparserdef@arg}%
    }%
  }
\long\def\pgfparserdef@d#1#2#3%
  {%
    \pgfparser@oarg@Oarg{}{\pgfparserdef@e{#1}{#2}{#3}}%
  }
\pgfutil@protected\long\def\pgfparserdef@e#1#2#3#4#5%
  {%
    \pgfparser@initiate@parser{#1}%
    \csname\pgfparser@ifname{pgfparserdef abort}false\endcsname
    \pgfparserdef@arg@count=0
    \pgfparserdef@argcount#4\pgfparser@mark
    \ifnum\pgfparserdef@arg@count>9
      \pgferror
        {%
          Too many arguments for parser rule. A maximum of 9 parameters is
          supported.%
        }%
      \csname\pgfparser@ifname{pgfparserdef abort}true\endcsname
    \fi
    \pgfparser@if{pgfparserdef abort}{}
      {%
        \ifnum\pgfparserdef@arg@count=0
          \pgfutil@namedef{\pgfparser@name{#1} #2 #3 type}{noarg}%
          \pgfutil@namedef{\pgfparser@name{#1} #2 #3 code}%
            {#5\pgfparser@getnexttoken}%
        \else
          \pgfutil@namedef{\pgfparser@name{#1} #2 #3 type}{#4}%
          \expandafter\pgfparserdef@argstring@def\the\pgfparserdef@arg@count
          \pgfutil@namedef{\pgfparser@name{#1} #2 #3 code\expandafter}%
            \pgfparserdef@argstring##1##2##3##4##5##6##7##8##9%
            {#5\pgfparser@getnexttoken}%
        \fi
      }%
  }
\def\pgfparserdef@argstring@def#1%
  {%
    \def\pgfparserdef@argstring##1#1##2##{##1#1}%
  }
\def\pgfparserdef@argcount#1%
  {%
    \ifx\pgfparser@mark#1%
      \pgfparser@fi@Bg
    \fi
    \pgfutil@firstofone
    {%
      \pgfutil@IfUndefined{pgfparserdef@argcount@#1}
        {%
          \pgferror{Unknown argument type '#1'. Aborting rule definition}%
          \pgfparserdef@argcount@abort
        }
        {\csname pgfparserdef@argcount@#1\endcsname}%
    }%
  }
\pgfutil@protected\long\def\pgfparserdef@argcount@abort#1\pgfparser@mark
  {%
    \csname\pgfparser@ifname{pgfparserdef abort}true\endcsname
  }
\def\pgfparserdef@argcount@m
  {%
    \advance\pgfparserdef@arg@count1
    \pgfparserdef@argcount
  }
\let\pgfparserdef@argcount@o\pgfparserdef@argcount@m
\def\pgfparserdef@argcount@O#1%
  {%
    \advance\pgfparserdef@arg@count1
    \pgfparserdef@argcount
  }
\let\pgfparserdef@argcount@r\pgfparserdef@argcount@O
\let\pgfparserdef@argcount@t\pgfparserdef@argcount@O
\def\pgfparserdef@argcount@d#1#2%
  {%
    \advance\pgfparserdef@arg@count1
    \pgfparserdef@argcount
  }
\def\pgfparserdef@argcount@D#1#2#3%
  {%
    \advance\pgfparserdef@arg@count1
    \pgfparserdef@argcount
  }

\pgfutil@protected\def\pgfparser@initiate@parser#1%
  {%
    \pgfutil@IfUndefined{if\pgfparser@ifname{#1 silent}}%
      {%
        \pgfutil@namedef
          {\pgfparser@name{#1} all blank space \space\space type}{noarg}%
        \pgfutil@namedef
          {\pgfparser@name{#1} all blank space \space\space code}%
          {\pgfparser@getnexttoken}%
        \pgfparser@newif{#1 silent}%
        \pgfparserset
          {%
            #1/silent/.is if=\pgfparser@ifname{#1 silent}%
          }%
      }
      {}%
  }

\pgfutil@protected\def\pgfparserlet#1#2%
  {%
    \def\pgfparserlet@parser@a{#1}%
    \def\pgfparserlet@state@a{#2}%
    \pgfparserlet@a
  }
\pgfutil@protected\def\pgfparserlet@a
  {%
    \futurelet\pgfparserlet@arga\pgfparserlet@b
  }
\def\pgfparserlet@b
  {%
    \ifx\pgfparserlet@arga\pgfutil@sptoken
      \pgfparserlet@gobble@space\pgfparserlet@a
    \fi
    \pgfparserlet@c
  }
\pgfutil@protected\def\pgfparserlet@gobble@space#1\fi#2%
  {%
    \fi
    \afterassignment#1%
    \let\pgfparser@ignored@token= %
  }
\pgfutil@protected\def\pgfparserlet@c#1%
  {%
    \ifx\pgfparserlet@arga\bgroup
      \pgfparser@fi@BTb
    \fi
    \pgfutil@secondoftwo
    {%
      \def\pgfparserlet@arga{#1}%
      \ifx\pgfparser@blankspace\pgfparserlet@arga
        \def\pgfparserlet@arga{blank space \space}%
      \fi
    }
    {\edef\pgfparserlet@arga{\meaning\pgfparserlet@arga}}%
    \pgfparser@oarg@oarg\pgfparserlet@d
  }
\pgfutil@protected\def\pgfparserlet@d#1%
  {%
    \pgfparserifmark{#1}
      {%
        \let\pgfparserlet@parser@b\pgfparserlet@parser@a
        \let\pgfparserlet@state@b\pgfparserlet@state@a
        \pgfparserlet@f
      }
      {\pgfparser@oarg@oarg{\pgfparserlet@e{#1}}}%
  }
\pgfutil@protected\def\pgfparserlet@e#1#2%
  {%
    \pgfparserifmark{#2}
      {%
        \let\pgfparserlet@parser@b\pgfparserlet@parser@a
        \def\pgfparserlet@state@b{#1}%
      }
      {%
        \def\pgfparserlet@parser@b{#1}%
        \def\pgfparserlet@state@b{#2}%
      }
    \pgfparserlet@f
  }
\pgfutil@protected\def\pgfparserlet@f
  {%
    \futurelet\pgfparserlet@argb\pgfparserlet@g
  }
\def\pgfparserlet@g
  {%
    \ifx\pgfparserlet@argb\pgfutil@sptoken
      \pgfparserlet@gobble@space\pgfparserlet@f
    \fi
    \pgfparserlet@h
  }
\pgfutil@protected\def\pgfparserlet@h#1%
  {%
    \ifx\pgfparserlet@argb\bgroup
      \pgfparser@fi@BTb
    \fi
    \pgfutil@secondoftwo
    {%
      \def\pgfparserlet@argb{#1}%
      \ifx\pgfparser@blankspace\pgfparserlet@argb
        \def\pgfparserlet@argb{blank space \space}%
      \fi
    }
    {\edef\pgfparserlet@argb{\meaning\pgfparserlet@argb}}%
    \pgfparserlet@i
      \pgfparserlet@parser@a
      \pgfparserlet@state@a
      \pgfparserlet@arga
      \pgfparserlet@parser@b
      \pgfparserlet@state@b
      \pgfparserlet@argb
  }
\def\pgfparserlet@i#1#2#3#4#5#6%
  {%
    \pgfutil@IfUndefined{\pgfparser@name{#4} #5 #6 type}
      {%
        \pgferror
          {%
            There is no rule defined for parser '#4' in state '#5' for '#6'.
            Aborting \string\pgfparserlet
          }%
      }
      {%
        \pgfparser@initiate@parser{#1}%
        \pgfparserlet@let{#1}{#2}{#3}{#4}{#5}{#6}{type}%
        \pgfparserlet@let{#1}{#2}{#3}{#4}{#5}{#6}{code}%
      }%
  }
\def\pgfparserlet@let#1#2#3#4#5#6#7%
  {%
    \expandafter\let\csname\pgfparser@name{#1} #2 #3 #7\expandafter\endcsname
                    \csname\pgfparser@name{#4} #5 #6 #7\endcsname
  }

\pgfutil@protected\long\def\pgfparserdefunknown#1#2#3%
  {%
    \pgfparser@initiate@parser{#1}%
    \pgfutil@namedef{\pgfparser@name{#1} #2 unknown}{#3}%
  }
\pgfutil@protected\long\def\pgfparserdeffinal#1#2%
  {%
    \pgfutil@namedef{\pgfparser@name{#1} final action}{#2}%
  }
\pgfutil@protected\def\pgfparserswitch#1%
  {%
    \pgfparser@status@state{#1}%
    \def\pgfparserstate{#1}%
  }
\pgfutil@protected\def\pgfparserparse#1%
  {%
    \pgfutil@IfUndefined{if\pgfparser@ifname{#1 silent}}
      {\pgferror{No parser named '#1' defined}}
      {%
        \edef\pgfparser@current{\pgfparser@name{#1}}%
        \def\pgfparser@usersname{#1}%
        \pgfparser@status@start{#1}%
        \pgfparserswitch{initial}%
        \pgfparser@getnexttoken
      }%
  }
\pgfutil@protected\def\pgfparser@getnexttoken
  {%
    \ifx\pgfparserstate\pgfparser@final
      \pgfparser@fi@BTb
    \fi
    \pgfutil@secondoftwo
    {%
      \pgfutil@IfUndefined{\pgfparser@current\space final action}
        {}
        {\csname \pgfparser@current\space final action\endcsname}%
    }
    {\futurelet\pgfparsertoken\pgfparser@getnexttoken@a}%
  }
\pgfutil@protected\def\pgfparser@getnexttoken@a
  {%
    \edef\pgfparser@tokencategory{\pgfparser@extractmeaning\pgfparsertoken}%
    \pgfparser@getnexttoken@ifcategory\pgfparser@category@i\bgroup
      {%
        \pgfparser@getnexttoken@ifcategory\pgfparser@category@ii\egroup
          {%
            \pgfparser@getnexttoken@ifcategory\pgfparser@category@x{ }%
              {%
                \pgfparser@getnexttoken@ifcategory\pgfparser@category@vi{####}%
                  {\pgfparser@getnexttoken@defchar}%
              }%
          }%
      }%
  }
\begingroup
\def\pgfparser@extractmeaning#1%
  {%
    \endgroup
    \def\pgfparser@extractmeaning##1%
      {\expandafter\pgfparser@extractmeaning@\meaning##1#1#1\pgfparser@mark}%
    \def\pgfparser@extractmeaning@##1#1##2#1##3\pgfparser@mark{##1#1##2}%
  }
\catcode`\ =12\pgfparser@extractmeaning{ } %
\edef\pgfparser@category@i{\pgfparser@extractmeaning\bgroup}
\edef\pgfparser@category@ii{\pgfparser@extractmeaning\egroup}
\edef\pgfparser@category@vi{\pgfparser@extractmeaning#}
\edef\pgfparser@category@x{\pgfparser@extractmeaning\pgfutil@sptoken}
\pgfutil@protected\def\pgfparser@getnexttoken@ifcategory#1#2%
  {%
    \ifx\pgfparser@tokencategory#1%
      \def\pgfparserletter{#2}%
      \pgfparser@getnexttoken@gobble
    \fi
    \pgfutil@firstofone
  }
\pgfutil@protected\def\pgfparser@getnexttoken@gobble\fi#1#2%
  {%
    \fi
    \afterassignment\pgfparser@getnexttoken@b
    \let\pgfparser@ignored@token= %
  }
\pgfutil@protected\long\def\pgfparser@getnexttoken@defchar#1%
  {%
    \def\pgfparserletter{#1}%
    \pgfparser@getnexttoken@b
  }
\pgfutil@protected\def\pgfparser@getnexttoken@b
  {%
    \pgfutil@IfUndefined{\pgfparser@type{\pgfparserstate}}
      {%
        \pgfutil@IfUndefined{\pgfparser@type{all}}
          {%
            \pgfparser@if{every parser silent}{}
              {%
                \pgfparser@if{\pgfparser@usersname\space silent}{}
                  {%
                    \pgferror
                      {%
                        No rule for parser '\pgfparser@usersname' in state
                        '\pgfparserstate' for '\meaning\pgfparsertoken'.
                        Ignoring token%
                      }%
                  }%
              }%
            \pgfutil@IfUndefined{\pgfparser@undefined{\pgfparserstate}}
              {%
                \pgfutil@IfUndefined{\pgfparser@undefined{all}}
                  {}
                  {%
                    \pgfparser@status@rule@undefined@all
                    \csname\pgfparser@undefined{all}\endcsname
                  }%
              }
              {%
                \pgfparser@status@rule@undefined
                \csname\pgfparser@undefined{\pgfparserstate}\endcsname
              }%
            \pgfparser@getnexttoken
          }
          {%
            \pgfparser@status@rule@all
            \pgfparser@handle{all}%
          }%
      }
      {%
        \pgfparser@status@rule
        \pgfparser@handle{\pgfparserstate}%
      }%
  }

\pgfutil@protected\def\pgfparser@handle#1%
  {%
    \expandafter\ifx\csname\pgfparser@type{#1}\endcsname\pgfparser@noarg
      \pgfparser@fi@BTb
    \fi
    \pgfutil@secondoftwo
    {\csname\pgfparser@code{#1}\endcsname}
    {\pgfparser@handle@args{#1}}%
  }
\pgfutil@protected\def\pgfparser@handle@args#1%
  {%
    \def\pgfparser@stateorall{#1}%
    \expandafter\expandafter\expandafter\pgfparser@handle@args@a
    \csname\pgfparser@type{#1}\endcsname\pgfparser@mark\pgfparser@stop
  }
\def\pgfparser@handle@args@a
  {%
    \pgfparser@handle@args@b{}%
  }
\pgfutil@protected\long\def\pgfparser@handle@args@b#1#2#3\pgfparser@stop
  {%
    \pgfparserifmark{#2}
      {\csname\pgfparser@code{\pgfparser@stateorall}\endcsname#1}
      {%
        \pgfutil@IfUndefined{pgfparser@handle@args@#2}
          {\pgferror{Unknown argument type '#2'}}
          {\csname pgfparser@handle@args@#2\endcsname{#1}{#3}}%
      }%
  }
\long\def\pgfparser@handle@args@c#1#2%
  {%
    \pgfparserifmark{#2}
      {\csname\pgfparser@code{\pgfparser@stateorall}\endcsname#1}
      {\pgfparser@handle@args@b{#1}#2\pgfparser@stop}%
  }
\long\def\pgfparser@handle@args@m#1#2#3%
  {%
    \pgfparser@handle@args@c{#1{#3}}{#2}%
  }
\pgfutil@protected\long\def\pgfparser@handle@args@o#1#2%
  {%
    \pgfparser@oarg@oarg{\pgfparser@handle@args@m{#1}{#2}}%
  }
\long\def\pgfparser@handle@args@O#1#2%
  {%
    \pgfparser@handle@args@O@{#1}#2\pgfparser@stop
  }
\pgfutil@protected\long\def\pgfparser@handle@args@O@#1#2#3\pgfparser@stop
  {%
    \pgfparser@oarg@Oarg{#2}{\pgfparser@handle@args@m{#1}{#3}}%
  }
\long\def\pgfparser@handle@args@d#1#2%
  {%
    \pgfparser@handle@args@d@{#1}#2\pgfparser@stop
  }
\pgfutil@protected\long\def\pgfparser@handle@args@d@#1#2#3#4\pgfparser@stop
  {%
    \pgfparser@oarg@darg{#2}{#3}{\pgfparser@handle@args@m{#1}{#4}}%
  }
\long\def\pgfparser@handle@args@D#1#2%
  {%
    \pgfparser@handle@args@D@{#1}#2\pgfparser@stop
  }
\pgfutil@protected\long\def\pgfparser@handle@args@D@#1#2#3#4#5\pgfparser@stop
  {%
    \pgfparser@oarg@Darg{#2}{#3}{#4}{\pgfparser@handle@args@m{#1}{#5}}%
  }
\long\def\pgfparser@handle@args@r#1#2%
  {%
    \pgfparser@handle@args@r@a{#1}#2\pgfparser@stop
  }
\pgfutil@protected\long\def\pgfparser@handle@args@r@a#1#2#3\pgfparser@stop
  {%
    \def\pgfparser@handle@args@r@b##1#2%
      {\pgfparser@handle@args@c{#1{##1}}{#3}}%
    \pgfparser@handle@args@r@b
  }
\long\def\pgfparser@handle@args@t#1#2%
  {%
    \pgfparser@handle@args@t@{#1}#2\pgfparser@stop
  }
\pgfutil@protected\long\def\pgfparser@handle@args@t@#1#2#3\pgfparser@stop
  {%
    \pgfparser@oarg@targ{#2}{\pgfparser@handle@args@m{#1}{#3}}%
  }

\pgfutil@protected\long\def\pgfparserreinsert#1%
  {%
    \ifx\pgfparser@getnexttoken#1%
      \pgfparser@fi@BTb
    \fi
    \@secondoftwo
    {\expandafter\pgfparser@getnexttoken\pgfparserletter}
    {%
      \pgferror
        {%
          Misuse of \string\pgfparserreinsert\space detected. You should only
          use it at the the end of an action code%
        }%
      #1%
    }%
  }

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleparser.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleplot.code.tex ====

\ProvidesFileRCS{pgfmoduleplot.code.tex}




\def\pgfplotstreamstart{\pgf@plotstreamstart}%
\def\pgfplotstreampoint#1{\gdef\pgfplotlastpoint{#1}\pgf@plotstreampoint{#1}}%
\def\pgfplotstreampointoutlier#1{\pgfplot@outliers{}{\pgf@plotstreamjump}{\pgfplotstreampoint{#1}}}%
\def\pgfplotstreampointundefined{\pgfplot@outliers{}{\pgf@plotstreamjump}{}}%
\def\pgfplotstreamnewdataset{\pgfplot@outliers{}{\pgf@plotstreamjump}{}}%
\def\pgfplotstreamspecial{\pgf@plotstreamspecial}%
\def\pgfplotstreamend{\pgf@plotstreamend}%

\def\pgfplot@ignorer#1#2#3{#1}%
\def\pgfplot@jumper#1#2#3{#2}%
\def\pgfplot@plotter#1#2#3{#3}%

\let\pgfplot@outliers\pgfplot@jumper
\let\pgfplot@undefined\pgfplot@jumper
\let\pgfplot@newdata\pgfplot@jumper

\pgfset{
  handle outlier points in plots/.is choice,
  handle outlier points in plots/ignore/.code=\let\pgfplot@outliers\pgfplot@ignorer,
  handle outlier points in plots/jump/.code=\let\pgfplot@outliers\pgfplot@jumper,
  handle outlier points in plots/plot/.code=\let\pgfplot@outliers\pgfplot@plotter,
  handle undefined points in plots/.is choice,
  handle undefined points in plots/ignore/.code=\let\pgfplot@undefined\pgfplot@ignorer,
  handle undefined points in plots/jump/.code=\let\pgfplot@undefined\pgfplot@jumper,
  handle new data sets in plots/.is choice,
  handle new data sets in plots/ignore/.code=\let\pgfplot@newdata\pgfplot@ignorer,
  handle new data sets in plots/jump/.code=\let\pgfplot@newdata\pgfplot@jumper,
}%



\def\pgfdeclareplothandler#1#2#3{%
  \def#1#2{%
    \pgfkeys{%
      /pgf/plots/@handler options/.cd,
      start=\relax,
      end macro=\relax,
      point macro=\pgfutil@gobble,
      jump macro=\relax,
      special macro=\pgfutil@gobble,%
      #3%
    }%
  }%
}%

\pgfkeys{%
  /pgf/plots/@handler options/.cd,
  start/.code=%
    \gdef\pgf@plotstreamstart{%
      \global\pgf@plot@startedfalse%
      \global\let\pgf@plotstreamend\pgf@plotstreamend@init%
      \global\let\pgf@plotstreampoint\pgf@plotstreampoint@init%
      \global\let\pgf@plotstreamjump\pgf@plotstreamjump@init%
      \global\let\pgf@plotstreamspecial\pgf@plotstreamspecial@init%
      #1%
    },%
  start macro/.code=%
    \gdef\pgf@plotstreamstart{%
      \global\pgf@plot@startedfalse%
      \global\let\pgf@plotstreamend\pgf@plotstreamend@init%
      \global\let\pgf@plotstreampoint\pgf@plotstreampoint@init%
      \global\let\pgf@plotstreamjump\pgf@plotstreamjump@init%
      \global\let\pgf@plotstreamspecial\pgf@plotstreamspecial@init%
      #1%
    },%
  end/.code=\gdef\pgf@plotstreamend@init{#1},
  end macro/.code=\global\let\pgf@plotstreamend@init#1,
  point/.code=\gdef\pgf@plotstreampoint@init##1{#1},
  point macro/.code=\global\let\pgf@plotstreampoint@init#1,
  jump/.code=\gdef\pgf@plotstreamjump@init{#1},
  jump macro/.code=\global\let\pgf@plotstreamjump@init#1,
  special/.code=\gdef\pgf@plotstreamspecial@init##1{#1},
  special macro/.code=\global\let\pgf@plotstreamspecial@init#1,
}%

\newif\ifpgf@plot@started





\def\pgfsetlinetofirstplotpoint{\let\pgf@plot@first@action=\pgfpathlineto}%



\def\pgfsetmovetofirstplotpoint{\let\pgf@plot@first@action=\pgfpathmoveto}%

\let\pgf@plot@first@action=\pgfpathmoveto







\pgfdeclareplothandler{\pgfplothandlerlineto}{}{
  point macro=\pgf@plot@line@handler,
  jump=\global\let\pgf@plotstreampoint\pgf@plot@line@handler@move%
}%

\def\pgf@plot@line@handler#1{%
  \pgf@plot@first@action{#1}%
  \global\let\pgf@plotstreampoint=\pgfpathlineto%
}%

\def\pgf@plot@line@handler@move#1{%
  \pgfpathmoveto{#1}%
  \global\let\pgf@plotstreampoint=\pgfpathlineto%
}%




\pgfdeclareplothandler{\pgfplothandlerpolygon}{}{%
  point macro=\pgf@plot@line@handler@close,
  jump macro=\pgf@plot@next@close@and@moveto,
  end macro=\pgf@plot@polygon@stop
}%

\def\pgf@plot@line@handler@close#1{%
  \pgfpathmoveto{#1}%
  \global\pgf@plot@startedtrue%
  \global\let\pgf@plotstreampoint=\pgfpathlineto%
}%

\def\pgf@plot@polygon@stop{%
  \ifpgf@plot@started%
    \pgfpathclose%
  \fi%
  \global\pgf@plot@startedfalse%
}%

\def\pgf@plot@next@close@and@moveto{%
  \ifpgf@plot@started%
    \pgfpathclose%
  \fi%
  \global\let\pgf@plotstreampoint\pgf@plot@line@handler@close%
}%








\pgfdeclareplothandler{\pgfplothandlerdiscard}{}{}%




\pgfdeclareplothandler{\pgfplothandlerrecord}{#1}{%
  start=\gdef#1{\pgfplotstreamstart},
  point=\expandafter\gdef\expandafter#1\expandafter{#1\pgfplotstreampoint{##1}},
  jump=\expandafter\gdef\expandafter#1\expandafter{#1\pgf@plotstreamjump},
  special=\expandafter\gdef\expandafter#1\expandafter{#1\pgfplotstreamspecial{##1}},
  end=\expandafter\gdef\expandafter#1\expandafter{#1\pgfplotstreamend},
}%




\def\pgfplotxyfile#1{%
  \begingroup%
    \def\b@pgfplotsxyfile@scanning@for@first{1}%
    \pgfplotstreamstart%
    \openin\r@pgf@reada=#1
    \ifeof\r@pgf@reada
      \pgfwarning{Plot data file `#1' not found.}
     \else
      \catcode`\#=14
      \catcode`\^^M=5
      \pgf@readxyfile%
    \fi
    \pgfplotstreamend%
  \endgroup%
}%

\let\pgf@savedpar=\par
\def\pgf@partext{\par}%
\def\pgf@readxyfile{%
  \pgfutil@read\r@pgf@reada to \pgf@temp%
  \let\par=\pgf@savedpar%
  \edef\pgf@temp{\pgf@temp}%
  \ifx\pgf@temp\pgfutil@empty%
    \if1\b@pgfplotsxyfile@scanning@for@first
    \else
        \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi%
    \fi
  \else\ifx\pgf@temp\pgf@partext%
    \if1\b@pgfplotsxyfile@scanning@for@first
    \else
        \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi%
    \fi
  \else%
    \expandafter\pgf@parsexyline\pgf@temp\pgf@stop%
  \fi\fi%
  \ifeof\r@pgf@reada\else\expandafter\pgf@readxyfile\fi%
}%

\def\pgf@parsexyline#1 #2 #3\pgf@stop{%
  \def\b@pgfplotsxyfile@scanning@for@first{0}%
  \edef\pgf@xyline@flag@val{#3}%
  \ifx\pgf@xyline@flag@val\pgf@xyline@flag@undef%
    \pgfplotstreampointundefined%
  \else\ifx\pgf@xyline@flag@val\pgf@xyline@flag@out%
    \pgfplotstreampointoutlier{\pgfpointxy{#1}{#2}}%
  \else%
    \pgfplotstreampoint{\pgfpointxy{#1}{#2}}%
  \fi\fi%
}%

\edef\pgf@xyline@flag@out{o\space}%
\edef\pgf@xyline@flag@undef{u\space}%





\def\pgfplotxyzfile#1{%
  \begingroup%
    \pgfplotstreamstart%
    \openin\r@pgf@reada=#1
    \ifeof\r@pgf@reada
      \pgfwarning{Plot data file `#1' not found.}
    \else
      \catcode`\#=14
      \catcode`\^^M=5
      \pgf@readxyzfile%
    \fi
    \pgfplotstreamend%
  \endgroup%
}%

\def\pgf@readxyzfile{%
  \pgfutil@read\r@pgf@reada to \pgf@temp%
  \ifx\pgf@temp\pgfutil@empty%
    \if1\b@pgfplotsxyfile@scanning@for@first
    \else
        \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi%
    \fi
  \else\ifx\pgf@temp\pgf@partext%
    \if1\b@pgfplotsxyfile@scanning@for@first
    \else
        \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi%
    \fi
  \else%
    \expandafter\pgf@parsexyzline\pgf@temp\pgf@stop%
  \fi\fi%
  \ifeof\r@pgf@reada\else\expandafter\pgf@readxyzfile\fi%
}%

\def\pgf@parsexyzline#1 #2 #3 #4\pgf@stop{%
  \def\b@pgfplotsxyfile@scanning@for@first{0}%
  \edef\pgf@xyline@flag@val{#4}%
  \ifx\pgf@xyline@flag@val\pgf@xyline@flag@undef%
    \pgfplotstreampointundefined%
  \else\ifx\pgf@xyline@flag@val\pgf@xyline@flag@out%
    \pgfplotstreampointoutlier{\pgfpointxyz{#1}{#2}{#3}}%
  \else%
    \pgfplotstreampoint{\pgfpointxyz{#1}{#2}{#3}}%
  \fi\fi%
}%





{%
  \catcode`\%=12
  \catcode`\"=12
  \xdef\pgf@gnuplot@head{set table \noexpand\pgf@plottablefile@quoted; set format "%.5f"}
}%

\let\pgf@plotwrite=\w@pgf@writea
\newif\ifpgf@resample@plot

\pgfkeys{%
  /pgf/plot/gnuplot call/.initial={gnuplot}}%

\def\pgfplotgnuplot{\pgfutil@ifnextchar[{\pgf@plotgnuplot}{\pgf@plotgnuplot[\jobname]}}%
\def\pgf@plotgnuplot[#1]#2{%
  \pgf@resample@plottrue%
  \pgfutilpreparefilename{#1.gnuplot}%
  \let\pgf@plotgnuplotfile=\pgfretval
  \pgfutilpreparefilename{#1.table}%
  \let\pgf@plottablefile=\pgfretval
  \let\pgf@plottablefile@quoted=\pgfretvalquoted
  \openin\pgfutil@inputcheck=\pgf@plotgnuplotfile\relax
  \ifeof\pgfutil@inputcheck%
  \else%
    \pgfutil@read\pgfutil@inputcheck to\pgf@temp%
    \pgfutil@read\pgfutil@inputcheck to\pgf@plot@line%
    \closein\pgfutil@inputcheck
    \edef\pgf@plot@code{#2\space}%
    \ifx\pgf@plot@code\pgf@plot@line%
      \openin\pgfutil@inputcheck=\pgfretval\relax
      \ifeof\pgfutil@inputcheck%
      \else%
        \closein\pgfutil@inputcheck
        \pgf@resample@plotfalse%
      \fi%
    \fi%
  \fi
  \ifpgf@resample@plot%
    \immediate\openout\pgf@plotwrite=\pgf@plotgnuplotfile\relax
    \immediate\pgfutil@write\pgf@plotwrite{\pgf@gnuplot@head}%
    \immediate\pgfutil@write\pgf@plotwrite{#2}%
    \immediate\closeout\pgf@plotwrite%
    \pgfutil@shellescape{%
      \pgfkeysvalueof{/pgf/plot/gnuplot call} \pgf@plotgnuplotfile}%
  \fi%
  \pgfplotxyfile{\pgf@plottablefile}%
}%



\def\pgfplotfunction#1#2#3{%
  \pgfplotstreamstart%
  \foreach#1in{#2}%
  {%
    \pgf@process{#3}%
    \edef\pgf@marshal{\noexpand\pgfplotstreampoint{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
    \pgf@marshal%
  }
  \pgfplotstreamend%
}%




\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleplot.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleshapes.code.tex ====

\ProvidesFileRCS{pgfmoduleshapes.code.tex}



\newbox\pgfnodeparttextbox



\def\pgfmultipartnode#1#2#3#4{%
  \pgfutil@ifundefined{pgf@sh@s@#1}%
  {\pgferror{Unknown shape ``#1''}}%
  {%
    {%
      \ifpgflatenodepositioning%
        \pgfsys@beginscope%
      \fi%
      \pgf@outer@adjust@hook%
      \let\pgf@sh@savedmacros=\pgfutil@empty%
      \let\pgf@sh@savedpoints=\pgfutil@empty%
      \def\pgf@sm@shape@name{#1}%
      \csname pgf@sh@s@#1\endcsname%
      \pgf@sh@savedpoints%
      \pgf@sh@savedmacros%
      \pgftransformshift{%
        \pgf@sh@reanchor{#1}{#2}%
        \pgf@x=-\pgf@x%
        \pgf@y=-\pgf@y%
      }%
      \expandafter\pgfsavepgf@process\csname pgf@sh@sa@#3\endcsname{%
        \pgf@sh@reanchor{#1}{#2}%
      }%
      \edef\pgf@node@name{#3}%
      \ifpgflatenodepositioning%
        \pgf@shapes@late@pos@begin%
      \fi%
      \ifx\pgf@node@name\pgfutil@empty%
      \else%
        \expandafter\xdef\csname pgf@sh@ns@\pgf@node@name\endcsname{#1}%
        \edef\pgf@sh@@temp{\noexpand\gdef\expandafter\noexpand\csname pgf@sh@np@\pgf@node@name\endcsname}%
        \expandafter\pgf@sh@@temp\expandafter{\pgf@sh@savedpoints}%
        \edef\pgf@sh@@temp{\noexpand\gdef\expandafter\noexpand\csname pgf@sh@ma@\pgf@node@name\endcsname}%
        \expandafter\pgf@sh@@temp\expandafter{\pgf@sh@savedmacros}%
        \pgfgettransform\pgf@temp%
        \expandafter\xdef\csname pgf@sh@nt@\pgf@node@name\endcsname{\pgf@temp}%
        \expandafter\xdef\csname pgf@sh@pi@\pgf@node@name\endcsname{\pgfpictureid}%
      \fi%
      \pgfutil@ifundefined{pgf@sh@bbg@#1}{}
      {{\pgfusetype{.behind background}\pgfidscope\pgfscope\csname pgf@sh@bbg@#1\endcsname\endpgfscope\endpgfidscope}}%
      \pgfutil@ifundefined{pgf@sh@bg@#1}{%
        \global\let\pgfpositionnodelaterpath\pgfutil@empty%
      }%
      {\pgfpushtype%
       \pgfusetype{.background}\csname pgf@sh@bg@#1\endcsname%
        \ifpgflatenodepositioning%
          \pgfsyssoftpath@getcurrentpath\pgfpositionnodelaterpath%
          \pgfprocessround{\pgfpositionnodelaterpath}{\pgfpositionnodelaterpath}%
          \global\let\pgfpositionnodelaterpath\pgfpositionnodelaterpath%
        \fi%
        #4\pgfpoptype}%
      \pgfutil@ifundefined{pgf@sh@fbg@#1}{}
      {{\pgfusetype{.before background}\pgfidscope\pgfscope\csname pgf@sh@fbg@#1\endcsname\endpgfscope\endpgfidscope}}%
      {%
        \expandafter\pgfutil@for\expandafter\pgf@shape@com\expandafter:\expandafter=\csname pgf@sh@boxes@#1\endcsname\do{%
          {%
            \pgfusetype{.\pgf@shape@com}%
            \pgftransformshift{\pgf@sh@reanchor{#1}{\pgf@shape@com}}%
            \pgfapproximatenonlineartransformation%
            \expandafter\pgfqboxsynced\expandafter{\csname pgfnodepart\pgf@shape@com box\endcsname}%
          }%
        }%
      }%
      \pgfutil@ifundefined{pgf@sh@bfg@#1}{}%
      {{\pgfusetype{.behind foreground}\pgfidscope\pgfscope\csname pgf@sh@bfg@#1\endcsname\endpgfscope\endpgfidscope}}%
      \pgfutil@ifundefined{pgf@sh@fg@#1}{}%
      {\pgfpushtype\pgfusetype{.foreground}\csname pgf@sh@fg@#1\endcsname#4\pgfpoptype}%
      \pgfutil@ifundefined{pgf@sh@ffg@#1}{}%
      {{\pgfusetype{.before foreground}\pgfidscope\pgfscope\csname pgf@sh@ffg@#1\endcsname\endpgfscope\endpgfidscope}}%
      \ifpgflatenodepositioning%
        \pgf@shapes@late@pos@end%
        \pgfsys@endscope%
      \else%
        \expandafter\pgf@nodecallback\expandafter{\pgf@node@name}%
      \fi%
    }%
  }%
}%
\let\pgf@outer@adjust@hook\relax

\def\pgf@shapes@late@pos@begin{%
  \edef\pgf@node@name{not yet positionedPGFINTERNAL\pgf@node@name}%
  \pgfinterruptboundingbox%
    \pgf@relevantforpicturesizetrue%
    \setbox\pgfpositionnodelaterbox=\hbox%
      \bgroup%
        \pgfsys@beginscope%
}%

\def\pgf@shapes@late@pos@end{%
       \pgfsys@endscope%
      \egroup%
    \ifdim\pgf@picminx>\pgf@picmaxx\relax%
      \def\pgfpositionnodelaterminx{0.0pt}%
      \let\pgfpositionnodelaterminy\pgfpositionnodelaterminx%
      \let\pgfpositionnodelatermaxx\pgfpositionnodelaterminx%
      \let\pgfpositionnodelatermaxy\pgfpositionnodelaterminx%
    \else%
      \edef\pgfpositionnodelaterminx{\the\pgf@picminx}%
      \edef\pgfpositionnodelaterminy{\the\pgf@picminy}%
      \edef\pgfpositionnodelatermaxx{\the\pgf@picmaxx}%
      \edef\pgfpositionnodelatermaxy{\the\pgf@picmaxy}%
    \fi%
    \let\pgfpositionnodelatername=\pgf@node@name%
    \pgf@positionnodelater@macro%
  \endpgfinterruptboundingbox%
}%

\def\pgf@shift@node#1#2{%
  {%
    \pgfsettransform{\csname pgf@sh@nt@#1\endcsname}%
    \pgf@process{#2}%
    \advance\pgf@pt@x by\pgf@x%
    \advance\pgf@pt@y by\pgf@y%
    \pgfgettransform{\pgf@temp}%
    \expandafter\xdef\csname pgf@sh@nt@#1\endcsname{\pgf@temp}%
  }%
}%




\def\pgfnode#1#2#3#4#5{%
  {%
    \setbox\pgfnodeparttextbox=\hbox%
    {%
      \pgfinterruptpicture%
        {#3}%
      \endpgfinterruptpicture%
    }%
    \pgfmultipartnode{#1}{#2}{#4}{#5}%
  }
}%




\def\pgfpositionnodelater#1{%
  \let\pgf@positionnodelater@macro=#1%
  \ifx\pgf@positionnodelater@macro\relax%
    \pgflatenodepositioningfalse%
  \else%
    \pgflatenodepositioningtrue%
  \fi%
}%
\newif\ifpgflatenodepositioning
\pgfpositionnodelater{\relax}%
\def\pgfpositionnodelaterbox{0}%





\def\pgfpositionnodenow#1{%
  \pgfinterruptpath%
  {%
    \pgfpointtransformed{#1}%
    \edef\pgf@temp@shift{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
    \pgftransformreset%
    \pgftransformshift{\pgf@temp@shift}%
    \pgfsys@pictureboxsynced\pgfpositionnodelaterbox%
    \pgf@shift@node{\pgfpositionnodelatername}{\pgf@temp@shift}%
    \pgfpointtransformed{\pgfqpoint{\pgfpositionnodelaterminx}{\pgfpositionnodelaterminy}}%
    \pgf@protocolsizes{\pgf@x}{\pgf@y}
    \pgfpointtransformed{\pgfqpoint{\pgfpositionnodelatermaxx}{\pgfpositionnodelatermaxy}}%
    \pgf@protocolsizes{\pgf@x}{\pgf@y}
    \expandafter\pgfpositionnodenow@rename\pgfpositionnodelatername\relax%
  }%
  {%
    \csname pgf@lns@\pgfpositionnodelatername\endcsname%
    \expandafter\global\expandafter\let\csname pgf@lns@\pgfpositionnodelatername\endcsname\relax%
  }%
  \endpgfinterruptpath%
}%

\def\pgfpositionnodenow@rename not yet positionedPGFINTERNAL#1\relax{%
  \pgfnoderename{#1}{not yet positionedPGFINTERNAL#1}
}%



\def\pgffakenode#1{%
  \edef\pgf@temp{\ifpgflatenodepositioning not yet positionedPGFINTERNAL\fi#1}%
  \expandafter\gdef\csname pgf@sh@ns@\pgf@temp\endcsname{coordinate}%
  \expandafter\gdef\csname pgf@sh@np@\pgf@temp\endcsname{\def\centerpoint{\pgfpointorigin}}%
  \expandafter\gdef\csname pgf@sh@nt@\pgf@temp\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
  \expandafter\global\expandafter\let\csname pgf@sh@ma@\pgf@temp\endcsname\pgfutil@empty%
  \expandafter\xdef\csname pgf@sh@pi@\pgf@temp\endcsname{\pgfpictureid}%
}%




\def\pgfnodepostsetupcode#1#2{%
  \ifpgflatenodepositioning%
    \expandafter\ifx\csname pgf@lns@not yet positionedPGFINTERNAL#1\endcsname\relax%
      \expandafter\gdef\csname pgf@lns@not yet positionedPGFINTERNAL#1\endcsname{#2}%
    \else%
      \expandafter\pgfutil@g@addto@macro\csname pgf@lns@not yet positionedPGFINTERNAL#1\endcsname{#2}%
    \fi%
  \fi%
}%




\def\pgfnodealias#1#2{%
  \pgf@node@gnamelet{pgf@sh@ns@#1}{pgf@sh@ns@#2}%
  \pgf@node@gnamelet{pgf@sh@np@#1}{pgf@sh@np@#2}%
  \pgf@node@gnamelet{pgf@sh@nt@#1}{pgf@sh@nt@#2}%
  \pgf@node@gnamelet{pgf@sh@pi@#1}{pgf@sh@pi@#2}%
  \pgf@node@gnamelet{pgf@sh@ma@#1}{pgf@sh@ma@#2}%
  \pgf@nodecallback{#1}%
}%
\def\pgf@node@gnamelet#1#2{%
  \expandafter\let\expandafter\pgf@temp\csname #2\endcsname%
  \expandafter\global\expandafter\let\csname #1\endcsname=\pgf@temp%
}%


\def\pgfnoderename#1#2{%
  \pgfnodealias{#1}{#2}%
  \expandafter\global\expandafter\let\csname pgf@sh@ns@#2\endcsname\relax
  \expandafter\global\expandafter\let\csname pgf@sh@np@#2\endcsname\relax
  \expandafter\global\expandafter\let\csname pgf@sh@nt@#2\endcsname\relax
  \expandafter\global\expandafter\let\csname pgf@sh@pi@#2\endcsname\relax
  \expandafter\global\expandafter\let\csname pgf@sh@ma@#2\endcsname\relax
}%





\def\pgfcoordinate#1#2{%
  \edef\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \ifpgflatenodepositioning%
      {\pgftransformshift{#2}\pgfnode{coordinate}{center}{}{#1}{}}%
    \else%
      \pgf@process{\pgfpointtransformed{#2}}%
      \expandafter\gdef\csname pgf@sh@ns@#1\endcsname{coordinate}%
      \expandafter\xdef\csname pgf@sh@np@#1\endcsname{%
        \noexpand\def\noexpand\centerpoint{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
      }
      \expandafter\gdef\csname pgf@sh@nt@#1\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
      \expandafter\global\expandafter\let\csname pgf@sh@ma@#1\endcsname\pgfutil@empty%
      \expandafter\xdef\csname pgf@sh@pi@#1\endcsname{\pgfpictureid}%
    \fi%
  \fi%
}%

\def\pgf@sh@redeferredanchor#1#2{%
  \expandafter\gdef\csname pgf@anchor@\pgf@sm@shape@name @#1\endcsname{#2}}%






\def\pgf@sh@resavedanchor#1#2{%
  \pgf@process{#2}%
  \edef\pgf@sh@marshal{%
    \noexpand\pgfutil@g@addto@macro\noexpand\pgf@sh@savedpoints{%
      \noexpand\def\noexpand#1{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
    }}%
  \pgf@sh@marshal%
}%


\def\pgf@sh@resaveddimen#1#2{%
  {#2\global\pgf@x=\pgf@x}%
  \edef\pgf@sh@marshal{%
    \noexpand\pgfutil@g@addto@macro\noexpand\pgf@sh@savedpoints{%
      \noexpand\def\noexpand#1{\the\pgf@x}%
    }}%
  \pgf@sh@marshal%
}%

\def\pgf@sh@resavedmacro#1#2{%
    \let#1\pgfutil@empty%
    \def\addtosavedmacro##1{%
        \expandafter\def\expandafter\pgf@sh@addtomacro@temp\expandafter{#1\noexpand\def\noexpand##1{##1}}%
        {\expandafter\pgfutil@toks@\expandafter{\pgf@sh@addtomacro@temp}\expandafter}%
        \expandafter\def\expandafter#1\expandafter{\the\pgfutil@toks@}%
    }%
  #2\relax%
  \edef\pgf@sh@marshal{%
    \noexpand\pgfutil@g@addto@macro\noexpand\pgf@sh@savedmacros{%
      \noexpand\def\noexpand#1{#1}%
    }}%
  \pgf@sh@marshal%
}%

\def\pgf@sh@reanchor#1#2{%
  \pgfutil@ifundefined{pgf@anchor@#1@#2}%
  {%
    \pgfutil@ifundefined{pgf@anchor@generic@#2}{%
        \pgfmathsetcounter{pgf@counta}{#2}%
        \csname pgf@anchor@#1@border\endcsname{\pgfqpointpolar{\the\c@pgf@counta}{1pt}}%
    }{%
        \csname pgf@anchor@generic@#2\endcsname{#1}%
    }%
  }%
  {\csname pgf@anchor@#1@#2\endcsname}%
}%

\def\pgfdeclaregenericanchor#1#2{%
  \expandafter\def\csname pgf@anchor@generic@#1\endcsname##1{#2}%
}%



\def\pgfpointanchor#1#2{%
  \pgfutil@ifundefined{pgf@sh@ns@#1}
  {\pgfutil@ifundefined{pgf@sh@ns@not yet positionedPGFINTERNAL#1}{%
      \pgferror{No shape named `#1' is known}}{
    }%
    \pgfpointorigin}%
  {%
    \pgf@process{%
      \edef\pgfreferencednodename{#1}%
      \csname pgf@sh@ma@#1\endcsname%
      \csname pgf@sh@np@#1\endcsname
      \pgf@sh@reanchor{\csname pgf@sh@ns@#1\endcsname}{#2}%
      {%
        \pgfsettransform{\csname pgf@sh@nt@#1\endcsname}%
        \pgf@pos@transform@glob%
      }%
      \pgf@shape@interpictureshift{#1}%
      \pgftransforminvert%
      \pgf@pos@transform@glob%
    }%
  }%
}%

\def\pgf@shape@interpictureshift#1{%
  \expandafter\ifx\csname pgf@sh@pi@#1\endcsname\pgfpictureid%
  \else%
    \pgfsys@getposition{\csname pgf@sh@pi@#1\endcsname}\pgf@shape@original@pos%
    \pgfsys@getposition{\pgfpictureid}\pgf@shape@current@pos%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgfpointorigin\pgf@shape@current@pos}%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \pgf@process{\pgfpointorigin\pgf@shape@original@pos}%
    \advance\pgf@xa by\pgf@x%
    \advance\pgf@ya by\pgf@y%
    \pgf@x=\pgf@xa%
    \pgf@y=\pgf@ya%
  \fi%
}%




\def\pgfpointshapeborder#1#2{%
  \pgfutil@ifundefined{pgf@sh@ns@#1}
  {\pgferror{No shape named `#1' is known}%
    \pgfpointorigin}%
  {%
    \pgf@process{%
      \edef\pgfreferencednodename{#1}%
      \csname pgf@sh@ma@#1\endcsname%
      \csname pgf@sh@np@#1\endcsname%
      {%
        \pgf@process{\pgfpointtransformed{#2}}%
        \pgfsettransform{\csname pgf@sh@nt@#1\endcsname}%
        \pgftransforminvert%
        \pgf@pos@transform@glob%
        \pgf@xa=\pgf@x%
        \pgf@ya=\pgf@y%
        \pgf@process{\csname pgf@anchor@\csname pgf@sh@ns@#1\endcsname @center\endcsname}%
        \pgf@process{\pgf@shape@interpictureshift{#1}}%
        \advance\pgf@xa by-\pgf@x%
        \advance\pgf@ya by-\pgf@y%
        \pgf@xb=10pt
        \ifdim\pgf@xa<1pt\ifdim\pgf@xa>-1pt
          \pgf@xb=10\pgf@xa
        \fi\fi
        \pgf@yb=10pt
        \ifdim\pgf@ya<1pt\ifdim\pgf@ya>-1pt
          \pgf@yb=10\pgf@ya
        \fi\fi
        \ifdim\dimexpr\expandafter\Pgf@geT\the\pgf@xb\pgf@xb
                     +\expandafter\Pgf@geT\the\pgf@yb\pgf@yb\relax<0.04pt
          \expandafter\pgfutil@firstoftwo
        \else
          \expandafter\pgfutil@secondoftwo
        \fi
        {%
          \pgfwarning
            {Returning node center instead of a point on node border. Did you
            specify a point identical to the center of node
            ``\pgfreferencednodename''?}%
          \pgf@sh@reanchor{\csname pgf@sh@ns@#1\endcsname}{center}%
        }
        {%
          \csname pgf@anchor@\csname pgf@sh@ns@#1\endcsname @border\endcsname
            {\pgfqpoint{\pgf@xa}{\pgf@ya}}%
        }%
        \pgfsettransform{\csname pgf@sh@nt@#1\endcsname}%
        \pgf@pos@transform@glob%
        \global\pgf@x=\pgf@x%
        \global\pgf@y=\pgf@y%
      }%
      \pgf@shape@interpictureshift{#1}%
      \pgftransforminvert%
      \pgf@pos@transform@glob%
    }%
  }%
}%



\def\pgfgetnodeparts#1#2{%
  \expandafter\let\expandafter#1\csname pgf@sh@boxes@#2\endcsname%
}%



\long\def\pgfdeclareshape#1#2{%
  {%
    \def\pgf@sm@shape@name{#1}%
    \let\savedanchor=\pgf@sh@savedanchor
    \let\saveddimen=\pgf@sh@saveddimen
    \let\savedmacro=\pgf@sh@savedmacro%
    \let\deferredanchor=\pgf@sh@deferredanchor%
    \let\anchor=\pgf@sh@anchor
    \let\anchorborder=\pgf@sh@anchorborder
    \let\behindbackgroundpath=\pgf@sh@behindbgpath
    \let\backgroundpath=\pgf@sh@bgpath
    \let\beforebackgroundpath=\pgf@sh@beforebgpath
    \let\behindforegroundpath=\pgf@sh@behindfgpath
    \let\foregroundpath=\pgf@sh@fgpath
    \let\beforeforegroundpath=\pgf@sh@beforefgpath
    \let\nodeparts=\pgf@sh@boxes
    \let\inheritsavedanchors=\pgf@sh@inheritsavedanchors
    \let\inheritanchor=\pgf@sh@inheritanchor
    \let\inheritanchorborder=\pgf@sh@inheritanchorborder
    \let\inheritbehindbackgroundpath=\pgf@sh@inheritbehindbgpath
    \let\inheritbackgroundpath=\pgf@sh@inheritbgpath
    \let\inheritbeforebackgroundpath=\pgf@sh@inheritbeforebgpath
    \let\inheritbehindforegroundpath=\pgf@sh@inheritbehindfgpath
    \let\inheritforegroundpath=\pgf@sh@inheritfgpath
    \let\inheritbeforeforegroundpath=\pgf@sh@inheritbeforefgpath
    \let\inheritnodeparts=\pgf@sh@inheritboxes
    \anchorborder{\csname pgf@anchor@#1@center\endcsname}%
    \anchor{text}{\pgfpointorigin}%
    \nodeparts{text}%
    \expandafter\global\expandafter\let\csname pgf@sh@s@\pgf@sm@shape@name\endcsname=\pgfutil@empty%
    #2%
  }%
}%

\def\pgf@sh@savedanchor#1#2{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\pgf@sh@resavedanchor{#1}{#2}}}%
\def\pgf@sh@saveddimen#1#2{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\pgf@sh@resaveddimen{#1}{#2}}}%
 \def\pgf@sh@savedmacro#1#2{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\pgf@sh@resavedmacro{#1}{#2}}}%
\def\pgf@sh@anchor#1#2{\expandafter\gdef\csname pgf@anchor@\pgf@sm@shape@name @#1\endcsname{#2}}%
\def\pgf@sh@deferredanchor#1#2{%
  \expandafter\pgfutil@g@addto@macro
    \csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\pgf@sh@redeferredanchor{#1}{#2}}}%
\def\pgf@sh@anchorborder#1{\expandafter\gdef\csname pgf@anchor@\pgf@sm@shape@name @border\endcsname##1{\pgf@process{##1}#1}}%
\long\def\pgf@sh@behindbgpath#1{\expandafter\gdef\csname pgf@sh@bbg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@bgpath#1{\expandafter\gdef\csname pgf@sh@bg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@beforebgpath#1{\expandafter\gdef\csname pgf@sh@fbg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@behindfgpath#1{\expandafter\gdef\csname pgf@sh@bfg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@fgpath#1{\expandafter\gdef\csname pgf@sh@fg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@beforefgpath#1{\expandafter\gdef\csname pgf@sh@ffg@\pgf@sm@shape@name\endcsname{#1}}%
\def\pgf@sh@boxes#1{\expandafter\gdef\csname pgf@sh@boxes@\pgf@sm@shape@name\endcsname{#1}}%

\def\pgf@sh@inheritsavedanchors[from=#1]{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\csname pgf@sh@s@#1\endcsname}}%

\def\pgf@sh@inheritanchor[from=#1]#2{%
  \edef\pgf@marshal{\global\let\expandafter\noexpand\csname
    pgf@anchor@\pgf@sm@shape@name @#2\endcsname=\expandafter\noexpand\csname
    pgf@anchor@#1@#2\endcsname}%
  \pgf@marshal%
}%
\def\pgf@sh@inheritanchorborder[from=#1]{%
  \edef\pgf@marshal{\global\let\expandafter\noexpand\csname
    pgf@anchor@\pgf@sm@shape@name @border\endcsname=\expandafter\noexpand\csname
    pgf@anchor@#1@border\endcsname}%
  \pgf@marshal%
}%
\def\pgf@sh@inheritor#1#2{%
  \edef\pgf@marshal{\global\let\expandafter\noexpand\csname
    pgf@sh@#1@\pgf@sm@shape@name\endcsname=\expandafter\noexpand\csname
    pgf@sh@#1@#2\endcsname}%
  \pgf@marshal%
}%
\def\pgf@sh@inheritbehindbgpath[from=#1]{\pgf@sh@inheritor{bbg}{#1}}%
\def\pgf@sh@inheritbgpath[from=#1]{\pgf@sh@inheritor{bg}{#1}}%
\def\pgf@sh@inheritbeforebgpath[from=#1]{\pgf@sh@inheritor{fbg}{#1}}%
\def\pgf@sh@inheritbehindfgpath[from=#1]{\pgf@sh@inheritor{bfg}{#1}}%
\def\pgf@sh@inheritfgpath[from=#1]{\pgf@sh@inheritor{fg}{#1}}%
\def\pgf@sh@inheritbeforefgpath[from=#1]{\pgf@sh@inheritor{ffg}{#1}}%
\def\pgf@sh@inheritboxes[from=#1]{\pgf@sh@inheritor{boxes}{#1}}%




\pgfdeclareshape{coordinate}
{%
  \savedanchor\centerpoint{%
    \pgf@x=.5\wd\pgfnodeparttextbox%
    \pgf@y=.5\ht\pgfnodeparttextbox%
    \advance\pgf@y by -.5\dp\pgfnodeparttextbox%
  }%

  \anchor{center}{\centerpoint}%
  \anchor{north}{\centerpoint}%
  \anchor{north west}{\centerpoint}%
  \anchor{north east}{\centerpoint}%
  \anchor{west}{\centerpoint}%
  \anchor{east}{\centerpoint}%
  \anchor{mid}{\centerpoint}%
  \anchor{mid west}{\centerpoint}%
  \anchor{mid east}{\centerpoint}%
  \anchor{base}{\centerpoint}%
  \anchor{base west}{\centerpoint}%
  \anchor{base east}{\centerpoint}%
  \anchor{south}{\centerpoint}%
  \anchor{south west}{\centerpoint}%
  \anchor{south east}{\centerpoint}%
  \anchorborder{\centerpoint}%

  \nodeparts{}%
}%



\pgfset{
  inner xsep/.initial     =.3333em,
  inner ysep/.initial     =.3333em,
  inner sep/.style        ={/pgf/inner xsep={#1},/pgf/inner ysep={#1}},
  outer xsep/.initial     =.5\pgflinewidth,
  outer ysep/.initial     =.5\pgflinewidth,
  outer sep/.code         =\pgf@handle@outer@sep{#1},
  minimum width/.initial  =1pt,
  minimum height/.initial =1pt,
  minimum size/.style     ={/pgf/minimum width={#1},/pgf/minimum height={#1}},
}%



\def\pgf@handle@outer@sep#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgf@auto@text%
    \def\pgf@outer@adjust@hook{%
      \pgftransformationadjustments%
      \pgfkeyssetvalue{/pgf/outer xsep}{.5\pgflinewidth*\pgfhorizontaltransformationadjustment}%
      \pgfkeyssetvalue{/pgf/outer ysep}{.5\pgflinewidth*\pgfverticaltransformationadjustment}%
      \pgf@outer@auto@adjust@hook%
    }%
  \else%
    \pgfkeyssetvalue{/pgf/outer xsep}{#1}%
    \pgfkeyssetvalue{/pgf/outer ysep}{#1}%
  \fi%
}%
\def\pgf@auto@text{auto}%

\let\pgf@outer@auto@adjust@hook\relax



\newif\ifpgfshapeborderusesincircle
\pgfkeys{/pgf/shape border uses incircle/.is if=pgfshapeborderusesincircle}%
\pgfkeys{/pgf/shape border rotate/.initial=0}%


\pgfdeclareshape{rectangle}
{%
  \savedanchor\northeast{%
    \pgf@x=\the\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@x by 2\pgf@xc%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
    \ifdim\pgf@x<\pgf@xb%
      \pgf@x=\pgf@xb%
    \fi%
    \pgf@x=.5\pgf@x%
    \advance\pgf@x by.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \advance\pgf@x by\pgf@xa%
    \pgf@y=\ht\pgfnodeparttextbox%
    \advance\pgf@y by\dp\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@y by 2\pgf@yc%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@y<\pgf@yb%
      \pgf@y=\pgf@yb%
    \fi%
    \pgf@y=.5\pgf@y%
    \advance\pgf@y by-.5\dp\pgfnodeparttextbox%
    \advance\pgf@y by.5\ht\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \advance\pgf@y by\pgf@ya%
  }%

  \savedanchor\southwest{%
      \pgf@x=\wd\pgfnodeparttextbox%
      \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}%
      \advance\pgf@x by 2\pgf@xc%
      \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
      \ifdim\pgf@x<\pgf@xb%
        \pgf@x=\pgf@xb%
      \fi%
      \pgf@x=-.5\pgf@x%
      \advance\pgf@x by.5\wd\pgfnodeparttextbox%
      \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
      \advance\pgf@x by-\pgf@xa%
      \pgf@y=\ht\pgfnodeparttextbox%
      \advance\pgf@y by\dp\pgfnodeparttextbox%
      \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}%
      \advance\pgf@y by 2\pgf@yc%
      \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
      \ifdim\pgf@y<\pgf@yb%
        \pgf@y=\pgf@yb%
      \fi%
      \pgf@y=-.5\pgf@y%
      \advance\pgf@y by-.5\dp\pgfnodeparttextbox%
      \advance\pgf@y by.5\ht\pgfnodeparttextbox%
      \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
      \advance\pgf@y by-\pgf@ya%
  }%

  \anchor{center}{
    \pgf@process{\northeast}%
    \pgf@xa=.5\pgf@x%
    \pgf@ya=.5\pgf@y%
    \pgf@process{\southwest}%
    \pgf@x=.5\pgf@x%
    \pgf@y=.5\pgf@y%
    \advance\pgf@x by \pgf@xa%
    \advance\pgf@y by \pgf@ya%
  }%
  \anchor{mid}{\pgf@anchor@rectangle@center\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{base}{\pgf@anchor@rectangle@center\pgf@y=0pt}%
  \anchor{north}{
    \pgf@process{\southwest}%
    \pgf@xa=.5\pgf@x%
    \pgf@process{\northeast}%
    \pgf@x=.5\pgf@x%
    \advance\pgf@x by \pgf@xa%
  }%
  \anchor{south}{
    \pgf@process{\northeast}%
    \pgf@xa=.5\pgf@x%
    \pgf@process{\southwest}%
    \pgf@x=.5\pgf@x%
    \advance\pgf@x by \pgf@xa%
  }%
  \anchor{west}{
    \pgf@process{\northeast}%
    \pgf@ya=.5\pgf@y%
    \pgf@process{\southwest}%
    \pgf@y=.5\pgf@y%
    \advance\pgf@y by \pgf@ya%
  }%
  \anchor{mid west}{\southwest\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{base west}{\southwest\pgf@y=0pt}%
  \anchor{north west}{
    \southwest
    \pgf@xa=\pgf@x
    \northeast
    \pgf@x=\pgf@xa}%
  \anchor{south west}{\southwest}%
  \anchor{east}{%
    \pgf@process{\southwest}%
    \pgf@ya=.5\pgf@y%
    \pgf@process{\northeast}%
    \pgf@y=.5\pgf@y%
    \advance\pgf@y by \pgf@ya%
  }%
  \anchor{mid east}{\northeast\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{base east}{\northeast\pgf@y=0pt}%
  \anchor{north east}{\northeast}%
  \anchor{south east}{
    \northeast
    \pgf@xa=\pgf@x
    \southwest
    \pgf@x=\pgf@xa
  }%
  \anchorborder{%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \southwest%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \northeast%
    \advance\pgf@x by-\pgf@xa%
    \advance\pgf@y by-\pgf@ya%
    \pgf@xc=.5\pgf@x%
    \pgf@yc=.5\pgf@y%
    \advance\pgf@xa by\pgf@xc%
    \advance\pgf@ya by\pgf@yc%
    \edef\pgf@marshal{%
      \noexpand\pgfpointborderrectangle
      {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}
      {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
    }%
    \pgf@process{\pgf@marshal}%
    \advance\pgf@x by\pgf@xa%
    \advance\pgf@y by\pgf@ya%
  }%

  \backgroundpath{
    \pgfpathrectanglecorners
    {\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
    {\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
  }%
}%


\expandafter\def\csname pgf@sh@ns@current subpath start\endcsname{coordinate}%
\expandafter\def\csname pgf@sh@np@current subpath start\endcsname{%
  \def\centerpoint{\expandafter\pgfqpoint\pgfsyssoftpath@lastmoveto}%
}%
\expandafter\def\csname pgf@sh@nt@current subpath start\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\def\csname pgf@sh@pi@current subpath start\endcsname{\pgfpictureid}%



\expandafter\def\csname pgf@sh@ns@current bounding box\endcsname{rectangle}%
\expandafter\def\csname pgf@sh@np@current bounding box\endcsname{%
  \def\southwest{\pgfqpoint{\pgf@picminx}{\pgf@picminy}}%
  \def\northeast{\pgfqpoint{\pgf@picmaxx}{\pgf@picmaxy}}%
}%
\expandafter\def\csname pgf@sh@nt@current bounding box\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\def\csname pgf@sh@pi@current bounding box\endcsname{\pgfpictureid}%


\expandafter\def\csname pgf@sh@ns@current path bounding box\endcsname{rectangle}%
\expandafter\def\csname pgf@sh@np@current path bounding box\endcsname{%
  \def\southwest{\pgfqpoint{\pgf@pathminx}{\pgf@pathminy}}%
  \def\northeast{\pgfqpoint{\pgf@pathmaxx}{\pgf@pathmaxy}}%
}%
\expandafter\def\csname pgf@sh@nt@current path bounding box\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\def\csname pgf@sh@pi@current path bounding box\endcsname{\pgfpictureid}%


\expandafter\def\csname pgf@sh@ns@current page\endcsname{rectangle}%
\expandafter\def\csname pgf@sh@np@current page\endcsname{%
  \def\southwest{\pgfpointorigin}%
  \def\northeast{\pgfpoint{\pgfsys@thepagewidth}{\pgfsys@thepageheight}}%
}%
\expandafter\def\csname pgf@sh@nt@current page\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\def\csname pgf@sh@pi@current page\endcsname{pgfpageorigin}%


\pgfkeys{/pgf/local bounding box/.code={%
    \expandafter\gdef\csname pgf@sh@ns@#1\endcsname{rectangle}
    \expandafter\gdef\csname pgf@sh@np@#1\endcsname{%
      \def\southwest{\pgfqpoint{\csname pgf@lbb@minx@#1\endcsname}{\csname pgf@lbb@miny@#1\endcsname}}%
      \def\northeast{\pgfqpoint{\csname pgf@lbb@maxx@#1\endcsname}{\csname pgf@lbb@maxy@#1\endcsname}}%
    }
    \expandafter\gdef\csname pgf@sh@nt@#1\endcsname{{1}{0}{0}{1}{0pt}{0pt}}
    \expandafter\gdef\csname pgf@sh@pi@#1\endcsname{\pgfpictureid}
    \expandafter\gdef\csname pgf@lbb@maxx@#1\endcsname{-16000pt}%
    \expandafter\gdef\csname pgf@lbb@minx@#1\endcsname{16000pt}%
    \expandafter\gdef\csname pgf@lbb@maxy@#1\endcsname{-16000pt}%
    \expandafter\gdef\csname pgf@lbb@miny@#1\endcsname{16000pt}%
    \pgf@size@hookedtrue%
    \expandafter\def\expandafter\pgf@path@size@hook\expandafter{\pgf@path@size@hook\pgf@lbb@do{#1}}
  },
  /pgf/freeze local bounding box/.code={%
    {%
      \csname pgf@sh@np@#1\endcsname%
      \southwest%
      \pgf@xa=\pgf@x%
      \pgf@ya=\pgf@y%
      \northeast%
      \expandafter\xdef\csname pgf@sh@np@#1\endcsname{%
        \noexpand\def\noexpand\southwest{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
        \noexpand\def\noexpand\northeast{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
      }%
    }%
  },
}%
\def\pgf@lbb@do#1{%
  \ifdim\pgf@size@hook@x<\csname pgf@lbb@minx@#1\endcsname\expandafter\xdef\csname pgf@lbb@minx@#1\endcsname{\the\pgf@size@hook@x}\fi%
  \ifdim\pgf@size@hook@x>\csname pgf@lbb@maxx@#1\endcsname\expandafter\xdef\csname pgf@lbb@maxx@#1\endcsname{\the\pgf@size@hook@x}\fi%
  \ifdim\pgf@size@hook@y<\csname pgf@lbb@miny@#1\endcsname\expandafter\xdef\csname pgf@lbb@miny@#1\endcsname{\the\pgf@size@hook@y}\fi%
  \ifdim\pgf@size@hook@y>\csname pgf@lbb@maxy@#1\endcsname\expandafter\xdef\csname pgf@lbb@maxy@#1\endcsname{\the\pgf@size@hook@y}\fi%
}%


\pgfdeclareshape{circle}
{%
  \savedanchor\centerpoint{%
    \pgf@x=.5\wd\pgfnodeparttextbox%
    \pgf@y=.5\ht\pgfnodeparttextbox%
    \advance\pgf@y by-.5\dp\pgfnodeparttextbox%
  }%

  \saveddimen\radius{%
    \pgf@ya=.5\ht\pgfnodeparttextbox%
    \advance\pgf@ya by.5\dp\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@ya by\pgf@yb%
    \pgf@xa=.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@xa by\pgf@xb%
    \pgf@process{\pgfpointnormalised{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
    \ifdim\pgf@x>\pgf@y%
        \c@pgf@counta=\pgf@x%
        \ifnum\c@pgf@counta=0\relax%
        \else%
          \divide\c@pgf@counta by 255\relax%
          \pgf@xa=16\pgf@xa\relax%
          \divide\pgf@xa by\c@pgf@counta%
          \pgf@xa=16\pgf@xa\relax%
        \fi%
      \else%
        \c@pgf@counta=\pgf@y%
        \ifnum\c@pgf@counta=0\relax%
        \else%
          \divide\c@pgf@counta by 255\relax%
          \pgf@ya=16\pgf@ya\relax%
          \divide\pgf@ya by\c@pgf@counta%
          \pgf@xa=16\pgf@ya\relax%
        \fi%
    \fi%
    \pgf@x=\pgf@xa%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@x<.5\pgf@xb%
        \pgf@x=.5\pgf@xb%
    \fi%
    \ifdim\pgf@x<.5\pgf@yb%
        \pgf@x=.5\pgf@yb%
    \fi%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@xb<\pgf@yb%
      \advance\pgf@x by\pgf@yb%
    \else%
      \advance\pgf@x by\pgf@xb%
    \fi%
  }%

  \anchor{center}{\centerpoint}%
  \anchor{mid}{\centerpoint\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{base}{\centerpoint\pgf@y=0pt}%
  \anchor{north}{\centerpoint\advance\pgf@y by\radius}%
  \anchor{south}{\centerpoint\advance\pgf@y by-\radius}%
  \anchor{west}{\centerpoint\advance\pgf@x by-\radius}%
  \anchor{east}{\centerpoint\advance\pgf@x by\radius}%
  \anchor{mid west}{\centerpoint\advance\pgf@x by-\radius\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{mid east}{\centerpoint\advance\pgf@x by\radius\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{base west}{\centerpoint\advance\pgf@x by-\radius\pgf@y=0pt}%
  \anchor{base east}{\centerpoint\advance\pgf@x by\radius\pgf@y=0pt}%
  \anchor{north west}{
    \centerpoint
    \pgf@xa=\radius
    \advance\pgf@x by-0.707107\pgf@xa
    \advance\pgf@y by0.707107\pgf@xa
  }%
  \anchor{south west}{
    \centerpoint
    \pgf@xa=\radius
    \advance\pgf@x by-0.707107\pgf@xa
    \advance\pgf@y by-0.707107\pgf@xa
  }%
  \anchor{north east}{
    \centerpoint
    \pgf@xa=\radius
    \advance\pgf@x by0.707107\pgf@xa
    \advance\pgf@y by0.707107\pgf@xa
  }%
  \anchor{south east}{
    \centerpoint
    \pgf@xa=\radius
    \advance\pgf@x by0.707107\pgf@xa
    \advance\pgf@y by-0.707107\pgf@xa
  }%
  \anchorborder{%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \edef\pgf@marshal{%
      \noexpand\pgfpointborderellipse
      {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}
      {\noexpand\pgfqpoint{\radius}{\radius}}%
    }%
    \pgf@marshal%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \centerpoint%
    \advance\pgf@x by\pgf@xa%
    \advance\pgf@y by\pgf@ya%
  }%

  \backgroundpath{%
    \pgfutil@tempdima=\radius%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@xb<\pgf@yb%
      \advance\pgfutil@tempdima by-\pgf@yb%
    \else%
      \advance\pgfutil@tempdima by-\pgf@xb%
    \fi%
    \pgfpathcircle{\centerpoint}{\pgfutil@tempdima}%
  }%
}%





\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmoduleshapes.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulesnakes.code.tex ====

\ProvidesFileRCS{pgfmodulesnakes.code.tex}

\pgfwarning{Snakes have been superseded by decorations. Use the module decorations instead of snakes}

\usepgfmodule{decorations}%

\endinput



\newdimen\pgfsnakeremainingdistance
\newdimen\pgfsnakecompleteddistance



\long\def\pgfdeclaresnake#1#2#3{%
  \def\pgf@snake@name{#1}%
  \pgfutil@namedef{pgf@snake@@#1@initial}{#2}%
  \let\pgf@orig@state=\state%
  \let\state=\pgf@snake@state
  #3
  \let\state=\pgf@orig@state%
}%



\def\pgfsetsnakesegmenttransformation#1{\def\pgf@snakeadditionaltransform{#1}}%
\pgfsetsnakesegmenttransformation{}%



\def\pgf@snake@state#1{\pgfutil@ifnextchar[{\pgf@@snake@start#1}{\pgf@@snake@start#1[]}}%
\def\pgf@@snake@start#1[#2]#3{%
  \pgfutil@namedef{pgf@snake@@\pgf@snake@name @#1@options}{#2}%
  \pgfutil@namedef{pgf@snake@@\pgf@snake@name @#1@code}{#3}%
}%




\def\pgfpathsnakesto#1#2{%
  \begingroup%
    \pgfpointtransformed{#2}%
    \advance\pgf@x by-\pgf@path@lastx%
    \advance\pgf@y by-\pgf@path@lasty%
    \edef\pgf@marshal{%
        \noexpand\pgfmathanglebetweenpoints{\noexpand\pgfpointorigin}{%
            \noexpand\pgf@x\the\pgf@x\noexpand\pgf@y\the\pgf@y}%
    }%
    \pgf@marshal%
    \let\pgfsnakeangle\pgfmathresult%
    \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
    \pgfsnakeremainingdistance\pgfmathresult pt\relax%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgfpointnormalised{}}%
    \edef\pgf@list{#1}%
    \pgfsnakecompleteddistance=0pt%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgfutil@for\pgf@temp:=\pgf@list\do{%
      \ifx\pgf@temp\pgfutil@empty%
      \else%
        \expandafter\pgf@snake@invoke\pgf@temp%
      \fi%
    }%
  \endgroup%
}%

\def\pgf@snake@invoke#1#2{%
  \pgfmathsetlength\pgf@xa{#2}%
  {%
    \edef\pgf@marshal{\noexpand\pgfpathsnakealongvector{#1}{\the\pgf@xa}{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}}%
    \pgf@marshal%
  }%
  \advance\pgfsnakecompleteddistance by\pgf@xa%
  \advance\pgfsnakeremainingdistance by-\pgf@xa%
}%


\def\pgfpathsnaketo#1#2{\pgfpathsnakesto{{#1}{\pgfsnakeremainingdistance}}{#2}}%




\def\pgfpathsnakealongvector#1#2#3{%
  \pgfutil@ifundefined{pgf@snake@@#1@initial}{\pgferror{Undefined snake ``#1''}}
  {
  \begingroup%
    \pgftransformreset%
    \pgf@pt@x=\pgf@path@lastx%
    \pgf@pt@y=\pgf@path@lasty%
    \pgf@process{#3}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@xb=-\pgf@y%
    \pgf@yb=\pgf@x%
    \pgftransformcm
      {\pgf@sys@tonumber{\pgf@xa}}{\pgf@sys@tonumber{\pgf@ya}}
      {\pgf@sys@tonumber{\pgf@xb}}{\pgf@sys@tonumber{\pgf@yb}}
      {\pgfpointorigin}%
    \expandafter\let\expandafter\pgf@snake@current@state\expandafter=\csname pgf@snake@@#1@initial\endcsname%
    \def\pgf@snake@name{#1}%
    \pgfsnakecompleteddistance=0pt%
    \pgfmathsetlength\pgfsnakeremainingdistance{#2}%
    \pgf@snake@run%
    {%
      \pgftransformxshift{\pgfsnakecompleteddistance}%
      \pgf@snakeadditionaltransform%
      \csname pgf@snake@@#1@final@code\endcsname%
    }%
  \endgroup%
  }%
}%

\def\pgf@final@text{final}%

\def\pgf@snake@run{%
  \let\pgf@snake@next=\pgf@snake@do@state%
  \ifx\pgf@snake@current@state\pgf@final@text%
    \let\pgf@snake@next=\relax%
  \fi%
  \pgf@snake@next%
}%

\def\pgf@snake@do@state{%
  \let\pgf@snake@next=\relax%
  \let\pgf@snake@next@state=\pgf@snake@current@state%
  \expandafter\expandafter\expandafter\pgf@snakes@setter
  \expandafter\expandafter\expandafter{\csname pgf@snake@@\pgf@snake@name @\pgf@snake@current@state @options\endcsname}%
  \ifx\pgf@snake@next\relax%
    \let\pgf@snake@next=\pgf@snake@do@code%
  \fi%
  \pgf@snake@next%
}%
\def\pgf@snakes@setter{%
  \pgfqkeys{/pgf/snakes}%
}%

\def\pgf@snake@do@code{%
  {%
    \pgftransformxshift{\pgfsnakecompleteddistance}%
    \pgf@snakeadditionaltransform%
    \csname pgf@snake@@\pgf@snake@name @\pgf@snake@current@state @code\endcsname%
  }%
  \pgfmathsetlength{\pgf@xa}{\pgf@snake@width}%
  \advance\pgfsnakeremainingdistance by-\pgf@xa%
  \advance\pgfsnakecompleteddistance by\pgf@xa%
  \let\pgf@snake@current@state=\pgf@snake@next@state%
  \pgf@snake@run%
}%

\pgfkeys{
  /pgf/snakes/width/.code=\def\pgf@snake@width{#1}\pgf@snake@switch@if#1 to final\pgf@stop,%
  /pgf/snakes/switch if less than/.code=\pgf@snake@switch@if#1\pgf@stop,%
  /pgf/snakes/next state/.store in=\pgf@snake@next@state%
}%

\def\pgf@snake@switch@if#1to #2\pgf@stop{%
  \ifx\pgf@snake@next\relax%
    \pgfmathsetlength\pgf@x{#1}%
    \ifdim\pgfsnakeremainingdistance<\pgf@x%
      \def\pgf@snake@current@state{#2}%
      \let\pgf@snake@next=\pgf@snake@run%
    \fi%
  \fi%
}%




\pgfdeclaresnake{lineto}{final}
{%
  \state{final}
  { \pgfpathlineto{\pgfqpoint{\pgfsnakeremainingdistance}{0pt}} }
}%




\pgfdeclaresnake{moveto}{final}
{%
  \state{final}
  { \pgfpathmoveto{\pgfqpoint{\pgfsnakeremainingdistance}{0pt}} }
}%



\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulesnakes.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulesorting.code.tex ====

\ProvidesFileRCS{pgfmodulesorting.code.tex}



\newcount\pgfsortingbuckets


\def\pgfsortinginit#1{
  \pgfsortingbuckets#1\relax%
  \c@pgf@counta=0\relax
  \pgfutil@loop
  \ifnum\c@pgf@counta<\c@pgf@countb\relax%
    \expandafter\global\expandafter\let\csname pgf@sort@\the\c@pgf@counta\endcsname\pgfutil@empty%
    \advance\c@pgf@counta by1\relax%
  \pgfutil@repeat
}%

\def\pgfsortinginsert#1#2{
  \expandafter\let\expandafter\pgf@temp\csname pgf@lib@sort@#1\endcsname%
  \expandafter\def\expandafter\pgf@temp\expandafter{\pgf@temp#2}%
  \expandafter\global\expandafter\let\csname pgf@lib@sort@\the\c@pgf@counta\endcsname\pgf@temp%
}%


\def\pgfsortingexecute{
  \c@pgf@countb=\pgfoovalueof{buckets}\relax
  \c@pgf@counta=0\relax
  \pgfutil@loop
  \ifnum\c@pgf@counta<\c@pgf@countb\relax%
    \csname pgf@lib@sort@\the\c@pgf@counta\endcsname%
    \advance\c@pgf@counta by1\relax%
  \pgfutil@repeat
}%


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/modules/pgfmodulesorting.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/pgf.revision.tex ====
\def\pgfrevision{3.1.10}
\def\pgfversion{3.1.10}
\def\pgfrevisiondate{2023-01-15}
\def\pgfversiondate{2023-01-15}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/pgf.revision.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/systemlayer/pgfsys.code.tex ====

\ProvidesPackageRCS{pgfsys.code.tex}


\ifdefined\pgfkeysloaded\else
  \input pgfkeys.code.tex
\fi

\pgfkeys{/pgf/.is family}
\def\pgfset{\pgfqkeys{/pgf}}

\newif\ifpgfpicture


{\catcode`\p=12\catcode`\t=12\gdef\Pgf@geT#1pt{#1}}

\def\pgf@sys@tonumber#1{\expandafter\Pgf@geT\the#1}

\def\pgf@sys@bp@correct#1{#1=0.99627#1}

\def\pgf@sys@bp#1{%
  {%
    \pgf@x=#1\relax%
    \pgf@x=0.99627\pgf@x%
    \edef\temp{\expandafter\Pgf@geT\the\pgf@x\space}%
    \pgfutil@toks@\expandafter\expandafter\expandafter{\expandafter\pgfsysprotocol@currentprotocol\temp}%
    \xdef\pgfsysprotocol@currentprotocol{\the\pgfutil@toks@}%
  }%
}
\def\pgf@sys@pt#1{%
  {%
    \pgf@x=#1\relax%
    \edef\temp{\expandafter\Pgf@geT\the\pgf@x\space}%
    \pgfutil@toks@\expandafter\expandafter\expandafter{\expandafter\pgfsysprotocol@currentprotocol\temp}%
    \xdef\pgfsysprotocol@currentprotocol{\the\pgfutil@toks@}%
  }%
}


\newdimen\pgf@x
\newdimen\pgf@y
\newdimen\pgf@xa
\newdimen\pgf@ya
\newdimen\pgf@xb
\newdimen\pgf@yb
\newdimen\pgf@xc
\newdimen\pgf@yc
\newdimen\pgf@xd
\newdimen\pgf@yd

\newwrite\w@pgf@writea
\newread\r@pgf@reada
\let\pgfutil@inputcheck=\r@pgf@reada

\newcount\c@pgf@counta
\newcount\c@pgf@countb
\newcount\c@pgf@countc
\newcount\c@pgf@countd

\newtoks\t@pgf@toka
\newtoks\t@pgf@tokb
\newtoks\t@pgf@tokc

\let\pgfmath@x\pgf@x
\let\pgfmath@xa\pgf@xa
\let\pgfmath@xb\pgf@xb
\let\pgfmath@xc\pgf@xc

\let\pgfmath@y\pgf@y
\let\pgfmath@ya\pgf@ya
\let\pgfmath@yb\pgf@yb
\let\pgfmath@yc\pgf@yc

\let\c@pgfmath@counta\c@pgf@counta
\let\c@pgfmath@countb\c@pgf@countb
\let\c@pgfmath@countc\c@pgf@countc
\let\c@pgfmath@countd\c@pgf@countd






\def\pgf@sys@fail#1{%
  \expandafter\ifx\csname pgf@sys@fail@#1\endcsname\pgfutil@empty%
  \else%
    \expandafter\global\expandafter\let\csname pgf@sys@fail@#1\endcsname=\pgfutil@empty%
    \pgfwarning{Your graphic driver \pgfsysdriver\space does not support #1. This warning is given only once}%
  \fi%
}




\def\pgfsys@invoke{\pgf@sys@fail{invoking specials}}

\def\pgfsys@outerinvoke{\pgfsys@invoke}




\def\pgfsys@moveto#1#2{\pgf@sys@fail{path constructions}}

\def\pgfsys@lineto#1#2{\pgf@sys@fail{path constructions}}

\def\pgfsys@curveto#1#2#3#4#5#6{\pgf@sys@fail{path constructions}}

\def\pgfsys@rect#1#2#3#4{\pgf@sys@fail{path constructions}}

\def\pgfsys@closepath{\pgf@sys@fail{path constructions}}







\def\pgfsys@stroke{\pgf@sys@fail{path usage}}

\def\pgfsys@fill{\pgf@sys@fail{path usage}}

\def\pgfsys@fillstroke{\pgf@sys@fail{path usage}}

\def\pgfsys@clipnext{\pgf@sys@fail{path usage}}

\def\pgfsys@discardpath{\pgf@sys@fail{path usage}}

\def\pgfsys@closestroke{\pgfsys@closepath\pgfsys@stroke}

\newif\ifpgfsys@eorule




\def\pgfsys@setlinewidth#1{\pgf@sys@fail{setting the line width}}

\def\pgfsys@buttcap{\pgf@sys@fail{setting the line cap}}

\def\pgfsys@roundcap{\pgf@sys@fail{setting the line cap}}

\def\pgfsys@rectcap{\pgf@sys@fail{setting the line cap}}

\def\pgfsys@miterjoin{\pgf@sys@fail{setting the line join}}

\def\pgfsys@setmiterlimit#1{\pgf@sys@fail{setting the line cap}}

\def\pgfsys@roundjoin{\pgf@sys@fail{setting the line cap}}

\def\pgfsys@beveljoin{\pgf@sys@fail{setting the line cap}}

\def\pgfsys@setdash#1#2{\pgf@sys@fail{setting the dashing pattern}}






\def\pgfsys@color@rgb@stroke#1#2#3{\pgf@sys@fail{color}}

\def\pgfsys@color@rgb@fill#1#2#3{\pgf@sys@fail{color}}

\def\pgfsys@color@rgb#1#2#3{\pgfsys@color@rgb@stroke{#1}{#2}{#3}\pgfsys@color@rgb@fill{#1}{#2}{#3}}

\def\pgfsys@color@cmyk@stroke#1#2#3#4{\pgf@sys@fail{color}}

\def\pgfsys@color@cmyk@fill#1#2#3#4{\pgf@sys@fail{color}}

\def\pgfsys@color@cmyk#1#2#3#4{\pgfsys@color@cmyk@stroke{#1}{#2}{#3}{#4}\pgfsys@color@cmyk@fill{#1}{#2}{#3}{#4}}

\def\pgfsys@color@cmy@stroke#1#2#3{\pgf@sys@fail{color}}

\def\pgfsys@color@cmy@fill#1#2#3{\pgf@sys@fail{color}}

\def\pgfsys@color@cmy#1#2#3{\pgfsys@color@cmy@stroke{#1}{#2}{#3}\pgfsys@color@cmy@fill{#1}{#2}{#3}}

\def\pgfsys@color@gray@stroke#1{\pgf@sys@fail{color}}

\def\pgfsys@color@gray@fill#1{\pgf@sys@fail{color}}

\def\pgfsys@color@gray#1{\pgfsys@color@gray@stroke{#1}\pgfsys@color@gray@fill{#1}}

\newif\ifpgfsys@color@reset@inorder
\pgfsys@color@reset@inordertrue


\def\pgfsys@color@reset{}

\def\pgfsys@color@unstacked#1{}

\def\pgfsys@text@to@black@hook{}




\def\pgfsys@transformcm#1#2#3#4#5#6{\pgf@sys@fail{transformations}}

\def\pgfsys@transformshift#1#2{\pgfsys@transformcm{1}{0}{0}{1}{#1}{#2}}

\def\pgfsys@transformxyscale#1#2{\pgfsys@transformcm{#1}{0}{0}{#2}{0bp}{0bp}}

\def\pgfsys@viewboxmeet#1#2#3#4#5#6#7#8{\pgfsys@beginscope\pgf@sys@default@viewbox@impl{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{<}}

\def\pgfsys@viewboxslice#1#2#3#4#5#6#7#8{\pgfsys@beginscope\pgf@sys@default@viewbox@impl{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{>}}

\def\pgfsys@endviewbox{\pgfsys@endscope}


\def\pgf@sys@default@viewbox@impl#1#2#3#4#5#6#7#8#9{{%
    \pgf@x#1%
    \pgf@y#2%
    \pgf@xa#3%
    \pgf@ya#4%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \pgfmathdivide@{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@ya}%
    \let\aspectr\pgfmathresult%
    \pgf@xb#5%
    \pgf@yb#6%
    \pgf@xc#7%
    \pgf@yc#8%
    \advance\pgf@xc by-\pgf@xb%
    \advance\pgf@yc by-\pgf@yb%
    \pgfmathdivide@{\pgf@sys@tonumber\pgf@xc}{\pgf@sys@tonumber\pgf@yc}%
    \let\aspects\pgfmathresult%
    \ifdim\aspectr pt#9\aspects pt%
      \pgfmathdivide@{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@xc}%
    \else%
      \pgfmathdivide@{\pgf@sys@tonumber\pgf@ya}{\pgf@sys@tonumber\pgf@yc}%
    \fi%
    \advance\pgf@x by.5\pgf@xa%
    \advance\pgf@xb by.5\pgf@xc%
    \advance\pgf@y by.5\pgf@ya%
    \advance\pgf@yb by.5\pgf@yc%
    \pgfsys@transformcm{\pgfmathresult}{0}{0}{\pgfmathresult}{\pgf@x}{\pgf@y}%
    \pgfsys@transformcm{1}{0}{0}{1}{-\pgf@xb}{-\pgf@yb}%
  }%
}





\def\pgfsys@beginscope{\pgf@sys@fail{scoping}}

\def\pgfsys@endscope{\pgf@sys@fail{scoping}}

\def\pgfsys@begin@idscope{%
  \begingroup%
    \edef\pgf@sys@cacheref{\pgfsys@id@refcurrent}%
    \expandafter\let\expandafter\pgfsys@beg@save\csname pgf@sys@att@beg@\pgf@sys@cacheref\endcsname%
    \expandafter\let\expandafter\pgfsys@end@save\csname pgf@sys@att@end@\pgf@sys@cacheref\endcsname%
    \ifx\pgfsys@beg@save\relax%
      \ifx\pgfsys@end@save\relax%
      \else%
        \pgfsys@call@save%
      \fi%
    \else%
      \pgfsys@call@save%
    \fi%
    \pgfsys@invalidate@currentid%
      \begingroup%
}

\def\pgfsys@call@save{%
  \pgfsys@beginscope%
  \pgfsys@beg@save%
  \expandafter\global\expandafter\let\csname pgf@sys@att@beg@\pgfsys@id@refcurrent\endcsname\relax%
  \expandafter\global\expandafter\let\csname pgf@sys@att@end@\pgfsys@id@refcurrent\endcsname\relax%
}

\def\pgfsys@end@idscope{
      \endgroup%
    \ifx\pgfsys@beg@save\relax%
      \ifx\pgfsys@end@save\relax%
      \else%
        \pgfsys@call@end%
      \fi%
    \else%
      \pgfsys@call@end%
    \fi%
  \endgroup
}

\def\pgfsys@call@end{%
  \pgfsys@end@save%
  \pgfsys@endscope%
}


\def\pgfsys@begin@text{}

\def\pgfsys@end@text{}




\newcount\pgf@sys@id@count

\def\pgfsys@new@id#1{%
  \edef#1{pgf\the\pgf@sys@id@count}%
  \global\advance\pgf@sys@id@count by1\relax%
}

\def\pgfsys@use@id#1{%
  \edef\pgf@sys@id@current@id{#1}%
  \let\pgfsys@current@type\pgfutil@empty%
}
\let\pgf@sys@id@current@id\pgfutil@empty

\def\pgfsys@clear@id{%
  \let\pgf@sys@id@current@id\pgfutil@empty%
}

\def\pgfsys@use@type#1{%
  \edef\pgfsys@current@type{#1}%
  \pgfsys@register@type\pgfsys@current@type%
}
\let\pgfsys@current@type\pgfutil@empty

\def\pgfsys@append@type#1{%
  \ifx\pgfsys@current@type\pgfutil@empty%
    \pgfsys@use@type{#1}%
  \else%
    \pgfsys@use@type{\pgfsys@current@type.#1}%
  \fi%
}

\def\pgfsys@register@type#1{%
  \expandafter\let\expandafter\pgf@sys@temp\csname pgf@sys@reg@type@#1\endcsname%
  \ifx\pgf@sys@temp\relax%
    {%
      \c@pgf@counta\pgf@sys@type@count\relax%
      \global\advance\c@pgf@counta by1\relax%
      \edef\pgf@sys@type@count{\the\c@pgf@counta}%
      \expandafter\xdef\csname pgf@sys@reg@type@#1\endcsname{y\the\c@pgf@counta}%
    }%
  \fi%
}
\def\pgf@sys@reg@type@{}
\def\pgf@sys@reg@type@background{b}
\def\pgf@sys@reg@type@path{p}
\def\pgf@sys@reg@type@text{t}
\expandafter\def\csname pgf@sys@reg@type@background.path\endcsname{bp}
\def\pgf@sys@type@count{0}

\def\pgfsys@push@type{%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@sys@typestack%
  \expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfsys@current@type%
    \expandafter\expandafter\expandafter{\expandafter\pgfsys@current@type\expandafter}%
    \expandafter\def\expandafter\pgf@sys@typestack\expandafter{\pgf@sys@typestack}}%
}
\let\pgf@sys@typestack\pgfutil@empty

\def\pgfsys@pop@type{\pgf@sys@typestack}

\def\pgfsys@id@ref#1#2{#1\csname pgf@sys@reg@type@#2\endcsname}

\def\pgfsys@id@refcurrent{\pgfsys@id@ref{\pgf@sys@id@current@id}{\pgfsys@current@type}}

\def\pgfsys@invalidate@currentid{%
  \expandafter\global\expandafter\let\csname pgf@sys@id@keylist@\pgfsys@id@refcurrent\endcsname\pgfutil@empty%
}

\def\pgfsys@attach@to@id#1#2#3#4{%
  \pgfsys@register@type{#2}%
  \expandafter\def\expandafter\pgf@sys@tempbeg\expandafter{\csname pgf@sys@att@beg@\pgfsys@id@ref{#1}{#2}\endcsname}%
  \expandafter\def\expandafter\pgf@sys@tempend\expandafter{\csname pgf@sys@att@end@\pgfsys@id@ref{#1}{#2}\endcsname}%
  \expandafter\ifx\pgf@sys@tempbeg\relax%
    \expandafter\let\pgf@sys@tempbeg\pgfutil@empty%
  \fi%
  \expandafter\ifx\pgf@sys@tempend\relax%
    \expandafter\let\pgf@sys@tempend\pgfutil@empty%
  \fi%
  \expandafter\let\expandafter\pgf@sys@tempbeg@cont\pgf@sys@tempbeg%
  \expandafter\let\expandafter\pgf@sys@tempend@cont\pgf@sys@tempend%
  \expandafter\expandafter\expandafter\gdef\expandafter\pgf@sys@tempbeg\expandafter{\pgf@sys@tempbeg@cont#3}%
  \def\pgf@sys@temp{#4}%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef\expandafter\expandafter\expandafter\pgf@sys@tempend\expandafter\expandafter\expandafter{\expandafter\pgf@sys@temp\pgf@sys@tempend@cont}%
}

\def\pgfsys@if@fresh@id#1#2#3#4{%
  \edef\pgf@sys@temp{#1}%
  \ifx\pgf@sys@temp\pgfutil@empty%
    #4%
  \else%
    \pgfsys@register@type{#2}%
    \expandafter\ifx\csname pgf@sys@id@keylist@\pgfsys@id@ref{#1}{#2}\endcsname\pgfutil@empty%
      #4%
    \else%
      #3%
    \fi%
  \fi%
}

\def\pgfsys@if@fresh@currentid#1#2{%
  \ifx\pgf@sys@id@current@id\pgfutil@empty%
    #2%
  \else%
    \expandafter\ifx\csname pgf@sys@id@keylist@\pgfsys@id@refcurrent\endcsname\pgfutil@empty%
      #2%
    \else%
      #1%
    \fi%
  \fi%
}





\def\pgfsys@imagesuffixlist{}




\def\pgfsys@opacity#1{\pgfsys@stroke@opacity{#1}\pgfsys@fill@opacity{#1}}

\def\pgfsys@stroke@opacity#1{\pgf@sys@fail{opacity}}

\def\pgfsys@fill@opacity#1{\pgf@sys@fail{opacity}}

\def\pgfsys@transparencygroupfrombox#1{\pgf@sys@fail{transparency groups}}

\newif\ifpgfsys@transparency@group@isolated
\newif\ifpgfsys@transparency@group@knockout


\def\pgfsys@blend@mode#1{\pgf@sys@fail{blend mode}}


\def\pgfsys@definemask{\pgf@sys@fail{image masks}}

\def\pgfsys@fadingfrombox#1#2{\pgf@sys@fail{fadings}}

\def\pgfsys@usefading#1#2#3#4#5#6#7{\pgf@sys@fail{fadings}}

\def\pgfsys@clipfading{}



\def\pgfsys@horishading#1#2#3{\pgf@sys@fail{shadings}\pgf@sys@noshading{#1}}

\def\pgfsys@vertshading#1#2#3{\pgf@sys@fail{shadings}\pgf@sys@noshading{#1}}

\def\pgfsys@radialshading#1#2#3{\pgf@sys@fail{shadings}\pgf@sys@noshading{#1}}

\def\pgfsys@functionalshading#1#2#3#4{\pgf@sys@fail{shadings (functional)}\pgf@sys@noshading{#1}}

\def\pgf@sys@noshading#1{\expandafter\global\expandafter\let\csname @pgfshading#1!\endcsname=\pgfutil@empty}





\def\pgfsys@declarepattern#1#2#3#4#5#6#7#8#9{\pgf@sys@fail{patterns}}

\def\pgfsys@setpatternuncolored#1#2#3#4{\pgf@sys@fail{patterns}}

\def\pgfsys@setpatterncolored#1{\pgf@sys@fail{patterns}}







\newif\ifpgfsysanimationsupported


\def\pgfsys@animate#1{\pgf@sys@fail{animations}}





\def\pgfsys@animation@restart@always{}

\def\pgfsys@animation@restart@never{}

\def\pgfsys@animation@restart@whennotactive{}

\def\pgfsys@animation@repeat#1{}

\def\pgfsys@animation@repeat@indefinite{}

\def\pgfsys@animation@repeat@dur#1{}

\def\pgfsys@animation@freezeatend{}

\def\pgfsys@animation@removeatend{}

\def\pgfsys@animation@time#1#2#3#4#5{}

\def\pgfsys@stay@text{{stay}{0}}
\def\pgfsys@jump@text{{jump}{1}}

\def\pgfsys@animation@base{}

\def\pgfsys@animation@offset#1#2{}

\def\pgfsys@animation@syncbegin#1#2#3#4{}

\def\pgfsys@animation@syncend#1#2#3#4{}

\def\pgfsys@animation@event#1#2#3#4#5{}

\def\pgfsys@animation@repeat@event#1#2#3#4#5{}

\def\pgfsys@animation@accesskey#1#2#3{}

\def\pgf@sys@begin@text{begin}



\def\pgfsys@animation@accumulate{}

\def\pgfsys@animation@noaccumulate{}



\def\pgfsys@animation@whom#1#2{}



\def\pgfsys@animation@rotatealong{}

\def\pgfsys@animation@norotatealong{}

\def\pgfsys@animation@movealong#1{}

\def\pgfsys@animation@tip@markers#1#2{}

\def\pgfsys@animation@canvas@transform#1#2{}




\def\pgfsys@animation@val@current{}

\def\pgfsys@animation@val@text#1{}

\def\pgfsys@animation@val@scalar#1{}

\def\pgfsys@animation@val@dimension#1{}

\def\pgfsys@animation@val@color@rgb#1#2#3{}

\def\pgfsys@animation@val@color@cmyk#1#2#3#4{}

\def\pgfsys@animation@val@color@cmy#1#2#3{}

\def\pgfsys@animation@val@color@gray#1{}

\def\pgfsys@animation@val@path#1{}

\def\pgfsys@animation@val@translate#1#2{}

\def\pgfsys@animation@val@scale#1#2{}

\def\pgfsys@animation@val@viewbox#1#2#3#4{}

\def\pgfsys@animation@val@dash#1#2{}




\def\pgfsys@marker@declare#1#2{%
  {%
    \pgfpicturetrue%
    \pgfsysprotocol@getcurrentprotocol\pgfsys@marker@temp%
    \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
    \pgfsysprotocol@bufferedtrue%
    \pgfsys@beginscope%
    #2%
    \pgfsys@endscope%
    \xdef#1{\the\pgf@sys@id@count}%
    \expandafter\expandafter\expandafter\global\expandafter\pgfsysprotocol@getcurrentprotocol\csname pgf@sys@marker@prot@#1\endcsname%
    \pgfsys@marker@declare@%
    \pgfsysprotocol@setcurrentprotocol\pgfsys@marker@temp%
    \global\advance\pgf@sys@id@count by1\relax%
  }%
}
\let\pgfsys@marker@declare@\relax

\def\pgfsys@marker@use#1{%
  \pgfsysprotocol@literal{\csname pgf@sys@marker@prot@#1\endcsname}%
}







\def\pgfsys@rdf@about#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@content#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@datatype#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@href#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@inlist{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@prefix#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@property#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@rel#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@resource#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@rev#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@src#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@typeof#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@vocab#1{\pgf@sys@fail{rdf}}




\def\pgfsys@papersize#1#2{\pgf@sys@fail{papersize}}

\def\pgfsys@global@papersize#1#2{\pgfsys@papersize{#1}{#2}}

\def\pgfsys@prepare@papersize#1#2{\pgfsys@papersize{#1}{#2}}

\ifx\paperheight\@undefined
  \def\pgfsys@thepageheight{\the\vsize} %
  \def\pgfsys@thepagewidth{\the\hsize}
\else
  \def\pgfsys@thepageheight{\paperheight}
  \def\pgfsys@thepagewidth{\paperwidth}
\fi



\def\pgfsys@markposition#1{\pgf@sys@fail{marking the current position}}


\def\pgfsys@getposition#1#2{\let#2=\relax}





\def\pgfsys@shadingoutsidepgfpicture#1{%
  #1%
}


\def\pgfsys@shadinginsidepgfpicture#1{%
  \pgf@makehbox{#1}%
  \setbox\pgf@hbox=\hbox{\hskip-.5\wd\pgf@hbox\lower.5\ht\pgf@hbox\hbox{\box\pgf@hbox}}%
  \pgfqbox{\pgf@hbox}%
}


\def\pgfsys@hbox#1{%
  \pgfsys@begin@idscope%
  \pgfsys@beginscope%
    \setbox#1=\hbox{\box#1}%
    \wd#1=0pt%
    \ht#1=0pt%
    \dp#1=0pt%
    \box#1%
  \pgfsys@endscope%
  \pgfsys@end@idscope%
}

\def\pgfsys@hboxsynced#1{%
  \pgfsys@beginscope\pgflowlevelsynccm\pgfsys@hbox#1\pgfsys@endscope%
}%

\def\pgfsys@pictureboxsynced#1{%
  {%
    \setbox0=\hbox{\pgfsys@beginpicture\box#1\pgfsys@endpicture}%
    \pgfsys@hboxsynced0%
  }%
}

\def\pgfsys@beginpicture{}

\def\pgfsys@endpicture{}

\def\pgfsys@typesetpicturebox#1{%
  \pgf@ya=\pgf@shift@baseline\relax%
  \advance\pgf@ya by-\pgf@picminy\relax%
  \advance\pgf@picmaxy by-\pgf@picminy\relax%
  \advance\pgf@picmaxx by-\pgf@picminx\relax%
  \setbox#1=\hbox{\hskip-\pgf@picminx\lower\pgf@picminy\box#1}%
  \ht#1=\pgf@picmaxy%
  \wd#1=\pgf@picmaxx%
  \dp#1=0pt%
  \leavevmode%
  \pgf@xa=\pgf@trimleft@final\relax  \ifdim\pgf@xa=0pt \else\kern\pgf@xa\fi
  \raise-\pgf@ya\box#1%
  \pgf@xa=\pgf@trimright@final\relax \ifdim\pgf@xa=0pt \else\kern\pgf@xa\fi
}

\def\pgfsys@beginpurepicture{\pgfsys@beginpicture}

\def\pgfsys@endpurepicture{\pgfsys@endpicture}

\def\pgfsys@defineimage{%
  \ifx\pgf@imagewidth\pgfutil@empty\else\edef\pgf@imagewidth{width=\pgf@imagewidth,}\fi%
  \ifx\pgf@imageheight\pgfutil@empty\else\edef\pgf@imageheight{height=\pgf@imageheight,}\fi%
  \ifx\pgf@imagepage\pgfutil@empty\else\edef\pgf@imagepage{page=\pgf@imagepage,}\fi%
  \edef\pgf@image{\noexpand\includegraphics[\pgf@imageheight\pgf@imagewidth]{\pgf@filename}}%
}


\def\pgfsys@defobject#1#2#3#4{%
  \pgfsysprotocol@getcurrentprotocol\pgfsys@temp%
  {%
    \pgfpicturetrue%
    \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
    \pgfsysprotocol@bufferedtrue%
    \pgfsys@beginscope%
    #4%
    \pgfsys@endscope%
    \pgfsysprotocol@getcurrentprotocol\pgfsys@@temp%
    \expandafter\global\expandafter\let\csname #1\endcsname=\pgfsys@@temp%
  }%
  \pgfsysprotocol@setcurrentprotocol\pgfsys@temp%
}


\def\pgfsys@useobject#1#2{%
  \pgfsysprotocol@getcurrentprotocol\pgfsys@temp%
  {%
    \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
    \pgfsysprotocol@bufferedfalse%
    #2%
    \expandafter\pgfsysprotocol@setcurrentprotocol\csname #1\endcsname%
    \pgfsysprotocol@invokecurrentprotocol%
  }%
  \pgfsysprotocol@setcurrentprotocol\pgfsys@temp%
}


\def\pgfsys@begininvisible{\pgfsys@transformcm{1}{0}{0}{1}{2000bp}{2000bp}}

\def\pgfsys@endinvisible{\pgfsys@transformcm{1}{0}{0}{1}{-2000bp}{-2000bp}}

\def\pgfsys@begininvisiblescope{\pgfsys@beginscope\pgfsys@begininvisible}

\def\pgfsys@endinvisiblescope{\pgfsys@endinvisible\pgfsys@endscope}


\def\pgfsys@atbegindocument{}


\ifdefined\pdfstrcmp
  \let\pgfsys@strcmp\pdfstrcmp
\else\ifdefined\strcmp
  \let\pgfsys@strcmp\strcmp
\else\ifdefined\directlua
  \directlua{
  local lft = lua.get_functions_table()
  lft[\string#lft+1] = function()
      local lhs = token.scan_string()
      local rhs = token.scan_string()
      if lhs < rhs then
          tex.sprint(-2, "-1")
      elseif lhs == rhs then
          tex.sprint(-2, "0")
      else
          tex.sprint(-2, "1")
      end
  end
  token.set_lua("pgfsys@strcmp", \string#lft, "global")
  }
\else
  \def\pgfsys@strcmp#1#2{\pgf@sys@fail{string comparison}}%
\fi\fi\fi



\ifx\pgfsysdriver\@undefined
  \pgfutil@guessdriver
\fi

\input pgf.cfg

\immediate\write-1{Driver file for pgf: \pgfsysdriver}
\pgfutil@InputIfFileExists{\pgfsysdriver}{}{%
  \pgferror{Driver file ``\pgfsysdriver'' not found.}}



\AtBeginDocument{
  \pgfsys@atbegindocument
  \let\pgfsys@atbegindocument=\pgfutil@empty
}




\pgfutil@aux@read@hook


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/systemlayer/pgfsys.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/systemlayer/pgfsysanimations.code.tex ====



\ifx\pgfsysanimationsloaded\pgfutil@undefined
  \let\pgfsysanimationsloaded=\relax
\else
  \expandafter\endinput
\fi


\usepgfmodule{decorations}





\def\pgfsysanimsnapshot#1{%
  \def\pgfsysanim@snaptime{#1}%
  \pgfsysanim@snap@firsttrue%
  \pgfsysanim@is@snaptrue%
}
\def\pgfsysanimsnapshotafter#1{%
  \def\pgfsysanim@snaptime{#1}%
  \pgfsysanim@snap@firstfalse%
  \pgfsysanim@is@snaptrue%
}
\newif\ifpgfsysanim@is@snap
\newif\ifpgfsysanim@snap@first




\def\pgfsysanimate#1{%
  \csname pgfsysanim@checks@#1\endcsname%
  \ifpgfsysanim@is@snap%
    \pgfsysanim@do@snap{#1}%
  \else%
    \pgfsys@animate{#1}%
  \fi%
}

\def\pgfsysanim@do@snap#1{%
  {%
    \expandafter\ifx\csname pgfsysanim@prep@attr@#1\endcsname\pgfutil@undefined%
    \else%
      \pgfsysanim@compute@interval%
      \let\pgfsysanim@code@begin\relax%
      \let\pgfsysanim@code@end\pgfutil@empty%
      \csname pgfsysanim@prep@attr@#1\endcsname%
      \ifx\pgfsysanim@code@begin\relax%
      \else%
        \expandafter\expandafter\expandafter\pgfsysanim@call@attacher%
        \expandafter\expandafter\expandafter{\expandafter\pgfsysanim@code@begin\expandafter}\expandafter{\pgfsysanim@code@end}{}%
      \fi%
    \fi%
  }%
}
\def\pgfsysanim@call@attacher{\pgfsys@attach@to@id{\pgfsysanim@whom@id}{\pgfsysanim@whom@type}}


\def\pgfsysanim@checks@path{%
  \expandafter\global\expandafter\let\csname pgfsysanim@path@is@animated@\pgfsysanim@whom@id @\pgfsysanim@whom@type\endcsname\pgfutil@empty%
}



\def\pgfsysanimkeyrestartalways{\pgfsys@animation@restart@always}
\def\pgfsysanimkeyrestartnever{\pgfsys@animation@restart@never}
\def\pgfsysanimkeyrestartwhennotactive{\pgfsys@animation@restart@whennotactive}




\def\pgfsysanimkeyrepeat#1{%
  \pgfsys@animation@repeat{#1}%
  \let\pgfsysanim@snap@repeat@kind\pgfsysanim@snap@repeat@normal%
  {%
    \pgf@x#1pt\relax%
  \expandafter}%
  \expandafter\def\expandafter\pgfsysanim@snap@repeat@arg\expandafter{\the\pgf@x}%
}
\def\pgfsysanimkeyrepeatindefinite{%
  \pgfsys@animation@repeat@indefinite%
  \let\pgfsysanim@snap@repeat@kind\pgfsysanim@snap@repeat@indefinite%
  \let\pgfsysanim@snap@repeat@arg\pgfutil@empty%
}
\def\pgfsysanimkeyrepeatdur#1{%
  \pgfsys@animation@repeat@dur{#1}%
  \let\pgfsysanim@snap@repeat@kind\pgfsysanim@snap@repeat@dur%
  {%
    \pgf@x#1pt\relax%
  \expandafter}%
  \expandafter\def\expandafter\pgfsysanim@snap@repeat@arg\expandafter{\the\pgf@x}%
}
\def\pgfsysanim@snap@repeat@none{n}%
\def\pgfsysanim@snap@repeat@normal{m}%
\def\pgfsysanim@snap@repeat@indefinite{i}%
\def\pgfsysanim@snap@repeat@dur{d}%
\let\pgfsysanim@snap@repeat@kind\pgfsysanim@snap@repeat@none
\let\pgfsysanim@snap@repeat@arg\pgfutil@empty




\def\pgfsysanimkeyfreezeatend{\pgfsys@animation@freezeatend\pgfsysanim@freezeatendtrue}
\def\pgfsysanimkeyremoveatend{\pgfsys@animation@removeatend\pgfsysanim@freezeatendfalse}
\newif\ifpgfsysanim@freezeatend




\def\pgfsysanimkeytime#1#2#3#4#5{%
  \pgfsys@animation@time{#1}{#2}{#3}{#4}{#5}%
  \def\pgfsysanim@time{{#1}{#2}{#3}{#4}{#5}}%
}



\def\pgfsysanimkeybase{%
  \pgfsys@animation@base%
  \let\pgfsysanim@time\pgfsysanim@base@text%
}
\def\pgfsysanim@base@text{base}%


\def\pgfsysanimkeysnapshotstart#1{%
  \def\pgfsysanim@snapshotstart{#1}%
}
\def\pgfsysanim@snapshotstart{0}



\def\pgfsysanimkeyoffset#1#2{%
  \pgfsys@animation@offset{#1}{#2}%
}



\def\pgfsysanimkeysyncbegin#1#2#3#4{%
  \pgfsys@animation@syncbegin{#1}{#2}{#3}{#4}%
}

\def\pgfsysanimkeysyncend#1#2#3#4{%
  \pgfsys@animation@syncend{#1}{#2}{#3}{#4}%
}



\def\pgfsysanimkeyevent#1#2#3#4#5{%
  \pgfsys@animation@event{#1}{#2}{#3}{#4}{#5}%
}



\def\pgfsysanimkeyrepeatevent#1#2#3#4#5{%
  \pgfsys@animation@repeat@event{#1}{#2}{#3}{#4}{#5}%
}




\def\pgfsysanimkeyaccesskey#1#2#3{%
  \pgfsys@animation@accesskey{#1}{#2}{#3}%
}





\def\pgfsysanimkeyaccumulate{\pgfsys@animation@accumulate\pgfsysanim@accumulatetrue}
\def\pgfsysanimkeynoaccumulate{\pgfsys@animation@noaccumulate\pgfsysanim@accumulatefalse}
\newif\ifpgfsysanim@accumulate





\def\pgfsysanimkeywhom#1#2{%
  \pgfsys@register@type{#2}%
  \pgfsys@animation@whom{#1}{#2}%
  \def\pgfsysanim@whom@id{#1}%
  \def\pgfsysanim@whom@type{#2}%
}






\def\pgfsysanimkeyrotatealong{\pgfsys@animation@rotatealong\pgfsysanim@rotatealongtrue}
\def\pgfsysanimkeynorotatealong{\pgfsys@animation@norotatealong\pgfsysanim@rotatealongfalse}
\newif\ifpgfsysanim@rotatealong



\def\pgfsysanimkeymovealong#1{%
  \pgfsys@animation@movealong{#1}%
  \def\pgfsysanim@snap@movealong{#1}%
}





\def\pgfsysanimkeytipmarkers#1#2{%
  \pgfsys@animation@tip@markers{#1}{#2}%
  \def\pgfsysanim@snap@tip@start{#1}%
  \def\pgfsysanim@snap@tip@end{#2}%
}
\let\pgfsysanim@snap@tip@start\pgfutil@empty%
\let\pgfsysanim@snap@tip@end\pgfutil@empty%



\def\pgfsysanimkeycanvastransform#1#2{%
  \pgfsys@animation@canvas@transform{#1}{#2}%
  \def\pgfsysanim@snap@canvas@transform@pre{#1}%
  \def\pgfsysanim@snap@canvas@transform@post{#2}%
}
\let\pgfsysanim@snap@canvas@transform@pre\relax
\let\pgfsysanim@snap@canvas@transform@post\relax




\def\pgfsysanimvalcurrent{%
  \pgfsys@animation@val@current%
  \ifpgfsysanim@is@snap%
    \pgferror{You may not use "current value" with an animation snapshot}%
  \fi%
}



\def\pgfsysanimvalnone{%
}




\def\pgfsysanimvaltext#1{%
  \pgfsys@animation@val@text{#1}%
  \ifpgfsysanim@is@snap%
    \pgfsysanim@esnap@record{#1}%
  \fi%
}





\def\pgfsysanimvalscalar#1{%
  \pgfsys@animation@val@scalar{#1}%
  \ifpgfsysanim@is@snap%
    \pgfsysanim@esnap@record{#1}%
  \fi%
}




\def\pgfsysanimvaldimension#1{%
  \pgfsys@animation@val@dimension{#1}%
  \ifpgfsysanim@is@snap%
    \pgfsysanim@esnap@record{#1}%
  \fi%
}




\def\pgfsysanimvalcolor#1{%
  \pgfutil@colorlet{pgf@anim@temp}{#1}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgf@anim@temp}}%
  \expandafter\let\expandafter\pgf@sys@temp\csname\string\color@pgf@anim@temp\endcsname
  \expandafter\pgfanim@parse@type@color@\pgf@sys@temp%
}
\def\pgfanim@parse@type@color@#1#2#3#4#5{%
  \expandafter\ifx\csname pgfsysanimvalcolor#4\endcsname\relax%
    \pgferror{Unsupported color model `#4'}%
  \else%
    \edef\pgf@sys@colmarshal{\expandafter\noexpand\csname pgfsysanimvalcolor#4\endcsname}%
    \pgf@sys@uncomma#5,,%
    \pgf@sys@colmarshal%
  \fi%
}

\def\pgf@sys@uncomma#1,{%
  \def\pgf@sys@coltest{#1}%
  \ifx\pgf@sys@coltest\pgfutil@empty%
  \else%
    \expandafter\def\expandafter\pgf@sys@colmarshal\expandafter{\pgf@sys@colmarshal{#1}}%
    \expandafter\pgf@sys@uncomma%
  \fi%
}





\def\pgfsysanimvalcolorrgb#1#2#3{%
  \pgfsys@animation@val@color@rgb{#1}{#2}{#3}%
  \ifpgfsysanim@is@snap%
    \pgfsysanim@esnap@record{{#1}{#2}{#3}}%
  \fi%
}




\def\pgfsysanimvalcolorcmyk#1#2#3#4{%
  \pgfsys@animation@val@color@cmyk{#1}{#2}{#3}{#4}%
  \ifpgfsysanim@is@snap%
    {%
      \pgf@xa=1pt%
      \advance\pgf@xa by-#1pt%
      \advance\pgf@xa by-#4pt\relax%
      \ifdim\pgf@xa<0pt\pgf@xa0pt\fi%
      \pgf@xb=1pt%
      \advance\pgf@xb by-#1pt%
      \advance\pgf@xb by-#4pt\relax%
      \ifdim\pgf@xb<0pt\pgf@xb0pt\fi%
      \pgf@xc=1pt%
      \advance\pgf@xc by-#1pt%
      \advance\pgf@xc by-#4pt\relax%
      \ifdim\pgf@xc<0pt\pgf@xc0pt\fi%
      \edef\pgfsys@temp{{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@xb}{\pgf@sys@tonumber\pgf@xc}}%
    \expandafter}%
    \expandafter\pgfsysanim@esnap@record\expandafter{\pgfsys@temp}%
  \fi%
}



\def\pgfsysanimvalcolorcmy#1#2#3{%
  \pgfsys@animation@val@color@cmy{#1}{#2}{#3}%
  \ifpgfsysanim@is@snap%
    {%
      \pgf@xa=1pt%
      \advance\pgf@xa by-#1pt%
      \pgf@xb=1pt%
      \advance\pgf@xb by-#1pt%
      \pgf@xc=1pt%
      \advance\pgf@xc by-#1pt%
      \edef\pgfsys@temp{{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@xb}{\pgf@sys@tonumber\pgf@xc}}%
    \expandafter}%
    \expandafter\pgfsysanim@esnap@record\expandafter{\pgfsys@temp}%
  \fi%
}




\def\pgfsysanimvalcolorgray#1{%
  \pgfsys@animation@val@color@gray{#1}%
  \ifpgfsysanim@is@snap%
    \pgfsysanim@esnap@record{{#1}{#1}{#1}}%
  \fi%
}




\def\pgfsysanimvalpath#1{%
  \pgfsys@animation@val@path{#1}%
  \ifpgfsysanim@is@snap%
    \pgfsysanim@snap@record{#1}%
  \fi%
}



\def\pgfsysanimvaltranslate#1#2{%
  \pgfsys@animation@val@translate{#1}{#2}%
  \ifpgfsysanim@is@snap%
    \pgfsysanim@esnap@record{{#1}{#2}}%
  \fi%
}




\def\pgfsysanimvalscale#1#2{%
  \pgfsys@animation@val@scale{#1}{#2}%
  \ifpgfsysanim@is@snap%
    \pgfsysanim@esnap@record{{#1}{#2}}%
  \fi%
}




\def\pgfsysanimvalviewbox#1#2#3#4{%
  \pgfsys@animation@val@viewbox{#1}{#2}{#3}{#4}%
  \ifpgfsysanim@is@snap%
    \pgfsysanim@esnap@record{{#1}{#2}{#3}{#4}}%
  \fi%
}





\def\pgfsysanimvaldash#1#2{%
  \pgfsys@animation@val@dash{#1}{#2}%
  \ifpgfsysanim@is@snap%
    \pgfsysanim@esnap@record{{#1}{#2}}%
  \fi%
}






\def\pgfsysanim@esnap@record#1{%
  \edef\pgfsysanim@temp{#1}%
  \expandafter\pgfsysanim@snap@record\expandafter{\pgfsysanim@temp}%
}
\def\pgfsysanim@snap@record#1{%
  \ifx\pgfsysanim@time\pgfsysanim@base@text%
    \def\pgfsysanim@base@value{#1}%
  \else%
    \advance\pgfsysanim@snap@count by1\relax%
    \expandafter\def\expandafter\pgfsysanim@temp\expandafter{\pgfsysanim@time{#1}}%
    \expandafter\let\csname pgfsysanim@snap@\the\pgfsysanim@snap@count\endcsname\pgfsysanim@temp%
  \fi%
}
\newcount\pgfsysanim@snap@count
\let\pgfsysanim@base@value\pgfutil@empty%


\def\pgfsysanim@compute@interval{%
  \let\pgfsysanim@prev@val\relax%
  \let\pgfsysanim@prev@time\relax%
  \let\pgfsysanim@prev@spline\pgfsysanim@default@spline%
  \let\pgfsysanim@next@val\relax%
  \let\pgfsysanim@next@time\relax%
  \let\pgfsysanim@next@spline\pgfsysanim@default@spline%
  \let\pgfsysanim@first@time\relax%
  \let\pgfsysanim@last@time\relax%
  \let\pgfsysanim@last@val\relax%
  \ifnum\pgfsysanim@snap@count>0\relax%
    \pgf@xc\pgfsysanim@snaptime pt\relax%
    \pgf@x\pgfsysanim@snapshotstart pt\relax%
    \advance\pgf@xc-\pgf@x\relax%
    \pgfsysanim@compute@start@end%
    \pgfsysanim@compute@value%
  \fi%
  \pgfsysanim@valid@snapshot@timefalse%
  \ifx\pgfsysanim@prev@time\relax%
  \else\ifx\pgfsysanim@next@time\relax%
  \else\pgfsysanim@valid@snapshot@timetrue%
  \fi\fi%
  \ifpgfsysanim@valid@snapshot@time%
  \else%
    \ifx\pgfsysanim@base@value\pgfutil@empty%
    \else%
      \let\pgfsysanim@prev@val\pgfsysanim@base@value%
      \def\pgfsysanim@prev@time{0}%
      \let\pgfsysanim@prev@spline\pgfsysanim@default@spline%
      \let\pgfsysanim@next@val\pgfsysanim@base@value%
      \let\pgfsysanim@next@time\pgfsysanim@prev@time%
      \let\pgfsysanim@next@spline\pgfsysanim@default@spline%
      \def\pgfsysanim@first@time{-16382}%
      \let\pgfsysanim@last@time\pgfsysanim@prev@time%
      \let\pgfsysanim@last@val\pgfsysanim@base@value%
      \def\pgfsysanim@frac@a{1}%
      \def\pgfsysanim@frac@b{0}%
      \pgfsysanim@valid@snapshot@timetrue%
    \fi%
  \fi%
}
\newif\ifpgfsysanim@cont%
\newif\ifpgfsysanim@valid@snapshot@time
\def\pgfsysanim@default@spline{{0}{0}{1}{1}}

\def\pgfsysanim@compute@start@end{%
  \expandafter\expandafter\expandafter\pgfsysanim@compute@start\csname pgfsysanim@snap@1\endcsname%
  \expandafter\expandafter\expandafter\pgfsysanim@compute@end\csname pgfsysanim@snap@\the\pgfsysanim@snap@count\endcsname%
}
\def\pgfsysanim@compute@start#1#2#3#4#5#6{%
  \def\pgfsysanim@first@time{#1}%
}
\def\pgfsysanim@compute@end#1#2#3#4#5#6{%
  \def\pgfsysanim@last@time{#1}%
  \def\pgfsysanim@last@val{#6}%
}


\def\pgfsysanim@compute@value{%
  \ifdim\pgf@xc<\pgfsysanim@first@time pt\relax%
  \else%
    \ifx\pgfsysanim@snap@repeat@kind\pgfsysanim@snap@repeat@none%
      \pgfsysanim@handle@repeat@none%
    \else\ifx\pgfsysanim@snap@repeat@kind\pgfsysanim@snap@repeat@normal%
      \pgfsysanim@handle@repeat@normal%
    \else\ifx\pgfsysanim@snap@repeat@kind\pgfsysanim@snap@repeat@indefinite%
      \pgfsysanim@handle@repeat@indefinite%
    \else\ifx\pgfsysanim@snap@repeat@kind\pgfsysanim@snap@repeat@dur%
      \pgfsysanim@handle@repeat@dur%
    \fi\fi\fi\fi%
  \fi%
}

\def\pgfsysanim@handle@repeat@none{%
  \ifdim\pgf@xc<\pgfsysanim@last@time pt\relax%
    \pgfsysanim@compute@time%
  \else%
    \ifdim\pgf@xc=\pgfsysanim@last@time pt\relax%
      \ifpgfsysanim@snap@first%
        \pgfsysanim@compute@time%
      \else%
        \ifpgfsysanim@freezeatend%
          \let\pgfsysanim@prev@val\pgfsysanim@last@val%
          \let\pgfsysanim@prev@time\pgfsysanim@last@time%
          \let\pgfsysanim@next@val\pgfsysanim@last@val%
          \let\pgfsysanim@next@time\pgfsysanim@last@time%
        \fi%
      \fi%
    \else%
      \ifpgfsysanim@freezeatend%
        \let\pgfsysanim@prev@val\pgfsysanim@last@val%
        \let\pgfsysanim@prev@time\pgfsysanim@last@time%
        \let\pgfsysanim@next@val\pgfsysanim@last@val%
        \let\pgfsysanim@next@time\pgfsysanim@last@time%
      \fi%
    \fi%
  \fi%
}


\def\pgfsysanim@handle@repeat@indefinite{%
  \ifdim\pgf@xc<\pgfsysanim@last@time pt\relax%
    \pgfsysanim@compute@time%
  \else%
    \pgf@xa=\pgfsysanim@last@time pt%
    \pgf@xb=\pgfsysanim@first@time pt%
    \advance\pgf@xa by-\pgf@xb%
    \pgf@ya\pgf@xc%
    \advance\pgf@ya by-\pgf@xb%
    \ifdim\pgf@xa<0.01pt\relax%
      \def\pgfmathresult{1.0}%
    \else%
      \pgfmathdivide@{\pgf@sys@tonumber\pgf@ya}{\pgf@sys@tonumber\pgf@xa}%
    \fi%
    \pgf@x\pgfmathresult pt\relax%
    \expandafter\pgfsysanim@splitter\the\pgf@x%
    \pgf@xc=\pgfsysanim@repeat@frac\pgf@xa%
    \advance\pgf@xc by\pgf@xb%
    \pgfsysanim@compute@time%
  \fi%
}
{\catcode`\p=12\catcode`\t=12\gdef\Pgfsysanim@sPliTTer#1.#2pt{\Pgfsysanim@seTTer{#1}{#2}}}
\let\pgfsysanim@splitter\Pgfsysanim@sPliTTer
\def\Pgfsysanim@seTTer#1#2{%
  \def\pgfsysanim@repeat@decimal{#1}%
  \def\pgfsysanim@repeat@frac{.#2}%
  \ifdim\pgfsysanim@repeat@frac pt=0pt%
    \c@pgf@counta\pgfsysanim@repeat@decimal%
    \advance\c@pgf@counta by-1\relax%
    \edef\pgfsysanim@repeat@decimal{\the\c@pgf@counta}%
    \def\pgfsysanim@repeat@frac{1}%
  \fi%
}
\def\pgfsysanim@repeat@decimal{0}%


\def\pgfsysanim@handle@repeat@normal{%
  \pgf@xa=\pgfsysanim@last@time pt%
  \pgf@xb=\pgfsysanim@first@time pt%
  \advance\pgf@xa by-\pgf@xb%
  \pgf@ya\pgf@xc%
  \advance\pgf@ya by-\pgf@xb%
  \ifdim\pgf@xa<0.01pt\relax%
    \def\pgfmathresult{1.0}%
  \else%
    \pgfmathdivide@{\pgf@sys@tonumber\pgf@ya}{\pgf@sys@tonumber\pgf@xa}%
  \fi%
  \pgf@x\pgfmathresult pt\relax%
  \expandafter\pgfsysanim@splitter\the\pgf@x%
  \ifdim\pgfmathresult pt<\pgfsysanim@snap@repeat@arg\relax%
    \pgf@xc=\pgfsysanim@repeat@frac\pgf@xa%
    \advance\pgf@xc by\pgf@xb%
    \pgfsysanim@compute@time%
  \else%
    \ifpgfsysanim@freezeatend%
      \expandafter\pgfsysanim@splitter\pgfsysanim@snap@repeat@arg%
      \pgf@xc=\pgfsysanim@repeat@frac\pgf@xa%
      \advance\pgf@xc by\pgf@xb%
      \pgfsysanim@compute@time%
    \else%
      \ifdim\pgfmathresult pt=\pgfsysanim@snap@repeat@arg\relax%
        \ifpgfsysanim@snap@first%
          \expandafter\pgfsysanim@splitter\pgfsysanim@snap@repeat@arg%
          \pgf@xc=\pgfsysanim@repeat@frac\pgf@xa%
          \advance\pgf@xc by\pgf@xb%
          \pgfsysanim@compute@time%
        \fi%
      \fi%
    \fi%
  \fi%
}

\def\pgfsysanim@handle@repeat@dur{%
  \pgf@yb=\pgfsysanim@first@time pt%
  \advance\pgf@yb by\pgfsysanim@snap@repeat@arg\relax%
  \ifdim\pgf@xc<\pgf@yb%
    \pgf@xa=\pgfsysanim@last@time pt%
    \pgf@xb=\pgfsysanim@first@time pt%
    \advance\pgf@xa by-\pgf@xb%
    \pgf@ya\pgf@xc%
    \advance\pgf@ya by-\pgf@xb%
    \ifdim\pgf@xa<0.01pt\relax%
      \def\pgfmathresult{1.0}%
    \else%
      \pgfmathdivide@{\pgf@sys@tonumber\pgf@ya}{\pgf@sys@tonumber\pgf@xa}%
    \fi%
    \pgf@x\pgfmathresult pt\relax%
    \expandafter\pgfsysanim@splitter\the\pgf@x%
    \pgf@xc=\pgfsysanim@repeat@frac\pgf@xa%
    \advance\pgf@xc by\pgf@xb%
    \pgfsysanim@compute@time%
  \else%
    \ifpgfsysanim@freezeatend%
      \pgfsysanim@handle@repeat@dur@freeze%
    \else%
      \ifdim\pgf@xc=\pgf@yb%
        \ifpgfsysanim@snap@first%
          \pgfsysanim@handle@repeat@dur@freeze%
        \fi%
      \fi%
    \fi%
  \fi%
}

\def\pgfsysanim@handle@repeat@dur@freeze{%
  \pgf@xa=\pgfsysanim@last@time pt%
  \pgf@xb=\pgfsysanim@first@time pt%
  \advance\pgf@xa by-\pgf@xb%
  \ifdim\pgf@xa<0.01pt\relax%
    \def\pgfmathresult{1.0}%
  \else%
    \pgfmathdivide@{\pgf@sys@tonumber\dimexpr\pgfsysanim@snap@repeat@arg}{\pgf@sys@tonumber\pgf@xa}%
  \fi%
  \pgf@x\pgfmathresult pt\relax%
  \expandafter\pgfsysanim@splitter\the\pgf@x%
  \pgf@xc=\pgfsysanim@repeat@frac\pgf@xa%
  \advance\pgf@xc by\pgf@xb%
  \pgfsysanim@compute@time%
}





\def\pgfsysanim@compute@time{%
  \pgfutil@tempcnta=1\relax%
  \pgfsysanim@conttrue%
  \pgfutil@loop%
    \ifnum\pgfutil@tempcnta>\pgfsysanim@snap@count%
      \pgfsysanim@contfalse%
    \else%
      \expandafter\let\expandafter\pgfsys@temp\csname pgfsysanim@snap@\the\pgfutil@tempcnta\endcsname%
      \expandafter\pgfsysanim@test@time\pgfsys@temp%
    \fi%
  \ifpgfsysanim@cont%
    \advance\pgfutil@tempcnta by1\relax%
  \pgfutil@repeat%
}


\def\pgfsysanim@test@time#1#2#3#4#5#6{%
  \ifdim#1pt<\pgf@xc%
    \def\pgfsysanim@prev@val{#6}%
    \def\pgfsysanim@prev@time{#1}%
    \def\pgfsysanim@prev@spline{{#2}{#3}{#4}{#5}}%
  \else%
    \ifdim#1pt=\pgf@xc%
      \ifpgfsysanim@snap@first%
        \ifx\pgfsysanim@next@val\relax%
          \def\pgfsysanim@prev@val{#6}%
          \def\pgfsysanim@prev@time{#1}%
          \def\pgfsysanim@prev@spline{{#2}{#3}{#4}{#5}}%
          \let\pgfsysanim@next@val\pgfsysanim@prev@val%
          \let\pgfsysanim@next@time\pgfsysanim@prev@time%
          \let\pgfsysanim@next@spline\pgfsysanim@prev@spline%
          \pgfsysanim@contfalse%
        \fi
      \else%
        \def\pgfsysanim@prev@val{#6}%
        \def\pgfsysanim@prev@time{#1}%
        \def\pgfsysanim@prev@spline{{#2}{#3}{#4}{#5}}%
        \let\pgfsysanim@next@val\pgfsysanim@prev@val%
        \let\pgfsysanim@next@time\pgfsysanim@prev@time%
        \let\pgfsysanim@next@spline\pgfsysanim@prev@spline%
      \fi%
    \else%
      \ifx\pgfsysanim@next@val\relax%
        \def\pgfsysanim@next@val{#6}%
        \def\pgfsysanim@next@time{#1}%
        \def\pgfsysanim@next@spline{{#2}{#3}{#4}{#5}}%
      \else%
        \pgfsysanim@contfalse%
      \fi%
    \fi%
  \fi%
}

\let\pgfsysanim@prev@val\relax%
\let\pgfsysanim@prev@time\relax%
\let\pgfsysanim@next@val\relax%
\let\pgfsysanim@next@time\relax%

\def\pgfsysanim@attach#1#2#3{%
  \expandafter\pgfsysanim@prep@beg\expandafter{\pgfsysanim@first@time}{#2}{#3}%
  \expandafter\def\expandafter\pgfsysanim@code@main\expandafter{\csname pgfsysanim@main@of@\pgfsysanim@whom@id @\pgfsysanim@whom@type @#1\endcsname}%
  \expandafter\ifx\pgfsysanim@code@main\relax%
    \edef\pgfsysanim@code@begin{%
      \let\noexpand\pgfsysanim@c@begin\noexpand\pgfutil@empty%
      \let\noexpand\pgfsysanim@c@end\noexpand\pgfutil@empty%
      \pgfsysanim@lasttime-16383pt\relax%
      \expandafter\noexpand\pgfsysanim@code@main%
      \global\let\expandafter\noexpand\pgfsysanim@code@main\relax%
      \noexpand\pgfsysanim@c@begin%
    }%
    \let\pgfsysanim@code@end\pgfsysanim@code@closer%
    \expandafter\global\expandafter\let\pgfsysanim@code@main\pgfutil@empty%
  \else%
    \let\pgfsysanim@code@begin\relax%
    \let\pgfsysanim@code@end\relax%
  \fi%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\pgfsysanim@new@main%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{\expandafter\pgfsysanim@code@main\pgfsysanim@add@main}
  \expandafter\global\expandafter\let\pgfsysanim@code@main\pgfsysanim@new@main%
}
\def\pgfsysanim@code@closer{\pgfsysanim@c@end}

\def\pgfsysanim@prep@beg#1#2#3{%
  \edef\pgfsysanim@add@main{%
    \noexpand\ifdim\pgfsysanim@lasttime>#1pt%
    \noexpand\else%
      \pgfsysanim@lasttime#1pt%
      \def\noexpand\pgfsysanim@c@begin{#2}%
      \def\noexpand\pgfsysanim@c@end{#3}%
    \noexpand\fi%
  }
}

\def\pgfsysanim@prep@beg@special#1#2{%
  \def\pgfsysanim@add@main{%
    \ifdim\pgfsysanim@lasttime>#1pt%
    \else%
      \pgfsysanim@lasttime#1pt%
      \def\pgfsysanim@c@begin{#2}%
    \fi%
  }
}



\def\pgfsysanim@attach@special#1#2{%
  \expandafter\expandafter\expandafter\pgfsysanim@prep@beg@special\expandafter\expandafter\expandafter{\expandafter\pgfsysanim@first@time\expandafter}\expandafter{#2}%
  \ifx#1\relax%
    \def#1{%
      \pgfsysanim@lasttime-16383pt\relax%
      \let\pgfsysanim@c@begin\pgfutil@empty%
    }%
  \fi%
  \expandafter\expandafter\expandafter\gdef\expandafter\expandafter\expandafter#1\expandafter\expandafter\expandafter{\expandafter#1\pgfsysanim@add@main}%
}



\newdimen\pgfsysanim@lasttime


\def\pgfsysanim@add@trans{%
  \ifx\pgfsysanim@snap@canvas@transform@pre\relax%
  \else%
    \ifx\pgfsysanim@code@begin\relax%
      \let\pgfsysanim@code@begin\pgfutil@empty%
    \fi%
    \pgfsysanim@add@trans@%
  \fi%
}
\def\pgfsysanim@add@trans@{%
  \toks0\expandafter{\pgfsysanim@snap@canvas@transform@pre}%
  \toks1\expandafter{\pgfsysanim@code@begin}%
  \toks2\expandafter{\pgfsysanim@snap@canvas@transform@post}%
  \edef\pgfsysanim@code@begin{{\the\toks0 \the\toks1 \the\toks2}}%
}


\def\pgfsysanim@prep@attr@opacity{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@scalar%
    \pgfsysanim@cap@scalar{\pgfsysanim@x@val}{0}{1}%
    \pgfsysanim@attach{opacity}{\noexpand\pgfsys@opacity{\pgfsysanim@x@val}}{}%
  \fi%
}

\def\pgfsysanim@prep@attr@fillopacity{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@scalar%
    \pgfsysanim@cap@scalar{\pgfsysanim@x@val}{0}{1}%
    \pgfsysanim@attach{fillopacity}{\noexpand\pgfsys@fill@opacity{\pgfsysanim@x@val}}{}%
  \fi%
}

\def\pgfsysanim@prep@attr@strokeopacity{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@scalar%
    \pgfsysanim@cap@scalar{\pgfsysanim@x@val}{0}{1}%
    \pgfsysanim@attach{strokeopacity}{\noexpand\pgfsys@stroke@opacity{\pgfsysanim@x@val}}{}%
  \fi%
}

\def\pgfsysanim@prep@attr@visibility{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@text%
    \ifx\pgfsysanim@text@val\pgf@hidden@text%
      \pgfsysanim@attach{visibility}{\noexpand\pgfsys@begininvisiblescope}{\noexpand\pgfsys@endinvisiblescope}%
    \else%
      \pgfsysanim@attach{visibility}{}{}%
    \fi%
  \fi%
}
\def\pgf@hidden@text{hidden}

\def\pgfsysanim@prep@attr@linewidth{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@dimension%
    \pgfsysanim@cap@scalar{\pgfsysanim@x@val}{0}{16382}%
    \pgfsysanim@attach{linewidth}{\noexpand\pgfsys@setlinewidth{\pgfsysanim@x@val pt}}{}%
  \fi%
}

\def\pgfsysanim@prep@attr@dash{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@dash%
    \pgfsysanim@attach{dash}{\noexpand\pgfsys@setdash{\pgfsysanim@dash@vals}{\pgfsysanim@x@val pt}}{}%
  \fi%
}

\def\pgfsysanim@prep@attr@translate{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@translate%
    \edef\pgfsysanim@code@begin{\noexpand\pgfsys@transformshift{\pgfsysanim@x@val pt}{\pgfsysanim@y@val pt}}%
  \fi%
  \pgfsysanim@add@trans%
}


\def\pgfsysanim@prep@attr@scale{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@scale%
    \edef\pgfsysanim@code@begin{\noexpand\pgfsys@transformxyscale{\pgfsysanim@x@val}{\pgfsysanim@y@val}}%
  \fi%
  \pgfsysanim@add@trans%
}

\def\pgfsysanim@prep@attr@rotate{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@scalar%
    {%
      \pgfmathsin@{\pgfsysanim@x@val}%
      \let\pgftransform@sin=\pgfmathresult%
      \pgfmathcos@{\pgfsysanim@x@val}%
      \let\pgftransform@cos=\pgfmathresult%
      \pgf@x=\pgftransform@sin pt%
      \pgf@xa=-\pgf@x%
      \edef\pgfsysanim@code@begin{\noexpand\pgfsys@transformcm{\pgftransform@cos}{\pgftransform@sin}{\pgf@sys@tonumber{\pgf@xa}}{\pgftransform@cos}{0pt}{0pt}}%
      \expandafter}%
    \expandafter\def\expandafter\pgfsysanim@code@begin\expandafter{\pgfsysanim@code@begin}%
  \fi%
  \pgfsysanim@add@trans%
}

\def\pgfsysanim@prep@attr@skewx{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@scalar%
    {%
      \pgfmathtan@{\pgfsysanim@x@val}%
      \edef\pgfsysanim@code@begin{\noexpand\pgfsys@transformcm{1}{0}{\pgfmathresult}{1}{0pt}{0pt}}%
      \expandafter}%
    \expandafter\def\expandafter\pgfsysanim@code@begin\expandafter{\pgfsysanim@code@begin}%
  \fi%
  \pgfsysanim@add@trans%
}

\def\pgfsysanim@prep@attr@skewy{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@scalar%
    {%
      \pgfmathtan@{\pgfsysanim@x@val}%
      \edef\pgfsysanim@code@begin{\noexpand\pgfsys@transformcm{1}{\pgfmathresult}{0}{1}{0pt}{0pt}}%
      \expandafter}%
    \expandafter\def\expandafter\pgfsysanim@code@begin\expandafter{\pgfsysanim@code@begin}%
  \fi%
  \pgfsysanim@add@trans%
}

\def\pgfsysanim@prep@attr@motion{%
  \ifx\pgfsysanim@base@value\pgfutil@empty%
  \else%
    \pgferror{You may not provide a base value for a motion}%
    \let\pgfsysanim@base@value\pgfutil@empty%
  \fi%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@motion%
    \expandafter\pgfsysanim@prep@attr@motion@\pgfsysanim@motion@trans%
  \fi%
  \pgfsysanim@add@trans%
}
\def\pgfsysanim@prep@attr@motion@#1#2#3#4#5#6{%
  \ifpgfsysanim@rotatealong%
    \def\pgfsysanim@code@begin{\pgfsys@transformcm{#1}{#2}{#3}{#4}{#5}{#6}}%
  \else%
    \def\pgfsysanim@code@begin{\pgfsys@transformshift{#5}{#6}}%
  \fi%
}


\def\pgfsysanim@prep@attr@strokecolor{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@color%
    \pgfsysanim@cap@scalar{\pgfsysanim@x@val}{0}{1}%
    \pgfsysanim@cap@scalar{\pgfsysanim@y@val}{0}{1}%
    \pgfsysanim@cap@scalar{\pgfsysanim@z@val}{0}{1}%
    \pgfsysanim@attach{strokecolor}{\noexpand\pgfsys@color@rgb@stroke{\pgfsysanim@x@val}{\pgfsysanim@y@val}{\pgfsysanim@z@val}}{}%
  \fi%
}

\def\pgfsysanim@prep@attr@fillcolor{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@color%
    \pgfsysanim@cap@scalar{\pgfsysanim@x@val}{0}{1}%
    \pgfsysanim@cap@scalar{\pgfsysanim@y@val}{0}{1}%
    \pgfsysanim@cap@scalar{\pgfsysanim@z@val}{0}{1}%
    \pgfsysanim@attach{fillcolor}{\noexpand\pgfsys@color@rgb@fill{\pgfsysanim@x@val}{\pgfsysanim@y@val}{\pgfsysanim@z@val}}{}%
  \fi%
}

\def\pgfsysanim@prep@attr@color{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@color%
    \pgfsysanim@cap@scalar{\pgfsysanim@x@val}{0}{1}%
    \pgfsysanim@cap@scalar{\pgfsysanim@y@val}{0}{1}%
    \pgfsysanim@cap@scalar{\pgfsysanim@z@val}{0}{1}%
    \pgfsysanim@attach{color}{\noexpand\pgfsys@color@rgb{\pgfsysanim@x@val}{\pgfsysanim@y@val}{\pgfsysanim@z@val}}{}%
  \fi%
}

\newif\ifpgfsys@animation@view@hooked

\def\pgfsysanim@prep@attr@viewbox{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@viewbox%
    \pgfsys@attach@to@id{\pgfsysanim@whom@id}{}{%
      \ifpgfsys@animation@view@hooked%
      \else%
        \let\pgfsys@viewboxmeet@orig\pgfsys@viewboxmeet%
        \let\pgfsys@viewboxmeet\pgfsysanim@hooked@viewboxmeet%
        \let\pgfsys@viewboxslice@orig\pgfsys@viewboxslice%
        \let\pgfsys@viewboxslice\pgfsysanim@hooked@viewboxslice%
        \pgfsys@animation@view@hookedtrue%
      \fi%
    }{}{}%
    \edef\pgfsysanim@temp{{\pgfsysanim@x@val}{\pgfsysanim@y@val}{\pgfsysanim@z@val}{\pgfsysanim@w@val}}%
    \expandafter\pgfsysanim@attach@special\csname pgfsysanim@hook@for@\pgfsys@id@ref{\pgfsysanim@whom@id}{\pgfsysanim@whom@type}\endcsname\pgfsysanim@temp%
  \fi%
}
\def\pgfsysanim@hooked@viewboxmeet#1#2#3#4#5#6#7#8{%
  \expandafter\ifx\csname pgfsysanim@hook@for@\pgfsys@id@refcurrent\endcsname\relax%
    \pgfsys@viewboxmeet@orig{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
  \else%
    \csname pgfsysanim@hook@for@\pgfsys@id@refcurrent\endcsname%
    \ifx\pgfsysanim@c@begin\pgfutil@empty%
    \else%
      \expandafter\pgfsysanim@hooked@viewboxmeet@\pgfsysanim@c@begin{#1}{#2}{#3}{#4}%
    \fi%
    \expandafter\global\expandafter\let\csname pgfsysanim@hook@for@\pgfsys@id@refcurrent\endcsname\relax%
  \fi%
}
\def\pgfsysanim@hooked@viewboxmeet@#1#2#3#4#5#6#7#8{%
  \pgfsys@viewboxmeet@orig{#5}{#6}{#7}{#8}{#1}{#2}{#3}{#4}%
}
\def\pgfsysanim@hooked@viewboxslice#1#2#3#4#5#6#7#8{%
  \expandafter\ifx\csname pgfsysanim@hook@for@\pgfsys@id@refcurrent\endcsname\relax%
    \pgfsys@viewboxslice@orig{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
  \else%
    \csname pgfsysanim@hook@for@\pgfsys@id@refcurrent\endcsname%
    \expandafter\pgfsysanim@hooked@viewboxslice@\pgfsysanim@c@begin{#1}{#2}{#3}{#4}%
    \expandafter\global\expandafter\let\csname pgfsysanim@hook@for@\pgfsys@id@refcurrent\endcsname\relax%
  \fi%
}
\def\pgfsysanim@hooked@viewboxslice@#1#2#3#4#5#6#7#8{%
  \pgfsys@viewboxslice@orig{#5}{#6}{#7}{#8}{#1}{#2}{#3}{#4}%
}


\newif\ifpgfsys@animation@path@hooked

\def\pgfsysanim@prep@attr@path{%
  \ifpgfsysanim@valid@snapshot@time%
    \pgfsysanim@comp@path%
    \pgfsys@attach@to@id{\pgfsysanim@whom@id}{}{%
      \ifpgfsys@animation@path@hooked%
      \else%
        \let\pgfsys@discardpath@orig\pgfsys@discardpath%
        \let\pgfsys@stroke@orig\pgfsys@stroke%
        \let\pgfsys@fill@orig\pgfsys@fill%
        \let\pgfsys@fillstroke@orig\pgfsys@fillstroke%
        \let\pgfsys@closestroke@orig\pgfsys@closestroke%
        \let\pgfsys@discardpath\pgfsys@discardpath@hook%
        \let\pgfsys@stroke\pgfsys@stroke@hook%
        \let\pgfsys@fill\pgfsys@fill@hook%
        \let\pgfsys@fillstroke\pgfsys@fillstroke@hook%
        \let\pgfsys@closestroke\pgfsys@closestroke@hook%
        \pgfsys@animation@path@hookedtrue%
      \fi%
    }{}{}%
    \expandafter\pgfsysanim@attach@special\csname pgfsysanim@phook@for@\pgfsys@id@ref{\pgfsysanim@whom@id}{\pgfsysanim@whom@type}\endcsname\pgfsysanim@path@all%
  \fi%
}
\def\pgfsys@stroke@hook{\pgfsysanim@with@tipstrue\pgfsysanim@path@hooks\pgfsys@stroke@orig}
\def\pgfsys@fill@hook{\pgfsysanim@with@tipsfalse\pgfsysanim@path@hooks\pgfsys@fill@orig}
\def\pgfsys@fillstroke@hook{\pgfsysanim@with@tipstrue\pgfsysanim@path@hooks\pgfsys@fillstroke@orig}
\def\pgfsys@closestroke@hook{\pgfsysanim@with@tipsfalse\pgfsysanim@path@hooks\pgfsys@closestroke@orig}
\def\pgfsys@discardpath@hook{\pgfsysanim@with@tipsfalse\pgfsysanim@path@hooks\pgfsys@discardpath@orig}

\newif\ifpgfsysanim@with@tips

\def\pgfsysanim@path@hooks#1{%
  {%
    \expandafter\ifx\csname pgfsysanim@phook@for@\pgfsys@id@refcurrent\endcsname\relax%
      #1%
    \else%
      \pgfsys@discardpath@orig%
      \csname pgfsysanim@phook@for@\pgfsys@id@refcurrent\endcsname%
      \pgfsysanim@c@begin%
      \pgfsysanim@path@val%
      #1%
      \ifpgfsysanim@with@tips%
        \ifx\pgfsysanim@path@val\pgfutil@empty\else%
          \pgfsysanim@prepare@end@of@path%
          \begingroup%
            \pgfsysanim@prepare@start@of@path%
            \pgfsysanim@add@marker@at@start%
          \endgroup%
          \pgfsysanim@add@marker@at@end%
        \fi%
      \fi%
      \expandafter\global\expandafter\let\csname pgfsysanim@phook@for@\pgfsys@id@refcurrent\endcsname\relax%
    \fi%
  }%
}


\def\pgfsysanim@prepare@start@of@path{%
  \ifx\pgfsysanim@snap@tip@start\pgfutil@empty\else
    \ifx\pgfprocessresultpathsuffix\relax%
      \pgfprocesssplitpath{\pgf@arrowpath}%
    \fi%
    \expandafter\pgf@parse@start\pgfprocessresultpathsuffix\pgf@stop\pgf@stop\pgf@stop%
    \pgf@prep@start%
  \fi%
}
\def\pgfsysanim@add@marker@at@start{%
  \ifx\pgfsysanim@snap@tip@start\pgfutil@empty\else
    {%
      \pgftransformreset%
      \pgftransformarrow{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
      \pgfsys@beginscope%
        \pgflowlevelsynccm%
        \pgfsys@marker@use{\pgfsysanim@snap@tip@start}%
      \pgfsys@endscope%
    }%
  \fi%
}


\def\pgfsysanim@prepare@end@of@path{%
  \let\pgfprocessresultpathsuffix\relax%
  \let\pgfprocessresultsubpathsuffix\relax%
  \pgf@precise@shorteningfalse%
  \edef\pgf@path@shortening@distance{0pt}%
  \ifx\pgfsysanim@snap@tip@end\pgfutil@empty\else
    \pgfprocesssplitpath{\pgfsysanim@path@val}%
    \pgfprocesssplitsubpath{\pgfprocessresultpathsuffix}%
    \expandafter\pgf@parse@end\pgfprocessresultsubpathsuffix\pgf@stop\pgf@stop\pgf@stop%
    \pgf@prep@end%
  \fi%
}
\def\pgfsysanim@add@marker@at@end{%
  \ifx\pgfsysanim@snap@tip@end\pgfutil@empty\else
    {%
      \pgftransformreset%
      \pgftransformarrow{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
      \pgfsys@beginscope%
        \pgflowlevelsynccm%
        \pgfsys@marker@use{\pgfsysanim@snap@tip@end}%
      \pgfsys@endscope%
    }%
  \fi%
}





\def\pgfsysanim@comp@scalar{%
  \pgfsysanim@compute@fractions%
  \pgfsysanim@mix@scalar%
  \ifpgfsysanim@accumulate%
    \ifnum\pgfsysanim@repeat@decimal=0\else%
      \let\pgfsysanim@frac@b\pgfsysanim@one%
      \let\pgfsysanim@prev@val\pgfsysanim@x@val%
      \let\pgfsysanim@frac@a\pgfsysanim@repeat@decimal%
      \let\pgfsysanim@next@val\pgfsysanim@last@val%
      \pgfsysanim@mix@scalar%
    \fi%
  \fi%
}
\def\pgfsysanim@one{1}

\def\pgfsysanim@mix@scalar{%
  \pgf@x\pgfsysanim@prev@val pt%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y\pgfsysanim@next@val pt%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@x@val{\pgf@sys@tonumber\pgf@x}%
}
\def\pgfsysanim@cap@scalar#1#2#3{%
  \ifdim#1 pt<#2 pt%
    \def#1{#2}%
  \else\ifdim#1 pt>#3 pt%
    \def#1{#3}%
  \fi\fi%
}



\def\pgfsysanim@comp@scale{%
  \pgfsysanim@compute@fractions%
  \expandafter\expandafter\expandafter\pgfsysanim@mix@scale\expandafter\pgfsysanim@prev@val\pgfsysanim@next@val%
  \ifpgfsysanim@accumulate%
    \ifnum\pgfsysanim@repeat@decimal=0\else%
      \let\pgfsysanim@frac@b\pgfsysanim@one%
      \let\pgfsysanim@frac@a\pgfsysanim@repeat@decimal%
      \expandafter\pgfsysanim@mix@scale\expandafter\pgfsysanim@x@val\expandafter\pgfsysanim@y@val\pgfsysanim@last@val%
    \fi%
  \fi%
}
\def\pgfsysanim@mix@scale#1#2#3#4{%
  \pgf@x#1pt%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#3pt%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@x@val{\pgf@sys@tonumber\pgf@x}%
  \pgf@x#2pt%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#4pt%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@y@val{\pgf@sys@tonumber\pgf@x}%
}



\def\pgfsysanim@comp@dimension{%
  \pgfsysanim@compute@fractions%
  \pgfsysanim@mix@dimension%
  \ifpgfsysanim@accumulate%
    \ifnum\pgfsysanim@repeat@decimal=0\else%
      \let\pgfsysanim@frac@b\pgfsysanim@one%
      \def\pgfsysanim@prev@val{\pgfsysanim@x@val pt}%
      \let\pgfsysanim@frac@a\pgfsysanim@repeat@decimal%
      \let\pgfsysanim@next@val\pgfsysanim@last@val%
      \pgfsysanim@mix@dimension%
    \fi%
  \fi%
}
\def\pgfsysanim@mix@dimension{%
  \pgf@x\pgfsysanim@prev@val%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y\pgfsysanim@next@val%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@x@val{\pgf@sys@tonumber\pgf@x}%
}




\def\pgfsysanim@comp@translate{%
  \pgfsysanim@compute@fractions%
  \expandafter\expandafter\expandafter\pgfsysanim@mix@translate\expandafter\pgfsysanim@prev@val\pgfsysanim@next@val%
  \ifpgfsysanim@accumulate%
    \ifnum\pgfsysanim@repeat@decimal=0\else%
      \let\pgfsysanim@frac@b\pgfsysanim@one%
      \let\pgfsysanim@frac@a\pgfsysanim@repeat@decimal%
      \edef\pgfsysanim@prev@val{{\pgfsysanim@x@val pt}{\pgfsysanim@y@val pt}}
      \expandafter\expandafter\expandafter\pgfsysanim@mix@translate\expandafter\pgfsysanim@prev@val\pgfsysanim@last@val%
    \fi%
  \fi%
}
\def\pgfsysanim@mix@translate#1#2#3#4{%
  \pgf@x#1%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#3%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@x@val{\pgf@sys@tonumber\pgf@x}%
  \pgf@x#2%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#4%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@y@val{\pgf@sys@tonumber\pgf@x}%
}




\def\pgfsysanim@comp@color{%
  \pgfsysanim@compute@fractions%
  \expandafter\expandafter\expandafter\pgfsysanim@mix@color\expandafter\pgfsysanim@prev@val\pgfsysanim@next@val%
  \ifpgfsysanim@accumulate%
    \ifnum\pgfsysanim@repeat@decimal=0\else%
      \let\pgfsysanim@frac@b\pgfsysanim@one%
      \let\pgfsysanim@frac@a\pgfsysanim@repeat@decimal%
      \expandafter\pgfsysanim@mix@color\expandafter\pgfsysanim@x@val\expandafter\pgfsysanim@y@val\expandafter\pgfsysanim@z@val\pgfsysanim@last@val%
    \fi%
  \fi%
}
\def\pgfsysanim@mix@color#1#2#3#4#5#6{%
  \pgf@x#1pt%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#4pt%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@x@val{\pgf@sys@tonumber\pgf@x}%
  \pgf@x#2pt%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#5pt%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@y@val{\pgf@sys@tonumber\pgf@x}%
  \pgf@x#3pt%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#6pt%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@z@val{\pgf@sys@tonumber\pgf@x}%
}



\def\pgfsysanim@comp@text{%
  \let\pgfsysanim@text@val\pgfsysanim@prev@val%
}




\def\pgfsysanim@comp@dash{%
  \pgfsysanim@compute@fractions%
  \expandafter\expandafter\expandafter\pgfsysanim@mix@dash\expandafter\pgfsysanim@prev@val\pgfsysanim@next@val%
  \ifpgfsysanim@accumulate%
    \ifnum\pgfsysanim@repeat@decimal=0\else%
      \let\pgfsysanim@frac@b\pgfsysanim@one%
      \let\pgfsysanim@frac@a\pgfsysanim@repeat@decimal%
      \edef\pgfsysanim@prev@val{{\pgfsysanim@dash@vals}{\pgfsysanim@x@val pt}}%
      \expandafter\expandafter\expandafter\pgfsysanim@mix@dash\expandafter\pgfsysanim@prev@val\pgfsysanim@last@val%
    \fi%
  \fi%
}
\def\pgfsysanim@mix@dash#1#2#3#4{%
  \pgf@x#2\relax%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#4\relax%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@x@val{\pgf@sys@tonumber\pgf@x}%
  \let\pgfsysanim@dash@vals\pgfutil@empty%
  \pgfsysanim@parse@dash#1,\pgf@stop#3,\pgf@stop%
}
\def\pgfsysanim@parse@dash{\pgfutil@ifnextchar\pgf@stop\pgfsysanim@parse@dash@done\pgfsysanim@parse@dash@first}
\def\pgfsysanim@parse@dash@done\pgf@stop\pgf@stop{}%
\def\pgfsysanim@parse@dash@first#1,#2\pgf@stop#3\pgf@stop{%
  \pgf@x#1\relax%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgfsysanim@parse@dash@second#3\pgf@stop{#2}%
}
\def\pgfsysanim@parse@dash@second#1,#2\pgf@stop#3{%
  \pgf@y#1\relax%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \def\pgfsys@temp{#2}%
  \edef\pgfsysanim@dash@vals{\pgfsysanim@dash@vals\the\pgf@x\ifx\pgfsys@temp\pgfutil@empty\else,\fi}%
  \pgfsysanim@parse@dash#3\pgf@stop#2\pgf@stop%
}





\def\pgfsysanim@comp@viewbox{%
  \pgfsysanim@compute@fractions%
  \expandafter\expandafter\expandafter\pgfsysanim@mix@viewbox\expandafter\pgfsysanim@prev@val\pgfsysanim@next@val%
  \ifpgfsysanim@accumulate%
    \pgferror{viewbox animations cannot accumulate / add}%
  \fi%
}
\def\pgfsysanim@mix@viewbox#1#2#3#4#5#6#7#8{%
  \pgf@x#1%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#5%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@x@val{\the\pgf@x}%
  \pgf@x#2%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#6%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@y@val{\the\pgf@x}%
  \pgf@x#3%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#7%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@z@val{\the\pgf@x}%
  \pgf@x#4%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#8%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@w@val{\the\pgf@x}%
}





\def\pgfsysanim@comp@path{%
  \pgfsysanim@compute@fractions%
  \edef\pgfsysanim@path@tips{%
    \def\noexpand\pgfsysanim@snap@tip@start{\pgfsysanim@snap@tip@start}%
    \def\noexpand\pgfsysanim@snap@tip@end{\pgfsysanim@snap@tip@end}%
  }%
  \let\pgfsysanim@path@val\pgfutil@empty%
  \expandafter\expandafter\expandafter\pgfsysanim@parse@path\expandafter\pgfsysanim@prev@val\expandafter\pgf@stop\expandafter\relax\pgfsysanim@next@val\pgf@stop\relax%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfsysanim@path@all\expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfsysanim@path@val\expandafter\expandafter\expandafter{\expandafter\pgfsysanim@path@val\expandafter}\pgfsysanim@path@tips}%
  \ifpgfsysanim@accumulate%
    \pgferror{path animations cannot accumulate / add}%
  \fi%
}
\def\pgfsysanim@parse@path{\pgfutil@ifnextchar\pgf@stop\pgfsysanim@parse@path@done\pgfsysanim@parse@path@first}
\def\pgfsysanim@parse@path@done\pgf@stop\relax\pgf@stop\relax{}%
\def\pgfsysanim@parse@path@first{\pgfutil@ifnextchar\bgroup\pgfsysanim@parse@path@first@num\pgfsysanim@parse@path@token}
\def\pgfsysanim@parse@path@token#1#2\relax#3#4\relax{%
  \expandafter\def\expandafter\pgfsysanim@path@val\expandafter{\pgfsysanim@path@val#1}%
  \pgfsysanim@parse@path#2\relax#4\relax%
}
\def\pgfsysanim@parse@path@first@num#1#2\relax#3#4\relax{%
  \pgf@x#1%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y#3%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfsysanim@path@val\expandafter\expandafter\expandafter{\expandafter\pgfsysanim@path@val\expandafter{\the\pgf@x}}%
  \pgfsysanim@parse@path#2\relax#4\relax%
}




\def\pgfsysanim@comp@motion{%
  \pgfsysanim@compute@fractions%
  \pgf@x\pgfsysanim@prev@val pt%
  \pgf@x\pgfsysanim@frac@b\pgf@x%
  \pgf@y\pgfsysanim@next@val pt%
  \advance\pgf@x by\pgfsysanim@frac@a\pgf@y%
  \edef\pgfsysanim@x@val{\pgf@sys@tonumber\pgf@x}%
  \ifdim\pgfsysanim@x@val pt=1pt%
    \def\pgfsysanim@x@val{0.9999}%
  \fi%
  \pgf@relevantforpicturesizefalse%
  \pgfdecoratepath{pgfsysanim@motion}{%
    \pgfsyssoftpath@setcurrentpath\pgfsysanim@snap@movealong%
  }%
  \ifpgfsysanim@accumulate%
    \pgferror{motion animations cannot accumulate / add}%
  \fi%
}
\pgfdeclaredecoration{pgfsysanim@motion}{s}{%
  \state{s}[width=\pgfsysanim@x@val\pgfdecoratedremainingdistance,next state=final]{}%
  \state{final}{\pgfgettransform\pgfsysanim@motion@trans\global\let\pgfsysanim@motion@trans\pgfsysanim@motion@trans}%
}







\def\pgfsysanim@compute@fractions{%
  \ifdim\pgf@xc=\pgfsysanim@prev@time pt%
    \def\pgfsysanim@frac@a{0}%
    \def\pgfsysanim@frac@b{1}%
  \else%
    \pgfmathsubtract@{\pgfsysanim@next@time}{\pgfsysanim@prev@time}%
    \ifdim\pgfmathresult pt<0.01pt%
      \def\pgfsysanim@frac@a{0}%
      \def\pgfsysanim@frac@b{1}%
    \else%
      \let\pgfsysanim@divby\pgfmathresult%
      \pgfmathsubtract@{\pgf@sys@tonumber\pgf@xc}{\pgfsysanim@prev@time}%
      \pgfmathdivide@{\pgfmathresult}{\pgfsysanim@divby}%
      \ifdim\pgfmathresult pt<0pt\def\pgfmathresult{0}\fi%
      \ifdim\pgfmathresult pt>1pt\def\pgfmathresult{1}\fi%
      \let\pgfsysanim@frac@a\pgfmathresult%
      \pgfmathsubtract@{1}{\pgfmathresult}%
      \let\pgfsysanim@frac@b\pgfmathresult%
    \fi%
  \fi%
  \ifdim\pgfsysanim@frac@a pt=0pt%
  \else\ifdim\pgfsysanim@frac@b pt=0pt%
  \else%
    \expandafter\expandafter\expandafter\pgfsysanim@apply@spline\expandafter\pgfsysanim@prev@spline\pgfsysanim@next@spline%
  \fi\fi%
}


\def\pgfsysanim@apply@spline#1#2#3#4#5#6#7#8{%
  \edef\pgfsys@temp{#3,#5,#4,#6}%
  \ifx\pgfsys@temp\pgfsysanim@id@spline%
  \else%
    \def\pgfsysanim@prev@out@time{{#3}{#4}}%
    \def\pgfsysanim@next@in@time{{#5}{#6}}%
    \ifx\pgfsysanim@prev@out@time\pgfsys@stay@text%
      \pgfsysanim@jump@splines%
    \else\ifx\pgfsysanim@next@in@time\pgfsys@jump@text%
      \pgfsysanim@jump@splines%
    \else%
      \pgf@xa#3pt%
      \pgf@xb#5pt%
      \let\pgfsysanim@t\pgfsysanim@frac@a%
      \let\pgfsysanim@s\pgfsysanim@frac@b%
      \pgfsysanim@eval@spline%
      \edef\pgfsysanim@ft{\the\pgf@x}%
      \pgf@x\pgfsysanim@t pt%
      \advance\pgf@x by256sp%
      \pgf@y1pt%
      \advance\pgf@y by-\pgf@x%
      \edef\pgfsysanim@t{\pgf@sys@tonumber\pgf@x}%
      \edef\pgfsysanim@s{\pgf@sys@tonumber\pgf@y}%
      \pgfsysanim@eval@spline%
      \advance\pgf@x by-\pgfsysanim@ft%
      \pgf@x256\pgf@x%
      \pgf@ya\pgfsysanim@ft%
      \advance\pgf@ya by-\pgfsysanim@frac@a pt%
      \pgf@yb\pgf@x
      \pgfmathreciprocal@{\pgf@sys@tonumber\pgf@yb}%
      \ifdim\pgfmathresult pt>2.5pt%
        \def\pgfmathresult{2.5}%
      \fi%
      \ifdim\pgfmathresult pt<-2.5pt%
        \def\pgfmathresult{-2.5}%
      \fi%
      \pgf@x\pgfsysanim@t pt%
      \advance\pgf@x by-\pgfmathresult\pgf@ya%
      \pgf@y1pt%
      \advance\pgf@y by-\pgf@x%
      \edef\pgfsysanim@t{\pgf@sys@tonumber\pgf@x}%
      \edef\pgfsysanim@s{\pgf@sys@tonumber\pgf@y}%
      \pgfsysanim@eval@spline%
      \edef\pgfsysanim@ft{\the\pgf@x}%
      \pgf@x\pgfsysanim@t pt%
      \advance\pgf@x by256sp%
      \pgf@y1pt%
      \advance\pgf@y by-\pgf@x%
      \edef\pgfsysanim@t{\pgf@sys@tonumber\pgf@x}%
      \edef\pgfsysanim@s{\pgf@sys@tonumber\pgf@y}%
      \pgfsysanim@eval@spline%
      \advance\pgf@x by-\pgfsysanim@ft%
      \pgf@x256\pgf@x%
      \pgf@ya\pgfsysanim@ft%
      \advance\pgf@ya by-\pgfsysanim@frac@a pt%
      \pgf@yb\pgf@x
      \pgfmathreciprocal@{\pgf@sys@tonumber\pgf@yb}%
      \ifdim\pgfmathresult pt>2.5pt%
        \def\pgfmathresult{2.5}%
      \fi%
      \ifdim\pgfmathresult pt<-2.5pt%
        \def\pgfmathresult{-2.5}%
      \fi%
      \pgf@x\pgfsysanim@t pt%
      \advance\pgf@x by-\pgfmathresult\pgf@ya%
      \pgf@y1pt%
      \advance\pgf@y by-\pgf@x%
      \edef\pgfsysanim@t{\pgf@sys@tonumber\pgf@x}%
      \edef\pgfsysanim@s{\pgf@sys@tonumber\pgf@y}%
      \pgfsysanim@eval@spline%
      \edef\pgfsysanim@ft{\the\pgf@x}%
      \pgf@x\pgfsysanim@t pt%
      \advance\pgf@x by256sp%
      \pgf@y1pt%
      \advance\pgf@y by-\pgf@x%
      \edef\pgfsysanim@t{\pgf@sys@tonumber\pgf@x}%
      \edef\pgfsysanim@s{\pgf@sys@tonumber\pgf@y}%
      \pgfsysanim@eval@spline%
      \advance\pgf@x by-\pgfsysanim@ft%
      \pgf@x256\pgf@x%
      \pgf@ya\pgfsysanim@ft%
      \advance\pgf@ya by-\pgfsysanim@frac@a pt%
      \pgf@yb\pgf@x
      \pgfmathreciprocal@{\pgf@sys@tonumber\pgf@yb}%
      \ifdim\pgfmathresult pt>2.5pt%
        \def\pgfmathresult{2.5}%
      \fi%
      \ifdim\pgfmathresult pt<-2.5pt%
        \def\pgfmathresult{-2.5}%
      \fi%
      \pgf@x\pgfsysanim@t pt%
      \advance\pgf@x by-\pgfmathresult\pgf@ya%
      \pgf@y1pt%
      \advance\pgf@y by-\pgf@x%
      \edef\pgfsysanim@t{\pgf@sys@tonumber\pgf@x}%
      \edef\pgfsysanim@s{\pgf@sys@tonumber\pgf@y}%
      \pgf@xa#4pt%
      \pgf@xb#6pt%
      \pgfsysanim@eval@spline%
      \pgf@y1pt%
      \advance\pgf@y by-\pgf@x%
      \edef\pgfsysanim@frac@a{\pgf@sys@tonumber\pgf@x}%
      \edef\pgfsysanim@frac@b{\pgf@sys@tonumber\pgf@y}%
      \fi\fi%
  \fi%
}
\def\pgfsysanim@id@spline{0,1,0,1}

\def\pgfsysanim@eval@spline{%
  \pgf@ya\pgfsysanim@t\pgf@xa%
  \pgf@yb\pgfsysanim@t\pgf@xb%
  \advance\pgf@yb by\pgfsysanim@s\pgf@xa%
  \pgf@yc\pgfsysanim@t pt%
  \advance\pgf@yc by\pgfsysanim@s\pgf@xb%
  \pgf@y\pgfsysanim@t\pgf@yb%
  \advance\pgf@y by\pgfsysanim@s\pgf@ya%
  \pgf@xc\pgfsysanim@t\pgf@yc%
  \advance\pgf@xc by\pgfsysanim@s\pgf@yb%
  \pgf@x\pgfsysanim@t\pgf@xc%
  \advance\pgf@x by\pgfsysanim@s\pgf@y%
}

\def\pgfsysanim@jump@splines{%
  \ifx\pgfsysanim@prev@out@time\pgfsys@stay@text%
    \ifx\pgfsysanim@next@in@time\pgfsys@jump@text%
      \ifdim\pgfsysanim@frac@a pt<0.5pt%
        \def\pgfsysanim@frac@a{0}%
        \def\pgfsysanim@frac@b{1}%
      \else%
        \def\pgfsysanim@frac@a{1}%
        \def\pgfsysanim@frac@b{0}%
      \fi%
    \else%
      \def\pgfsysanim@frac@a{0}%
      \def\pgfsysanim@frac@b{1}%
    \fi%
  \else
    \def\pgfsysanim@frac@a{1}%
    \def\pgfsysanim@frac@b{0}%
  \fi%
}


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/systemlayer/pgfsysanimations.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex ====

\ProvidesFileRCS{pgfsysprotocol.code.tex}






\let\pgfsysprotocol@currentprotocol=\pgfutil@empty
\newif\ifpgfsysprotocol@buffered


\def\pgfsysprotocol@literalbuffered#1{%
  \edef\pgfsysprotocol@temp{{#1\space}}%
  \expandafter\pgfutil@g@addto@macro\expandafter\pgfsysprotocol@currentprotocol\pgfsysprotocol@temp%
}

\def\pgfsysprotocol@literal#1{%
  \pgfsysprotocol@literalbuffered{#1}%
  \ifpgfsysprotocol@buffered%
  \else%
    \pgfsysprotocol@flushcurrentprotocol%
  \fi%
}

\def\pgfsysprotocol@getcurrentprotocol#1{%
  \let#1=\pgfsysprotocol@currentprotocol%
}

\def\pgfsysprotocol@setcurrentprotocol#1{%
  \global\let\pgfsysprotocol@currentprotocol=#1%
}


\def\pgfsysprotocol@invokecurrentprotocol{%
  \ifx\pgfsysprotocol@currentprotocol\pgfutil@empty%
  \else%
    \expandafter\pgfsys@invoke\expandafter{\pgfsysprotocol@currentprotocol}%
  \fi%
}

\def\pgfsysprotocol@flushcurrentprotocol{%
  \pgfsysprotocol@invokecurrentprotocol%
  \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
}


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex ====

\ProvidesFileRCS{pgfsyssoftpath.code.tex}







\let\pgfsyssoftpath@thepath=\pgfutil@empty
\let\pgfsyssoftpath@bigbuffer=\pgfutil@empty
\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty
\newcount\pgfsyssoftpath@smallbuffer@items
\newcount\pgfsyssoftpath@bigbuffer@items

\def\pgfsyssoftpath@flushbuffers{%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\pgfsyssoftpath@thepath%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{%
    \expandafter\expandafter\expandafter\pgfsyssoftpath@thepath%
    \expandafter\pgfsyssoftpath@bigbuffer\pgfsyssoftpath@smallbuffer}%
  \global\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty
  \global\let\pgfsyssoftpath@bigbuffer=\pgfutil@empty
  \global\pgfsyssoftpath@bigbuffer@items0\relax%
  \global\pgfsyssoftpath@smallbuffer@items0\relax%
}

\def\pgfsyssoftpath@getcurrentpath#1{%
  \pgfsyssoftpath@flushbuffers%
  \let#1=\pgfsyssoftpath@thepath%
}

\def\pgfsyssoftpath@setcurrentpath#1{%
  \global\let\pgfsyssoftpath@thepath=#1%
  \global\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty
  \global\let\pgfsyssoftpath@bigbuffer=\pgfutil@empty
  \global\pgfsyssoftpath@bigbuffer@items0\relax%
  \global\pgfsyssoftpath@smallbuffer@items0\relax%
}


\def\pgfsyssoftpath@invokecurrentpath{%
  \pgfsyssoftpath@thepath%
  \pgfsyssoftpath@bigbuffer%
  \pgfsyssoftpath@smallbuffer%
}

\def\pgfsyssoftpath@flushcurrentpath{%
  \pgfsyssoftpath@invokecurrentpath%
  \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
}

\def\pgfsyssoftpath@addtocurrentpath#1{%
  \global\advance\pgfsyssoftpath@smallbuffer@items by1\relax%
  \ifnum\pgfsyssoftpath@smallbuffer@items<40\relax%
    \expandafter\gdef\expandafter\pgfsyssoftpath@smallbuffer\expandafter{\pgfsyssoftpath@smallbuffer#1}%
  \else%
    \pgfsyssoftpath@smalloverflow{#1}%
  \fi%
}
\def\pgfsyssoftpath@smalloverflow#1{%
  \global\advance\pgfsyssoftpath@bigbuffer@items by1\relax%
  \ifnum\pgfsyssoftpath@bigbuffer@items<30\relax%
    \expandafter\expandafter\expandafter\gdef%
    \expandafter\expandafter\expandafter\pgfsyssoftpath@bigbuffer%
    \expandafter\expandafter\expandafter{\expandafter\pgfsyssoftpath@bigbuffer\pgfsyssoftpath@smallbuffer#1}%
    \global\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty%
    \global\pgfsyssoftpath@smallbuffer@items0\relax%
  \else%
    \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef%
    \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\pgfsyssoftpath@thepath%
    \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{%
      \expandafter\expandafter\expandafter\pgfsyssoftpath@thepath
      \expandafter\pgfsyssoftpath@bigbuffer\pgfsyssoftpath@smallbuffer#1}%
    \global\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty
    \global\let\pgfsyssoftpath@bigbuffer=\pgfutil@empty
    \global\pgfsyssoftpath@bigbuffer@items0\relax%
    \global\pgfsyssoftpath@smallbuffer@items0\relax%
  \fi%
}



\def\pgfsyssoftpath@lastmoveto{{0pt}{0pt}}

\newif\ifpgfsyssoftpathmovetorelevant
\pgfsyssoftpathmovetorelevanttrue

\def\pgfsyssoftpath@moveto#1#2{%
  \edef\pgfsyssoftpath@coord{{#1}{#2}}%
  \expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@movetotoken\pgfsyssoftpath@coord}%
  \ifpgfsyssoftpathmovetorelevant%
    \global\let\pgfsyssoftpath@lastmoveto\pgfsyssoftpath@coord%
  \fi%
}

\def\pgfsyssoftpath@lineto#1#2{%
  \edef\pgfsyssoftpath@coord{{#1}{#2}}%
  \expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@linetotoken\pgfsyssoftpath@coord}%
}


\def\pgfsyssoftpath@curveto#1#2#3#4#5#6{%
  \edef\pgfsyssoftpath@temp{{%
      \noexpand\pgfsyssoftpath@curvetosupportatoken{#1}{#2}%
      \noexpand\pgfsyssoftpath@curvetosupportbtoken{#3}{#4}%
      \noexpand\pgfsyssoftpath@curvetotoken{#5}{#6}%
    }}%
  \expandafter\pgfsyssoftpath@addtocurrentpath\pgfsyssoftpath@temp%
}


\def\pgfsyssoftpath@rect#1#2#3#4{%
  \edef\pgfsyssoftpath@temp{{%
    \noexpand\pgfsyssoftpath@rectcornertoken{#1}{#2}%
    \noexpand\pgfsyssoftpath@rectsizetoken{#3}{#4}%
  }}%
  \expandafter\pgfsyssoftpath@addtocurrentpath\pgfsyssoftpath@temp%
}

\def\pgfsyssoftpath@closepath{%
  \expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@closepathtoken\pgfsyssoftpath@lastmoveto}%
}

\def\pgfsyssoftpath@specialround#1#2{%
  \edef\pgfsyssoftpath@temp{{#1}{#2}}%
  \expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@specialroundtoken\pgfsyssoftpath@temp}%
}

\def\pgfsyssoftpath@movetotoken#1#2{\pgfsys@moveto{#1}{#2}}
\def\pgfsyssoftpath@linetotoken#1#2{\pgfsys@lineto{#1}{#2}}
\def\pgfsyssoftpath@rectcornertoken#1#2#3#4#5{\pgfsys@rect{#1}{#2}{#4}{#5}} %
\def\pgfsyssoftpath@curvetosupportatoken#1#2#3#4#5#6#7#8{\pgfsys@curveto{#1}{#2}{#4}{#5}{#7}{#8}}
\def\pgfsyssoftpath@closepathtoken#1#2{\pgfsys@closepath}
\let\pgfsyssoftpath@specialroundtoken=\pgfutil@gobbletwo
\def\pgfsyssoftpath@curvetosupportbtoken#1#2{curvetotokenb} %
\def\pgfsyssoftpath@curvetotoken#1#2{curvetotoken}%


\endinput

==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfcalendar.code.tex ====

\ProvidesFileRCS{pgfcalendar.code.tex}

\ifdefined\pgfintloaded\else
  \input pgfint.code.tex
\fi


\ifx\translate\@undefined
  \def\translate#1{#1}
\fi


\ifx\usedictionary\@undefined
\else
  \usedictionary{translator-months-dictionary}
\fi





\long\def\pgfcalendar#1#2#3#4{%
  \begingroup%
    \let\ifdate=\pgfcalendar@local@ifdate%
    \def\pgfcalendarprefix{#1}%
    \pgfcalendardatetojulian{#2}{\pgfcalendarcurrentjulian}%
    \edef\pgfcalendarbeginjulian{\the\pgfcalendarcurrentjulian}%
    \edef\pgfcalendarbeginiso{#2}%
    \pgfcalendardatetojulian{#3}{\pgfutil@tempcnta}%
    \edef\pgfcalendarendjulian{\the\pgfutil@tempcnta}%
    \advance\pgfutil@tempcnta by1\relax%
    \edef\pgfcalendarendjulianplus{\the\pgfutil@tempcnta}%
    \edef\pgfcalendarendiso{#3}%
    \loop%
    \ifnum\pgfcalendarcurrentjulian<\pgfcalendarendjulianplus\relax%
      \pgfcalendarjuliantodate{\pgfcalendarcurrentjulian}%
      {\pgfcalendarcurrentyear}{\pgfcalendarcurrentmonth}{\pgfcalendarcurrentday}%
      \pgfcalendarjuliantoweekday{\pgfcalendarcurrentjulian}{\pgfutil@tempcntb}%
      \edef\pgfcalendarcurrentweekday{\the\pgfutil@tempcntb}%
      #4%
      \advance\pgfcalendarcurrentjulian by1\relax%
    \repeat%
  \endgroup%
}

\newcount\pgfcalendarcurrentjulian

\def\pgfcalendar@local@ifdate{%
  \let\pgfcalendarifdatejulian=\pgfcalendarcurrentjulian%
  \let\pgfcalendarifdateyear=\pgfcalendarcurrentyear%
  \let\pgfcalendarifdatemonth=\pgfcalendarcurrentmonth%
  \let\pgfcalendarifdateday=\pgfcalendarcurrentday%
  \let\pgfcalendarifdateweekday=\pgfcalendarcurrentweekday%
  \pgfcalendar@launch@ifdate%
}




\def\pgfcalendarifdate#1#2#3#4{%
  \pgfcalendardatetojulian{#1}{\pgfutil@tempcnta}%
  \pgfcalendarjuliantodate{\pgfutil@tempcnta}
    {\pgfcalendarifdateyear}{\pgfcalendarifdatemonth}{\pgfcalendarifdateday}%
  \edef\pgfcalendarifdatejulian{\the\pgfutil@tempcnta}%
  \pgfcalendarjuliantoweekday{\pgfutil@tempcnta}{\pgfutil@tempcntb}%
  \edef\pgfcalendarifdateweekday{\the\pgfutil@tempcntb}%
  \pgfcalendar@launch@ifdate{#2}{#3}{#4}%
}


\long\def\pgfcalendar@launch@ifdate#1{%
  \pgfcalendarmatchesfalse%
  \pgfqkeys{/pgf/calendar}{#1}%
  \ifpgfcalendarmatches%
    \expandafter\pgfutil@firstoftwo
  \else%
    \expandafter\pgfutil@secondoftwo
  \fi%
}

\newif\ifpgfcalendarmatches



\pgfkeys{/pgf/calendar/all/.code=\pgfcalendarmatchestrue}

\pgfkeys{/pgf/calendar/Monday/.code={\ifnum\pgfcalendarifdateweekday=0\relax\pgfcalendarmatchestrue\fi}}
\pgfkeys{/pgf/calendar/Tuesday/.code={\ifnum\pgfcalendarifdateweekday=1\relax\pgfcalendarmatchestrue\fi}}
\pgfkeys{/pgf/calendar/Wednesday/.code={\ifnum\pgfcalendarifdateweekday=2\relax\pgfcalendarmatchestrue\fi}}
\pgfkeys{/pgf/calendar/Thursday/.code={\ifnum\pgfcalendarifdateweekday=3\relax\pgfcalendarmatchestrue\fi}}
\pgfkeys{/pgf/calendar/Friday/.code={\ifnum\pgfcalendarifdateweekday=4\relax\pgfcalendarmatchestrue\fi}}
\pgfkeys{/pgf/calendar/Saturday/.code={\ifnum\pgfcalendarifdateweekday=5\relax\pgfcalendarmatchestrue\fi}}
\pgfkeys{/pgf/calendar/Sunday/.code={\ifnum\pgfcalendarifdateweekday=6\relax\pgfcalendarmatchestrue\fi}}

\pgfkeys{/pgf/calendar/workday/.code={\ifnum\pgfcalendarifdateweekday<5\relax\pgfcalendarmatchestrue\fi}}
\pgfkeys{/pgf/calendar/weekend/.code={\ifnum\pgfcalendarifdateweekday>4\relax\pgfcalendarmatchestrue\fi}}

\pgfkeys{/pgf/calendar/equals/.cd,.value required,.code={%
  \pgfcalendar@special@datetojulian{#1}%
  \ifnum\pgfcalendarifdatejulian=\pgfutil@tempcnta\relax%
    \pgfcalendarmatchestrue%
  \fi}%
}

\pgfkeys{/pgf/calendar/day of month/.cd,.value required,.code={\ifnum#1=\pgfcalendarifdateday\relax\pgfcalendarmatchestrue\fi}}
\pgfkeys{/pgf/calendar/end of month/.cd,.default=1,.code={%
  \ifpgfcalendarmatches%
  \else%
    {%
      \pgfutil@tempcnta=\pgfcalendarifdatejulian\relax%
      \advance\pgfutil@tempcnta by#1\relax%
      \pgfcalendarjuliantodate{\pgfutil@tempcnta}{\pgf@dummy}{\pgf@dummy}{\pgf@cal@temp}%
      \global\let\pgf@cal@temp=\pgf@cal@temp%
    }%
    \ifnum\pgf@cal@temp=1\relax\pgfcalendarmatchestrue\fi%
  \fi}%
}

\pgfkeys{/pgf/calendar/at least/.cd,.value required,.code={%
  \pgfcalendar@special@datetojulian{#1}%
  \ifnum\pgfcalendarifdatejulian<\pgfutil@tempcnta\relax%
  \else%
    \pgfcalendarmatchestrue%
  \fi%
}}

\pgfkeys{/pgf/calendar/at most/.cd,.value required,.code={%
  \pgfcalendar@special@datetojulian{#1}%
  \ifnum\pgfcalendarifdatejulian>\pgfutil@tempcnta\relax%
  \else%
    \pgfcalendarmatchestrue%
  \fi%
}}

\pgfkeys{/pgf/calendar/between/.cd,.value required,.code args={#1and#2}{%
  \pgfcalendar@special@datetojulian{#1}%
  \ifnum\pgfcalendarifdatejulian<\pgfutil@tempcnta\relax%
  \else%
    \pgfcalendar@special@datetojulian{#2}%
    \ifnum\pgfcalendarifdatejulian>\pgfutil@tempcnta\relax%
    \else%
      \pgfcalendarmatchestrue%
    \fi%
  \fi%
}}

\def\pgfcalendar@special@datetojulian#1{%
  \edef\pgf@temp{#1}%
  \expandafter\pgfcalendar@special@split@test\pgf@temp-\relax{#1}%
}

\def\pgfcalendar@special@split@test#1-#2-#3\relax#4{%
  \def\pgf@temp{#3}%
  \ifx\pgf@temp\pgfutil@empty%
    \def\pgf@temp{\pgfcalendarifdateyear-#1-#2}%
  \else%
    \def\pgf@temp{#4}%
  \fi%
  \pgfcalendardatetojulian{\pgf@temp}{\pgfutil@tempcnta}%
}



\def\pgfcalendarsuggestedname{%
  \ifx\pgfcalendarprefix\pgfutil@empty\else\pgfcalendarprefix-%
  \pgfcalendarcurrentyear-\pgfcalendarcurrentmonth-\pgfcalendarcurrentday\fi%
}







\def\pgfcalendardatetojulian#1#2{\edef\pgf@temp{#1}\expandafter\pgfcalendar@datetojulian\pgf@temp+/{#2}}
\def\pgfcalendar@datetojulian#1-#2-#3+#4/#5{%
  {%
    \count1=#1\relax%
    \count2=#2\relax%
    \edef\pgf@temp{#3}%
    \ifx\pgf@temp\pgfcalendar@last@text%
      \advance\count2 by1\relax%
      \count3=1\relax%
    \else%
      \count3=#3\relax%
    \fi%
    \edef\pgf@@temp{#4}%
    \ifx\pgf@@temp\pgfutil@empty%
      \count8=0\relax%
    \else%
      \pgfcalendar@unpack#4%
    \fi%
    \ifnum\count2<3\relax%
      \count4=1\relax%
    \else%
      \count4=0\relax%
    \fi%
    \count5=\count1\relax%
    \advance\count5 by 4800\relax%
    \advance\count5 by-\count4\relax%
    \count6=\count2\relax%
    \count0=\count4\relax%
    \multiply\count0 by12\relax
    \advance\count6 by\count0\relax%
    \advance\count6 by-3\relax%
    \count7=\count3\relax%
    \count0=\count6\relax%
    \multiply\count0 by 153\relax%
    \advance\count0 by 2\relax%
    \divide\count0 by 5\relax%
    \advance\count7 by \count0\relax%
    \count0=\count5%
    \multiply\count0by365\relax%
    \advance\count7 by\count0\relax%
    \count0=\count5\relax%
    \divide\count0 by 4\relax%
    \advance\count7 by\count0%
    \count0=\count5\relax%
    \divide\count0 by 100\relax%
    \advance\count7 by-\count0\relax%
    \count0=\count5\relax%
    \divide\count0 by 400\relax%
    \advance\count7 by\count0%
    \advance\count7 by-32045\relax%
    \ifx\pgf@temp\pgfcalendar@last@text%
      \advance\count7by-1\relax%
    \fi%
    \advance\count7by\count8\relax%
    \expandafter%
  }%
  \expandafter#5\the\count7\relax%
}
\def\pgfcalendar@last@text{last}
\def\pgfcalendar@unpack#1+{%
  \count8=#1\relax%
}


\def\pgfcalendarjuliantodate#1#2#3#4{%
  {%
    \count1=#1\relax%
    \count2=\count1\relax%
    \advance\count2 by 32044\relax%
    \count3=\count2\relax%
    \divide\count3 by 146097\relax%
    \count4=\count3\relax%
    \multiply\count4 by-146097\relax%
    \advance\count4 by\count2\relax%
    \count5=\count4\relax%
    \divide\count5 by36524\relax%
    \advance\count5 by1\relax%
    \multiply\count5 by3\relax%
    \divide\count5 by4\relax%
    \count6=\count4\relax%
    \count0=\count5\relax%
    \multiply\count0 by-36524\relax%
    \advance\count6 by\count0\relax%
    \count7=\count6\relax%
    \divide\count7 by1461\relax%
    \count8=\count7\relax%
    \multiply\count8 by-1461\relax%
    \advance\count8 by\count6\relax%
    \count9=\count8\relax%
    \divide\count9 by 365\relax%
    \advance\count9 by 1\relax%
    \multiply\count9 by3\relax%
    \divide\count9 by4\relax%
    \count10=\count8\relax%
    \count0=\count9\relax%
    \multiply\count0 by-365\relax%
    \advance\count10 by\count0\relax%
    \count11=\count3\relax%
    \multiply\count11 by400\relax%
    \count0=\count5\relax%
    \multiply\count0 by100\relax%
    \advance\count11 by\count0\relax%
    \count0=\count7\relax%
    \multiply\count0 by4\relax%
    \advance\count11 by\count0\relax%
    \advance\count11 by\count9\relax%
    \count12=\count10\relax%
    \multiply\count12 by5\relax%
    \advance\count12 by 308\relax%
    \divide\count12 by 153\relax%
    \advance\count12 by -2\relax%
    \count13=\count12\relax%
    \advance\count13 by 4\relax%
    \multiply\count13 by153\relax%
    \divide\count13 by5\relax%
    \count13=-\count13\relax%
    \advance\count13 by 122\relax%
    \advance\count13 by \count10\relax%
    \count14=\count12\relax%
    \advance\count14 by 2\relax%
    \divide\count14 by12\relax%
    \advance\count14 by\count11\relax%
    \advance\count14 by-4800\relax%
    \count15=\count12\relax%
    \advance\count15 by2\relax%
    \count0=\count15\relax%
    \divide\count0 by12\relax%
    \multiply\count0 by12\relax%
    \advance\count15 by-\count0\relax%
    \advance\count15 by1\relax%
    \count16=\count13%
    \advance\count16by 1\relax%
    \xdef\pgf@temp@year{\the\count14}%
    \xdef\pgf@temp@month{\ifnum\count15<10 0\fi\the\count15}%
    \xdef\pgf@temp@day{\ifnum\count16<10 0\fi\the\count16}%
  }%
  \let#2=\pgf@temp@year%
  \let#3=\pgf@temp@month%
  \let#4=\pgf@temp@day%
}




\def\pgfcalendarjuliantoweekday#1#2{%
  {%
    \pgfutil@tempcnta=#1\relax%
    #2=\pgfutil@tempcnta%
    \divide#2by7\relax%
    \multiply#2by-7\relax%
    \advance#2by\pgfutil@tempcnta\relax%
    \expandafter%
  }%
  \expandafter#2\the#2\relax%
}




\def\pgfcalendarweekdayname#1{%
  \pgfutil@translate{\ifcase#1Monday\or Tuesday\or Wednesday\or Thursday\or Friday\or Saturday\or Sunday\fi}%
}

\def\pgfcalendarweekdayshortname#1{%
  \pgfutil@translate{\ifcase#1Mon\or Tue\or Wed\or Thu\or Fri\or Sat\or Sun\fi}%
}



\def\pgfcalendarmonthname#1{%
  \pgfutil@translate{\ifcase#1\or January\or February\or March\or April\or
    May\or June\or July\or August\or September\or October\or
    November\or December\fi}%
}

\def\pgfcalendarmonthshortname#1{%
  \pgfutil@translate{\ifcase#1\or Jan\or Feb\or Mar\or Apr\or
    May\or Jun\or Jul\or Aug\or Sep\or Oct\or
    Nov\or Dec\fi}%
}







\def\pgfcalendarshorthand#1#2{\csname pgfcalendar@shorthand@#1#2\endcsname}
\expandafter\def\csname pgfcalendar@shorthand@d-\endcsname{%
  {\pgfutil@tempcnta=\pgfcalendarcurrentday\relax\the\pgfutil@tempcnta}}
\expandafter\def\csname pgfcalendar@shorthand@d=\endcsname{%
  {\pgfutil@tempcnta=\pgfcalendarcurrentday\relax\ifnum\pgfutil@tempcnta<10\relax\setbox0=\hbox{1}\kern\wd0\relax\fi\the\pgfutil@tempcnta}}
\expandafter\def\csname pgfcalendar@shorthand@d0\endcsname{%
  \pgfcalendarcurrentday}
\expandafter\def\csname pgfcalendar@shorthand@m-\endcsname{%
  {\pgfutil@tempcnta=\pgfcalendarcurrentmonth\relax\the\pgfutil@tempcnta}}
\expandafter\def\csname pgfcalendar@shorthand@m=\endcsname{%
  {\pgfutil@tempcnta=\pgfcalendarcurrentmonth\relax\ifnum\pgfutil@tempcnta<10\relax\setbox0=\hbox{1}\kern\wd0\relax\fi\the\pgfutil@tempcnta}}
\expandafter\def\csname pgfcalendar@shorthand@m0\endcsname{%
  \pgfcalendarcurrentmonth}
\expandafter\def\csname pgfcalendar@shorthand@y-\endcsname{%
  \pgfcalendarcurrentyear}
\expandafter\def\csname pgfcalendar@shorthand@y=\endcsname{%
  \pgfcalendarcurrentyear}
\expandafter\def\csname pgfcalendar@shorthand@y0\endcsname{%
  \pgfcalendarcurrentyear}
\expandafter\def\csname pgfcalendar@shorthand@w.\endcsname{%
  \pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday}}
\expandafter\def\csname pgfcalendar@shorthand@wt\endcsname{%
  \pgfcalendarweekdayname{\pgfcalendarcurrentweekday}}
\expandafter\def\csname pgfcalendar@shorthand@m.\endcsname{%
  \pgfcalendarmonthshortname{\pgfcalendarcurrentmonth}}
\expandafter\def\csname pgfcalendar@shorthand@mt\endcsname{%
  \pgfcalendarmonthname{\pgfcalendarcurrentmonth}}



\newcount\pgf@cal@easter@Y
\newcount\pgf@cal@easter@G
\newcount\pgf@cal@easter@C
\newcount\pgf@cal@easter@X
\newcount\pgf@cal@easter@Z
\newcount\pgf@cal@easter@D
\newcount\pgf@cal@easter@E
\newcount\pgf@cal@easter@N
\newcount\pgf@cal@easter@M
\newcount\pgf@cal@easter@julianday

\pgfutil@protected\def\pgfcalendareastersunday#1#2{%
  \pgfintset\pgf@cal@easter@Y{#1}%
  \pgfintset\pgf@cal@easter@G{%
    \pgfintmod{\pgf@cal@easter@Y}{19}+1
  }%
  \pgfintset\pgf@cal@easter@C{%
    \pgfintdivfloor{\pgf@cal@easter@Y}{100}+1
  }%
  \pgfintset\pgf@cal@easter@X{%
    \pgfintdivfloor{3*\pgf@cal@easter@C}{4}-12
  }%
  \pgfintset\pgf@cal@easter@Z{%
    \pgfintdivfloor{8*\pgf@cal@easter@C+5}{25}-5
  }%
  \pgfintset\pgf@cal@easter@D{%
    \pgfintdivfloor{5*\pgf@cal@easter@Y}{4}-\pgf@cal@easter@X-10
  }%
  \pgfintset\pgf@cal@easter@E{%
    \pgfintmod{11*\pgf@cal@easter@G+20+\pgf@cal@easter@Z-\pgf@cal@easter@X}{30}
  }%
  \ifnum\pgf@cal@easter@E<0
    \pgfintset\pgf@cal@easter@E{\pgf@cal@easter@E+30}%
  \fi
  \ifnum\pgf@cal@easter@E=25
    \ifnum\pgf@cal@easter@G>11
      \pgfintset\pgf@cal@easter@E{\pgf@cal@easter@E+1}%
    \fi
  \else
    \ifnum\pgf@cal@easter@E=24
      \pgfintset\pgf@cal@easter@E{\pgf@cal@easter@E+1}%
    \fi
  \fi
  \pgfintset\pgf@cal@easter@N{44-\pgf@cal@easter@E}%
  \ifnum\pgf@cal@easter@N<21
    \pgfintset\pgf@cal@easter@N{\pgf@cal@easter@N+30}%
  \fi
  \pgfintset\pgf@cal@easter@N{%
    \pgf@cal@easter@N+7-\pgfintmod{\pgf@cal@easter@D+\pgf@cal@easter@N}{7}
  }%
  \ifnum\pgf@cal@easter@N>31
    \pgfintset\pgf@cal@easter@N{\pgf@cal@easter@N-31}%
    \pgfintset\pgf@cal@easter@M{4}%
  \else
    \pgfintset\pgf@cal@easter@M{3}%
  \fi
  \pgfcalendardatetojulian
    {\pgf@cal@easter@Y-\pgf@cal@easter@M-\pgf@cal@easter@N}%
    {#2}%
}

\pgfkeys{/pgf/calendar/Easter/.cd,.default=0,.code={%
  \pgfcalendareastersunday{\pgfcalendarifdateyear}{\pgf@cal@easter@julianday}%
  \ifnum\pgfcalendarifdatejulian=\pgfinteval{\pgf@cal@easter@julianday+#1}
    \expandafter\pgfcalendarmatchestrue
  \fi}%
}


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfcalendar.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfexternal.tex ====


\long\def\beginpgfgraphicnamed#1#2\endpgfgraphicnamed{\includegraphics{#1}}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfexternal.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfexternalwithdepth.tex ====


\long\def\beginpgfgraphicnamed#1#2\endpgfgraphicnamed{%
    \begingroup
    \setbox1=\hbox{\includegraphics{#1}}%
    \openin1=#1.dpth
    \ifeof1    \box1
    \else
        \read1 to\pgfincludeexternalgraphicsdp    \closein1
        \dimen0=\pgfincludeexternalgraphicsdp\relax
        \hbox{\lower\dimen0 \box1 }%
    \fi
    \endgroup
}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfexternalwithdepth.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgffor.code.tex ====

\ProvidesPackageRCS{pgffor.code.tex}

\ifdefined\pgfmathloaded\else
  \input pgfmath.code.tex
\fi

\newdimen\pgffor@iter
\newdimen\pgffor@skip
\newif\ifpgffor@continue


\def\pgffor@reset@hooks{%
  \let\pgffor@beginhook=\relax%
  \let\pgffor@endhook=\relax%
  \let\pgffor@afterhook=\relax%
}
\pgffor@reset@hooks


\newtoks\pgffor@stack
\pgffor@stack={{}{}{}}

\def\pgffor@stackpush#1{%
    \def\pgffor@stacktemp{#1}%
    \expandafter\expandafter\expandafter\pgffor@stack\expandafter\expandafter\expandafter=%
    \expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter%
        {\expandafter\pgffor@stacktemp\expandafter}\the\pgffor@stack}%
}

\def\pgffor@stackpop{\expandafter\pgffor@@stackpop\the\pgffor@stack\pgffor@stackstop}
\def\pgffor@@stackpop#1#2\pgffor@stackstop{\pgffor@stack{#2}#1}

\def\pgffor@emptyvalues{, \pgffor@stop,}%

\def\pgffor@foreach{%
    \pgffor@atbeginforeach%
    \let\pgffor@assign@before@code=\pgfutil@empty%
    \let\pgffor@assign@after@code=\pgfutil@empty%
    \let\pgffor@assign@once@code=\pgfutil@empty%
    \let\pgffor@remember@code=\pgfutil@empty%
    \let\pgffor@remember@once@code=\pgfutil@empty%
    \pgffor@alphabeticsequencefalse%
    \pgffor@contextfalse%
    \let\pgffor@var=\pgfutil@empty
    \pgffor@vars%
}

\let\foreach=\pgffor@foreach

\def\pgffor@vars{%
    \pgfutil@ifnextchar i{\pgffor@@vars@end}{%
        \pgfutil@ifnextchar[{\pgffor@@vars@opt}{%
            \pgfutil@ifnextchar/{\pgffor@@vars@slash@gobble}{%
                \pgffor@@vars}}}}%

\def\pgffor@@vars@end in{\pgfutil@ifnextchar\bgroup{\pgffor@normal@list}{\pgffor@macro@list}}
\def\pgffor@@vars@opt[#1]{\pgfkeys{/pgf/foreach/.cd,#1}\pgffor@vars}
\def\pgffor@@vars#1{\pgffor@var@add#1\pgffor@stop\pgffor@vars}
\def\pgffor@@vars@slash@gobble/{\pgffor@@vars}

\def\pgffor@var@add#1#2\pgffor@stop{%
    \ifx\pgffor@var\pgfutil@empty%
        \def\pgffor@var{#1}%
        \def\pgffor@mainvar{#1}%
    \else%
        \expandafter\def\expandafter\pgffor@var\expandafter{\pgffor@var/#1}%
    \fi%
}

\def\pgffor@expand@list@true{\let\pgffor@expand@list\edef}
\def\pgffor@expand@list@false{\let\pgffor@expand@list\def}
\def\pgffor@macro@list#1{%
  \expandafter\pgffor@normal@list\expandafter{#1}}
\def\pgffor@normal@list#1{%
  \pgffor@expand@list\pgffor@values{#1}%
  \expandafter\def\expandafter\pgffor@values\expandafter{\pgffor@values, \pgffor@stop,}%
  \ifx\pgffor@values\pgffor@emptyvalues
    \def\pgffor@values{\pgffor@stop,}%
  \fi%
  \let\pgffor@body=\pgfutil@empty%
  \global\pgffor@continuetrue%
  \pgffor@collectbody}
\def\pgffor@collectbody{%
  \pgfutil@ifnextchar\foreach{\pgffor@collectforeach}{%
    \pgfutil@ifnextchar\bgroup{\pgffor@collectargument}{\pgffor@collectsemicolon}}%
}

\def\pgffor@collectforeach\foreach#1in{%
  \pgfutil@ifnextchar\bgroup{\pgffor@collectforeach@normal{#1}}{\pgffor@collectforeach@macro{#1}}}
\def\pgffor@collectforeach@macro#1#2{%
  \expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter{\pgffor@body\foreach#1in#2}%
  \pgffor@collectbody%
}
\def\pgffor@collectforeach@normal#1#2{%
  \expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter{\pgffor@body\foreach#1in{#2}}%
  \pgffor@collectbody%
}
\long\def\pgffor@collectargument#1{%
    \expandafter\pgfutil@in@\expandafter\foreach\expandafter{\pgffor@body}%
    \ifpgfutil@in@%
        \expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter%
    {\pgffor@body{#1}}%
    \else%
        \expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter%
    {\pgffor@body#1}%
    \fi%
  \pgffor@iterate%
}

\def\pgffor@collectsemicolon{%
  \let\pgffor@next=\pgffor@collectnormalsemicolon%
  \ifnum\the\catcode`\;=\active\relax%
    \let\pgffor@next=\pgffor@collectactivesemicolon%
  \fi%
  \pgffor@next%
}

\def\pgffor@collectnormalsemicolon#1;{%
  \expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter{\pgffor@body#1;}%
  \pgffor@iterate%
}

{
  \catcode`\;=\active

  \gdef\pgffor@collectactivesemicolon#1;{%
    \expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter{\pgffor@body#1;}%
    \pgffor@iterate%
  }
}

\def\pgffor@iterate{%
  \let\pgffor@last=\pgfutil@empty%
  \let\pgffor@prevlast=\pgfutil@empty%
  \let\pgffor@dotsend=\pgfutil@empty%
  \let\pgffor@dots@pre=\pgfutil@empty%
  \let\pgffor@dots@post=\pgfutil@empty%
  \expandafter\pgffor@scan\pgffor@values}

\def\pgffor@stop{\pgffor@stop}%
\def\pgffor@dots{...}%

\def\pgffor@scan{\pgfutil@ifnextchar({\pgffor@scanround}{\pgffor@scanone}}
\def\pgffor@scanround(#1)#2,{\def\pgffor@value{(#1)#2}\pgffor@scanned}
\def\pgffor@scanone#1,{\def\pgffor@value{#1}\pgffor@scanned}


\newif\ifpgffor@dots@in@
\def\pgffor@dots@in@#1...#2#3\pgffor@stop{%
    \ifx\pgffor@dots@@#2%
        \pgffor@dots@in@false%
    \else%
        \pgffor@dots@in@true%
    \fi%
}

\def\pgffor@dots@@{\pgffor@dots@@}

\def\pgffor@scanned{%
  \ifx\pgffor@value\pgffor@stop%
    \let\pgffor@next=\pgffor@after%
  \else%
    \expandafter\pgffor@dots@in@\pgffor@value\pgffor@dots@...\pgffor@dots@@\pgffor@stop%
    \ifpgffor@dots@in@%
      \let\pgffor@next=\pgffor@handledots%
    \else%
      \let\pgffor@next=\pgffor@handlevalue%
    \fi%
    \ifpgffor@continue%
    \else%
      \let\pgffor@next=\pgffor@scan%
    \fi%
  \fi%
  \pgffor@next}


\def\pgffor@after{%
  \global\pgffor@continuetrue%
  \pgffor@atendforeach%
  \pgffor@afterhook}

\def\pgffor@handlevalue{%
    \let\pgffor@prevlast=\pgffor@last%
  \let\pgffor@last=\pgffor@value%
  \pgffor@invokebody%
  \pgffor@scan%
}


\def\pgffor@invokebody{%
  \pgffor@begingroup%
    \expandafter\pgfutil@in@\expandafter/\expandafter{\pgffor@var}%
    \ifpgfutil@in@%
      \expandafter\def\expandafter\pgffor@valuerest\expandafter{\pgffor@value//\relax}%
      \expandafter\pgffor@multiassign\pgffor@var/\pgffor@stop/\pgffor@stop/\relax%
    \else%
      \expandafter\expandafter\expandafter\def\expandafter\pgffor@var\expandafter{\pgffor@value}%
    \fi%
    \ifx\pgffor@assign@once@code\pgfutil@empty%
    \else%
        \pgffor@assign@once@code%
    \fi%
    \ifx\pgffor@assign@before@code\pgfutil@empty%
    \else%
        \pgffor@assign@before@code%
    \fi%
    \expandafter\expandafter\expandafter\pgffor@reset@hooks\expandafter\pgffor@beginhook\expandafter\pgffor@body\pgffor@endhook%
    \ifx\pgffor@assign@after@code\pgfutil@empty%
    \else%
        \pgffor@assign@after@code%
    \fi%
  \pgffor@endgroup%
}


\def\pgffor@multiassign#1/#2/\relax{%
  \def\pgffor@currentvar{#1}%
  \def\pgffor@rest{#2}%
  \ifx\pgffor@currentvar\pgffor@stop%
    \let\pgffor@next=\relax%
  \else%
    \let\pgffor@next=\pgffor@multiassignrest%
  \fi%
  \pgffor@next%
}

\def\pgffor@multiassignrest{\expandafter\pgffor@multiassignfinal\pgffor@valuerest}
\def\pgffor@multiassignfinal#1/#2/\relax{%
    \def\pgffor@temp{#1}%
    \ifx\pgffor@currentvar\pgffor@mainvar%
        \ifpgffor@alphabeticsequence%
        \pgffor@makealphabetic\pgffor@temp%
    \fi%
  \fi%
  \def\pgffor@test{#2}%
  \ifx\pgffor@test\pgfutil@empty%
    \expandafter\def\expandafter\pgffor@valuerest\expandafter{\pgffor@temp//\relax}%
  \else%
    \def\pgffor@valuerest{#2/\relax}%
  \fi%
  \expandafter\expandafter\expandafter\def\expandafter\pgffor@currentvar\expandafter{\pgffor@temp}%
  \expandafter\pgffor@multiassign\pgffor@rest/\relax%
}

\def\pgffor@gobblespaces#1{\pgfutil@ifnextchar x{#1}{#1}}

\def\pgffor@handledots{%
    \pgffor@gobblespaces{\expandafter\pgffor@@handledots\pgffor@value\pgffor@@stop}%
}

\newif\ifpgffor@context

\def\pgffor@@handledots#1...#2\pgffor@@stop{%
    \def\pgffor@dots@pre{#1}%
    \def\pgffor@dots@post{#2}%
    \def\pgffor@dots@stripcontext#1##1#2\pgffor@@stop{\def\pgffor@dotsvalue{##1}}%
    \pgffor@contexttrue%
    \ifx\pgffor@dots@pre\pgfutil@empty%
        \ifx\pgffor@dots@post\pgfutil@empty%
            \pgffor@contextfalse%
            \def\pgffor@dots@stripcontext##1\pgffor@@stop{\def\pgffor@dotsvalue{##1}}%
        \fi%
    \fi%
    \pgffor@gobblespaces{\pgffor@dotsscanend}%
}

\def\pgffor@dots@value@process#1{%
    \expandafter\pgffor@dots@stripcontext#1\pgffor@@stop%
    \expandafter\pgffor@dots@charcheck\pgffor@dotsvalue\pgffor@@stop%
  \ifpgffor@alphabeticsequence
  \else
    \ifpgffor@assign@parse
      \begingroup
      \pgfkeys{/pgf/fpu/false/.try}%
      \pgfmathparse{\pgffor@dotsvalue}%
      \pgfmath@smuggleone\pgfmathresult
      \endgroup
      \let\pgffor@dotsvalue=\pgfmathresult
    \fi
  \fi
  \let#1=\pgffor@dotsvalue%
}

\def\pgffor@dotsscanend#1,{%
    \pgffor@alphabeticsequencefalse%
    \def\pgffor@dotsend{#1}%
    \pgffor@dots@value@process{\pgffor@dotsend}%
  \pgffor@dots@value@process{\pgffor@last}%
  \ifx\pgffor@prevlast\pgfutil@empty%
    \ifdim\pgffor@dotsend pt>\pgffor@last pt%
      \pgffor@skip=1pt%
    \else%
      \pgffor@skip=-1pt%
    \fi%
  \else%
    \pgffor@dots@value@process{\pgffor@prevlast}%
    \pgffor@skip=\pgffor@last pt%
    \pgffor@iter=\pgffor@prevlast pt%
    \advance\pgffor@skip by-\pgffor@iter%
  \fi%
  \pgffor@iter=\pgffor@last pt%
  \pgffor@loop%
}

\def\pgffor@loop{%
  \advance\pgffor@iter by\pgffor@skip%
  \let\pgffor@next=\pgffor@doloop%
  \ifdim\pgffor@skip<0pt%
    \ifdim\pgffor@iter<\pgffor@dotsend pt%
      \let\pgffor@next=\pgffor@endloop%
    \fi%
  \else%
    \ifdim\pgffor@iter>\pgffor@dotsend pt%
      \let\pgffor@next=\pgffor@endloop%
    \fi%
  \fi%
  \ifpgffor@continue%
  \else%
    \let\pgffor@next=\pgffor@endloop%
  \fi%
  \pgffor@next%
}

\def\pgffor@endloop{%
    \pgffor@alphabeticsequencefalse%
    \pgffor@scan%
}

{\catcode`\p=12\catcode`\t=12\gdef\Pgffor@geT#1pt{#1}}

\def\pgffor@doloop{%
  \pgffor@begingroup
    \edef\pgffor@temp{\expandafter\Pgffor@geT\the\pgffor@iter}%
    \edef\pgffor@incheck{{.0/}{\pgffor@temp/}}%
    \expandafter\pgfutil@in@\pgffor@incheck%
    \ifpgfutil@in@%
      \expandafter\pgffor@strip\pgffor@temp%
    \fi%
    \expandafter\pgfutil@in@\expandafter/\expandafter{\pgffor@var}%
    \ifpgfutil@in@%
      \expandafter\def\expandafter\pgffor@valuerest\expandafter{\pgffor@temp//\relax}%
      \expandafter\pgffor@multiassign\pgffor@var/\pgffor@stop/\pgffor@stop/\relax%
    \else%
        \ifpgffor@alphabeticsequence%
            \pgffor@makealphabetic\pgffor@temp%
            \expandafter\let\pgffor@var=\pgffor@temp%
        \else%
            \expandafter\expandafter\expandafter\def\expandafter\pgffor@var\expandafter{\pgffor@temp}%
      \fi%
    \fi%
    \ifpgffor@context%
      \let\pgffor@temp=\pgffor@dots@pre%
        \expandafter\pgfutil@append@macrotomacro\expandafter%
            {\expandafter\pgffor@temp\expandafter}\expandafter{\pgffor@var}%
        \expandafter\pgfutil@append@macrotomacro\expandafter%
            {\expandafter\pgffor@temp\expandafter}\expandafter{\pgffor@dots@post}%
        \expandafter\let\pgffor@var=\pgffor@temp%
      \fi%
      \ifx\pgffor@assign@before@code\pgfutil@empty%
    \else%
        \pgffor@assign@before@code%
    \fi%
    \expandafter\expandafter\expandafter\pgffor@reset@hooks\expandafter\pgffor@beginhook\expandafter\pgffor@body\pgffor@endhook%
      \ifx\pgffor@assign@after@code\pgfutil@empty%
    \else%
        \pgffor@assign@after@code%
    \fi%
  \pgffor@endgroup%
  \pgffor@loop%
}

\def\pgffor@strip#1.0{\def\pgffor@temp{#1}}

\def\breakforeach{\global\pgffor@continuefalse}

\def\pgffor@gobbletil@pgffor@@stop#1\pgffor@@stop{}


\newif\ifpgffor@registeriscount

\def\pgffor@ifcsregister#1{%
    \expandafter\pgffor@@ifcsregister\meaning#1\pgffor@stop}

\def\pgffor@@ifcsregister#1#2#3#4#5\pgffor@stop{%
    \if#1m%
        \pgffor@registeriscountfalse%
        \let\pgffor@csnext=\pgfutil@secondoftwo%
    \else%
        \if#1u%
            \let\pgffor@csnext=\pgfutil@secondoftwo%
            \pgffor@registeriscountfalse%
        \else%
            \let\pgffor@csnext=\pgfutil@firstoftwo%
            \if#4u%
                \pgffor@registeriscounttrue%
            \else%
                \pgffor@registeriscountfalse%
                \let\pgffor@csnext=\pgfutil@firstoftwo%
            \fi%
        \fi%
    \fi%
    \pgffor@csnext}

\newif\ifpgffor@alphabeticsequence

\def\pgffor@dots@charcheck#1\pgffor@@stop{%
  \edef\pgffor@dots@charcheck@temp{#1}%
  \expandafter\expandafter\expandafter\pgffor@@dotscharcheck\expandafter\meaning\pgffor@dots@charcheck@temp\pgffor@@stop%
}
\def\pgffor@@dotscharcheck#1#2\pgffor@@stop{%
    \if#1t%
    \afterassignment\pgffor@gobbletil@pgffor@@stop%
      \expandafter\chardef\expandafter\pgffor@char\expandafter=\expandafter`\pgffor@dots@charcheck@temp\relax\pgffor@@stop%
      \edef\pgffor@char{\the\pgffor@char}%
      \ifnum\pgffor@char>64\relax%
        \ifnum\pgffor@char<91\relax%
          \let\pgffor@dotsvalue=\pgffor@char%
          \pgffor@alphabeticsequencetrue%
        \else%
          \ifnum\pgffor@char>96\relax%
            \ifnum\pgffor@char<123\relax%
              \let\pgffor@dotsvalue=\pgffor@char%
              \pgffor@alphabeticsequencetrue%
            \fi%
          \fi%
        \fi%
      \fi%
    \fi%
}

\def\pgffor@makealphabetic#1{%
    \pgfutil@tempcnta=#1\relax%
    \ifnum\pgfutil@tempcnta>95\relax%
        \advance\pgfutil@tempcnta by-96\relax%
        \edef#1{\pgffor@alpha\pgfutil@tempcnta}%
    \else%
        \advance\pgfutil@tempcnta by-64 %
        \edef#1{\pgffor@Alpha\pgfutil@tempcnta}%
    \fi%
}

\def\pgffor@Alpha#1{%
    \ifcase#1\relax\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M%
    \or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else?\fi%
}

\def\pgffor@alpha#1{%
    \ifcase#1\relax\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m%
    \or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else?\fi%
}

\newtoks\pgffor@toks

\def\pgffor@addcstotoks#1{%
    \expandafter\def\expandafter\pgffor@tokstemp\expandafter{\expandafter\def\expandafter#1\expandafter{#1}}%
    \pgffor@@addcstotoks}

\def\pgffor@addregtotoks#1{%
    \expandafter\def\expandafter\pgffor@tokstemp\expandafter{\expandafter#1\expandafter=\the#1}%
    \pgffor@@addcstotoks}

\def\pgffor@addiftotoks#1{%
    \begingroup%
        \escapechar=-1\relax%
            \expandafter\pgffor@@addiftotoks\string#1\pgffor@stop}
\def\pgffor@@addiftotoks#1#2#3#4\pgffor@stop{%
    \endgroup
    \csname if#3#4\endcsname%
        \expandafter\def\expandafter\pgffor@tokstemp\expandafter{\csname#3#4true\endcsname}%
    \else%
        \expandafter\def\expandafter\pgffor@tokstemp\expandafter{\csname#3#4false\endcsname}%
    \fi%
    \pgffor@@addcstotoks%
}

\def\pgffor@@addcstotoks{%
    \expandafter\expandafter\expandafter\pgffor@toks\expandafter\expandafter\expandafter=%
    \expandafter\expandafter\expandafter{\expandafter\pgffor@tokstemp\the\pgffor@toks}%
}


\def\pgffor@atbeginforeach{%
    \begingroup%
}

\def\pgffor@atendforeach{%
        \global\edef\pgffor@remember@expanded{\pgffor@remember@code}%
        \ifx\pgffor@remember@expanded\pgfutil@empty%
        \else%
          \pgffor@remember@expanded%
          \global\let\pgffor@remember@expanded=\pgfutil@empty%
        \fi%
    \endgroup%
}
\def\pgffor@default@begingroup{%
    \begingroup%
}

\let\pgffor@remember@once@expanded=\pgfutil@empty
\let\pgffor@remember@expanded=\pgfutil@empty

\def\pgffor@default@endgroup{%
   \ifx\pgffor@remember@once@code\pgfutil@empty
   \else
     \xdef\pgffor@remember@once@expanded{\pgffor@remember@once@code}%
   \fi
   \ifx\pgffor@remember@code\pgfutil@empty
   \else
     \xdef\pgffor@remember@expanded{\pgffor@remember@code}%
   \fi
 \endgroup
 \ifx\pgffor@remember@once@expanded\pgfutil@empty
 \else
   \pgffor@remember@once@expanded%
   \global\let\pgffor@remember@once@expanded=\pgfutil@empty
 \fi
 \ifx\pgffor@assign@once@code\pgfutil@empty
 \else
   \global\let\pgffor@assign@once@code=\pgfutil@empty
 \fi
 \ifx\pgffor@remember@expanded\pgfutil@empty
 \else
   \pgffor@remember@expanded%
   \global\let\pgffor@remember@expanded=\pgfutil@empty
 \fi
}

\let\pgffor@begingroup=\pgffor@default@begingroup
\let\pgffor@endgroup=\pgffor@default@endgroup


\def\pgffor@stack@begingroup{%
    \pgffor@toks={}%
    \pgffor@addcstotoks{\pgffor@mainvar}%
    \pgffor@addcstotoks{\pgffor@var}%
    \pgffor@addcstotoks{\pgffor@body}%
    \pgffor@addcstotoks{\pgffor@last}%
    \pgffor@addcstotoks{\pgffor@prevlast}%
    \pgffor@addcstotoks{\pgffor@dotsend}%
    \pgffor@addcstotoks{\pgffor@assign@before@code}%
    \pgffor@addcstotoks{\pgffor@assign@after@code}%
    \pgffor@addcstotoks{\pgffor@remember@code}%
    \pgffor@addcstotoks{\pgffor@remember@once@code}%
    \pgffor@addcstotoks{\pgffor@dots@pre}%
    \pgffor@addcstotoks{\pgffor@dots@post}%
    \pgffor@addregtotoks{\pgffor@iter}%
    \pgffor@addregtotoks{\pgffor@skip}%
    \pgffor@addiftotoks{\ifpgffor@alphabeticsequence}%
    \pgffor@addiftotoks{\ifpgffor@context}%
    \expandafter\pgffor@stackpush\expandafter{\the\pgffor@toks}%
}

\def\pgffor@stack@endgroup{\pgffor@stackpop}


\newif\ifpgffor@assign@evaluate
\newif\ifpgffor@assign@once
\newif\ifpgffor@assign@parse

\pgfkeys{/pgf/foreach/.cd,
    var/.code=\pgffor@var@add#1\pgffor@stop,
    scope iterations/.code={
        \csname if#1\endcsname%
            \let\pgffor@begingroup=\pgffor@default@begingroup%
            \let\pgffor@endgroup=\pgffor@default@endgroup%
        \else%
            \let\pgffor@begingroup=\pgffor@stack@begingroup%
            \let\pgffor@endgroup=\pgffor@stack@endgroup%
        \fi%
    },
    evaluate/.code=\pgffor@assign@evaluatetrue\pgffor@assign@oncefalse\pgffor@assign@parse{#1},%
    assign/.code=\pgffor@assign@evaluatefalse\pgffor@assign@oncefalse\pgffor@assign@parse{#1},%
    evaluate once/.code=\pgffor@assign@evaluatetrue\pgffor@assign@oncetrue\pgffor@assign@parse{#1},%
    assign once/.code=\pgffor@assign@evaluatefalse\pgffor@assign@oncetrue\pgffor@assign@parse{#1},%
    remember/.code=\pgffor@remember@parse{#1},%
    count/.code=\pgffor@count@parse#1\pgffor@stop,
    parse/.is if=pgffor@assign@parse,
    parse/.default=false,
    expand list/.is if=pgffor@expand@list@,
    expand list/.default=true,
    expand list=false,
}

\def\pgffor@assign@parse#1{%
    \pgfutil@in@;{#1}%
    \ifpgfutil@in@%
    \else%
        \pgfutil@in@={#1}%
    \fi%
    \ifpgfutil@in@%
        \pgffor@assign@@parse#1;\pgffor@stop;%
    \else%
        \pgffor@assign@parse@old#1\pgffor@stop%
    \fi%
}

\def\pgffor@stop{\pgffor@stop}
\def\pgffor@assign@@parse#1;{%
    \def\pgffor@test{#1}%
    \ifx\pgffor@test\pgffor@stop%
        \let\pgffor@next=\relax%
    \else%
        \let\pgffor@next=\pgffor@assign@@parse%
        \ifx\pgffor@test\pgfutil@empty%
        \else%
            \pgfutil@in@={#1}%
            \ifpgfutil@in@%
                \pgffor@assign@@@parse#1\pgffor@stop%
            \else%
                \pgffor@assign@@@parse#1=#1\pgffor@stop%
            \fi%
        \fi%
    \fi%
    \pgffor@next}

\def\pgffor@assign@@@parse#1=#2\pgffor@stop{%
    \ifpgffor@assign@evaluate%
        \ifpgffor@assign@once%
            \pgfutil@append@tomacro{\pgffor@assign@once@code}{\pgfmathparse{#2}\let#1=\pgfmathresult}%
            \pgfutil@append@tomacro{\pgffor@remember@once@code}{\noexpand\def\noexpand#1{#2}}%
        \else
            \pgfutil@append@tomacro{\pgffor@assign@before@code}{\pgfmathparse{#2}\let#1=\pgfmathresult}%
        \fi%
    \else%
        \ifpgffor@assign@once%
            \pgfutil@append@tomacro{\pgffor@assign@once@code}{\def#1{#2}}%
            \pgfutil@append@tomacro{\pgffor@remember@once@code}{\noexpand\def\noexpand#1{#2}}%
        \else
            \pgfutil@append@tomacro{\pgffor@assign@before@code}{\def#1{#2}}%
        \fi%
    \fi%
}

\def\pgffor@assign@parse@old#1#2\pgffor@stop{%
    \pgffor@assign@@parse@old#2\pgffor@stop as#1using #1\pgffor@@stop}

\def\pgffor@assign@@parse@old#1as#2#3\pgffor@@stop{%
    \pgffor@assign@@@parse@old{#2}#1#3\pgffor@stop\pgffor@@stop}

\def\pgffor@assign@@@parse@old#1#2using #3\pgffor@stop#4\pgffor@@stop{%
    \pgffor@assign@@@parse#1=#3\pgffor@stop}



\def\pgffor@remember@parse#1{%
    \pgfutil@in@ a{#1}%
    \ifpgfutil@in@%
        \pgffor@remember@parse@old#1\pgffor@stop%
    \else%
        \pgffor@remember@@parse#1;\pgffor@stop;%
    \fi%
}

\def\pgffor@remember@@parse#1;{%
    \def\pgffor@test{#1}%
    \ifx\pgffor@test\pgffor@stop%
        \let\pgffor@next=\relax%
    \else%
        \let\pgffor@next=\pgffor@remember@@parse%
        \ifx\pgffor@test\pgfutil@empty%
        \else%
            \pgfutil@in@={#1}%
            \ifpgfutil@in@%
                \pgffor@remember@@@parse#1\pgffor@stop%
            \else%
                \pgffor@ifcsregister{#1}{%
                    \pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand#1=\the#1\noexpand\relax}%
                }%
                {%
                    \pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand\def\noexpand#1{#1}}%
                }%
            \fi%
        \fi%
    \fi%
    \pgffor@next%
}

\def\pgffor@remember@@@parse#1=#2\pgffor@stop{%
    \pgffor@ifcsregister{#2}{%
        \pgfutil@append@tomacro{\pgffor@assign@after@code}{\expandafter\def\expandafter#1\expandafter{\the#2}}%
        \pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand\def\noexpand#1{#1}}%
    }%
    {%
        \pgfutil@append@tomacro{\pgffor@assign@after@code}{\expandafter\def\expandafter#1\expandafter{#2}}%
        \pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand\def\noexpand#1{#1}}%
    }%
}

\def\pgffor@remember@parse@old#1#2\pgffor@stop{%
    \pgffor@remember@@parse@old#1#2\pgffor@stop as#1(initially 0)\pgffor@@stop}

\def\pgffor@remember@@parse@old#1#2as#3#4\pgffor@@stop{%
    \pgffor@remember@@@parse@old{#1}{#3}#2#4\pgffor@stop\pgffor@@stop}

\def\pgffor@remember@@@parse@old#1#2#3(initially #4)#5\pgffor@stop#6\pgffor@@stop{%
    \pgfutil@append@tomacro{\pgffor@assign@after@code}{\edef#2{#1}}%
    \pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand\def\noexpand#2{#2}}%
    \pgfutil@append@tomacro{\pgffor@assign@once@code}{\def#2{#4}}%
}

\def\pgffor@count@parse#1#2\pgffor@stop{%
    \pgffor@count@@parse#1#2\pgffor@stop from 1\pgffor@stop\pgffor@@stop}

\def\pgffor@count@@parse#1#2from#3\pgffor@stop#4\pgffor@@stop{%
    \pgfutil@append@tomacro\pgffor@remember@code{\noexpand\def\noexpand#1{#1}}%
    \pgfutil@append@tomacro\pgffor@assign@before@code{\pgfmathparse{int(#1+1)}\let#1=\pgfmathresult}%
    \pgfmathparse{int(#3-1)}\let#1=\pgfmathresult%
}


\def\pgfutil@append@macrotomacro#1#2{%
    \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
        #1\expandafter\expandafter\expandafter{\expandafter#1#2}}

\def\pgfutil@append@tomacro#1#2{%
    \expandafter\def\expandafter#1\expandafter{#1#2}}


\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgffor.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfkeys.code.tex ====




\ifx\pgfkeysloaded\undefined
  \let\pgfkeysloaded=\relax
\else
  \expandafter\endinput
\fi


\def\pgfkeys@empty{}
\long\def\pgfkeys@firstoftwo#1#2{#1}
\long\def\pgfkeys@secondoftwo#1#2{#2}
\long\def\pgfkeys@ifcsname#1{%
  \ifcsname#1\endcsname
    \expandafter\pgfkeys@firstoftwo
  \else
    \expandafter\pgfkeys@secondoftwo
  \fi
}


\ifx\PackageError\undefined
  \def\pgfkeys@error#1{\errmessage{Package pgfkeys Error: #1}}%
\else
  \def\pgfkeys@error#1{\PackageError{pgfkeys}{#1}{}}%
\fi

\ifx\eTeXrevision\undefined%
  \pgfkeys@error{PGF requires etex in extended mode}%
  \csname @@end\expandafter\endcsname\expandafter\end%
\fi

\ifnum\eTeXversion<2
  \pgfkeys@error{PGF requires etex version 2}%
  \csname @@end\expandafter\endcsname\expandafter\end%
\fi


\ifx\contextversion\undefined
  \let\pgfkeys@expanded   \expanded
  \let\pgfkeys@unexpanded \unexpanded
\else
  \let\pgfkeys@expanded   \normalexpanded
  \let\pgfkeys@unexpanded \normalunexpanded
\fi

\begingroup
  \edef\pgfkeys@tmpa{\string\expanded}
  \edef\pgfkeys@tmpb{\meaning\pgfkeys@expanded}
  \expandafter
\endgroup
\ifx\pgfkeys@tmpa\pgfkeys@tmpb
\else
  \pgfkeys@error{PGF requires the \noexpand\expanded primitive}
  \csname @@end\expandafter\endcsname\expandafter\end%
\fi



\long\def\pgfkeyssetvalue#1#2{%
  \pgfkeys@temptoks{#2}\expandafter\edef\csname pgfk@#1\endcsname{\the\pgfkeys@temptoks}%
}

\long\def\pgfkeyssetevalue#1#2{%
  \expandafter\edef\csname pgfk@#1\endcsname
  {\pgfkeys@unexpanded\expandafter{\pgfkeys@expanded{#2}}}%
}


\long\def\pgfkeysaddvalue#1#2#3{%
  {%
    \toks0{#2}%
    \pgfkeysifdefined{#1}
    {\pgfkeys@temptoks\expandafter\expandafter\expandafter{\csname pgfk@#1\endcsname}}%
    {\pgfkeys@temptoks{}}%
    \toks1{#3}%
    \xdef\pgfkeys@global@temp{\the\toks0 \the\pgfkeys@temptoks \the\toks1}%
  }%
  \pgfkeyslet{#1}\pgfkeys@global@temp%
}




\long\def\pgfkeyslet#1#2{%
  \expandafter\let\csname pgfk@#1\endcsname#2%
}



\long\def\pgfkeysgetvalue#1#2{%
  \pgfkeys@ifcsname{pgfk@#1}%
    {\expandafter\let\expandafter#2\csname pgfk@#1\endcsname}%
    {\let#2\relax}}




\let\pgfkeys@relax\relax
\long\def\pgfkeysvalueof#1{\csname\pgfkeys@ifcsname{pgfk@#1}{pgfk@#1}{pgfkeys@relax}\endcsname}




\long\def\pgfkeysifdefined#1{%
  \ifcsname pgfk@#1\endcsname
    \expandafter\pgfkeys@firstoftwo
  \else
    \expandafter\pgfkeys@secondoftwo
  \fi
}

\long\def\pgfkeysifassignable#1#2#3{%
  \pgfkeysifdefined{#1}%
    {#2}
  {\pgfkeysifdefined{#1/.@cmd}%
    {#2}%
    {#3}}%
}%




\newtoks\pgfkeys@pathtoks
\def\pgfkeyscurrentpath{\the\pgfkeys@pathtoks}
\newtoks\pgfkeys@temptoks

\def\pgfkeys@root{/}
\let\pgfkeysdefaultpath\pgfkeys@root

\def\pgfkeys{\expandafter\pgfkeys@@set\expandafter{\pgfkeysdefaultpath}}%
\long\def\pgfkeys@@set#1#2{%
  \let\pgfkeysdefaultpath\pgfkeys@root%
  \pgfkeys@parse#2,\pgfkeys@mainstop%
  \def\pgfkeysdefaultpath{#1}}

\def\pgfkeys@parse{\futurelet\pgfkeys@possiblerelax\pgfkeys@parse@main}
\def\pgfkeys@parse@main{%
  \ifx\pgfkeys@possiblerelax\pgfkeys@mainstop%
    \expandafter\pgfkeys@cleanup%
  \else%
    \expandafter\pgfkeys@normal%
  \fi%
}
\newif\ifpgfkeys@syntax@handlers
\def\pgfkeys@normal{%
  \ifpgfkeys@syntax@handlers%
    \expandafter\pgfkeys@syntax@handlers%
  \else%
    \expandafter\pgfkeys@@normal%
  \fi%
}
\def\pgfkeys@syntax@handlers{\pgf@keys@utilifnextchar\relax\pgfkeys@syntax@@handlers\pgfkeys@syntax@@handlers}%
\def\pgfkeys@syntax@@handlers{\futurelet\pgfkeys@first@char\pgfkeys@syntax@handlers@test}
\def\pgfkeys@syntax@handlers@test{%
  \pgfkeysgetvalue{/handlers/first char syntax/\meaning\pgfkeys@first@char}\pgfkeys@the@handler%
  \ifx\pgfkeys@the@handler\relax%
    \expandafter\pgfkeys@@normal%
  \else%
    \expandafter\pgfkeys@use@handler%
  \fi%
}
\long\def\pgfkeys@use@handler#1,{%
  \pgfkeys@the@handler{#1}%
  \pgfkeys@parse%
}

\long\def\pgfkeys@@normal#1,{%
  \pgfkeys@unpack#1=\pgfkeysnovalue=\pgfkeys@stop%
  \pgfkeys@parse%
}
\def\pgfkeys@cleanup\pgfkeys@mainstop{}

\def\pgfkeys@mainstop{\pgfkeys@mainstop} %
\def\pgfkeys@novalue{}
\def\pgfkeysnovalue{\pgfkeys@novalue} %
\def\pgfkeysnovalue@text{\pgfkeysnovalue}
\def\pgfkeysvaluerequired{\pgfkeysvaluerequired} %

\long\def\pgfkeys@unpack#1=#2=#3\pgfkeys@stop{%
  \pgfkeys@spdef\pgfkeyscurrentkey{#1}%
  \edef\pgfkeyscurrentkey{\pgfkeyscurrentkey}%
  \ifx\pgfkeyscurrentkey\pgfkeys@empty%
  \else%
    \pgfkeys@add@path@as@needed%
    \pgfkeys@spdef\pgfkeyscurrentvalue{#2}%
    \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
      \pgfkeysifdefined{\pgfkeyscurrentkey/.@def}%
      {\pgfkeysgetvalue{\pgfkeyscurrentkey/.@def}{\pgfkeyscurrentvalue}}
      {}%
    \fi%
    \ifx\pgfkeyscurrentvalue\pgfkeysvaluerequired%
      \def\pgf@marshal{\pgfkeysvalueof{/errors/value required/.@cmd}}%
      \expandafter\pgf@marshal\expandafter{\pgfkeyscurrentkey}{}\pgfeov%
    \else%
      \pgfkeys@case@one%
    \fi%
  \fi}

\def\pgfkeys@case@one{%
  \pgfkeysifdefined{\pgfkeyscurrentkey/.@cmd}%
  {\pgfkeysgetvalue{\pgfkeyscurrentkey/.@cmd}{\pgfkeys@code}%
    \ifx\pgfkeys@code\relax\expandafter\pgfkeys@firstoftwo\else\expandafter\pgfkeys@secondoftwo\fi
    {\pgfkeys@unknown}%
    {\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov}}
  {\pgfkeys@case@two}%
}

\def\pgfkeys@case@two{%
  \pgfkeysifdefined{\pgfkeyscurrentkey}%
  {\pgfkeys@case@two@extern}%
  {\pgfkeys@case@three}%
}

\def\pgfkeys@case@two@extern{%
  \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
    \pgfkeysvalueof{\pgfkeyscurrentkey}%
  \else%
    \pgfkeyslet{\pgfkeyscurrentkey}\pgfkeyscurrentvalue%
  \fi%
}


\def\pgfkeys@case@three{%
  \pgfkeys@split@path%
  \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}%
  {\pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
    \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov}
  {\pgfkeys@unknown}%
}
\let\pgfkeys@case@three@handleall=\pgfkeys@case@three
\def\pgfkeys@case@three@handle@restricted{%
  \pgfkeys@split@path%
  \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{%
    \pgfkeys@ifexecutehandler{%
    \pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
      \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
  }{%
    \let\pgfkeys@tempa=\pgfkeyscurrentkey
    \let\pgfkeys@tempb=\pgfkeyscurrentname
      \edef\pgfkeyscurrentkey{\pgfkeyscurrentpath}%
      \pgfkeys@split@path%
    \let\pgfkeyscurrentkey=\pgfkeys@tempa
    \edef\pgfkeyscurrentname{\pgfkeyscurrentname/\pgfkeys@tempb}%
      \pgfkeys@unknown
  }%
  }{%
    \pgfkeys@unknown
  }%
}

\def\pgfkeys@ifexecutehandler#1#2{#1}%
\let\pgfkeys@ifexecutehandler@handleall=\pgfkeys@ifexecutehandler
\def\pgfkeys@ifexecutehandler@handleonlyexisting#1#2{%
  \pgfkeys@ifcsname{pgfk@excpt@\pgfkeyscurrentname}{%
     #1%
  }{%
     \pgfkeysifdefined{\pgfkeyscurrentpath}{#1}{%
    \pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}{#1}{#2}%
     }{}%
  }%
}%
\def\pgfkeys@ifexecutehandler@handlefullorexisting#1#2{%
  \ifpgfkeysaddeddefaultpath
    \pgfkeys@ifcsname{pgfk@excpt@\pgfkeyscurrentname}{%
       #1%
    }{%
       \pgfkeysifdefined{\pgfkeyscurrentpath}{%
         #1%
       }{%
         \pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}{%
           #1%
         }{%
           #2%
         }%
       }%
    }%
  \else
    #1%
  \fi
}%
\def\pgfkeysaddhandleonlyexistingexception#1{\expandafter\def\csname pgfk@excpt@#1\endcsname{1}}%

\def\pgfkeys@unknown{%
  \pgfkeysifdefined{\pgfkeyscurrentpath/.unknown/.@cmd}%
  {%
    \pgfkeysgetvalue{\pgfkeyscurrentpath/.unknown/.@cmd}{\pgfkeys@code}%
    \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov}
  {%
    \pgfkeysgetvalue{/handlers/.unknown/.@cmd}{\pgfkeys@code}%
    \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov%
  }%
}


\long\def\pgfkey@argumentisspace#1{%
  \long\def\pgfkeys@spdef##1##2{%
    \futurelet\pgfkeys@possiblespace\pgfkeys@sp@a##2\pgfkeys@stop\pgfkeys@stop#1\pgfkeys@stop\relax##1}%
  \def\pgfkeys@sp@a{%
    \ifx\pgfkeys@possiblespace\pgfkeys@sptoken%
      \expandafter\pgfkeys@sp@b%
    \else%
      \expandafter\pgfkeys@sp@b\expandafter#1%
    \fi}%
  \long\def\pgfkeys@sp@b#1##1 \pgfkeys@stop{\pgfkeys@sp@c##1}%
}
\pgfkey@argumentisspace{ }
\long\def\pgfkeys@sp@c#1\pgfkeys@stop#2\relax#3{\pgfkeys@temptoks{#1}\edef#3{\the\pgfkeys@temptoks}}
{\def\:{\global\let\pgfkeys@sptoken= } \: }



\def\pgfkeys@add@path@as@needed{%
  \expandafter\futurelet\expandafter\pgfkeys@possibleslash\expandafter\pgfkeys@check@slash\pgfkeyscurrentkey\relax%
}
\newif\ifpgfkeysaddeddefaultpath
\def\pgfkeys@check@slash{%
  \ifx\pgfkeys@possibleslash/%
    \expandafter\pgfkeys@nevermind%
  \else%
    \expandafter\pgfkeys@addpath%
  \fi%
}

\def\pgfkeys@nevermind#1\relax{%
  \pgfkeysaddeddefaultpathfalse
  \let\pgfkeyscurrentkeyRAW\pgfkeyscurrentkey
}
\def\pgfkeys@addpath#1\relax{%
  \pgfkeysaddeddefaultpathtrue
  \def\pgfkeyscurrentkeyRAW{#1}%
  \edef\pgfkeyscurrentkey{\pgfkeysdefaultpath#1}%
}


\def\pgfkeys@split@path{%
  \pgfkeys@pathtoks{}%
  \expandafter\pgfkeys@splitter\pgfkeyscurrentkey//%
}
\def\pgfkeys@splitter#1/#2/{%
  \def\pgfkeys@temp{#2}%
  \ifx\pgfkeys@temp\pgfkeys@empty%
    \def\pgfkeyscurrentname{#1}%
    \expandafter\pgfkeys@gobbletoslash%
  \else%
    \expandafter\pgfkeys@pathtoks\expandafter{\the\pgfkeys@pathtoks#1/}%
  \fi%
  \pgfkeys@splitter#2/%
}
\def\pgfkeys@gobbletoslash\pgfkeys@splitter/{%
  \if\relax\detokenize\expandafter{\the\pgfkeys@pathtoks}\relax\else
    \expandafter\pgfkeys@remove@slash\the\pgfkeys@pathtoks\relax
  \fi
}%
\def\pgfkeys@remove@slash#1/\relax{\pgfkeys@pathtoks{#1}}




\def\pgfqkeys{\expandafter\pgfkeys@@qset\expandafter{\pgfkeysdefaultpath}}%
\long\def\pgfkeys@@qset#1#2#3{\def\pgfkeysdefaultpath{#2/}\pgfkeys@parse#3,\pgfkeys@mainstop\def\pgfkeysdefaultpath{#1}}



\long\def\pgfkeysalso#1{\pgfkeys@parse#1,\pgfkeys@mainstop}




\long\def\pgfqkeysalso#1#2{\def\pgfkeysdefaultpath{#1/}\pgfkeys@parse#2,\pgfkeys@mainstop}






\long\def\pgfkeysdef#1#2{%
  \long\def\pgfkeys@temp##1\pgfeov{#2}%
  \pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}%
  \pgfkeyssetvalue{#1/.@body}{#2}%
}
\long\def\pgfkeysedef#1#2{%
  \long\edef\pgfkeys@temp##1\pgfeov{#2}%
  \pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}%
  \pgfkeyssetevalue{#1/.@body}{#2}%
}



\long\def\pgfkeysdefargs#1#2#3{%
  \long\def\pgfkeys@temp#2\pgfeov{#3}%
  \pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}%
  \pgfkeyssetvalue{#1/.@args}{#2\pgfeov}%
  \pgfkeyssetvalue{#1/.@body}{#3}%
}

\long\def\pgfkeysedefargs#1#2#3{%
  \long\edef\pgfkeys@temp#2\pgfeov{#3}%
  \pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}%
  \pgfkeyssetvalue{#1/.@args}{#2\pgfeov}%
  \pgfkeyssetevalue{#1/.@body}{#3}%
}

\long\def\pgfkeysdefnargs#1#2#3{\pgfkeysdefnargs@{#1}{#2}{#3}{\def}{\pgfkeyssetvalue}}%
\long\def\pgfkeysedefnargs#1#2#3{\pgfkeysdefnargs@{#1}{#2}{#3}{\edef}{\pgfkeyssetevalue}}%
\long\def\pgfkeysdefnargs@#1#2#3#4#5{%
  \ifcase#2\relax
    \pgfkeyssetvalue{#1/.@args}{}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3##4}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6##7}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6##7##8}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6##7##8##9}%
  \else
    \pgfkeys@error{\string\pgfkeysdefnargs: expected  <= 9 arguments, got #2}%
  \fi
  \pgfkeysgetvalue{#1/.@args}\pgfkeys@tempargs
  \def\pgfkeys@temp{\expandafter\long\expandafter#4\csname pgfk@#1/.@@body\endcsname}%
  \expandafter\pgfkeys@temp\pgfkeys@tempargs{#3}%
  \edef\pgfkeys@tempargs{\noexpand\pgfkeysvalueof{#1/.@@body}}%
  \def\pgfkeys@temp{\pgfkeysdef{#1}}%
  \ifnum#2=1\relax
    \expandafter\pgfkeys@temp\expandafter{\pgfkeys@tempargs{##1}}%
  \else
    \expandafter\pgfkeys@temp\expandafter{\pgfkeys@tempargs##1}%
  \fi
  #5{#1/.@body}{#3}%
}


\pgfkeysdef{/handlers/.code}{\pgfkeysdef{\pgfkeyscurrentpath}{#1}}
\pgfkeysdef{/handlers/.code 2 args}{\pgfkeysdefargs{\pgfkeyscurrentpath}{##1##2}{#1}}
\pgfkeysdef{/handlers/.ecode}{\pgfkeysedef{\pgfkeyscurrentpath}{#1}}
\pgfkeysdef{/handlers/.ecode 2 args}{\pgfkeysedefargs{\pgfkeyscurrentpath}{##1##2}{#1}}
\pgfkeysdefnargs{/handlers/.code args}{2}{\pgfkeysdefargs{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeysdefnargs{/handlers/.ecode args}{2}{\pgfkeysedefargs{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeysdefnargs{/handlers/.code n args}{2}{\pgfkeysdefnargs{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeysdefnargs{/handlers/.ecode n args}{2}{\pgfkeysedefnargs{\pgfkeyscurrentpath}{#1}{#2}}


\pgfkeys{/handlers/.add code/.code 2 args=%
  \pgfkeysifdefined{\pgfkeyscurrentpath/.@args}%
  {%
  \pgfkeysaddvalue{\pgfkeyscurrentpath/.@body}{#1}{#2}%
  {%
    \pgfkeysgetvalue{\pgfkeyscurrentpath/.@args}{\pgfkeys@tempargs}%
    \pgfkeysgetvalue{\pgfkeyscurrentpath/.@body}{\pgfkeys@tempbody}%
    \def\pgfkeys@marshal{\expandafter\long\expandafter\gdef\expandafter\pgfkeys@global@temp\pgfkeys@tempargs}%
    \expandafter\pgfkeys@marshal\expandafter{\pgfkeys@tempbody}%
  }%
    \pgfkeysifdefined{\pgfkeyscurrentpath/.@@body}{%
    \pgfkeyslet{\pgfkeyscurrentpath/.@@body}{\pgfkeys@global@temp}%
  }{%
      \pgfkeyslet{\pgfkeyscurrentpath/.@cmd}{\pgfkeys@global@temp}%
  }%
  }%
  {%
    \edef\pgf@expanded@path{\pgfkeyscurrentpath}%
    {%
      \toks0{#1}%
      \pgfkeysifdefined{\pgf@expanded@path/.@cmd}%
      {\expandafter\expandafter\expandafter\pgfkeys@temptoks\expandafter\expandafter\expandafter{\csname pgfk@\pgf@expanded@path/.@body\endcsname}}%
      {\expandafter\pgfkeys@temptoks\expandafter{\expandafter\pgfkeyssetvalue\expandafter{\pgf@expanded@path}{##1}}}%
      \toks1{#2}%
      \xdef\pgfkeys@global@temp{\the\toks0 \the\pgfkeys@temptoks \the\toks1 }%
    }%
    \def\pgf@temp{\pgfkeyssetvalue{\pgf@expanded@path/.@body}}%
    \expandafter\pgf@temp\expandafter{\pgfkeys@global@temp}%
    \expandafter\long\expandafter\def\expandafter\pgfkeys@temp\expandafter##\expandafter1\expandafter\pgfeov\expandafter{\pgfkeys@global@temp}%
    \pgfkeyslet{\pgf@expanded@path/.@cmd}\pgfkeys@temp%
  }%
}
\pgfkeys{/handlers/.prefix code/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={#1}{}}}%
\pgfkeys{/handlers/.append code/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={}{#1}}}%



\pgfkeys{/handlers/.style/.code=\pgfkeys{\pgfkeyscurrentpath/.code=\pgfkeysalso{#1}}}
\pgfkeys{/handlers/.estyle/.code=\pgfkeys{\pgfkeyscurrentpath/.ecode=\noexpand\pgfkeysalso{#1}}}
\pgfkeys{/handlers/.style args/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.code args={#1}{\pgfkeysalso{#2}}}}
\pgfkeys{/handlers/.estyle args/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.ecode args={#1}{\noexpand\pgfkeysalso{#2}}}}
\pgfkeys{/handlers/.style 2 args/.code=\pgfkeys{\pgfkeyscurrentpath/.code 2 args=\pgfkeysalso{#1}}}
\pgfkeys{/handlers/.style n args/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.code n args={#1}{\pgfkeysalso{#2}}}}


\pgfkeys{/handlers/.add style/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.add code={\pgfkeysalso{#1}}{\pgfkeysalso{#2}}}}%
\pgfkeys{/handlers/.prefix style/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={\pgfkeysalso{#1}}{}}}%
\pgfkeys{/handlers/.append style/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={}{\pgfkeysalso{#1}}}}%



\pgfkeys{/handlers/.initial/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath}{#1}}
\pgfkeys{/handlers/.add/.code 2 args=\pgfkeysaddvalue{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeys{/handlers/.prefix/.code=\pgfkeysaddvalue{\pgfkeyscurrentpath}{#1}{}}
\pgfkeys{/handlers/.append/.code=\pgfkeysaddvalue{\pgfkeyscurrentpath}{}{#1}}
\pgfkeys{/handlers/.get/.code=\pgfkeysgetvalue{\pgfkeyscurrentpath}{#1}}
\pgfkeys{/handlers/.link/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath}{\pgfkeysvalueof{#1}}}



\pgfkeys{/handlers/.default/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath/.@def}{#1}}
\pgfkeys{/handlers/.value required/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath/.@def}{\pgfkeysvaluerequired}}
\pgfkeys{/handlers/.value forbidden/.code=\pgfkeys{\pgfkeyscurrentpath/.add code=%
{%
  \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
  \else%
    \def\pgf@marshal{\pgfkeysvalueof{/errors/value forbidden/.@cmd}}%
    \expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\pgfkeyscurrentkey\expandafter}\expandafter{\pgfkeyscurrentvalue}\pgfeov%
  \fi%
}{}}}



\pgfkeys{/handlers/.store in/.code=\pgfkeysalso{\pgfkeyscurrentpath/.code=\def#1{##1}}}
\pgfkeys{/handlers/.estore in/.code=\pgfkeysalso{\pgfkeyscurrentpath/.code=\edef#1{##1}}}

\pgfkeys{/handlers/.is if/.code=\pgfkeysalso{%
    \pgfkeyscurrentpath/.code=\pgfkeys@handle@boolean{#1}{##1},
    \pgfkeyscurrentpath/.default=true%
  }%
}
\def\pgfkeys@handle@boolean#1#2{%
  \pgfkeys@ifcsname{#1#2}{%
    \csname#1#2\endcsname%
  }{%
    \def\pgf@marshal{\pgfkeysvalueof{/errors/boolean expected/.@cmd}}%
    \expandafter\pgf@marshal\expandafter{\pgfkeyscurrentkey}{#2}\pgfeov%
  }%
}

\pgfkeys{/handlers/.is choice/.code=%
  \pgfkeys{%
    \pgfkeyscurrentpath/.cd,%
    .code=\def\pgfkeys@was@choice{##1}\expandafter\pgfkeysalso\expandafter{\pgfkeyscurrentkey/##1},
    .unknown/.code={%
      \def\pgf@marshal{\pgfkeysvalueof{/errors/unknown choice value/.@cmd}}%
      {\expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@pathtoks\expandafter}\expandafter{\pgfkeys@was@choice}\pgfeov}%
    }%
  }%
}



\pgfkeys{/handlers/.list/.code=%
  {%
    \ifx\foreach\@undefined%
      \pgfkeys@error{You need to load the pgffor package to use the .list key syntax.}%
    \fi%
    \def\pgf@keys@temp{}%
    \foreach \pgf@keys@key in{#1}%
    {\expandafter\expandafter\expandafter\gdef%
      \expandafter\expandafter\expandafter\pgf@keys@temp%
      \expandafter\expandafter\expandafter{\expandafter\pgf@keys@temp\expandafter{\pgf@keys@key}}}%
    \edef\pgf@keys@list@path{\pgfkeyscurrentpath}%
    \expandafter\expandafter\expandafter\pgf@keys@do@list%
    \expandafter\expandafter\expandafter{\expandafter\pgf@keys@list@path\expandafter}\pgf@keys@temp\pgf@stop%
  }%
}
\def\pgf@keys@do@list#1{\pgf@keys@utilifnextchar\bgroup{\pgf@keys@do@list@item{#1}}\pgf@keys@gobble}
\def\pgf@keys@do@list@item#1#2{\pgfkeysalso{#1={#2}}\pgf@keys@do@list{#1}}



\pgfkeys{/handlers/.forward to/.code=%
  \pgfkeys{\pgfkeyscurrentpath/.add code={}{\pgfkeys{#1={##1}}}}
}



\pgfkeys{/handlers/.show value/.code=\pgfkeysgetvalue{\pgfkeyscurrentpath}{\pgfkeysshower}\show\pgfkeysshower} %
\pgfkeys{/handlers/.show code/.code=\pgfkeysgetvalue{\pgfkeyscurrentpath/.@cmd}{\pgfkeysshower}\show\pgfkeysshower} %


\pgfkeys{/handlers/first char syntax/.is if=pgfkeys@syntax@handlers}


\def\pgfkeys@searchalso@prepare@unknown@handler#1{%
  \global\def\pgfkeys@global@temp##1\pgfeov{}%
  \pgfkeys@searchalso@parse#1,\pgfkeys@mainstop
  {%
    \toks0=\expandafter{\pgfkeys@global@temp##1\pgfeov}%
  \toks1={%
    \pgfkeysgetvalue{/handlers/.unknown/.@cmd}{\pgfkeys@code}%
    \expandafter\pgfkeys@code\pgfkeys@searchalso@temp@value\pgfeov
  }%
  \xdef\pgfkeys@global@temp{%
    \noexpand\def\noexpand\pgfkeys@searchalso@temp@value{####1}%
    \noexpand\ifpgfkeysaddeddefaultpath
      \noexpand\expandafter\noexpand\pgfkeys@firstoftwo
    \noexpand\else
      \noexpand\expandafter\noexpand\pgfkeys@secondoftwo
    \noexpand\fi{%
      \noexpand\pgfkeyssuccessfalse
      \noexpand\let\noexpand\pgfkeys@searchalso@name=\noexpand\pgfkeyscurrentkeyRAW
      \the\toks0 %
    }{%
      \the\toks1 %
    }%
  }%
  \expandafter\gdef\expandafter\pgfkeys@global@temp\expandafter##\expandafter1\expandafter\pgfeov\expandafter{\pgfkeys@global@temp}%
  }%
}%

\def\pgfkeys@searchalso@parse{\futurelet\pgfkeys@possiblerelax\pgfkeys@searchalso@parse@main}
\def\pgfkeys@searchalso@parse@main{%
  \ifx\pgfkeys@possiblerelax\pgfkeys@mainstop%
    \expandafter\pgfkeys@cleanup%
  \else%
    \expandafter\pgfkeys@searchalso@appendentry%
  \fi%
}
\def\pgfkeys@searchalso@appendentry#1,#2{%
  \def\pgfkeys@searchalso@nexttok{#2}%
  \pgfkeys@spdef\pgfkeys@temp{#1}%
  {%
    \toks0=\expandafter{\pgfkeys@global@temp##1\pgfeov}%
  \toks1=\expandafter{\pgfkeys@temp}%
  \xdef\pgfkeys@global@temp{%
    \the\toks0 %
    \noexpand\ifpgfkeyssuccess\noexpand\else
      \noexpand\pgfqkeys{\the\toks1 }{\noexpand\pgfkeys@searchalso@name
               \ifx\pgfkeys@searchalso@nexttok\pgfkeys@mainstop\else/.try\fi /.expand once=\noexpand\pgfkeys@searchalso@temp@value}%
    \noexpand\fi}%
  \expandafter\gdef\expandafter\pgfkeys@global@temp\expandafter##\expandafter1\expandafter\pgfeov\expandafter{\pgfkeys@global@temp}%
  }%
  \pgfkeys@searchalso@parse#2%
}
\pgfkeys{%
  /handlers/.is family/.code=\pgfkeys{\pgfkeyscurrentpath/.ecode=\edef\noexpand\pgfkeysdefaultpath{\pgfkeyscurrentpath/}},%
  /handlers/.cd/.code=\edef\pgfkeysdefaultpath{\pgfkeyscurrentpath/},%
  /handlers/.search also/.code={%
    \pgfkeys@searchalso@prepare@unknown@handler{#1}%
    \pgfkeyslet{\pgfkeyscurrentpath/.unknown/.@cmd}{\pgfkeys@global@temp}%
  }
}%



\pgfkeys{/handlers/.expand once/.code=\expandafter\pgfkeys@exp@call\expandafter{#1}}
\pgfkeys{/handlers/.expand twice/.code=\expandafter\expandafter\expandafter\pgfkeys@exp@call\expandafter\expandafter\expandafter{#1}}
\pgfkeys{/handlers/.expanded/.code=\edef\pgfkeys@temp{#1}\expandafter\pgfkeys@exp@call\expandafter{\pgfkeys@temp}}

\long\def\pgfkeys@exp@call#1{\pgfkeysalso{\pgfkeyscurrentpath={#1}}}

\def\pgfkeys@mathparse{%
  \pgfkeys@ifcsname{pgfmathparse}{%
    \pgfmathparse
  }{%
    \pgfkeys@error{You have to load `pgfmath' to use \string\pgfmathparse}%
    \def\pgfmathresult
  }%
}
\pgfkeys{/handlers/.evaluated/.code=\pgfkeys@mathparse{#1}\expandafter\pgfkeys@exp@call\expandafter{\pgfmathresult}}


\newif\ifpgfkeyssuccess
\pgfkeys{/handlers/.try/.code=\pgfkeys@try}
\pgfkeys{/handlers/.retry/.code=\ifpgfkeyssuccess\else\pgfkeys@try\fi}
\def\pgfkeys@try{%
  \edef\pgfkeyscurrentkey{\pgfkeyscurrentpath}%
  \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
    \pgfkeysifdefined{\pgfkeyscurrentpath/.@def}%
    {\pgfkeysgetvalue{\pgfkeyscurrentpath/.@def}{\pgfkeyscurrentvalue}}
    {}%
  \fi%
  \pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}%
  {%
    \pgfkeysgetvalue{\pgfkeyscurrentpath/.@cmd}{\pgfkeys@code}%
    \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov%
    \pgfkeyssuccesstrue%
  }%
  {%
    \pgfkeysifdefined{\pgfkeyscurrentpath}%
    {%
      \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
        \pgfkeysvalueof{\pgfkeyscurrentpath}%
      \else%
        \pgfkeyslet{\pgfkeyscurrentpath}\pgfkeyscurrentvalue%
      \fi%
      \pgfkeyssuccesstrue%
    }%
    {%
      \pgfkeys@split@path%
      \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{%
        \pgfkeys@ifexecutehandler{%
        \pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
          \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
          \pgfkeyssuccesstrue%
      }{%
        \pgfkeyssuccessfalse
      }%
      }{%
      \pgfkeyssuccessfalse
      }%
  }%
  }%
}


\pgfkeys{/utils/exec/.code={#1}} %



\pgfkeys{
  /errors/boolean expected/.code 2 args=%
  {%
    \toks1={#1}%
    \toks2={#2}%
    \pgfkeys@error{%
      Boolean parameter of key '\the\toks1' must be 'true' or 'false', not
      '\the\toks2'. I am going to ignore it%
    }%
  },
  /errors/value required/.code 2 args=%
  {%
    \toks1={#1}%
    \pgfkeys@error{%
      The key '\the\toks1' requires a value. I am going to ignore this
      key%
    }%
  },
  /errors/value forbidden/.code 2 args=%
  {%
    \toks1={#1}%
    \toks2={#2}%
    \pgfkeys@error{%
      You may not specify a value for the key '\the\toks1'. I am going to ignore
      the value '\the\toks2' that you provided%
    }%
  },
  /errors/unknown choice value/.code 2 args=%
  {%
    \toks1={#1}%
    \toks2={#2}%
    \pgfkeys@error{%
      Choice '\the\toks2' unknown in choice key '\the\toks1'. I am
      going to ignore this key%
    }%
  },
  /errors/unknown key/.code 2 args=%
  {%
    \toks1={#1}%
    \toks2={#2}%
    \def\pgf@temp{#2}%
    \pgfkeys@error{%
      I do not know the key '\the\toks1'\ifx\pgf@temp\pgfkeysnovalue@text\space\else, to which you passed
      '\the\toks2', \fi and I am going to ignore it. Perhaps you
      misspelled it%
    }%
  }
}

\pgfkeys{/handlers/.unknown/.code=%
  {%
    \def\pgf@marshal{\pgfkeysvalueof{/errors/unknown key/.@cmd}}%
    {\expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\pgfkeyscurrentkey\expandafter}\expandafter{\pgfkeyscurrentvalue}\pgfeov}%
  }%
}

\pgfkeys{
  /handler config/.is choice,
  /handler config/all/.code={%
    \let\pgfkeys@case@three=\pgfkeys@case@three@handleall
    \let\pgfkeys@ifexecutehandler=\pgfkeys@ifexecutehandler@handleall
  },
  /handler config/only existing/.code={%
    \let\pgfkeys@case@three=\pgfkeys@case@three@handle@restricted
    \let\pgfkeys@ifexecutehandler=\pgfkeys@ifexecutehandler@handleonlyexisting
  },
  /handler config/full or existing/.code={%
    \let\pgfkeys@case@three=\pgfkeys@case@three@handle@restricted
    \let\pgfkeys@ifexecutehandler=\pgfkeys@ifexecutehandler@handlefullorexisting
  },
  /handler config/only existing/add exception/.code={\pgfkeysaddhandleonlyexistingexception{#1}},
}%
\pgfkeysaddhandleonlyexistingexception{.cd}%
\pgfkeysaddhandleonlyexistingexception{.try}%
\pgfkeysaddhandleonlyexistingexception{.retry}%
\pgfkeysaddhandleonlyexistingexception{.lastretry}%
\pgfkeysaddhandleonlyexistingexception{.unknown}%
\pgfkeysaddhandleonlyexistingexception{.expand once}%
\pgfkeysaddhandleonlyexistingexception{.expand twice}%
\pgfkeysaddhandleonlyexistingexception{.expanded}%


\def\pgf@keys@gobble#1{}
\long\def\pgf@keys@utilifnextchar#1#2#3{%
  \let\pgf@keys@utilreserved@d=#1%
  \def\pgf@keys@utilreserved@a{#2}%
  \def\pgf@keys@utilreserved@b{#3}%
  \futurelet\pgf@keys@utillet@token\pgf@keys@utilifnch}
\def\pgf@keys@utilifnch{%
  \ifx\pgf@keys@utillet@token\pgf@keys@utilsptoken
    \let\pgf@keys@utilreserved@c\pgf@keys@utilxifnch
  \else
    \ifx\pgf@keys@utillet@token\pgf@keys@utilreserved@d
      \let\pgf@keys@utilreserved@c\pgf@keys@utilreserved@a
    \else
      \let\pgf@keys@utilreserved@c\pgf@keys@utilreserved@b
    \fi
  \fi
  \pgf@keys@utilreserved@c}
{%
  \def\:{\global\let\pgf@keys@utilsptoken= } \:
  \def\:{\pgf@keys@utilxifnch} \expandafter\gdef\: {\futurelet\pgf@keys@utillet@token\pgf@keys@utilifnch}
}

\chardef\pgfkeys@inputcheck0
\def\pgfkeys@IfFileExists#1{%
  \openin\pgfkeys@inputcheck=#1
  \ifeof\pgfkeys@inputcheck
    \expandafter\closein\expandafter\pgfkeys@inputcheck
    \expandafter\pgfkeys@secondoftwo
  \else
    \expandafter\closein\expandafter\pgfkeys@inputcheck
    \expandafter\pgfkeys@firstoftwo
  \fi
}

\def\usepgfkeyslibrary{\pgf@keys@utilifnextchar[{\pgfkeys@@uselibrary}{\pgfkeys@uselibrary}}
\def\pgfkeys@@uselibrary[#1]{\pgfkeys@uselibrary{#1}}
\def\pgfkeys@uselibrary#1{\pgfkeys@uselibrary@parse#1,\pgfkeys@mainstop}
\def\pgfkeys@uselibrary@parse{%
  \pgf@keys@utilifnextchar\pgfkeys@mainstop{\pgfkeys@cleanup}{\pgfkeys@uselibrary@normal}%
}%
\def\pgfkeys@uselibrary@normal#1,{%
  \pgfkeys@uselibrary@load{#1}%
  \pgfkeys@uselibrary@parse
}
\def\pgfkeys@uselibrary@load#1{%
  \expandafter\pgfkeys@spdef\expandafter\pgf@temp\expandafter{#1}%
  \ifx\pgf@temp\pgfkeys@empty\expandafter\pgfkeys@firstoftwo\else\expandafter\pgfkeys@secondoftwo\fi{}{%
    \pgfkeys@ifcsname{pgfkeys@library@\pgf@temp @loaded}{}{%
      \expandafter\let\csname pgfkeys@library@\pgf@temp @loaded\endcsname=\pgfkeys@empty
      \expandafter\edef\csname pgfkeys@library@#1@atcode\endcsname{\the\catcode`\@}%
      \expandafter\edef\csname pgfkeys@library@#1@barcode\endcsname{\the\catcode`\|}%
      \expandafter\edef\csname pgfkeys@library@#1@dollarcode\endcsname{\the\catcode`\$}%
      \catcode`\@=11
      \catcode`\|=12
      \catcode`\$=3
      \pgfkeys@IfFileExists{pgfkeyslibrary\pgf@temp.code.tex}{%
        \input pgfkeyslibrary\pgf@temp.code.tex
      }{%
        \pgfkeys@error{I did not find the pgfkeys library '\pgf@temp'. I looked for the
          file named pgfkeyslibrary\pgf@temp.code.tex, but could not find it in the
          current texmf trees.}%
      }%
      \catcode`\@=\csname pgfkeys@library@#1@atcode\endcsname
      \catcode`\|=\csname pgfkeys@library@#1@barcode\endcsname
      \catcode`\$=\csname pgfkeys@library@#1@dollarcode\endcsname
    }%
  }%
}

\let\pgfkeys@library@filtered@loaded\pgfkeys@empty
\input pgfkeyslibraryfiltered.code.tex

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfkeys.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.tex ====



\let\pgfkeys@orig@case@one=\pgfkeys@case@one
\let\pgfkeys@orig@@set=\pgfkeys@@set
\let\pgfkeys@orig@@qset=\pgfkeys@@qset
\let\pgfkeys@orig@try=\pgfkeys@try
\let\pgfkeys@orig@unknown=\pgfkeys@unknown

\newif\ifpgfkeysfilteringisactive
\newif\ifpgfkeysfiltercontinue
\let\pgfkeys@key@predicate=\pgfkeys@empty
\let\pgfkeys@filtered@handler=\pgfkeys@empty
\newtoks\pgfkeys@tmptoks

\def\pgfkeysfiltered{%
    \expandafter\pgfkeysfiltered@@install\expandafter{\pgfkeysdefaultpath}%
}

\long\def\pgfkeysfiltered@@install#1#2{%
    \pgfkeys@install@filter@and@invoke{%
        \let\pgfkeysdefaultpath\pgfkeys@root%
        \pgfkeys@parse#2,\pgfkeys@mainstop%
        \def\pgfkeysdefaultpath{#1}%
    }%
}

\long\def\pgfkeysalsofrom#1{%
    \expandafter\pgfkeysalso\expandafter{#1}%
}

\long\def\pgfkeysalsofilteredfrom#1{%
    \expandafter\pgfkeysalsofiltered\expandafter{#1}%
}

\long\def\pgfkeysalsofiltered#1{%
    \pgfkeys@install@filter@and@invoke{\pgfkeysalso{#1}}%
}%

\long\def\pgfqkeysfiltered#1{%
    \expandafter\pgfqkeysfiltered@@install\expandafter{\pgfkeysdefaultpath}{#1}%
}

\long\def\pgfqkeysfiltered@@install#1#2#3{%
    \pgfkeys@install@filter@and@invoke{%
        \def\pgfkeysdefaultpath{#2/}\pgfkeys@parse#3,\pgfkeys@mainstop\def\pgfkeysdefaultpath{#1}%
    }%
}



\def\pgfkeysactivatefamily#1{%
    \pgfkeysiffamilydefined
        {#1}%
        {\csname pgfk@#1/familyactivetrue\endcsname}%
        {\pgfkeysvalueof{/errors/family unknown/.@cmd}{#1}\pgfeov}%
}

\def\pgfkeysdeactivatefamily#1{%
    \pgfkeysiffamilydefined
        {#1}%
        {\csname pgfk@#1/familyactivefalse\endcsname}%
        {\pgfkeysvalueof{/errors/family unknown/.@cmd}{#1}\pgfeov}%
}

\def\pgfkeysactivatefamilies#1#2{%
    \pgfkeyssavekeyfilterstateto\pgfkeys@cur@state
    \expandafter\pgfkeysactivatefamilies@impl\expandafter{\pgfkeys@cur@state}{#1}{#2}%
}
\def\pgfkeysactivatefamilies@impl#1#2#3{%
    \pgfkeysinstallkeyfilter{/pgf/key filters/false}{}%
    \let#3=\pgfkeys@empty%
    \def\pgfkeys@filtered@handler{\pgfkeys@family@activate@handler{#3}}%
    \pgfkeysalsofiltered{#2}%
    #1%
}

\def\pgfkeys@family@activate@handler#1{%
    \pgfkeysactivatefamily{\pgfkeyscurrentkey}%
    \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter#1\expandafter\pgfkeysdeactivatefamily\expandafter{\pgfkeyscurrentkey}}%
    \edef#1{\the\pgfkeys@tmptoks}%
}

\long\def\pgfkeysiffamilydefined#1#2#3{\ifcsname ifpgfk@#1/familyactive\endcsname#2\else#3\fi}

\def\pgfkeysisfamilyactive#1{%
    \pgfkeysiffamilydefined{#1}{%
        \expandafter\let\expandafter\ifpgfkeysfiltercontinue\csname ifpgfk@#1/familyactive\endcsname
    }{%
        \pgfkeysvalueof{/errors/family unknown/.@cmd}{#1}\pgfeov%
        \expandafter\expandafter\expandafter\let\csname ifpgfkeysfiltercontinue\endcsname\csname iffalse\endcsname
    }%
}%

\def\pgfkeysgetfamily#1#2{%
    \pgfkeysifdefined{#1/family}{\pgfkeysgetvalue{#1/family}{#2}\pgfkeyssuccesstrue}{\pgfkeyssuccessfalse}%
}

\def\pgfkeyssetfamily#1#2{%
    \pgfkeysiffamilydefined{#2}{%
        \pgfkeyssetvalue{#1/family}{#2}%
    }{%
        \pgfkeysalso{/errors/family unknown={#2}}%
    }%
}%


\long\def\pgfkeys@cur@is@descendant@of@errors{%
    \expandafter\pgfkeys@cur@is@descendant@of@errors@impl\pgfkeyscurrentkey/errors\pgf@@eov
}%
\long\def\pgfkeys@cur@is@descendant@of@errors@impl#1/errors#2\pgf@@eov{%
    \def\pgfkeyspred@TMP{#1}%
    \ifx\pgfkeyspred@TMP\pgfkeys@empty
        \pgfkeysfiltercontinuetrue
    \else
        \pgfkeysfiltercontinuefalse
    \fi
}%

\def\pgfkeysinterruptkeyfilter{%
    \ifpgfkeysfilteringisactive
        \let\pgfkeys@case@one=\pgfkeys@orig@case@one
        \let\pgfkeys@try=\pgfkeys@orig@try
        \let\pgfkeys@unknown=\pgfkeys@orig@unknown
    \fi
}

\def\endpgfkeysinterruptkeyfilter{%
    \ifpgfkeysfilteringisactive
        \let\pgfkeys@case@one=\pgfkeys@case@one@filtered
        \let\pgfkeys@try=\pgfkeys@try@filtered
        \let\pgfkeys@unknown=\pgfkeys@unknown@filtered
    \fi
}

\def\pgfkeysactivatefamiliesandfilteroptions#1#2{%
    \pgfkeysactivatefamilies{#1}{\pgfkeys@family@deactivation}%
    \pgfkeysfiltered{#2}%
    \pgfkeys@family@deactivation
}

\def\pgfqkeysactivatefamiliesandfilteroptions#1#2#3{%
    \pgfkeysactivatefamilies{#1}{\pgfkeys@family@deactivation}%
    \pgfqkeysfiltered{#2}{#3}%
    \pgfkeys@family@deactivation
}

\def\pgfkeyssplitpath{\pgfkeys@split@path}%


\def\pgfkeysactivatesinglefamilyandfilteroptions#1#2{%
    \pgfkeysactivatefamily{#1}%
    \pgfkeysfiltered{#2}%
    \pgfkeysdeactivatefamily{#1}%
}

\def\pgfqkeysactivatesinglefamilyandfilteroptions#1#2#3{%
    \pgfkeysactivatefamily{#1}%
    \pgfqkeysfiltered{#2}{#3}%
    \pgfkeysdeactivatefamily{#1}%
}

\def\pgfkeysinstallkeyfilter#1#2{%
    \pgfkeysifdefined{#1/.@cmd}{%
        \edef\pgfkeyscurrentkeyfilter{#1}%
        \def\pgfkeyscurrentkeyfilterargs{#2}%
        \pgfkeysgetvalue{#1/.@cmd}{\pgfkeys@key@predicate@}%
        \def\pgfkeys@key@predicate{\pgfkeys@key@predicate@#2\pgfeov}%
    }{%
        \pgfkeysvalueof{/errors/no such key filter/.@cmd}{#1}{#2}\pgfeov%
    }%
}

\def\pgfkeysinstallkeyfilterhandler#1#2{%
    \pgfkeysifdefined{#1/.@cmd}{%
        \edef\pgfkeyscurrentkeyfilterhandler{#1}%
        \def\pgfkeyscurrentkeyfilterhandlerargs{#2}%
        \pgfkeysgetvalue{#1/.@cmd}{\pgfkeys@filtered@handler@}%
        \def\pgfkeys@filtered@handler{\pgfkeys@filtered@handler@#2\pgfeov}%
    }{%
        \pgfkeysvalueof{/errors/no such key filter handler/.@cmd}{#1}{#2}\pgfeov%
    }%
}

\def\pgfkeyssavekeyfilterstateto#1{%
    \pgfkeys@tmptoks={\pgfkeysinstallkeyfilter}%
    \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@tmptoks\expandafter{\pgfkeyscurrentkeyfilter}}%
    \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@tmptoks\expandafter{\pgfkeyscurrentkeyfilterargs}\pgfkeysinstallkeyfilterhandler}%
    \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@tmptoks\expandafter{\pgfkeyscurrentkeyfilterhandler}}%
    \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@tmptoks\expandafter{\pgfkeyscurrentkeyfilterhandlerargs}}%
    \edef#1{%
        \the\pgfkeys@tmptoks
    }%
}


\pgfkeys{%
    /errors/family unknown/.code=\pgfkeys@error{%
        Sorry, I do not know family '#1' and can't work with any assoicated family handling. Perhaps you misspelled it?},
    /errors/no such key filter/.code 2 args=\pgfkeys@error{Sorry, there is no such key filter '#1'.},
    /errors/no such key filter handler/.code 2 args=\pgfkeys@error{Sorry, there is no such key filter handler '#1'.},
    /handlers/.is family/.append code={%
        \edef\pgfkeyspred@TMP{pgfk@\pgfkeyscurrentpath/familyactive}%
        \expandafter\pgfkeys@non@outer@newif\expandafter{\pgfkeyspred@TMP}%
        \edef\pgfkeyspred@TMP{\pgfkeyscurrentpath/.belongs to family=\pgfkeyscurrentpath}%
        \expandafter\pgfkeysalso\expandafter{\pgfkeyspred@TMP}%
    },%
    /handlers/.activate family/.code=\pgfkeysactivatefamily{\pgfkeyscurrentpath},
    /handlers/.deactivate family/.code=\pgfkeysdeactivatefamily{\pgfkeyscurrentpath},
    /handlers/.belongs to family/.code={\pgfkeyssetfamily{\pgfkeyscurrentpath}{#1}},%
    /handlers/.lastretry/.code={%
        \ifpgfkeyssuccess\else
            \pgfkeys@try
            \ifpgfkeyssuccess\else
                \pgfkeys@split@path%
                \pgfkeys@unknown
            \fi
        \fi
    },
    /handlers/.install key filter/.code={%
        \pgfkeysinstallkeyfilter{\pgfkeyscurrentpath}{#1}%
    },%
    /handlers/.install key filter handler/.code={%
        \pgfkeysinstallkeyfilterhandler{\pgfkeyscurrentpath}{#1}%
    },%
    /pgf/key filter handlers/append filtered to/.code={%
        \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\pgfkeyscurrentkeyRAW\expandafter=\expandafter{\pgfkeyscurrentvalue}}%
        \ifx#1\pgfkeys@empty
        \else
            \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter#1\expandafter,\the\pgfkeys@tmptoks}%
        \fi
        \edef#1{\the\pgfkeys@tmptoks}%
    },%
    /pgf/key filter handlers/ignore/.code={},
    /pgf/key filter handlers/ignore/.install key filter handler,
    /pgf/key filter handlers/log/.code={%
        \pgf@typeout{LOG: the option '\pgfkeyscurrentkey' (was originally '\pgfkeyscurrentkeyRAW') (case \pgfkeyscasenumber) has not been processed due to pgfkeysfiltered.}%
    },
    /pgf/key filters/active families/.code={%
        \if\pgfkeyscasenumber0%
            \pgfkeysfiltercontinuetrue
        \else
            \if\pgfkeyscasenumber3%
                \pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
            \else
                \pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
            \fi
            \ifpgfkeyssuccess
                \pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
            \else%
                \pgfkeysfiltercontinuefalse
            \fi
        \fi
    },%
    /pgf/key filters/active families or no family/.code 2 args={%
        \if\pgfkeyscasenumber0%
            \pgfkeysevalkeyfilterwith{#2}%
        \else
            \if\pgfkeyscasenumber3%
                \pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
            \else
                \pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
            \fi
            \ifpgfkeyssuccess
                \pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
            \else%
                \pgfkeysevalkeyfilterwith{#1}%
            \fi
        \fi
    },
    /pgf/key filters/active families or no family DEBUG/.code 2 args={%
        \if\pgfkeyscasenumber0%
            \pgf@typeout{[pgfkeyshasactivefamilyornofamily(\pgfkeyscurrentkey, \pgfkeyscasenumber) invoking unknown handler '#2']}%
            \pgfkeysevalkeyfilterwith{#2}%
        \else
            \if\pgfkeyscasenumber3%
                \pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
            \else
                \pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
            \fi
            \ifpgfkeyssuccess
                \pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
                \ifpgfkeysfiltercontinue
                    \pgf@typeout{[pgfkeyshasactivefamilyornofamily(\pgfkeyscurrentkey, \pgfkeyscasenumber) family is ACTIVE]}%
                \else
                    \pgf@typeout{[pgfkeyshasactivefamilyornofamily(\pgfkeyscurrentkey, \pgfkeyscasenumber) family is NOT active.]}%
                \fi
            \else%
                \pgf@typeout{[pgfkeyshasactivefamilyornofamily(\pgfkeyscurrentkey, \pgfkeyscasenumber) invoking has-no-family-handler '#1']}%
                \pgfkeysevalkeyfilterwith{#1}%
            \fi
        \fi
    },
    /pgf/key filters/active families and known/.code={%
        \if\pgfkeyscasenumber0%
            \pgfkeysfiltercontinuefalse
        \else
            \if\pgfkeyscasenumber3%
                \pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
            \else
                \pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
            \fi
            \ifpgfkeyssuccess
                \pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
            \else%
                \pgfkeysfiltercontinuefalse
            \fi
        \fi
    },
    /pgf/key filters/active families or descendants of/.code={%
        \if\pgfkeyscasenumber0%
            \pgfkeysfiltercontinuefalse
        \else
            \if\pgfkeyscasenumber3%
                \pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
            \else
                \pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
            \fi
            \ifpgfkeyssuccess
                \pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
            \else%
                \def\pgfkeysisdescendantof@impl##1#1##2\pgf@@eov{%
                    \def\pgfkeyspred@TMP{##1}%
                    \ifx\pgfkeyspred@TMP\pgfkeys@empty
                        \pgfkeysfiltercontinuetrue
                    \else
                        \pgfkeysfiltercontinuefalse
                    \fi
                }%
                \expandafter\pgfkeysisdescendantof@impl\pgfkeyscurrentkey#1\pgf@@eov
            \fi
        \fi
    },
    /pgf/key filters/is descendant of/.code={%
        \if\pgfkeyscasenumber0%
            \pgfkeysfiltercontinuetrue
        \else
            \def\pgfkeysisdescendantof@impl##1#1##2\pgf@@eov{%
                \def\pgfkeyspred@TMP{##1}%
                \ifx\pgfkeyspred@TMP\pgfkeys@empty
                    \pgfkeysfiltercontinuetrue
                \else
                    \pgfkeysfiltercontinuefalse
                \fi
            }%
            \expandafter\pgfkeysisdescendantof@impl\pgfkeyscurrentkey#1\pgf@@eov
        \fi
    },%
    /pgf/key filters/equals/.code={%
        \if\pgfkeyscasenumber0%
            \pgfkeysfiltercontinuetrue
        \else
            \def\pgfkeyspred@TMP{#1}%
            \ifx\pgfkeyscurrentkey\pgfkeyspred@TMP
                \pgfkeysfiltercontinuetrue
            \else
                \pgfkeysfiltercontinuefalse
            \fi
        \fi
    },%
    /pgf/key filters/not/.code={%
        \pgfkeysevalkeyfilterwith{#1}%
        \ifpgfkeysfiltercontinue
            \pgfkeysfiltercontinuefalse
        \else
            \pgfkeysfiltercontinuetrue
        \fi
    },%
    /pgf/key filters/and/.code 2 args={%
        \pgfkeysevalkeyfilterwith{#1}%
        \ifpgfkeysfiltercontinue
            \pgfkeysevalkeyfilterwith{#2}%
        \fi
    },%
    /pgf/key filters/or/.code 2 args={%
        \pgfkeysevalkeyfilterwith{#1}%
        \ifpgfkeysfiltercontinue
        \else
            \pgfkeysevalkeyfilterwith{#2}%
        \fi
    },%
    /pgf/key filters/true/.code={\pgfkeysfiltercontinuetrue},%
    /pgf/key filters/true/.install key filter,
    /pgf/key filters/false/.code={%
        \pgfkeysfiltercontinuefalse
    },%
    /pgf/key filters/defined/.code={%
        \if\pgfkeyscasenumber0%
            \pgfkeysfiltercontinuefalse
        \else
            \pgfkeysfiltercontinuetrue
        \fi
    },
}%



\def\pgfkeys@case@one@filtered{%
    \pgfkeys@cur@is@descendant@of@errors
    \ifpgfkeysfiltercontinue
        \pgfkeys@orig@case@one
    \else
        \pgfkeysfiltercontinuetrue
        \pgfkeysifdefined{\pgfkeyscurrentkey/.@cmd}{%
            \def\pgfkeyscasenumber{1}%
            \pgfkeys@key@predicate%
            \ifpgfkeysfiltercontinue
                \pgfkeysgetvalue{\pgfkeyscurrentkey/.@cmd}{\pgfkeys@code}%
                \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
            \else
                \pgfkeys@filtered@handler%
            \fi
        }{%
            \pgfkeysifdefined{\pgfkeyscurrentkey}{%
                \def\pgfkeyscasenumber{2}%
                \pgfkeys@key@predicate%
                \ifpgfkeysfiltercontinue
                    \pgfkeys@case@two@extern
                \else
                    \pgfkeys@filtered@handler%
                \fi
            }{%
                \pgfkeys@split@path
                \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{%
                    \pgfkeys@ifexecutehandler{%
                        \def\pgfkeyscasenumber{3}%
                        \pgfkeys@key@predicate%
                        \ifpgfkeysfiltercontinue
                            \pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
                            \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
                        \else
                            \pgfkeys@filtered@handler%
                        \fi
                    }{%
                        \pgfkeys@unknown
                    }%
                }{%
                    \pgfkeys@unknown
                }%
            }%
        }%
    \fi
}%

\def\pgfkeys@unknown@filtered{%
    \def\pgfkeyscasenumber{0}%
    \pgfkeys@key@predicate%
    \ifpgfkeysfiltercontinue
        \pgfkeys@orig@unknown
    \else
        \pgfkeys@filtered@handler%
    \fi
}

\def\pgfkeys@try@filtered{%
    \ifpgfkeysfiltercontinue
        \pgfkeys@orig@try
    \else
        \pgfkeysfiltercontinuetrue
        \edef\pgfkeyscurrentkey{\pgfkeyscurrentpath}%
        \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
            \pgfkeysifdefined{\pgfkeyscurrentpath/.@def}%
            {\pgfkeysgetvalue{\pgfkeyscurrentpath/.@def}{\pgfkeyscurrentvalue}}
            {}%
        \fi%
        \pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}%
        {%
            \def\pgfkeyscasenumber{1}%
            \pgfkeys@key@predicate%
            \ifpgfkeysfiltercontinue
                \pgfkeysgetvalue{\pgfkeyscurrentkey/.@cmd}{\pgfkeys@code}%
                \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov%
            \else
                \pgfkeys@filtered@handler%
            \fi
            \pgfkeyssuccesstrue%
        }%
        {%
            \pgfkeysifdefined{\pgfkeyscurrentpath}%
            {%
                \def\pgfkeyscasenumber{2}%
                \pgfkeys@key@predicate%
                \ifpgfkeysfiltercontinue
                    \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
                        \pgfkeysvalueof{\pgfkeyscurrentpath}%
                    \else%
                        \pgfkeyslet{\pgfkeyscurrentpath}\pgfkeyscurrentvalue%
                    \fi%
                \else
                    \pgfkeys@filtered@handler%
                \fi
                \pgfkeyssuccesstrue%
            }%
            {%
                \pgfkeys@split@path%
                \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{%
                    \pgfkeys@ifexecutehandler{%
                        \def\pgfkeyscasenumber{3}%
                        \pgfkeys@key@predicate%
                        \ifpgfkeysfiltercontinue
                            \pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
                            \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
                        \else
                            \pgfkeys@filtered@handler%
                        \fi
                        \pgfkeyssuccesstrue%
                    }{%
                        \pgfkeyssuccessfalse
                    }%
                }{%
                    \pgfkeyssuccessfalse
                }%
            }%
        }%
    \fi
}


\long\def\pgfkeys@install@filter@and@invoke#1{%
    \ifpgfkeysfilteringisactive
        \pgfkeys@error{Sorry, nested calls to key filtering routines are not allowed. (reason: It is not possible to properly restore the previous filtering state after returning from the nested call)}%
    \fi
    \pgfkeysfilteringisactivetrue
    \let\pgfkeys@case@one=\pgfkeys@case@one@filtered
    \let\pgfkeys@try=\pgfkeys@try@filtered
    \let\pgfkeys@unknown=\pgfkeys@unknown@filtered
    #1%
    \let\pgfkeys@case@one=\pgfkeys@orig@case@one
    \let\pgfkeys@try=\pgfkeys@orig@try
    \let\pgfkeys@unknown=\pgfkeys@orig@unknown
    \pgfkeysfilteringisactivefalse
}




\long\def\pgfkeysevalkeyfilterwith#1{%
    \pgfkeys@eval@key@filter@subroutine@unpack#1=\pgfkeysnovalue=\pgfkeys@stop
}%
\long\def\pgfkeys@eval@key@filter@subroutine@unpack#1=#2=#3\pgfkeys@stop{%
    \pgfkeys@spdef\pgfkeyspred@TMP{#1}%
    \edef\pgfkeyspred@TMP{\pgfkeyspred@TMP}%
    \pgfkeys@spdef\pgfkeyspred@TMPB{#2}%
    \ifx\pgfkeyspred@TMPB\pgfkeysnovalue@text%
        \pgfkeysifdefined{\pgfkeyspred@TMP/.@def}%
        {\pgfkeysgetvalue{\pgfkeyspred@TMP/.@def}{\pgfkeyspred@TMPB}}
        {}%
    \fi%
    \ifx\pgfkeyspred@TMPB\pgfkeysvaluerequired%
        \pgfkeysvalueof{/errors/value required/.@cmd}\pgfkeyspred@TMP\pgfkeyspred@TMPB\pgfeov%
    \else%
        \pgfkeysifdefined{\pgfkeyspred@TMP/.@cmd}{%
            \pgfkeysgetvalue{\pgfkeyspred@TMP/.@cmd}{\pgfkeys@code}%
            \expandafter\pgfkeys@code\pgfkeyspred@TMPB\pgfeov
        }{%
            \pgfkeysvalueof{/errors/no such key filter/.@cmd}\pgfkeyspred@TMP\pgfkeyspred@TMPB\pgfeov%
        }%
    \fi%
}


\def\pgfkeys@non@outer@newif@#1#2{%
    \expandafter\edef\csname #2true\endcsname{\noexpand\let\noexpand#1=\noexpand\iftrue}%
    \expandafter\edef\csname #2false\endcsname{\noexpand\let\noexpand#1=\noexpand\iffalse}%
    \csname #2false\endcsname
}%

\def\pgfkeys@non@outer@newif#1{%
    \expandafter\pgfkeys@non@outer@newif@\csname if#1\endcsname{#1}%
}
\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfrcs.code.tex ====

\ifx\eTeXrevision\undefined%
  \pgfutil@packageerror{PGF}{PGF requires etex in extended mode}{}%
  \csname @@end\expandafter\endcsname\expandafter\end%
\fi

\ifnum\eTeXversion<2
  \pgfutil@packageerror{PGF}{PGF requires etex version 2}{}%
  \csname @@end\expandafter\endcsname\expandafter\end%
\fi


\pgfutil@IfFileExists{pgf.revision.tex}{\input pgf.revision.tex } {%
    \def\pgfrevision{0.0}%
    \def\pgfversion{0.0}%
    \def\pgfversiondate{2014-07-01}%
    \def\pgfrevisiondate{2014-07-01}%
}

\begingroup
\catcode`\"=12
\pgfutil@IfUndefined{directlua}{}{%
    \directlua{pgf = {}; pgf.pgfversion = "\pgfversion"}%
}%
\endgroup

\let\pgftypesetversion=\pgfrevision


\ifx\pgfrcsloaded\undefined
\def\pgfrcsloaded{}

\edef\pgfrcsatcode{\the\catcode`\@}
\catcode`\@=11

\def\ProvidesFileRCS{%
    \let\pgfrcs@final=\ProvidesFileRCS@
^I\pgfrcs@parseinput
}
\def\ProvidesFileRCS@#1{%
    \ProvidesFile{#1}[\pgfversiondate\space v\pgfversion\space(\pgfrevision)]%
}

\def\pgf@remove@ext#1.#2\relax{%
    \def\pgfretval{#1}%
}%

\def\ProvidesPackageRCS{%
^I\let\pgfrcs@final=\ProvidesPackageRCS@
^I\pgfrcs@parseinput
}
\def\ProvidesPackageRCS@#1{%
    \pgf@remove@ext#1.\relax
    \edef\pgfrcs@marshal{{\pgfretval}[\pgfversiondate\space v\pgfversion\space(\pgfrevision)]}%
    \expandafter\ProvidesPackage\pgfrcs@marshal
}

\def\ProvidesClassRCS{%
^I\let\pgfrcs@final=\ProvidesClassRCS@
^I\pgfrcs@parseinput
}
\def\ProvidesClassRCS@#1{%
    \pgf@remove@ext#1.\relax
    \edef\pgfrcs@marshal{{\pgfretval}[\pgfversiondate\space v\pgfversion\space(\pgfrevision)]}%
    \expandafter\ProvidesClass\pgfrcs@marshal
}

\def\pgfrcs@parseinput@bracket{[}%
\def\pgfrcs@parseinput@dollarsign{$}%

\def\pgfrcs@parseinput#1{%
^I\def\pgfrcs@parseinput@{#1}%
^I\ifx\pgfrcs@parseinput@\pgfrcs@parseinput@bracket%
^I^I\let\next=\pgfrcs@parseinput@opt
^I\else
^I^I\ifx\pgfrcs@parseinput@\pgfrcs@parseinput@dollarsign
^I^I^I\let\next\pgfrcs@parseinput@dollar
^I^I\else
^I^I^I\def\next{\pgfrcs@final{#1}}%
^I^I\fi
^I\fi
^I\next
}
\def\pgfrcs@parseinput@opt#1] ${%
^I\pgfrcs@parseinput@dollar
}%
\def\pgfrcs@parseinput@dollar#1${%
^I\pgf@parseid $#1$%
^I\edef\pgfrcs@parseinput@{\pgf@rcsfile.\pgf@rcssuffix}%
^I\expandafter\pgfrcs@final\expandafter{\pgfrcs@parseinput@}%
}%
\def\pgf@parseid $#1: #2.#3,v #4 #5/#6/#7 #8${%
  \pgf@parsercsfile$#2/$
  \def\pgf@rcssuffix{#3}
  \def\pgf@rcsrevision{#4}
  \def\pgf@rcsdate{#5/#6/#7}
}
\def\pgf@parsercsfile$#1/#2${
  \def\pgf@temp{#2}
  \ifx\pgf@temp\pgfutil@empty
    \def\pgf@rcsfile{#1}
  \else
    \pgf@parsercsfile$#2$
  \fi}


\ifx\ProvidesPackage\@undefined
    \def\ProvidesPackage#1[#2]{\wlog{Loading package #1 version #2.}}
\fi

\ifx\ProvidesFile\@undefined
    \def\ProvidesFile#1[#2]{\wlog{Loading file #1 version #2.}}
\fi

\ProvidesPackageRCS{pgfrcs.code.tex}

\catcode`\@=\pgfrcsatcode

\fi


==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfrcs.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfutil-common-lists.tex ====


\pgfutil@packagewarning
  {pgfutil-common-lists}%
  {This package is deprecated and will be removed by the end of 2022}

\def\pgfapplistnewempty#1{%
    \expandafter\let\csname pgfapp@#1\endcsname=\pgfutil@empty
    \expandafter\let\csname pgfapp@#1@smallbuf\endcsname=\pgfutil@empty
    \expandafter\let\csname pgfapp@#1@bigbuf\endcsname=\pgfutil@empty
    \expandafter\def\csname pgfapp@#1@smallbuf@c\endcsname{0}%
    \expandafter\def\csname pgfapp@#1@bigbuf@c\endcsname{0}%
}%

\long\def\pgfapplistpushback#1\to#2{%
    \begingroup
        \c@pgf@counta=\csname pgfapp@#2@smallbuf@c\endcsname\relax
        \advance\c@pgf@counta by1
        \xdef\pgf@glob@TMPa{\the\c@pgf@counta}%
    \endgroup
    \expandafter\let\csname pgfapp@#2@smallbuf@c\endcsname=\pgf@glob@TMPa
    \ifnum\csname pgfapp@#2@smallbuf@c\endcsname<40
        \t@pgf@toka=\expandafter\expandafter\expandafter{\csname pgfapp@#2@smallbuf\endcsname#1}%
        \expandafter\edef\csname pgfapp@#2@smallbuf\endcsname{\the\t@pgf@toka}%
    \else
        \pgfapplistpushback@smallbufoverfl{#1}{#2}%
    \fi
}%
\long\def\pgfapplistpushback@smallbufoverfl#1#2{%
    \begingroup
        \c@pgf@counta=\csname pgfapp@#2@bigbuf@c\endcsname\relax
        \advance\c@pgf@counta by1
        \xdef\pgf@glob@TMPa{\the\c@pgf@counta}%
    \endgroup
    \expandafter\let\csname pgfapp@#2@bigbuf@c\endcsname=\pgf@glob@TMPa
    \ifnum\csname pgfapp@#2@bigbuf@c\endcsname<30
        \t@pgf@toka=\expandafter\expandafter\expandafter{\csname pgfapp@#2@bigbuf\endcsname}%
        \t@pgf@tokb=\expandafter\expandafter\expandafter{\csname pgfapp@#2@smallbuf\endcsname#1}%
        \expandafter\edef\csname pgfapp@#2@bigbuf\endcsname{\the\t@pgf@toka\the\t@pgf@tokb}%
        \expandafter\let\csname pgfapp@#2@smallbuf\endcsname=\pgfutil@empty
        \expandafter\def\csname pgfapp@#2@smallbuf@c\endcsname{0}%
    \else%
        \t@pgf@toka=\expandafter\expandafter\expandafter{\csname pgfapp@#2\endcsname}%
        \t@pgf@tokb=\expandafter\expandafter\expandafter{\csname pgfapp@#2@bigbuf\endcsname}%
        \t@pgf@tokc=\expandafter\expandafter\expandafter{\csname pgfapp@#2@smallbuf\endcsname#1}%
        \expandafter\edef\csname pgfapp@#2\endcsname{\the\t@pgf@toka\the\t@pgf@tokb\the\t@pgf@tokc}%
        \expandafter\let\csname pgfapp@#2@smallbuf\endcsname=\pgfutil@empty
        \expandafter\def\csname pgfapp@#2@smallbuf@c\endcsname{0}%
        \expandafter\let\csname pgfapp@#2@bigbuf\endcsname=\pgfutil@empty
        \expandafter\def\csname pgfapp@#2@bigbuf@c\endcsname{0}%
    \fi%
}%
\def\pgfapplist@flushbuffers#1{%
    \t@pgf@toka=\expandafter\expandafter\expandafter{\csname pgfapp@#1\endcsname}%
    \t@pgf@tokb=\expandafter\expandafter\expandafter{\csname pgfapp@#1@bigbuf\endcsname}%
    \t@pgf@tokc=\expandafter\expandafter\expandafter{\csname pgfapp@#1@smallbuf\endcsname}%
    \expandafter\edef\csname pgfapp@#1\endcsname{\the\t@pgf@toka\the\t@pgf@tokb\the\t@pgf@tokc}%
    \expandafter\let\csname pgfapp@#1@smallbuf\endcsname=\pgfutil@empty
    \expandafter\def\csname pgfapp@#1@smallbuf@c\endcsname{0}%
    \expandafter\let\csname pgfapp@#1@bigbuf\endcsname=\pgfutil@empty
    \expandafter\def\csname pgfapp@#1@bigbuf@c\endcsname{0}%
}%

\def\pgfapplistlet#1=#2{%
    \pgfapplist@flushbuffers{#2}%
    \expandafter\let\expandafter#1\csname pgfapp@#2\endcsname
}%




\def\pgfprependlistnewempty#1{%
    \expandafter\let\csname pgfpPRP@#1\endcsname=\pgfutil@empty
    \expandafter\let\csname pgfpPRP@#1@smallbuf\endcsname=\pgfutil@empty
    \expandafter\let\csname pgfpPRP@#1@bigbuf\endcsname=\pgfutil@empty
    \expandafter\def\csname pgfpPRP@#1@smallbuf@c\endcsname{0}%
    \expandafter\def\csname pgfpPRP@#1@bigbuf@c\endcsname{0}%
}%

\long\def\pgfprependlistpushfront#1\to#2{%
    \begingroup
        \c@pgf@counta=\csname pgfpPRP@#2@smallbuf@c\endcsname\relax
        \advance\c@pgf@counta by1
        \xdef\pgf@glob@TMPa{\the\c@pgf@counta}%
    \endgroup
    \expandafter\let\csname pgfpPRP@#2@smallbuf@c\endcsname=\pgf@glob@TMPa
    \ifnum\csname pgfpPRP@#2@smallbuf@c\endcsname<40
        \t@pgf@toka=\expandafter\expandafter\expandafter{\csname pgfpPRP@#2@smallbuf\endcsname}%
        \t@pgf@tokb={#1}%
        \expandafter\edef\csname pgfpPRP@#2@smallbuf\endcsname{\the\t@pgf@tokb\the\t@pgf@toka}%
    \else
        \pgfprependlistpushfront@smallbufoverfl{#1}{#2}%
    \fi
}%
\long\def\pgfprependlistpushfront@smallbufoverfl#1#2{%
    \begingroup
        \c@pgf@counta=\csname pgfpPRP@#2@bigbuf@c\endcsname\relax
        \advance\c@pgf@counta by1
        \xdef\pgf@glob@TMPa{\the\c@pgf@counta}%
    \endgroup
    \expandafter\let\csname pgfpPRP@#2@bigbuf@c\endcsname=\pgf@glob@TMPa
    \ifnum\csname pgfpPRP@#2@bigbuf@c\endcsname<30
        \t@pgf@toka=\expandafter\expandafter\expandafter{\csname pgfpPRP@#2@bigbuf\endcsname}%
        \t@pgf@tokb=\expandafter\expandafter\expandafter{\csname pgfpPRP@#2@smallbuf\endcsname}%
        \t@pgf@tokc={#1}%
        \expandafter\edef\csname pgfpPRP@#2@bigbuf\endcsname{\the\t@pgf@tokc\the\t@pgf@tokb\the\t@pgf@toka}%
        \expandafter\let\csname pgfpPRP@#2@smallbuf\endcsname=\pgfutil@empty
        \expandafter\def\csname pgfpPRP@#2@smallbuf@c\endcsname{0}%
    \else%
        \pgfprependlist@flushbuffers{#2}%
        \t@pgf@toka=\expandafter\expandafter\expandafter{\csname pgfpPRP@#2\endcsname}%
        \t@pgf@tokb={#1}%
        \expandafter\edef\csname pgfpPRP@#2\endcsname{\the\t@pgf@tokb\the\t@pgf@toka}%
    \fi%
}%
\def\pgfprependlist@flushbuffers#1{%
    \t@pgf@toka=\expandafter\expandafter\expandafter{\csname pgfpPRP@#1\endcsname}%
    \t@pgf@tokb=\expandafter\expandafter\expandafter{\csname pgfpPRP@#1@bigbuf\endcsname}%
    \t@pgf@tokc=\expandafter\expandafter\expandafter{\csname pgfpPRP@#1@smallbuf\endcsname}%
    \expandafter\edef\csname pgfpPRP@#1\endcsname{\the\t@pgf@tokc\the\t@pgf@tokb\the\t@pgf@toka}%
    \expandafter\let\csname pgfpPRP@#1@smallbuf\endcsname=\pgfutil@empty
    \expandafter\def\csname pgfpPRP@#1@smallbuf@c\endcsname{0}%
    \expandafter\let\csname pgfpPRP@#1@bigbuf\endcsname=\pgfutil@empty
    \expandafter\def\csname pgfpPRP@#1@bigbuf@c\endcsname{0}%
}%
\def\pgfprependlistlet#1=#2{%
    \pgfprependlist@flushbuffers{#2}%
    \expandafter\let\expandafter#1\csname pgfpPRP@#2\endcsname
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfutil-common-lists.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfutil-common.tex ====





\catcode`\@=11\relax


\newif\ifpgfutil@format@is@latex
\newif\ifpgfutil@format@is@plain
\newif\ifpgfutil@format@is@context


\let\pgfutil@exp\romannumeral
\chardef\pgfutil@exp@end=0


\catcode`\Q=3
\def\pgfutil@trimspaces#1{%
  \romannumeral-`0\pgfutil@trimspaces@\noexpand#1Q Q}
\def\pgfutil@trimspaces@#1 Q{\pgfutil@trimspaces@@#1Q}
\def\pgfutil@trimspaces@@#1Q#2{#1}
\catcode`\Q=11

\long\def\pgfutil@ifx#1#2{%
  \ifx#1#2%
    \expandafter\pgfutil@firstoftwo
  \else
    \expandafter\pgfutil@secondoftwo
  \fi}

\long\def\pgfutil@ifstrequal#1#2{%
  \ifnum\pgfsys@strcmp{\pgfutil@unexpanded{#1}}{\pgfutil@unexpanded{#2}}=0
    \expandafter\pgfutil@firstoftwo
  \else
    \expandafter\pgfutil@secondoftwo
  \fi
}

\def\pgfutil@ifxempty{\pgfutil@ifx\pgfutil@empty}

\long\def\pgfutil@ifempty#1{%
  \if\relax\detokenize{#1}\relax
    \expandafter\pgfutil@firstoftwo
  \else
    \expandafter\pgfutil@secondoftwo
  \fi}

\def\pgfutil@ifundefined#1{%
  \expandafter\pgfutil@ifx\csname#1\endcsname\relax}

\def\pgfutil@IfUndefined#1{%
  \ifcsname#1\endcsname
    \expandafter\pgfutil@secondoftwo
  \else
    \expandafter\pgfutil@firstoftwo
  \fi
}

\long\def\pgfutil@firstofone#1{#1}
\long\def\pgfutil@firstoftwo#1#2{#1}
\long\def\pgfutil@secondoftwo#1#2{#2}
\def\pgfutil@empty{}
\long\def\pgfutil@gobble@until@relax#1\relax{}
\long\def\pgfutil@gobble#1{}
\long\def\pgfutil@gobbletwo#1#2{}
\def\pgfutil@namedef#1{\expandafter\def\csname #1\endcsname}
\def\pgfutil@namelet#1{\expandafter\pgfutil@@namelet\csname#1\endcsname}
\def\pgfutil@@namelet#1#2{\expandafter\let\expandafter#1\csname#2\endcsname}
\long\def\pgfutil@g@addto@macro#1#2{%
  \begingroup
    \pgfutil@toks@\expandafter{#1#2}%
    \xdef#1{\the\pgfutil@toks@}%
 \endgroup}
\newif\ifpgfutil@tempswa
\newif\ifpgfutil@tempswb


\let\pgfutil@pushmacro@string\pgfutil@empty

\def\pgfutil@pushmacro#1{%
    \xdef\pgfutil@pushmacro@string{\string#1}%
    \ifcsname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname\else
        \csname newcount\expandafter\endcsname\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname
    \fi
    \global\advance\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname 1\relax
    \global\expandafter\let\csname\the\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname\pgfutil@pushmacro@string\endcsname#1%
}

\def\pgfutil@popmacro#1{%
    \xdef\pgfutil@pushmacro@string{\string#1}%
    \expandafter\let\expandafter#1\csname\the\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname\pgfutil@pushmacro@string\endcsname
    \global\advance\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname -1\relax
}


\long\def\pgfutil@ifnextchar#1#2#3{%
  \let\pgfutil@reserved@d=#1%
  \def\pgfutil@reserved@a{#2}%
  \def\pgfutil@reserved@b{#3}%
  \futurelet\pgfutil@let@token\pgfutil@ifnch}
\def\pgfutil@ifnch{%
  \ifx\pgfutil@let@token\pgfutil@sptoken
    \let\pgfutil@reserved@c\pgfutil@xifnch
  \else
    \ifx\pgfutil@let@token\pgfutil@reserved@d
      \let\pgfutil@reserved@c\pgfutil@reserved@a
    \else
      \let\pgfutil@reserved@c\pgfutil@reserved@b
    \fi
  \fi
  \pgfutil@reserved@c}
{%
  \def\:{\global\let\pgfutil@sptoken= } \:
  \def\:{\pgfutil@xifnch} \expandafter\gdef\: {\futurelet\pgfutil@let@token\pgfutil@ifnch}
}


\def\pgfutil@ignorespaces
  {\ifx\pgfutil@let@token\pgfutil@sptoken
     \expandafter\pgfutil@ignorespaces@helper
   \else
     \expandafter\pgfutil@next
   \fi}

{
  \def\:{\pgfutil@ignorespaces@helper}
  \expandafter\gdef\: {\futurelet\pgfutil@let@token\pgfutil@ignorespaces}
}


\newif\ifpgfutil@in@

\def\pgfutil@in@#1#2{%
 \def\pgfutil@in@@##1#1##2##3\pgfutil@in@@{%
  \ifx\pgfutil@in@##2\pgfutil@in@false\else\pgfutil@in@true\fi}%
 \pgfutil@in@@#2#1\pgfutil@in@\pgfutil@in@@}



\def\pgfutil@nnil{\pgfutil@nil}
\def\pgfutil@fornoop#1\@@#2#3{}
\long\def\pgfutil@for#1:=#2\do#3{%
  \expandafter\def\expandafter\pgfutil@fortmp\expandafter{#2}%
  \ifx\pgfutil@fortmp\pgfutil@empty \else
    \expandafter\pgfutil@forloop#2,\pgfutil@nil,\pgfutil@nil\@@#1{#3}\fi}
\long\def\pgfutil@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\pgfutil@nnil \else
       #5\def#4{#2}\ifx #4\pgfutil@nnil \else#5\pgfutil@iforloop #3\@@#4{#5}\fi\fi}
\long\def\pgfutil@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\pgfutil@nnil
       \expandafter\pgfutil@fornoop \else
      #4\relax\expandafter\pgfutil@iforloop\fi#2\@@#3{#4}}
\def\pgfutil@tfor#1:={\pgfutil@tf@r#1 }
\long\def\pgfutil@tf@r#1#2\do#3{\def\pgfutil@fortmp{#2}\ifx\pgfutil@fortmp\pgfutil@space\else
    \pgfutil@tforloop#2\pgfutil@nil\pgfutil@nil\@@#1{#3}\fi}
\long\def\pgfutil@tforloop#1#2\@@#3#4{\def#3{#1}\ifx #3\pgfutil@nnil
       \expandafter\pgfutil@fornoop \else
      #4\relax\expandafter\pgfutil@tforloop\fi#2\@@#3{#4}}

\def\pgfutil@space{ }


\chardef\pgfutil@inputcheck0
\def\pgfutil@IfFileExists#1#2#3{%
  \openin\pgfutil@inputcheck=#1 %
  \ifeof\pgfutil@inputcheck
     #3\relax
  \else
    #2\relax
  \fi
  \closein\pgfutil@inputcheck}

\def\pgfutil@InputIfFileExists#1#2#3{\pgfutil@IfFileExists{#1}{\input #1\relax#2}{#3}}%



\def\pgfutil@loop#1\pgfutil@repeat{\def\pgfutil@body{#1}\pgfutil@iterate}
\def\pgfutil@iterate{\pgfutil@body \let\pgfutil@next\pgfutil@iterate \else\let\pgfutil@next\relax\fi \pgfutil@next}
\let\pgfutil@repeat=\fi %


\let\pgfutil@scan@mark\relax
\let\pgfutil@scan@stop\relax

\long\def\pgfutil@switch#1#2#3#4#5{%
  \pgfutil@exp
  \pgfutil@switch@@{#1}%
  {#2}#3%
  {#2}{}%
  \pgfutil@scan@mark{#4}%
  \pgfutil@scan@mark{#5}%
  \pgfutil@scan@stop
}
\long\def\pgfutil@switch@@#1#2#3#4{%
  #1{#2}{#3}%
    {\pgfutil@switch@end{#4}}%
    {\pgfutil@switch@@{#1}{#2}}%
}
\long\def\pgfutil@switch@end#1#2#3\pgfutil@scan@mark#4#5\pgfutil@scan@stop{\pgfutil@exp@end#1#4}


\let\pgfutil@aux@read@hook=\relax



\newtoks\pgfutil@everybye




\def\pgfutil@addpdfresource@extgs#1{\pgf@sys@addpdfresource@extgs@plain{#1}}
\def\pgfutil@addpdfresource@colorspaces#1{\pgf@sys@addpdfresource@colorspaces@plain{#1}}
\def\pgfutil@addpdfresource@patterns#1{\pgf@sys@addpdfresource@patterns@plain{#1}}
\def\pgfutil@setuppdfresources{\pgf@sys@setuppdfresources@plain}



\let\pgfutil@insertatbegincurrentpage=\relax



\def\pgfutil@raggedright{\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}
\def\pgfutil@raggedleft{\leftskip\z@ plus2em \rightskip\z@ \spaceskip.3333em \xspaceskip.5em\parfillskip0pt\relax}


\def\pgfutil@packageerror#1#2#3{\errhelp{#3}\errmessage{Package #1 Error: #2}}
\def\pgfutil@packagewarning#1#2{\immediate\write17{Package #1: Warning! #2.}}
\def\pgferror#1{\pgfutil@packageerror{pgf}{#1}{}}
\def\pgfwarning#1{\pgfutil@packagewarning{pgf}{#1}}





\def\usepgflibrary{\pgfutil@ifnextchar[{\use@pgflibrary}{\use@@pgflibrary}}%
\def\use@pgflibrary[#1]{\use@@pgflibrary{#1}}
\def\use@@pgflibrary#1{%
  \edef\pgf@list{#1}%
  \pgfutil@for\pgf@temp:=\pgf@list\do{%
    \expandafter\pgfkeys@spdef\expandafter\pgf@temp\expandafter{\pgf@temp}%
    \ifx\pgf@temp\pgfutil@empty
    \else
      \expandafter\ifx\csname pgf@library@\pgf@temp @loaded\endcsname\relax%
      \expandafter\let\csname pgf@library@\pgf@temp @loaded\endcsname=\pgfutil@empty%
      \expandafter\edef\csname pgf@library@#1@atcode\endcsname{\the\catcode`\@}
      \expandafter\edef\csname pgf@library@#1@barcode\endcsname{\the\catcode`\|}
      \expandafter\edef\csname pgf@library@#1@dollarcode\endcsname{\the\catcode`\$}
      \catcode`\@=11
      \catcode`\|=12
      \catcode`\$=3
      \pgfutil@InputIfFileExists{pgflibrary\pgf@temp.code.tex}{}{%
          \pgferror{I did not find the pgf library
            '\pgf@temp'. I looked for the file named
            pgflibrary\pgf@temp.code.tex, but could not find it in
            the current texmf trees.}
        }%
      \catcode`\@=\csname pgf@library@#1@atcode\endcsname
      \catcode`\|=\csname pgf@library@#1@barcode\endcsname
      \catcode`\$=\csname pgf@library@#1@dollarcode\endcsname
      \fi%
    \fi
  }%
}



\def\usepgfmodule{\pgfutil@ifnextchar[{\use@pgfmodule}{\use@@pgfmodule}}%
\def\use@pgfmodule[#1]{\use@@pgfmodule{#1}}
\def\use@@pgfmodule#1{%
  \edef\pgf@list{#1}%
  \pgfutil@for\pgf@temp:=\pgf@list\do{%
    \expandafter\ifx\csname pgf@module@\pgf@temp @loaded\endcsname\relax%
      \expandafter\let\csname pgf@module@\pgf@temp @loaded\endcsname=\pgfutil@empty%
      \expandafter\edef\csname pgf@module@#1@atcode\endcsname{\the\catcode`\@}
      \expandafter\edef\csname pgf@module@#1@barcode\endcsname{\the\catcode`\|}
      \expandafter\edef\csname pgf@module@#1@dollarcode\endcsname{\the\catcode`\$}
      \catcode`\@=11
      \catcode`\|=12
      \catcode`\$=3
      \input pgfmodule\pgf@temp.code.tex
      \catcode`\@=\csname pgf@module@#1@atcode\endcsname
      \catcode`\|=\csname pgf@module@#1@barcode\endcsname
      \catcode`\$=\csname pgf@module@#1@dollarcode\endcsname
    \fi%
  }%
}

\def\pgfutilensuremath#1{%
  \ifmmode#1\else$#1$\fi
}



\begingroup
    \catcode`\"=12
    \edef\pgf@loc@TMPa{"}%
    \gdef\pgfutilpreparefilename#1{%
        \begingroup
            \ifnum\the\catcode`\"=13
                \pgfutilconvertdcolon
            \fi
            \xdef\pgf@temp{#1}%
        \endgroup
        \expandafter\pgfutil@in@\expandafter"\expandafter{\pgf@temp}%
        \ifpgfutil@in@
            \def\pgf@loc@TMPa{\pgfutilstrreplace{"}{}}%
            \expandafter\pgf@loc@TMPa\expandafter{\pgf@temp}%
            \edef\pgfretval{"\pgfretval"}%
            \let\pgfretvalquoted=\pgfretval
        \else
            \let\pgfretval=\pgf@temp
            \edef\pgfretvalquoted{"\pgfretval"}%
        \fi
    }%
    \catcode`\"=13
    \xdef\pgfutilconvertdcolon{%
        \noexpand\def\noexpand"{\pgf@loc@TMPa}%
    }%
\endgroup

\def\pgfutil@command@to@string#1#2{%
    \expandafter\pgfutil@command@to@string@@\meaning#1\pgfutil@EOI{#2}%
}%
\xdef\pgfutil@glob@TMPa{\meaning\pgfutil@empty}%
\expandafter\def\expandafter\pgfutil@command@to@string@@\pgfutil@glob@TMPa#1\pgfutil@EOI#2{%
    \def#2{#1}%
}%
\begingroup
\catcode`\|=0
\catcode`\\=12
|gdef|pgfutil@backslash@as@other{\}%
|endgroup

\def\pgfutilifcontainsmacro#1#2#3{%
    \def\pgf@marshal{#1}%
    \pgfutil@command@to@string\pgf@marshal\pgf@marshal
    \edef\pgf@marshal{\noexpand\pgfutil@in@{\pgfutil@backslash@as@other}{\pgf@marshal}}%
    \pgf@marshal
    \ifpgfutil@in@
        \def\pgf@marshal{#2}%
    \else
        \def\pgf@marshal{#3}%
    \fi
    \pgf@marshal
}%

\def\pgfutilifstartswith#1#2#3#4{%
    \def\pgfutilifstartswith@ ##1#1##2\pgf@EOI{%
        \def\pgfutil@tmp{##1}%
        \ifx\pgfutil@tmp\pgfutil@empty
            \def\pgfutil@tmp#1####1\pgf@EOI{%
                \def\pgfretval{####1}%
            }%
            \pgfutil@tmp#2\pgf@EOI%
            #3\relax%
        \else
            #4\relax%
        \fi
    }%
    \pgfutilifstartswith@#2--#1\pgf@EOI%
}%

\long\def\pgfutilstrreplace#1#2#3{%
    \def\pgfretval{}%
    \long\def\pgfutil@search@and@replace@@##1#1##2\pgf@EOI{%
        \expandafter\def\expandafter\pgfretval\expandafter{\pgfretval ##1#2}%
        \pgfutil@search@and@replace@loop{#1}{##2}%
    }%
    \pgfutil@search@and@replace@loop{#1}{#3}%
}
\long\def\pgfutil@search@and@replace@loop#1#2{%
    \pgfutil@in@{#1}{#2}%
    \ifpgfutil@in@
        \def\pgf@loc@TMPa{\pgfutil@search@and@replace@@ #2\pgf@EOI}%
    \else
        \expandafter\def\expandafter\pgfretval\expandafter{\pgfretval #2}%
        \let\pgf@loc@TMPa=\relax
    \fi
    \pgf@loc@TMPa
}%

\def\pgfutilsolvetwotwoleq#1#2{%
    \begingroup
        \dimendef\aa=0
        \dimendef\ab=1
        \dimendef\ba=2
        \dimendef\bb=3
        \dimendef\ra=4
        \dimendef\rb=5
        \dimendef\tmpa=6
        \dimendef\tmpb=7
        \edef\pgf@temp{#1}%
        \expandafter\pgfutilsolvetwotwoleq@A\pgf@temp
        \edef\pgf@temp{#2}%
        \expandafter\pgfutilsolvetwotwoleq@r\pgf@temp
        \pgfutilsolvetwotwoleq@ifislarger\aa\ba{%
            \def\Pa{a}%
            \def\Pb{b}%
        }{%
            \def\Pa{b}%
            \def\Pb{a}%
        }%
        \tmpa=\csname m\Pa a\endcsname pt %
        \ifdim\tmpa<0pt \tmpa=-\tmpa\fi
        \ifdim\tmpa<0.0001pt
            \let\pgfmathresult=\pgfutil@empty
        \else
            \pgfmathreciprocal@
                {\csname m\Pa a\endcsname}%
            \let\pivot=\pgfmathresult
            \csname \Pb a\endcsname=\pivot\csname \Pb a\endcsname
            \edef\factor{\expandafter\pgf@sys@tonumber\csname \Pb a\endcsname}%
            \tmpa=-\factor\csname \Pa b\endcsname
            \advance\csname \Pb b\endcsname by\tmpa
            \tmpa=-\factor\csname r\Pa\endcsname
            \advance\csname r\Pb\endcsname by\tmpa
            \tmpa=\csname \Pb b\endcsname%
            \ifdim\tmpa<0pt \tmpa=-\tmpa\fi
            \ifdim\tmpa<0.0001pt
                \let\pgfmathresult=\pgfutil@empty
            \else
                \pgfmathdivide@
                    {\expandafter\pgf@sys@tonumber\csname r\Pb\endcsname}
                    {\expandafter\pgf@sys@tonumber\csname \Pb b\endcsname}%
                \expandafter\let\csname pgfmathresult\Pb\endcsname=\pgfmathresult
                \tmpa=\csname pgfmathresult\Pb\endcsname\csname \Pa b\endcsname
                \advance\csname r\Pa\endcsname by-\tmpa
                \tmpa=\pivot\csname r\Pa\endcsname
                \expandafter\edef\csname pgfmathresult\Pa\endcsname{\pgf@sys@tonumber\tmpa}%
                \edef\pgfmathresult{%
                    {\csname pgfmathresult\Pa\endcsname}%
                    {\csname pgfmathresult\Pb\endcsname}%
                }%
            \fi
        \fi
        \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

\def\pgfutilsolvetwotwoleq@ifislarger#1#2#3#4{%
    \tmpa=#1
    \ifdim\tmpa<0pt
        \multiply\tmpa by-1
    \fi
    \tmpb=#2
    \ifdim\tmpb<0pt
        \multiply\tmpb by-1
    \fi
    \ifdim\tmpa>\tmpb
        #3%
    \else
        #4%
    \fi
}%

\def\pgfutilsolvetwotwoleqfloat@ifislarger#1#2#3#4{%
    \pgfmathfloatabs@{#1}\let\tmpa=\pgfmathresult
    \pgfmathfloatabs@{#2}\let\tmpb=\pgfmathresult
    \pgfmathfloatlessthan@{\tmpb}{\tmpa}%
    \ifpgfmathfloatcomparison
        #3%
    \else
        #4%
    \fi
}%
\def\pgfutilsolvetwotwoleq@A#1#2#3#4{%
    \def\maa{#1}\def\mab{#2}%
    \def\mba{#3}\def\mbb{#3}%
    \aa=#1pt \ab=#2pt
    \ba=#3pt \bb=#4pt
}
\def\pgfutilsolvetwotwoleq@r#1#2{%
    \ra=#1pt \rb=#2pt
}%
\def\pgfutilsolvetwotwoleqfloat@A#1#2#3#4{%
    \pgfmathfloatparsenumber{#1}\let\maa=\pgfmathresult
    \pgfmathfloatparsenumber{#2}\let\mab=\pgfmathresult
    \pgfmathfloatparsenumber{#3}\let\mba=\pgfmathresult
    \pgfmathfloatparsenumber{#4}\let\mbb=\pgfmathresult
}
\def\pgfutilsolvetwotwoleqfloat@r#1#2{%
    \pgfmathfloatparsenumber{#1}\let\ra=\pgfmathresult
    \pgfmathfloatparsenumber{#2}\let\rb=\pgfmathresult
}%

\def\pgfutilsolvetwotwoleqfloat#1#2{%
    \begingroup
        \pgfmathfloatcreate{1}{1.0}{-4}%
        \let\thresh=\pgfmathresult
        \edef\pgf@temp{#1}%
        \expandafter\pgfutilsolvetwotwoleqfloat@A\pgf@temp
        \edef\pgf@temp{#2}%
        \expandafter\pgfutilsolvetwotwoleqfloat@r\pgf@temp
        \pgfutilsolvetwotwoleqfloat@ifislarger\maa\mba{%
            \def\Pa{a}%
            \def\Pb{b}%
        }{%
            \def\Pa{b}%
            \def\Pb{a}%
        }%
        \expandafter\pgfmathfloatabs@\expandafter{\csname m\Pa a\endcsname}%
        \let\tmpa=\pgfmathresult
        \pgfmathfloatlessthan@{\tmpa}{\thresh}%
        \ifpgfmathfloatcomparison
            \let\pgfmathresult=\pgfutil@empty
        \else
            \expandafter\pgfmathfloatreciprocal@\expandafter{\csname m\Pa a\endcsname}%
            \let\pivot=\pgfmathresult
            \expandafter\pgfmathfloatmultiply@\expandafter{\csname m\Pb a\endcsname}{\pivot}%
            \let\factor=\pgfmathresult
            \expandafter\let\csname m\Pb a\endcsname=\factor
            \expandafter\pgfmathfloatmultiply@\expandafter{\csname m\Pa b\endcsname}{\factor}%
            \let\tmpa=\pgfmathresult
            \expandafter\pgfmathfloatsubtract@\expandafter{\csname m\Pb b\endcsname}{\tmpa}%
            \expandafter\let\csname m\Pb b\endcsname=\pgfmathresult
            \expandafter\pgfmathfloatmultiply@\expandafter{\csname r\Pa\endcsname}{\factor}%
            \let\tmpa=\pgfmathresult
            \expandafter\pgfmathfloatsubtract@\expandafter{\csname r\Pb\endcsname}{\tmpa}%
            \expandafter\let\csname r\Pb\endcsname=\pgfmathresult
            \expandafter\pgfmathfloatabs@\expandafter{\csname m\Pb b\endcsname}%
            \let\tmpa=\pgfmathresult
            \pgfmathfloatlessthan@{\tmpa}{\thresh}%
            \ifpgfmathfloatcomparison
                \let\pgfmathresult=\pgfutil@empty
            \else
                \edef\pgf@marshal{%
                    \noexpand\pgfmathfloatdivide@
                        {\csname r\Pb\endcsname}
                        {\csname m\Pb b\endcsname}%
                }%
                \pgf@marshal
                \expandafter\let\csname pgfmathresult\Pb\endcsname=\pgfmathresult
                \let\tmpa=\pgfmathresult
                \expandafter\pgfmathfloatmultiply@\expandafter{\csname m\Pa b\endcsname}{\tmpa}%
                \let\tmpa=\pgfmathresult
                \expandafter\pgfmathfloatsubtract@\expandafter{\csname r\Pa\endcsname}{\tmpa}%
                \expandafter\let\csname r\Pa\endcsname=\pgfmathresult
                \expandafter\pgfmathfloatmultiply@\expandafter{\csname r\Pa\endcsname}{\pivot}%
                \expandafter\let\csname pgfmathresult\Pa\endcsname=\pgfmathresult
                \edef\pgfmathresult{%
                    {\csname pgfmathresult\Pa\endcsname}%
                    {\csname pgfmathresult\Pb\endcsname}%
                }%
                \expandafter\pgfutilsolvetwotwoleqfloat@to@pgf@range\pgfmathresult
            \fi
        \fi
        \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%


\def\pgfutilsolvetwotwoleqfloat@to@pgf@range#1#2{%
    \pgfmathfloatcreate{1}{1.6}{4}\let\pgfutilsolvetwotwoleqfloat@to@pgf@range@max=\pgfmathresult
    \pgfmathfloatabs@{#1}%
    \expandafter\pgfmathfloatlessthan@\expandafter{\pgfmathresult}{\pgfutilsolvetwotwoleqfloat@to@pgf@range@max}%
    \ifpgfmathfloatcomparison
        \pgfmathfloatabs@{#2}%
        \expandafter\pgfmathfloatlessthan@\expandafter{\pgfmathresult}{\pgfutilsolvetwotwoleqfloat@to@pgf@range@max}%
        \ifpgfmathfloatcomparison
            \pgfmathfloattofixed{#1}\let\tmpa=\pgfmathresult
            \pgfmathfloattofixed{#2}%
            \edef\pgfmathresult{{\tmpa}{\pgfmathresult}}%
        \else
            \let\pgfmathresult=\pgfutil@empty
        \fi
    \else
        \let\pgfmathresult=\pgfutil@empty
    \fi
}%

\let\pgfutil@write=\write
\let\pgfutil@read=\read

\let\pgfutil@protect\relax

\def\pgfutil@check@rerun#1#2{}

\newdimen\pgfutil@tempdima
\newdimen\pgfutil@tempdimb


\let\pgfutil@ifluatex\iffalse
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname directlua\endcsname\relax
\else
  \expandafter\let\csname pgfutil@ifluatex\expandafter\endcsname
    \csname iftrue\endcsname
\fi

\pgfutil@ifluatex
  \let\pgfutil@directlua\directlua
  \pgfutil@directlua{%
    tex.enableprimitives('pgfutil@',{'luaescapestring'})}
\else
  \def\pgfutil@directlua#1{}
  \def\pgfutil@luaescapestring#1{}
\fi


\def\pgfutil@shellescape@lua@eightseven#1{%
    \pgfutil@directlua{os.execute("\pgfutil@luaescapestring{#1}")}%
}%
\def\pgfutil@shellescape#1{%
    \immediate\write18{#1}%
}%
\pgfutil@IfUndefined{directlua}{%
}{%
    \pgfutil@IfUndefined{lastsavedimageresourcepages}{%
    }{%
        \let\pgfutil@shellescape=\pgfutil@shellescape@lua@eightseven
    }%
}%


\def\pgfutil@advancestringcounter#1{%
    \begingroup
        \c@pgf@counta=#1\relax
        \advance\c@pgf@counta by1
        \edef#1{\the\c@pgf@counta}%
        \pgfmath@smuggleone#1%
    \endgroup
}%

\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/generic/pgf/utilities/pgfutil-common.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/doc/pgfmanual-en-macros.tex ====



\newcount\pgfmanualtargetcount

\colorlet{examplefill}{yellow!80!black}
\definecolor{graphicbackground}{rgb}{0.96,0.96,0.8}
\definecolor{codebackground}{rgb}{0.9,0.9,1}
\definecolor{animationgraphicbackground}{rgb}{0.96,0.96,0.8}

\newenvironment{pgfmanualentry}{\list{}{\leftmargin=2em\itemindent-\leftmargin\def\makelabel##1{\hss##1}}}{\endlist}
\newcounter{pgfmanualentry}
\newcommand\pgfmanualentryheadline[1]{%
  \itemsep=0pt\parskip=0pt{\raggedright\item\refstepcounter{pgfmanualentry}\strut{#1}\par}\topsep=0pt}
\newcommand\pgfmanualbody{\parskip3pt}

\let\origtexttt=\texttt
\def\texttt#1{{\def\textunderscore{\char`\_}\def\textbraceleft{\char`\{}\def\textbraceright{\char`\}}\origtexttt{#1}}}
\def\exclamationmarktext{!}
\def\atmarktext{@}

{
  \catcode`\|=12
  \gdef\pgfmanualnormalbar{|}
  \catcode`\|=13
  \AtBeginDocument{\gdef|{\ifmmode\pgfmanualnormalbar\else\expandafter\verb\expandafter|\fi}}
}



\newenvironment{pgflayout}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \texttt{\string\pgfpagesuselayout\char`\{\declare{#1}\char`\}}\oarg{options}%
    }
    \index{#1@\protect\texttt{#1} layout}%
    \index{Page layouts!#1@\protect\texttt{#1}}%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}


\newenvironment{sysanimateattribute}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \texttt{\string\pgfsysanimate\char`\{\declare{#1}\char`\}}%
    }
    \index{#1@\protect\texttt{#1} system layer animation attribute}%
    \index{Animation attributes (system layer)!#1@\protect\texttt{#1}}%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}


\newenvironment{animateattribute}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \texttt{\string\pgfanimateattribute\char`\{\declare{#1}\char`\}\marg{options}}%
    }
    \index{#1@\protect\texttt{#1} basic layer animation attribute}%
    \index{Animation attributes (basic layer)!#1@\protect\texttt{#1}}%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}


\newenvironment{tikzanimateattribute}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \foreach \attr in{#1} {\expandafter\pgfmanualpdflabel\expandafter{\attr}{}}%
      \textbf{Animation attribute} \foreach \attr[count=\i]
      in{#1}{{\ifnum\i>1 \textbf,\fi} \texttt{:\declare{\attr}}}%
    }
    \foreach\attr in{#1}{%
      \edef\indexcall{%
        \noexpand\index{\attr@\noexpand\protect\noexpand\texttt{\attr} animation attribute}%
        \noexpand\index{Animation attributes!\attr@\noexpand\protect\noexpand\texttt{\attr}}%
      }%
      \indexcall%
    }%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}


\newenvironment{command}[1]{
  \begin{pgfmanualentry}
    \extractcommand#1\@@
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\makeatletter

\def\includeluadocumentationof#1{
  \directlua{require 'pgf.manual.DocumentParser'}
  \directlua{pgf.manual.DocumentParser.include '#1'}
}

\newenvironment{luageneric}[4]{
  \pgfmanualentry
    \pgfmanualentryheadline{#4 \texttt{#1\declare{#2}}#3}
    \index{#2@\protect\texttt{#2} (Lua)}%
    \def\temp{#1}
    \ifx\temp\pgfutil@empty\else
      \index{#1@\protect\texttt{#1}!#2@\protect\texttt{#2} (Lua)}%
    \fi
  \pgfmanualbody
}{\endpgfmanualentry}

\newenvironment{luatable}[3]{
  \medskip
  \luageneric{#1}{#2}{ (declared in \texttt{#3})}{\textbf{Lua table}}
}{\endluageneric}

\newenvironment{luafield}[1]{
  \pgfmanualentry
    \pgfmanualentryheadline{Field \texttt{\declare{#1}}}
  \pgfmanualbody
}{\endpgfmanualentry}


\newenvironment{lualibrary}[1]{
  \pgfmanualentry
  \pgfmanualentryheadline{%
    \pgfmanualpdflabel{#1}{}%
    \textbf{Graph Drawing Library} \texttt{\declare{#1}}%
  }
    \index{#1@\protect\texttt{#1} graph drawing library}%
    \index{Libraries!#1@\protect\texttt{#1}}%
    \index{Graph drawing libraries!#1@\protect\texttt{#1}}%
    \vskip.25em
    {\ttfamily\char`\\usegdlibrary\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space  \LaTeX\space and plain \TeX}\\
    {\ttfamily\char`\\usegdlibrary[\declare{#1}]\space \char`\%\space\space Con\TeX t}\smallskip\par
    \pgfmanualbody
}{\endpgfmanualentry}

\newenvironment{luadeclare}[4]{
  \pgfmanualentry
  \def\manual@temp@default{#3}%
  \def\manual@temp@initial{#4}%
  \def\manual@temp@{#3#4}%
  \pgfmanualentryheadline{%
    \pgfmanualpdflabel{#1}{}%
    {\ttfamily/graph
      drawing/\declare{#1}\opt{=}}\opt{#2}\hfill%
    \ifx\manual@temp@\pgfutil@empty\else%
    (\ifx\manual@temp@default\pgfutil@empty\else%
    default {\ttfamily #3}\ifx\manual@temp@initial\pgfutil@empty\else, \fi%
    \fi%
    \ifx\manual@temp@initial\pgfutil@empty\else%
    initially {\ttfamily #4}%
    \fi%
    )\fi%
  }%
  \index{#1@\protect\texttt{#1} key}%
  \pgfmanualbody
  \gdef\myname{#1}%
}{\endpgfmanualentry}

\newenvironment{luadeclarestyle}[4]{
  \pgfmanualentry
  \def\manual@temp@para{#2}%
  \def\manual@temp@default{#3}%
  \def\manual@temp@initial{#4}%
  \def\manual@temp@{#3#4}%
  \pgfmanualentryheadline{%
    \pgfmanualpdflabel{#1}{}%
    {\ttfamily/graph drawing/\declare{#1}}\ifx\manual@temp@para\pgfutil@empty\else\opt{\texttt=}\opt{#2}\fi\hfill%
    (style\ifx\manual@temp@\pgfutil@empty\else, %
    \ifx\manual@temp@default\pgfutil@empty\else%
    default {\ttfamily #3}\ifx\manual@temp@initial\pgfutil@empty\else, \fi%
    \fi%
    \ifx\manual@temp@initial\pgfutil@empty\else%
    initially {\ttfamily #4}%
    \fi%
    \fi)%
  }%
  \index{#1@\protect\texttt{#1} key}%
  \pgfmanualbody%
  \gdef\myname{#1}%
}{\endpgfmanualentry}

\newenvironment{luanamespace}[2]{
  \luageneric{#1}{#2}{}{\textbf{Lua namespace}}
}{\endluageneric}

\newenvironment{luafiledescription}[1]{}{}

\newenvironment{luacommand}[4]{
  \hypertarget{pgf/lua/#1}{\luageneric{#2}{#3}{\texttt{(#4)}}{\texttt{function}}}
}{\endluageneric}

\newenvironment{luaparameters}{\par\emph{Parameters:}%
  \parametercount=0\relax%
  \let\item=\parameteritem%
  \let\list=\restorelist%
}
{\par
}

\newenvironment{luareturns}{\par\emph{Returns:}%
  \parametercount=0\relax%
  \let\item=\parameteritem%
  \let\list=\restorelist%
}
{\par
}

\newcount\parametercount

\newenvironment{parameterdescription}{\unskip%
  \parametercount=0\relax%
  \let\item=\parameteritem%
  \let\list=\restorelist%
}
{\par
}
\let\saveditemcommand=\item
\let\savedlistcommand=\list
\def\denselist#1#2{\savedlistcommand{#1}{#2}\parskip0pt\itemsep0pt}
\def\restorelist{\let\item=\saveditemcommand\denselist}
\def\parameteritem{\pgfutil@ifnextchar[\parameteritem@{}}%
\def\parameteritem@[#1]{\advance\parametercount by1\relax\hskip0.15em plus 1em\emph{\the\parametercount.}\kern1ex\def\test{#1}\ifx\test\pgfutil@empty\else#1\kern.5em\fi}

\newenvironment{commandlist}[1]{%
  \begin{pgfmanualentry}
  \foreach \xx in {#1} {%
    \expandafter\extractcommand\xx\@@
  }%
  \pgfmanualbody
}{%
  \end{pgfmanualentry}
}%

\newenvironment{internallist}[2][register]{%
  \begin{pgfmanualentry}
  \foreach \xx in {#2} {%
    \expandafter\extractinternalcommand\expandafter{\xx}{#1}%
  }%
  \pgfmanualbody
}{%
  \end{pgfmanualentry}
}%
\def\extractinternalcommand#1#2{%
  \removeats{#1}%
  \pgfmanualentryheadline{%
    \pgfmanualpdflabel{\textbackslash\strippedat}{}%
    Internal #2 \declare{\texttt{\string#1}}}%
  \index{Internals!\strippedat @\protect\myprintocmmand{\strippedat}}%
  \index{\strippedat @\protect\myprintocmmand{\strippedat}}%
}

\def\mvar#1{{\ifmmode\textrm{\textit{#1}}\else\rmfamily\textit{#1}\fi}}

\makeatletter

\def\extractmathfunctionname#1{\extractmathfunctionname@#1(,)\tmpa\tmpb}
\def\extractmathfunctionname@#1(#2)#3\tmpb{\def\mathname{#1}}

\makeatother
  
\newenvironment{math-function}[1]{
  \def\mathdefaultname{#1}
  \extractmathfunctionname{#1}
  \edef\mathurl{{math:\mathname}}\expandafter\hypertarget\expandafter{\mathurl}{}%
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{\texttt{#1}}%
    \index{\mathname @\protect\texttt{\mathname} math function}%
    \index{Math functions!\mathname @\protect\texttt{\mathname}}%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\def\pgfmanualemptytext{}
\def\pgfmanualvbarvbar{\char`\|\char`\|}

\newenvironment{math-operator}[4][]{%
  \begin{pgfmanualentry}
  \csname math#3operator\endcsname{#2}{#4}
  \def\mathtest{#4}%
  \ifx\mathtest\pgfmanualemptytext%
    \def\mathtype{(#3 operator)}
  \else%
    \def\mathtype{(#3 operator; uses the \texttt{#4} function)}
  \fi%
  \pgfmanualentryheadline{\mathexample\hfill\mathtype}%
  \def\mathtest{#1}%
  \ifx\mathtest\pgfmanualemptytext%
    \index{#2@\protect\texttt{#2} #3 math operator}%
    \index{Math operators!#2@\protect\texttt{#2}}%
  \fi%
  \pgfmanualbody
}
{\end{pgfmanualentry}}

\newenvironment{math-operators}[5][]{%
  \begin{pgfmanualentry}
  \csname math#4operator\endcsname{#2}{#3}
  \def\mathtest{#5}%
  \ifx\mathtest\pgfmanualemptytext%
    \def\mathtype{(#4 operators)}
  \else%
    \def\mathtype{(#4 operators; use the \texttt{#5} function)}
  \fi%
  \pgfmanualentryheadline{\mathexample\hfill\mathtype}%
  \def\mathtest{#1}%
  \ifx\mathtest\pgfmanualemptytext%
    \index{#2#3@\protect\texttt{#2\protect\ #3} #4 math operators}%
    \index{Math operators!#2#3@\protect\texttt{#2\protect\ #3}}%
  \fi%
  \pgfmanualbody
}
{\end{pgfmanualentry}}

\def\mathinfixoperator#1#2{%
  \def\mathoperator{\texttt{#1}}%
  \def\mathexample{\mvar{x}\space\texttt{#1}\space\mvar{y}}%
}

\def\mathprefixoperator#1#2{%
  \def\mathoperator{\texttt{#1}}%
  \def\mathexample{\texttt{#1}\mvar{x}}%
}

\def\mathpostfixoperator#1#2{%
  \def\mathoperator{\texttt{#1}}
  \def\mathexample{\mvar{x}\texttt{#1}}%
}

\def\mathgroupoperator#1#2{%
  \def\mathoperator{\texttt{#1\ #2}}%
  \def\mathexample{\texttt{#1}\mvar{x}\texttt{#2}}%
}

\expandafter\let\csname matharray accessoperator\endcsname=\mathgroupoperator
\expandafter\let\csname matharrayoperator\endcsname=\mathgroupoperator

\def\mathconditionaloperator#1#2{%
  \def\mathoperator{#1\space#2}
  \def\mathexample{\mvar{x}\ \texttt{#1}\ \mvar{y}\ {\texttt{#2}}\ \mvar{z}}
}

\newcommand\mathcommand[1][\mathdefaultname]{%
  \expandafter\makemathcommand#1(\empty)\stop%
  \expandafter\extractcommand\mathcommandname\@@%
  \medskip
}
\makeatletter

\def\makemathcommand#1(#2)#3\stop{%
  \expandafter\def\expandafter\mathcommandname\expandafter{\csname pgfmath#1\endcsname}%
  \ifx#2\empty%
  \else%
    \@makemathcommand#2,\stop,
  \fi}
\def\@makemathcommand#1,{%
  \ifx#1\stop%
  \else%
    \expandafter\def\expandafter\mathcommandname\expandafter{\mathcommandname{\ttfamily\char`\{#1\char`\}}}%
    \expandafter\@makemathcommand%
  \fi}
\makeatother

\def\calcname{\textsc{calc}}

\newenvironment{math-keyword}[1]{
  \extracttikzmathkeyword#1@
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{\texttt{\color{red}\mathname}\mathrest}%
    \index{\mathname @\protect\texttt{\mathname} tikz math function}%
    \index{TikZ math functions!\mathname @\protect\texttt{\mathname}}%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\def\extracttikzmathkeyword#1#2@{%
  \def\mathname{#1}%
  \def\mathrest{#2}%
}



\def\extractcommand#1#2\@@{%
  \removeats{#1}%
  \pgfmanualentryheadline{%
    \pgfmanualpdflabel{\textbackslash\strippedat}{}%
    \declare{\expandafter\texttt\expandafter{\string#1}}#2%
  }%
  \index{\strippedat @\protect\myprintocmmand{\strippedat}}
}

\def\luaextractcommand#1#2\relax{%
  \declare{\texttt{\string#1}}#2\par%
}


\renewenvironment{environment}[1]{
  \begin{pgfmanualentry}
    \extractenvironement#1\@@
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\def\extractenvironement#1#2\@@{%
  \pgfmanualentryheadline{%
    \pgfmanualpdflabel{#1}{}%
    {\ttfamily\char`\\begin\char`\{\declare{#1}\char`\}}#2%
  }%
  \pgfmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}%
  \pgfmanualentryheadline{{\ttfamily\char`\\end\char`\{\declare{#1}\char`\}}}%
  \index{#1@\protect\texttt{#1} environment}%
  \index{Environments!#1@\protect\texttt{#1}}
}


\newenvironment{plainenvironment}[1]{
  \begin{pgfmanualentry}
    \extractplainenvironement#1\@@
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\def\extractplainenvironement#1#2\@@{%
  \pgfmanualentryheadline{{\ttfamily\declare{\char`\\#1}}#2}%
  \pgfmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}%
  \pgfmanualentryheadline{{\ttfamily\declare{\char`\\end#1}}}%
  \index{#1@\protect\texttt{#1} environment}%
  \index{Environments!#1@\protect\texttt{#1}}%
}


\newenvironment{contextenvironment}[1]{
  \begin{pgfmanualentry}
    \extractcontextenvironement#1\@@
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\def\extractcontextenvironement#1#2\@@{%
  \pgfmanualentryheadline{{\ttfamily\declare{\char`\\start#1}}#2}%
  \pgfmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}%
  \pgfmanualentryheadline{{\ttfamily\declare{\char`\\stop#1}}}%
  \index{#1@\protect\texttt{#1} environment}%
  \index{Environments!#1@\protect\texttt{#1}}}


\newenvironment{shape}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{Shape} {\ttfamily\declare{#1}}%
    }%
    \index{#1@\protect\texttt{#1} shape}%
    \index{Shapes!#1@\protect\texttt{#1}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{pictype}[2]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{Pic type} {\ttfamily\declare{#1}#2}%
    }%
    \index{#1@\protect\texttt{#1} pic type}%
    \index{Pic Types!#1@\protect\texttt{#1}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{shading}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{Shading} {\ttfamily\declare{#1}}}%
    \index{#1@\protect\texttt{#1} shading}%
    \index{Shadings!#1@\protect\texttt{#1}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}


\newenvironment{graph}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{Graph} {\ttfamily\declare{#1}}}%
    \index{#1@\protect\texttt{#1} graph}%
    \index{Graphs!#1@\protect\texttt{#1}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{gdalgorithm}[2]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{Layout} {\ttfamily/graph drawing/\declare{#1}\opt{=}}\opt{\meta{options}}}%
    \index{#1@\protect\texttt{#1} layout}%
    \index{Layouts!#1@\protect\texttt{#1}}%
    \foreach \algo in {#2}
    {\edef\marshal{\noexpand\index{#2@\noexpand\protect\noexpand\texttt{#2} algorithm}}\marshal}%
    \index{Graph drawing layouts!#1@\protect\texttt{#1}}
    \item{\small alias {\ttfamily/tikz/#1}}\par
    \item{\small alias {\ttfamily/tikz/graphs/#1}}\par
    \item{\small Employs {\ttfamily algorithm=#2}}\par
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{dataformat}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{Format} {\ttfamily\declare{#1}}}%
    \index{#1@\protect\texttt{#1} format}%
    \index{Formats!#1@\protect\texttt{#1}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{stylesheet}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{Style sheet} {\ttfamily\declare{#1}}}%
    \index{#1@\protect\texttt{#1} style sheet}%
    \index{Style sheets!#1@\protect\texttt{#1}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{handler}[1]{
  \begin{pgfmanualentry}
    \extracthandler#1\@nil%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\def\gobble#1{}
\def\extracthandler#1#2\@nil{%
  \pgfmanualentryheadline{%
    \pgfmanualpdflabel{/handlers/#1}{}%
    \textbf{Key handler} \meta{key}{\ttfamily/\declare{#1}}#2}%
  \index{\gobble#1@\protect\texttt{#1} handler}%
  \index{Key handlers!#1@\protect\texttt{#1}}
}


\makeatletter


\newenvironment{stylekey}[1]{
  \begin{pgfmanualentry}
    \def\extrakeytext{style, }
    \extractkey#1\@nil%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\def\choicesep{$\vert$}%
\def\choicearg#1{\texttt{#1}}

\newif\iffirstchoice

\newcommand\mchoice[1]{%
  \begingroup
  \firstchoicetrue
  \foreach \mchoice@ in {#1} {%
    \iffirstchoice
      \global\firstchoicefalse
    \else
      \choicesep
    \fi
    \choicearg{\mchoice@}%
  }%
  \endgroup
}%

\newenvironment{key}[1]{
  \begin{pgfmanualentry}
    \def\extrakeytext{}
    \extractkey#1\@nil%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\def\insertpathifneeded#1#2{%
  \def\insertpathifneeded@@{#2}%
  \ifx\insertpathifneeded@@\empty
    \def\mykey{#1}%
  \else
    \insertpathifneeded@#2\@nil
    \ifpgfutil@in@
      \def\mykey{#2/#1}%
    \else
      \def\mykey{#1}%
    \fi
  \fi
}%
\def\insertpathifneeded@#1#2\@nil{%
  \def\insertpathifneeded@@{#1}%
  \def\insertpathifneeded@@@{/}%
  \ifx\insertpathifneeded@@\insertpathifneeded@@@
    \pgfutil@in@true
  \else
    \pgfutil@in@false
  \fi
}%

\newenvironment{keylist}[2][]{%
  \begin{pgfmanualentry}
    \def\extrakeytext{}%
  \foreach \xx in {#2} {%
    \expandafter\insertpathifneeded\expandafter{\xx}{#1}%
    \expandafter\extractkey\mykey\@nil%
  }%
  \pgfmanualbody
}{%
  \end{pgfmanualentry}
}%

\def\extractkey#1\@nil{%
  \pgfutil@in@={#1}%
  \ifpgfutil@in@%
    \extractkeyequal#1\@nil
  \else%
    \pgfutil@in@{(initial}{#1}%
    \ifpgfutil@in@%
      \extractequalinitial#1\@nil%
    \else
      \pgfmanualentryheadline{%
      \def\mykey{#1}%
      \def\mypath{}%
      \gdef\myname{}%
      \firsttimetrue%
      \pgfmanualdecomposecount=0\relax%
      \decompose#1/\nil%
        {\ttfamily\declare{#1}}\hfill(\extrakeytext no value)}%
    \fi
  \fi%
}

\def\extractkeyequal#1=#2\@nil{%
  \pgfutil@in@{(default}{#2}%
  \ifpgfutil@in@%
    \extractdefault{#1}#2\@nil%
  \else%
    \pgfutil@in@{(initial}{#2}%
    \ifpgfutil@in@%
      \extractinitial{#1}#2\@nil%
    \else
      \pgfmanualentryheadline{%
        \def\mykey{#1}%
        \def\mypath{}%
        \gdef\myname{}%
        \firsttimetrue%
        \pgfmanualdecomposecount=0\relax%
        \decompose#1/\nil%
        {\ttfamily\declare{#1}=}#2\hfill(\extrakeytext no default)}%
    \fi%
  \fi%
}

\def\extractdefault#1#2(default #3)\@nil{%
  \pgfmanualentryheadline{%
    \def\mykey{#1}%
    \def\mypath{}%
    \gdef\myname{}%
    \firsttimetrue%
    \pgfmanualdecomposecount=0\relax%
    \decompose#1/\nil%
    {\ttfamily\declare{#1}\opt{=}}\opt{#2}\hfill (\extrakeytext default {\ttfamily#3})}%
}

\def\extractinitial#1#2(initially #3)\@nil{%
  \pgfmanualentryheadline{%
    \def\mykey{#1}%
    \def\mypath{}%
    \gdef\myname{}%
    \firsttimetrue%
    \pgfmanualdecomposecount=0\relax%
    \decompose#1/\nil%
    {\ttfamily\declare{#1}=}#2\hfill (\extrakeytext no default, initially {\ttfamily#3})}%
}

\def\extractequalinitial#1 (initially #2)\@nil{%
  \pgfmanualentryheadline{%
    \def\mykey{#1}%
    \def\mypath{}%
    \gdef\myname{}%
    \firsttimetrue%
    \pgfmanualdecomposecount=0\relax%
    \decompose#1/\nil%
    {\ttfamily\declare{#1}}\hfill (\extrakeytext initially {\ttfamily#2})}%
}

\def\keyalias#1{\vspace{-3pt}\item{\small alias {\ttfamily/#1/\myname}}\vspace{-2pt}\par
  \pgfmanualpdflabel{/#1/\myname}{}%
}

\newif\iffirsttime
\newcount\pgfmanualdecomposecount

\makeatother

\def\decompose/#1/#2\nil{%
  \def\test{#2}%
  \ifx\test\empty%
    \index{#1@\protect\texttt{#1} key}%
    \index{\mypath#1@\protect\texttt{#1}}%
    \gdef\myname{#1}%
    \pgfmanualpdflabel{#1}{}
  \else%
    \advance\pgfmanualdecomposecount by1\relax%
    \ifnum\pgfmanualdecomposecount>2\relax%
      \decomposetoodeep#1/#2\nil%
    \else%
      \iffirsttime%
        \begingroup%
          \def\hyperlabelwithoutslash##1/\nil{%
            \pgfmanualpdflabel{##1}{}%
          }%
          \hyperlabelwithoutslash/#1/#2\nil%
        \endgroup%
        \def\mypath{#1@\protect\texttt{/#1/}!}%
        \firsttimefalse%
      \else%
        \expandafter\def\expandafter\mypath\expandafter{\mypath#1@\protect\texttt{#1/}!}%
      \fi%
      \def\firsttime{}%
      \decompose/#2\nil%
    \fi%
  \fi%
}

\def\decomposetoodeep#1/#2/\nil{%
  \index{#1/#2@\protect\texttt{#1/#2} key}%
  \index{\mypath#1/#2@\protect\texttt{#1/#2}}%
  \decomposefindlast/#1/#2/\nil%
}
\makeatletter
\def\decomposefindlast/#1/#2\nil{%
  \def\test{#2}%
  \ifx\test\pgfutil@empty%
    \gdef\myname{#1}%
  \else%
    \decomposefindlast/#2\nil%
  \fi%
}
\makeatother
\def\indexkey#1{%
  \def\mypath{}%
  \decompose#1/\nil%
}

\newenvironment{predefinedmethod}[1]{
  \begin{pgfmanualentry}
    \extractpredefinedmethod#1\@nil
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}
\def\extractpredefinedmethod#1(#2)\@nil{%
  \pgfmanualentryheadline{%
    \pgfmanualpdflabel{#1}{}%
    Method \declare{\ttfamily #1}\texttt(#2\texttt) \hfill(predefined for all classes)}
  \index{#1@\protect\texttt{#1} method}%
  \index{Methods!#1@\protect\texttt{#1}}
}


\newenvironment{ooclass}[1]{
  \begin{pgfmanualentry}
    \def\currentclass{#1}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{Class} \declare{\texttt{#1}}}
    \index{#1@\protect\texttt{#1} class}%
    \index{Class #1@Class \protect\texttt{#1}}%
    \index{Classes!#1@\protect\texttt{#1}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{method}[1]{
  \begin{pgfmanualentry}
    \extractmethod#1\@nil
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}
\def\extractmethod#1(#2)\@nil{%
  \def\test{#1}
  \ifx\test\currentclass
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      Constructor \declare{\ttfamily #1}\texttt(#2\texttt)}
  \else
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      Method \declare{\ttfamily #1}\texttt(#2\texttt)}
  \fi
  \index{#1@\protect\texttt{#1} method}%
  \index{Methods!#1@\protect\texttt{#1}}
  \index{Class \currentclass!#1@\protect\texttt{#1}}%
}

\newenvironment{classattribute}[1]{
  \begin{pgfmanualentry}
    \extractattribute#1\@nil
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}
\def\extractattribute#1=#2;\@nil{%
  \def\test{#2}%
  \ifx\test\@empty
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      Private attribute \declare{\ttfamily #1} \hfill (initially empty)}
  \else
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      Private attribute \declare{\ttfamily #1} \hfill (initially {\ttfamily #2})}
  \fi
  \index{#1@\protect\texttt{#1} attribute}%
  \index{Attributes!#1@\protect\texttt{#1}}
  \index{Class \currentclass!#1@\protect\texttt{#1}}%
}



\newenvironment{predefinednode}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{Predefined node} {\ttfamily\declare{#1}}}%
    \index{#1@\protect\texttt{#1} node}%
    \index{Predefined node!#1@\protect\texttt{#1}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{coordinatesystem}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{Coordinate system} {\ttfamily\declare{#1}}}%
    \index{#1@\protect\texttt{#1} coordinate system}%
    \index{Coordinate systems!#1@\protect\texttt{#1}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{snake}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{\textbf{Snake} {\ttfamily\declare{#1}}}%
    \index{#1@\protect\texttt{#1} snake}%
    \index{Snakes!#1@\protect\texttt{#1}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{decoration}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{\textbf{Decoration} {\ttfamily\declare{#1}}}%
    \index{#1@\protect\texttt{#1} decoration}%
    \index{Decorations!#1@\protect\texttt{#1}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}


\def\pgfmanualbar{\char`\|}
\makeatletter
\newenvironment{pathoperation}[3][]{
  \begin{pgfmanualentry}
    \def\pgfmanualtest{#1}%
    \pgfmanualentryheadline{%
      \ifx\pgfmanualtest\@empty%
        \pgfmanualpdflabel{#2}{}%
      \fi%
      \textcolor{gray}{{\ttfamily\char`\\path}\
        \ \dots}
      \declare{\texttt{\noligs{#2}}}#3\ \textcolor{gray}{\dots\texttt{;}}}%
    \ifx\pgfmanualtest\@empty%
      \index{#2@\protect\texttt{#2} path operation}%
      \index{Path operations!#2@\protect\texttt{#2}}%
    \fi%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}
\newenvironment{datavisualizationoperation}[3][]{
  \begin{pgfmanualentry}
    \def\pgfmanualtest{#1}%
    \pgfmanualentryheadline{%
      \ifx\pgfmanualtest\@empty%
        \pgfmanualpdflabel{#2}{}%
      \fi%
      \textcolor{gray}{{\ttfamily\char`\\datavisualization}\
        \ \dots}
      \declare{\texttt{\noligs{#2}}}#3\ \textcolor{gray}{\dots\texttt{;}}}%
    \ifx\pgfmanualtest\@empty%
      \index{#2@\protect\texttt{#2} (data visualization)}%
      \index{Data visualization!#2@\protect\texttt{#2}}%
    \fi%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}
\makeatother

\def\doublebs{\texttt{\char`\\\char`\\}}


\newenvironment{package}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      {\ttfamily\char`\\usepackage\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space  \LaTeX}}
    \index{#1@\protect\texttt{#1} package}%
    \index{Packages and files!#1@\protect\texttt{#1}}%
    \pgfmanualentryheadline{{\ttfamily\char`\\input \declare{#1}.tex\space\space\space \char`\%\space\space  plain \TeX}}
    \pgfmanualentryheadline{{\ttfamily\char`\\usemodule[\declare{#1}]\space\space \char`\%\space\space  Con\TeX t}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}


\newenvironment{pgfmodule}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      {\ttfamily\char`\\usepgfmodule\char`\{\declare{#1}\char`\}\space\space\space
        \char`\%\space\space  \LaTeX\space and plain \TeX\space and pure pgf}}
    \index{#1@\protect\texttt{#1} module}%
    \index{Modules!#1@\protect\texttt{#1}}%
    \pgfmanualentryheadline{{\ttfamily\char`\\usepgfmodule[\declare{#1}]\space\space \char`\%\space\space  Con\TeX t\space and pure pgf}}
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{pgflibrary}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{\tikzname\ Library} \texttt{\declare{#1}}}
    \index{#1@\protect\texttt{#1} library}%
    \index{Libraries!#1@\protect\texttt{#1}}%
    \vskip.25em%
    {{\ttfamily\char`\\usepgflibrary\char`\{\declare{#1}\char`\}\space\space\space
        \char`\%\space\space  \LaTeX\space and plain \TeX\space and pure pgf}}\\
    {{\ttfamily\char`\\usepgflibrary[\declare{#1}]\space\space \char`\%\space\space  Con\TeX t\space and pure pgf}}\\
    {{\ttfamily\char`\\usetikzlibrary\char`\{\declare{#1}\char`\}\space\space
        \char`\%\space\space  \LaTeX\space and plain \TeX\space when using \tikzname}}\\
    {{\ttfamily\char`\\usetikzlibrary[\declare{#1}]\space
        \char`\%\space\space  Con\TeX t\space when using \tikzname}}\\[.5em]
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{purepgflibrary}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{{\small PGF} Library} \texttt{\declare{#1}}}
    \index{#1@\protect\texttt{#1} library}%
    \index{Libraries!#1@\protect\texttt{#1}}%
    \vskip.25em%
    {{\ttfamily\char`\\usepgflibrary\char`\{\declare{#1}\char`\}\space\space\space
        \char`\%\space\space  \LaTeX\space and plain \TeX}}\\
    {{\ttfamily\char`\\usepgflibrary[\declare{#1}]\space\space \char`\%\space\space  Con\TeX t}}\\[.5em]
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{tikzlibrary}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{\tikzname\ Library} \texttt{\declare{#1}}}
    \index{#1@\protect\texttt{#1} library}%
    \index{Libraries!#1@\protect\texttt{#1}}%
    \vskip.25em%
    {{\ttfamily\char`\\usetikzlibrary\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space  \LaTeX\space and plain \TeX}}\\
    {{\ttfamily\char`\\usetikzlibrary[\declare{#1}]\space \char`\%\space\space Con\TeX t}}\\[.5em]
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\newenvironment{pgfkeyslibrary}[1]{%
  \begin{pgfmanualentry}%
    \pgfmanualentryheadline{%
      \pgfmanualpdflabel{#1}{}%
      \textbf{pgfkeys Library} \texttt{\declare{#1}}}%
    \index{#1@\protect\texttt{#1} pgfkeys library}%
    \index{pgfkeys Libraries!#1@\protect\texttt{#1}}%
    \vskip.25em
    {{\ttfamily\char`\\usepgfkeyslibrary\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space  \LaTeX\space and plain \TeX}}\\
    {{\ttfamily\char`\\usepgfkeyslibrary[\declare{#1}]\space \char`\%\space\space Con\TeX t}}\\[.5em]%
    \pgfmanualbody
}%
{%
  \end{pgfmanualentry}%
}


\newenvironment{filedescription}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{File {\ttfamily\declare{#1}}}%
    \index{#1@\protect\texttt{#1} file}%
    \index{Packages and files!#1@\protect\texttt{#1}}%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}


\newenvironment{packageoption}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{{\ttfamily\char`\\usepackage[\declare{#1}]\char`\{pgf\char`\}}}
    \index{#1@\protect\texttt{#1} package option}%
    \index{Package options for \textsc{pgf}!#1@\protect\texttt{#1}}%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}



\newcommand\opt[1]{{\color{black!50!green}#1}}
\newcommand\ooarg[1]{{\ttfamily[}\meta{#1}{\ttfamily]}}

\def\opt{\afterassignment\pgfmanualopt\let\next=}
\def\pgfmanualopt{\ifx\next\bgroup\bgroup\color{black!50!green}\else{\color{black!50!green}\next}\fi}



\def\beamer{\textsc{beamer}}
\def\pdf{\textsc{pdf}}
\def\eps{\texttt{eps}}
\def\pgfname{\textsc{pgf}}
\def\tikzname{Ti\emph{k}Z}
\def\pstricks{\textsc{pstricks}}
\def\prosper{\textsc{prosper}}
\def\seminar{\textsc{seminar}}
\def\texpower{\textsc{texpower}}
\def\foils{\textsc{foils}}

{
  \makeatletter
  \global\let\myempty=\@empty
  \global\let\mygobble=\@gobble
  \catcode`\@=12
  \gdef\getridofats#1@#2\relax{%
    \def\getridtest{#2}%
    \ifx\getridtest\myempty%
      \expandafter\def\expandafter\strippedat\expandafter{\strippedat#1}
    \else%
      \expandafter\def\expandafter\strippedat\expandafter{\strippedat#1\protect\printanat}
      \getridofats#2\relax%
    \fi%
  }

  \gdef\removeats#1{%
    \let\strippedat\myempty%
    \edef\strippedtext{\stripcommand#1}%
    \expandafter\getridofats\strippedtext @\relax%
  }
  
  \gdef\stripcommand#1{\expandafter\mygobble\string#1}
}

\def\printanat{\char`\@}

\def\declare{\afterassignment\pgfmanualdeclare\let\next=}
\def\pgfmanualdeclare{\ifx\next\bgroup\bgroup\color{red!75!black}\else{\color{red!75!black}\next}\fi}


\let\textoken=\command
\let\endtextoken=\endcommand

\def\myprintocmmand#1{\texttt{\char`\\#1}}

\def\example{\par\smallskip\noindent\textit{Example: }}
\def\themeauthor{\par\smallskip\noindent\textit{Theme author: }}


\def\indexoption#1{%
  \index{#1@\protect\texttt{#1} option}%
  \index{Graphic options and styles!#1@\protect\texttt{#1}}%
}

\def\itemcalendaroption#1{\item \declare{\texttt{#1}}%
  \index{#1@\protect\texttt{#1} date test}%
  \index{Date tests!#1@\protect\texttt{#1}}%
}



\def\class#1{\list{}{\leftmargin=2em\itemindent-\leftmargin\def\makelabel##1{\hss##1}}%
\extractclass#1@\par\topsep=0pt}
\def\endclass{\endlist}
\def\extractclass#1#2@{%
\item{{{\ttfamily\char`\\documentclass}#2{\ttfamily\char`\{\declare{#1}\char`\}}}}%
  \index{#1@\protect\texttt{#1} class}%
  \index{Classes!#1@\protect\texttt{#1}}}

\def\partname{Part}

\makeatletter
\def\index@prologue{\section*{Index}\addcontentsline{toc}{section}{Index}
  This index only contains automatically generated entries. A good
  index should also contain carefully selected keywords. This index is
  not a good index.
  \bigskip
}
\c@IndexColumns=2
  \def\theindex{\@restonecoltrue
    \columnseprule \z@  \columnsep 29\p@
    \twocolumn[\index@prologue]%
       \parindent -30pt
       \columnsep 15pt
       \parskip 0pt plus 1pt
       \leftskip 30pt
       \rightskip 0pt plus 2cm
       \small
       \def\@idxitem{\par}%
    \let\item\@idxitem \ignorespaces}
  \def\endtheindex{\onecolumn}
\def\noindexing{\let\index=\@gobble}


\newenvironment{arrowtipsimple}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{\textbf{Arrow Tip Kind} {\ttfamily#1}}
    \index{#1@\protect\texttt{#1} arrow tip}%
    \index{Arrow tips!#1@\protect\texttt{#1}}%
    \def\currentarrowtype{#1}
    \pgfmanualbody}
{
  \end{pgfmanualentry}
}

\newenvironment{arrowtip}[4]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{\textbf{Arrow Tip Kind} {\ttfamily#1}}
    \index{#1@\protect\texttt{#1} arrow tip}%
    \index{Arrow tips!#1@\protect\texttt{#1}}%
    \pgfmanualbody
    \def\currentarrowtype{#1}
    \begin{minipage}[t]{10.25cm}
      #2
    \end{minipage}\hskip5mm\begin{minipage}[t]{4.75cm}
      \leavevmode\vskip-2em
    \tikz{
      \draw [black!50,line width=5mm,-{#1[#3,color=black]}] (-4,0) -- (0,0);
      \foreach \action in {#4}
      { \expandafter\processaction\action\relax }
    }
    \end{minipage}\par\smallskip
  }
{
  \end{pgfmanualentry}
}

\newenvironment{arrowcap}[5]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{\textbf{Arrow Tip Kind} {\ttfamily#1}}
    \index{#1@\protect\texttt{#1} arrow tip}%
    \index{Arrow tips!#1@\protect\texttt{#1}}%
    \pgfmanualbody
    \def\currentarrowtype{#1}
    \begin{minipage}[t]{10.25cm}
      #2
    \end{minipage}\hskip5mm\begin{minipage}[t]{4.75cm}
      \leavevmode\vskip-2em
    \tikz{
      \path [tips, line width=10mm,-{#1[#3,color=black]}] (-4,0) -- (0,0);
      \draw [line width=10mm,black!50] (-3,0) -- (#5,0);
      \foreach \action in {#4}
      { \expandafter\processaction\action\relax }
    }
    \end{minipage}\par\smallskip
  }
{
  \end{pgfmanualentry}
}

\newenvironment{pattern}[1]{
  \begin{pgfmanualentry}
    \pgfmanualentryheadline{\textbf{Pattern} {\ttfamily#1}}
    \index{#1@\protect\texttt{#1} pattern}%
    \index{Patterns!#1@\protect\texttt{#1}}%
    \pgfmanualbody
}
{
  \end{pgfmanualentry}
}

\def\processaction#1=#2\relax{
  \expandafter\let\expandafter\pgf@temp\csname manual@action@#1\endcsname
  \ifx\pgf@temp\relax\else
    \pgf@temp#2/0/\relax
  \fi
}
\def\manual@action@length#1/#2/#3\relax{%
  \draw [red,|<->|,semithick,xshift=#2] ([yshift=4pt]current bounding
  box.north -| -#1,0) coordinate (last length) -- node
  [above=-2pt] {|length|} ++(#1,0);
}
\def\manual@action@width#1/#2/#3\relax{%
  \draw [overlay, red,|<->|,semithick] (.5,-#1/2) -- node [below,sloped] {|width|} (.5,#1/2);
}
\def\manual@action@inset#1/#2/#3\relax{%
  \draw [red,|<->|,semithick,xshift=#2] ([yshift=-4pt]current bounding
  box.south -| last length) -- node [below] {|inset|} ++(#1,0);
}

\newenvironment{arrowexamples}
{\begin{tabbing}
    \hbox to \dimexpr\linewidth-5.5cm\relax{\emph{Appearance of the below at line width} \hfil} \= 
     \hbox to 1.9cm{\emph{0.4pt}\hfil} \= \hbox to 2cm{\emph{0.8pt}\hfil} \= \emph{1.6pt} \\
  }
{\end{tabbing}\vskip-1em}

\newenvironment{arrowcapexamples}
{\begin{tabbing}
    \hbox to \dimexpr\linewidth-5.5cm\relax{\emph{Appearance of the below at line width} \hfil} \= 
     \hbox to 1.9cm{\emph{1ex}\hfil} \= \hbox to 2cm{\emph{1em}\hfil} \\
  }
{\end{tabbing}\vskip-1em}

\def\arrowcapexample#1[#2]{\def\temp{#1}\ifx\temp\pgfutil@empty\arrowcapexample@\currentarrowtype[{#2}]\else\arrowcapexample@#1[{#2}]\fi}
\def\arrowcapexample@#1[#2]{%
  {\sfcode`\.1000\small\texttt{#1[#2]}} \>
  \kern-.5ex\tikz [baseline,>={#1[#2]}] \draw [line
  width=1ex,->] (0,.5ex) -- (2em,.5ex);  \>
  \kern-.5em\tikz [baseline,>={#1[#2]}] \draw [line
  width=1em,->] (0,.5ex) -- (2em,.5ex);  \\
}

\def\arrowexample#1[#2]{\def\temp{#1}\ifx\temp\pgfutil@empty\arrowexample@\currentarrowtype[{#2}]\else\arrowexample@#1[{#2}]\fi}
\def\arrowexample@#1[#2]{%
  {\sfcode`\.1000\small\texttt{#1[#2]}} \>
  \tikz [baseline,>={#1[#2]}] \draw [line
  width=0.4pt,->] (0,.5ex) -- (2em,.5ex); thin \>
  \tikz [baseline,>={#1[#2]}] \draw [line
  width=0.8pt,->] (0,.5ex) -- (2em,.5ex); \textbf{thick} \>
  \tikz [baseline,>={#1[#2]}] \draw [line
  width=1.6pt,->] (0,.5ex) -- (3em,.5ex); \\
}
\def\arrowexampledup[#1]{\arrowexample[{#1] \currentarrowtype[}]}
\def\arrowexampledupdot[#1]{\arrowexample[{#1] . \currentarrowtype[}]}

\def\arrowexampledouble#1[#2]{\def\temp{#1}\ifx\temp\pgfutil@empty\arrowexampledouble@\currentarrowtype[{#2}]\else\arrowexampledouble@#1[{#2}]\fi}
\def\arrowexampledouble@#1[#2]{%
  {\sfcode`\.1000\small\texttt{#1[#2]} on double line} \>
  \tikz [baseline,>={#1[#2]}]
    \draw [double equal sign distance,line width=0.4pt,->] (0,.5ex) -- (2em,.5ex); thin \>
  \tikz [baseline,>={#1[#2]}]
    \draw [double equal sign distance,line width=0.8pt,->] (0,.5ex) -- (2em,.5ex); \textbf{thick} \>
  \tikz [baseline,>={#1[#2]}]
    \draw [double equal sign distance, line width=1.6pt,->] (0,.5ex) -- (3em,.5ex); \\
}



\newcommand\symarrow[1]{%
  \index{#1@\protect\texttt{#1} arrow tip}%
  \index{Arrow tips!#1@\protect\texttt{#1}}%
  \texttt{#1}& yields thick  
  \begin{tikzpicture}[arrows={#1-#1},thick,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
    \fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw (0pt,.5ex) -- (1cm,.5ex);
  \end{tikzpicture} and thin
  \begin{tikzpicture}[arrows={#1-#1},thin,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
    \fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw (0pt,.5ex) -- (1cm,.5ex);
  \end{tikzpicture}
}
\newcommand\symarrowdouble[1]{%
  \index{#1@\protect\texttt{#1} arrow tip}%
  \index{Arrow tips!#1@\protect\texttt{#1}}%
  \texttt{#1}& yields thick  
  \begin{tikzpicture}[arrows={#1-#1},thick,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
    \fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw (0pt,.5ex) -- (1cm,.5ex);
  \end{tikzpicture}
  and thin
  \begin{tikzpicture}[arrows={#1-#1},thin,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
    \fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw (0pt,.5ex) -- (1cm,.5ex);
  \end{tikzpicture}, double 
  \begin{tikzpicture}[arrows={#1-#1},thick,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
    \fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw[double,double equal sign distance] (0pt,.5ex) -- (1cm,.5ex);
  \end{tikzpicture} and 
  \begin{tikzpicture}[arrows={#1-#1},thin,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
    \fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw[double,double equal sign distance] (0pt,.5ex) -- (1cm,.5ex);
  \end{tikzpicture}
}

\newcommand\sarrow[2]{%
  \index{#1@\protect\texttt{#1} arrow tip}%
  \index{Arrow tips!#1@\protect\texttt{#1}}%
  \index{#2@\protect\texttt{#2} arrow tip}%
  \index{Arrow tips!#2@\protect\texttt{#2}}%
  \texttt{#1-#2}& yields thick  
  \begin{tikzpicture}[arrows={#1-#2},thick,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
    \fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw (0pt,.5ex) -- (1cm,.5ex);
  \end{tikzpicture} and thin
  \begin{tikzpicture}[arrows={#1-#2},thin,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
    \fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw (0pt,.5ex) -- (1cm,.5ex);
  \end{tikzpicture}
}

\newcommand\sarrowdouble[2]{%
  \index{#1@\protect\texttt{#1} arrow tip}%
  \index{Arrow tips!#1@\protect\texttt{#1}}%
  \index{#2@\protect\texttt{#2} arrow tip}%
  \index{Arrow tips!#2@\protect\texttt{#2}}%
  \texttt{#1-#2}& yields thick  
  \begin{tikzpicture}[arrows={#1-#2},thick,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
    \fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw (0pt,.5ex) -- (1cm,.5ex);
  \end{tikzpicture} and thin
  \begin{tikzpicture}[arrows={#1-#2},thin,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
    \fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw (0pt,.5ex) -- (1cm,.5ex);
  \end{tikzpicture}, double 
  \begin{tikzpicture}[arrows={#1-#2},thick,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
    \fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw[double,double equal sign distance] (0pt,.5ex) -- (1cm,.5ex);
  \end{tikzpicture} and 
  \begin{tikzpicture}[arrows={#1-#2},thin,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
    \fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw[double,double equal sign distance] (0pt,.5ex) -- (1cm,.5ex);
  \end{tikzpicture}
}

\newcommand\carrow[1]{%
  \index{#1@\protect\texttt{#1} arrow tip}%
  \index{Arrow tips!#1@\protect\texttt{#1}}%
  \texttt{#1}& yields for line width 1ex
  \begin{tikzpicture}[arrows={#1-#1},line width=1ex,baseline]
    \useasboundingbox (-1mm,-0.5ex) rectangle (1.6cm,2ex);
    \fill [black!15] (1.5cm,-.5ex) rectangle (1.6cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
    \draw (0pt,.5ex) -- (1.5cm,.5ex);
  \end{tikzpicture}
}
\def\myvbar{\char`\|}
\newcommand\plotmarkentry[1]{%
  \index{#1@\protect\texttt{#1} plot mark}%
  \index{Plot marks!#1@\protect\texttt{#1}}
  \texttt{\char`\\pgfuseplotmark\char`\{\declare{\noligs{#1}}\char`\}} &
  \tikz\draw[color=black!25] plot[mark=#1,mark options={fill=examplefill,draw=black}] coordinates{(0,0) (.5,0.2) (1,0) (1.5,0.2)};\\
}
\newcommand\plotmarkentrytikz[1]{%
  \index{#1@\protect\texttt{#1} plot mark}%
  \index{Plot marks!#1@\protect\texttt{#1}}
  \texttt{mark=\declare{\noligs{#1}}} & \tikz\draw[color=black!25]
  plot[mark=#1,mark options={fill=examplefill,draw=black}] 
    coordinates {(0,0) (.5,0.2) (1,0) (1.5,0.2)};\\
}



\ifx\scantokens\@undefined
  \PackageError{pgfmanual-macros}{You need to use extended latex
    (elatex) or (pdfelatex) to process this document}{}
\fi

\begingroup
\catcode`|=0
\catcode`[= 1
\catcode`]=2
\catcode`\{=12
\catcode `\}=12
\catcode`\\=12 |gdef|find@example#1\end{codeexample}[|endofcodeexample[#1]]
|endgroup

\begingroup
\catcode`\^=7
\catcode`\^^M=13
\catcode`\^^I=13
\catcode`\ =13%
\gdef\returntospace{\catcode`\ =13\def {\space}\catcode`\^^I=13\def^^I{\space}}
\gdef\showreturn{\show^^M}
\endgroup

\begingroup
\catcode`\%=13
\catcode`\^^M=13
\gdef\commenthandler{\catcode`\%=13\def%{\@gobble@till@return}}
\gdef\@gobble@till@return#1^^M{}
\gdef\@gobble@till@return@ignore#1^^M{\ignorespaces}
\gdef\typesetcomment{\catcode`\%=13\def%{\@typeset@till@return}}
\gdef\@typeset@till@return#1^^M{{\def%{\char`\%}\textsl{\char`\%#1}}\par}
\endgroup

{
\catcode`\^^I=13
\gdef\codeexample@tabinit@replacementchars@{%
 \begingroup
 \count0=\pgfkeysvalueof{/codeexample/tabsize}\relax
 \toks0={}%
 \loop
 \ifnum\count0>0
  \advance\count0 by-1
  \toks0=\expandafter{\the\toks0\ }%
 \repeat
 \xdef\codeexample@tabinit@replacementchars@@{\the\toks0}%
 \endgroup
 \let^^I=\codeexample@tabinit@replacementchars@@
}%
\gdef\codeexample@tabinit@catcode@{\catcode`\^^I=13}%
}%

\def\codeexample@tabinit{%
  \ifnum\pgfkeysvalueof{/codeexample/tabsize}=0\relax
    \let\codeexample@tabinit@replacementchars=\relax
    \let\codeexample@tabinit@catcode=\relax
  \else
    \let\codeexample@tabinit@catcode=\codeexample@tabinit@catcode@
    \let\codeexample@tabinit@replacementchars=\codeexample@tabinit@replacementchars@
  \fi
}

\newif\ifpgfmanualtikzsyntaxhilighting

\pgfqkeys{/codeexample}{%
  width/.code=  {\setlength\codeexamplewidth{#1}},
  graphic/.code=  {\colorlet{graphicbackground}{#1}},
  code/.code=  {\colorlet{codebackground}{#1}},
  execute code/.is if=code@execute,
  hidden/.is if=code@hidden,
  code only/.code=  {\code@executefalse},
  setup code/.code=  {\pgfmanual@setup@codetrue\code@executefalse},
  multipage/.code=  {\code@executefalse\pgfmanual@multipage@codetrue},
  pre/.store in=\code@pre,
  post/.store in=\code@post,
  typeset listing/.code=  {#1},
  render instead/.store in=\code@render,
  vbox/.code=  {\def\code@pre{\vbox\bgroup\setlength{\hsize}{\linewidth-6pt}}\def\code@post{\egroup}},
  ignorespaces/.code=  {\let\@gobble@till@return=\@gobble@till@return@ignore},
  leave comments/.code=  {\def\code@catcode@hook{\catcode`\%=12}\let\commenthandler=\relax\let\typesetcomment=\relax},
  tabsize/.initial=0,%
  every codeexample/.style={width=4cm+7pt, tikz syntax=true},
  from file/.code={\codeexamplefromfiletrue\def\codeexamplesource{#1}},
  tikz syntax/.is if=pgfmanualtikzsyntaxhilighting,
  animation list/.store in=\code@animation@list,
  animation pre/.store in=\code@animation@pre,
  animation post/.store in=\code@animation@post,
  animation scale/.store in=\pgfmanualanimscale,
  animation bb/.style={
    animation pre={
      \tikzset{
        every picture/.style={
          execute at begin picture={
            \useasboundingbox[clip] #1;}
        }
      }
    }
  },
  preamble/.store in=\code@preamble,
}

\def\pgfmanualanimscale{.5}

\newread\examplesource



\def\opensource#1{
  \immediate\openin\examplesource=#1
}
\def\do@codeexamplefromfile{%
  \immediate\openin\examplesource\expandafter{\codeexamplesource}%
  \def\examplelines{}%
  \readexamplelines
  \closein\examplesource
  \expandafter\endofcodeexample\expandafter{\examplelines}%
}

\def\readexamplelines{
  \ifeof\examplesource%
  \else
    \immediate\read\examplesource to \exampleline
    \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\examplelines\expandafter\expandafter\expandafter{\expandafter\examplelines\exampleline}
    \expandafter\readexamplelines%
  \fi
}

\let\code@animation@pre\pgfutil@empty
\let\code@animation@post\pgfutil@empty
\let\code@animation@list\pgfutil@empty

\let\code@pre\pgfutil@empty
\let\code@post\pgfutil@empty
\let\code@render\pgfutil@empty
\let\code@preamble\pgfutil@empty
\def\code@catcode@hook{}

\newif\ifpgfmanual@multipage@code
\newif\ifpgfmanual@setup@code
\newif\ifcodeexamplefromfile
\newdimen\codeexamplewidth
\newif\ifcode@execute
\newif\ifcode@hidden
\newbox\codeexamplebox
\def\codeexample[#1]{%
  \global\let\pgfmanual@do@this\relax%
  \aftergroup\pgfmanual@do@this%
  \begingroup%
  \code@executetrue
  \pgfqkeys{/codeexample}{every codeexample,#1}%
  \pgfmanualswitchoncolors%
  \ifcodeexamplefromfile\begingroup\fi
  \codeexample@tabinit%
  \parindent0pt
  \begingroup%
  \par%
  \ifcode@hidden\else
    \medskip%
  \fi
  \let\do\@makeother%
  \dospecials%
  \obeylines%
  \@vobeyspaces%
  \catcode`\%=13%
  \catcode`\^^M=13%
  \code@catcode@hook%
  \codeexample@tabinit@catcode
  \relax%
  \ifcodeexamplefromfile%
    \expandafter\do@codeexamplefromfile%
  \else%
    \expandafter\find@example%
  \fi}
\def\endofcodeexample#1{%
  \endgroup%
  \ifpgfmanual@setup@code%
    \gdef\pgfmanual@do@this{%
      {%
        \returntospace%
        \commenthandler%
        \obeylines%
        \xdef\code@temp{#1}%
      }%
      \edef\pgfmanualmcatcode{\the\catcode`\^^M}%
      \catcode`\^^M=9\relax%
      \expandafter\scantokens\expandafter{\code@temp}%
      \catcode`\^^M=\pgfmanualmcatcode%
    }%
  \fi%
  \ifcode@hidden\else
    \ifcode@execute%
      \setbox\codeexamplebox=\hbox{%
        \ifx\code@render\pgfutil@empty%
        {%
          {%
            \returntospace%
            \commenthandler%
            \obeylines%
            \xdef\code@temp{#1}%
          }%
          \catcode`\^^M=9%
          \colorbox{graphicbackground}{\color{black}\ignorespaces%
            \code@pre\expandafter\scantokens\expandafter{\code@temp\ignorespaces}\code@post\ignorespaces}%
        }%
        \else%
          \global\let\code@temp\code@render%
          \colorbox{graphicbackground}{\color{black}\ignorespaces%
            \code@render}%
        \fi%
      }%
      \ifx\code@animation@list\pgfutil@empty%
      \else%
      \setbox\codeexampleboxanim=\vbox{%
        \rightskip0pt\leftskip0pt plus1filll%
        \ifdim\wd\codeexamplebox>\codeexamplewidth%
        \else%
          \hsize\codeexamplewidth%
          \advance\hsize by2cm%
        \fi%
        \leavevmode\catcode`\^^M=9%
        \foreach \pgfmanualtime/\pgfmanualtimehow in\code@animation@list{%
          \setbox\codeexampleboxanim=\hbox{\colorbox{animationgraphicbackground}{%
              \tikzset{make snapshot of=\pgfmanualtime}%
              \scalebox{\pgfmanualanimscale}{\color{black}\ignorespaces%
                \code@animation@pre\expandafter\scantokens\expandafter{\code@temp\ignorespaces}\code@animation@post\ignorespaces}%
            }}%
          \space\raise4pt\hbox to0pt{\vrule width0pt height1em\hbox
            to\wd\codeexampleboxanim{\hfil\scriptsize$t{=}\pgfmanualtimehow \mathrm s$\hfil}\hss}%
          \lower\ht\codeexampleboxanim\box\codeexampleboxanim\hfil\penalty0\hskip0ptplus-1fil%
        }%
      }%
      \setbox\codeexampleboxanim=\hbox{\hbox{}\hskip-2cm\box\codeexampleboxanim}%
      \fi%
      \ifdim\wd\codeexamplebox>\codeexamplewidth%
        \def\code@start{\par}%
        \def\code@flushstart{}\def\code@flushend{}%
        \def\code@mid{\parskip2pt\par\noindent}%
        \def\code@width{\linewidth-6pt}%
        \def\code@end{}%
      \else%
        \def\code@start{%
          \linewidth=\textwidth%
          \parshape \@ne 0pt \linewidth
          \leavevmode%
          \hbox\bgroup}%
        \def\code@flushstart{\hfill}%
        \def\code@flushend{\hbox{}}%
        \def\code@mid{\hskip6pt}%
        \def\code@width{\linewidth-12pt-\codeexamplewidth}%
        \def\code@end{\egroup}%
      \fi%
      \code@start%
      \noindent%
      \begin{minipage}[t]{\codeexamplewidth}\raggedright
        \hrule width0pt%
        \footnotesize\vskip-1em%
        \code@flushstart\box\codeexamplebox\code@flushend%
        \vskip0pt%
        \leavevmode%
        \box\codeexampleboxanim%
        \vskip-1ex
        \leavevmode%
      \end{minipage}%
    \else%
      \def\code@mid{\par}
      \def\code@width{\linewidth-6pt}
      \def\code@end{}
    \fi%
    \code@mid%
      \ifpgfmanual@multipage@code%
        {%
          \pgfkeysvalueof{/codeexample/prettyprint/base color}%
          \pgfmanualdolisting{#1}%
        }%
      \else%
        \colorbox{codebackground}{%
          \pgfkeysvalueof{/codeexample/prettyprint/base color}%
          \begin{minipage}[t]{\code@width}%
            \pgfmanualdolisting{#1}%
          \end{minipage}}%
      \fi%
    \code@end%
    \par%
    \medskip
  \fi
  \endcodeexample\endgroup%
}

\def\endcodeexample{\endgroup}
\newbox\codeexampleboxanim

\def\pgfmanualdolisting#1{%
      {%
        \let\do\@makeother
        \dospecials
        \frenchspacing\@vobeyspaces
        \normalfont\ttfamily\footnotesize
        \typesetcomment%
        \codeexample@tabinit@replacementchars
        \@tempswafalse
        \def\par{%
          \if@tempswa
          \leavevmode \null \@@par\penalty\interlinepenalty
          \else
          \@tempswatrue
          \ifhmode\@@par\penalty\interlinepenalty\fi
          \fi}%
        \obeylines
        \everypar \expandafter{\the\everypar \unpenalty}%
        \ifx\code@preamble\pgfutil@empty\else
          \pgfutil@tempdima=\hsize
          \vbox{\hsize=\pgfutil@tempdima
              \raggedright\scriptsize\detokenize\expandafter{\code@preamble}}%
        \fi
        \pgfkeysvalueof{/codeexample/typeset listing/.@cmd}{#1}\pgfeov
      }%
}

\makeatother

\usepackage{pgfmanual}




\newdimen\pgfmanualcslinkpreskip

\pgfkeys{
  /codeexample/syntax hilighting/.style={
    /codeexample/prettyprint/key name/.code={\textcolor{keycolor}{\pgfmanualpdfref{##1}{\noligs{##1}}}},
    /codeexample/prettyprint/key name with handler/.code 2 args={\textcolor{keycolor}{\pgfmanualpdfref{##1}{\noligs{##1}}}/\textcolor{blue!70!black}{\pgfmanualpdfref{/handlers/##2}{\noligs{##2}}}},
    /codeexample/prettyprint/key value display only/.code={\textcolor{keycolor}{{\itshape{\let\pgfmanualwordstartup\relax\pgfmanualprettyprintcode{##1}}}}},
    /codeexample/prettyprint/cs/.code={\textcolor{cscolor}{\pgfmanualcslinkpreskip4.25pt\pgfmanualpdfref{##1}{\noligs{##1}}}},
    /codeexample/prettyprint/cs with args/.code 2 args={\textcolor{black}{\pgfmanualcslinkpreskip4.25pt\pgfmanualpdfref{##1}{\noligs{##1}}}\{\textcolor{black}{\pgfmanualprettyprintcode{##2}}\pgfmanualclosebrace},
    /codeexample/prettyprint/cs arguments/pgfkeys/.initial=1,
    /codeexample/prettyprint/cs/pgfkeys/.code 2 args={\textcolor{black}{\pgfmanualcslinkpreskip4.25pt\pgfmanualpdfref{##1}{\noligs{##1}}}\{\textcolor{black}{\pgfmanualprettyprintpgfkeys{##2}}\pgfmanualclosebrace},
    /codeexample/prettyprint/cs arguments/begin/.initial=1,
    /codeexample/prettyprint/cs/begin/.code 2 args={\textcolor{black}{##1}\{\textcolor{cscolor}{\pgfmanualpdfref{##2}{\noligs{##2}}}\pgfmanualclosebrace},
    /codeexample/prettyprint/cs arguments/end/.initial=1,
    /codeexample/prettyprint/cs/end/.code 2 args={\textcolor{black}{##1}\{\textcolor{cscolor}{\pgfmanualpdfref{##2}{\noligs{##2}}}\pgfmanualclosebrace},
    /codeexample/prettyprint/word/.code={\pgfmanualwordstartup{\begingroup\pgfkeyssetvalue{/pdflinks/search key prefixes in}{}\pgfmanualpdfref{##1}{\noligs{##1}}\endgroup}},
    /codeexample/prettyprint/point/.code={\textcolor{pointcolor}{\noligs{##1}}},%
    /codeexample/prettyprint/point with cs/.code 2 args={\textcolor{pointcolor}{(\pgfmanualpdfref{##1}{\noligs{##1}}:\noligs{##2}}},%
    /codeexample/prettyprint/comment font=\itshape,
    /codeexample/prettyprint/base color/.initial=\color{basecolor},
    /pdflinks/render hyperlink/.code={%
      {\setbox0=\hbox{##1}%
        \rlap{{\color{linkcolor}\dimen0\wd0\advance\dimen0by-\pgfmanualcslinkpreskip\hskip\pgfmanualcslinkpreskip\vrule width\dimen0 height-1pt depth1.6pt}}%
        \box0%
      }%
    }
  },/codeexample/syntax hilighting
}

\colorlet{keycolor}{black}
\colorlet{cscolor}{black}
\colorlet{pointcolor}{black}
\colorlet{basecolor}{black}
\colorlet{linkcolor}{black!8}

\def\pgfmanualswitchoncolors{%
  \colorlet{keycolor}{green!50!black}%
  \colorlet{cscolor}{blue!70!black}
  \colorlet{pointcolor}{violet}
  \colorlet{basecolor}{black!55}
  \colorlet{linkcolor}{white}
}

\makeatletter

\def\pgfmanualwordstartup{\textcolor{black}}

\def\noligs#1{\pgfmanualnoligs#1\kern0pt--\pgf@stop}%
\def\pgfmanualnoligs#1--{%
  \pgfutil@ifnextchar\pgf@stop{#1\pgfutil@gobble}{#1-\kern0pt-\kern0pt\pgfmanualnoligs}%
}
\makeatother


==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/doc/pgfmanual-en-macros.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/doc/pgfmanual.code.tex ====

\input pgfmanual.prettyprinter.code.tex
\input pgfmanual.pdflinks.code.tex


\def\pgfmanual@warning#1{\pgf@typeout{! Package pgfmanual Warning: #1}}%


\pgfkeys{
    /pdflinks/codeexample links=true,
    /codeexample/prettyprint/cs arguments/tikzset/.initial=1,
    /codeexample/prettyprint/cs/tikzset/.code 2 args={\pgfmanualpdfref{#1}{#1}\{\pgfmanualprettyprintpgfkeys{#2}\pgfmanualclosebrace},
    /codeexample/prettyprint/cs arguments/usetikzlibrary/.initial=1,
    /codeexample/prettyprint/cs/usetikzlibrary/.code 2 args={\pgfmanualpdfref{#1}{#1}\{\pgfmanualpdfref{#2}{#2}\pgfmanualclosebrace},
    /codeexample/prettyprint/cs arguments/usepgflibrary/.initial=1,
    /codeexample/prettyprint/cs/usepgflibrary/.code 2 args={\pgfmanualpdfref{#1}{#1}\{\pgfmanualpdfref{#2}{#2}\pgfmanualclosebrace},
    /pdflinks/search key prefixes in={/tikz/,/pgf/},
    /pdflinks/internal link prefix=pgf,
    /pdflinks/warnings=false,
    /pdflinks/show labels=false,
}%
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/doc/pgfmanual.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/doc/pgfmanual.pdflinks.code.tex ====


\newif\ifpgfmanualpdfwarnings
\pgfmanualpdfwarningstrue

\newif\ifpgfmanualshowlabels

\pgfkeys{%
    /codeexample/prettyprint/cs arguments/pgfkeys/.initial=1,
    /codeexample/prettyprint/cs/pgfkeys/.code 2 args={\pgfmanualpdfref{#1}{#1}\{\pgfmanualprettyprintpgfkeys{#2}\pgfmanualclosebrace},
    /codeexample/prettyprint/autolinks/.style={%
        /codeexample/prettyprint/key name/.code={\pgfmanualpdfref{##1}{##1}},
        /codeexample/prettyprint/key name with handler/.code 2 args={\pgfmanualpdfref{##1}{##1}/\pgfmanualpdfref{/handlers/##2}{##2}},
        /codeexample/prettyprint/key value display only/.code={\pgfmanualprettyprintcode{##1}},
        /codeexample/prettyprint/cs/.code={\pgfmanualpdfref{##1}{##1}},
        /codeexample/prettyprint/cs with args/.code 2 args={\pgfmanualpdfref{##1}{##1}\{\pgfmanualprettyprintcode{##2}\pgfmanualclosebrace},
        /codeexample/prettyprint/cs arguments/pgfkeys/.initial=1,
        /codeexample/prettyprint/cs/pgfkeys/.code 2 args={\pgfmanualpdfref{##1}{##1}\{\pgfmanualprettyprintpgfkeys{##2}\pgfmanualclosebrace},
        /codeexample/prettyprint/cs arguments/begin/.initial=1,
        /codeexample/prettyprint/cs/begin/.code 2 args={##1\{\pgfmanualpdfref{##2}{##2}\pgfmanualclosebrace},
        /codeexample/prettyprint/cs arguments/end/.initial=1,
        /codeexample/prettyprint/cs/end/.code 2 args={##1\{\pgfmanualpdfref{##2}{##2}\pgfmanualclosebrace},
        /codeexample/prettyprint/word/.code={\begingroup\pgfkeyssetvalue{/pdflinks/search key prefixes in}{}\pgfmanualpdfref{##1}{##1}\endgroup},
        /codeexample/prettyprint/point/.code={##1},%
        /codeexample/prettyprint/point with cs/.code 2 args={(\pgfmanualpdfref{##1}{##1}:##2},%
    },%
    /codeexample/prettyprint/autolinks,
}%

\pgfkeys{
    /pdflinks/codeexample links/.is if=pgfmanualprettyenabled,
    /pdflinks/codeexample links/.default=true,
    /pdflinks/render hyperlink/.code={#1},
    /pdflinks/search key prefixes in/.initial={/tikz/,/pgf/},
    /pdflinks/warnings/.is if=pgfmanualpdfwarnings,
    /pdflinks/warnings/.default=true,
    /pdflinks/show labels/.is if=pgfmanualshowlabels,
    /pdflinks/show labels/.default=true,
    /pdflinks/show labels=false,
    /pdflinks/show labels code/.code={
        \hbox to 0pt{%
            \vbox to 0pt{\hsize=0pt
                \vskip-\baselineskip
                \hbox to \hsize{%
                    \hss
                    {\footnotesize\ttfamily\textcolor{red}{#1}}%
                    \hss
                }%
                \vss
            }%
            \vbox to 0pt{\hsize=0pt
                \vss
                \hbox to \hsize{%
                    \hss
                    {\footnotesize\ttfamily\textcolor{red}{$\vert$}}%
                    \hss
                }%
            }%
            \vsize=0pt
        }%
    },
    /pdflinks/internal link prefix/.initial=pgf,
}

\begingroup
    \catcode`\_=12
    \gdef\pgfmanualpdf@underscore{_}%
    \catcode`\ =13\relax\gdef\pgfmanualpdf@install@active@space{\def {\space}}%
\endgroup

\gdef\pgfmanualpdf@installreplacements{%
    \def\marg##1{{##1}}%
    \def\oarg##1{[##1]}%
    \def\meta##1{meta(##1)}%
    \def\x{x}%
    \def\textbackslash{back/}%
    \def\\{\textbackslash}%
    \def\space{:}%
    \edef\ {\space}%
    \edef\SPACE{\` \relax}%
    \ifnum\the\catcode`\ =13 %
        \pgfmanualpdf@install@active@space
    \fi
    \edef\#{}%
    \def\printanat{@}%
    \def\protect{}%
    \def\textasciicircum{o}%
        \def\_{\pgfmanualpdf@underscore}%
    \expandafter\edef\pgfmanual@verb@activebar{\pgfmanual@verb@bar}%
}%

\def\pgfmanualpdflabel{\pgfutil@ifnextchar[{\pgfmanualpdflabel@opt}{\pgfmanualpdflabel@opt[]}}%
\def\pgfmanualpdflabel@opt[#1]#2#3{%
    \begingroup
    \def\pgfmanualpdf@catcode{#1}%
    \pgfmanualpdf@catcode
    \pgfmanualpdflabel@generate{#2}{#3}%
    \pgfutil@in@\x{#2}%
    \ifpgfutil@in@
        \def\x{y}%
        \pgfmanualpdflabel@generate{#2}{#3}%
        \def\x{z}%
        \pgfmanualpdflabel@generate{#2}{#3}%
    \fi
    \endgroup
}%
\def\pgfmanualpdflabel@generate#1#2{%
    \pgfmanual@handlespeciallabeltokens@in{#1}%
    \def\pgfmanualpdflabel@generateone{0}%
    \pgfutil@ifundefined{pgfd@lbl@\pgfmanualpdflabel@@}{%
        \def\pgfmanualpdflabel@generateone{1}%
    }{%
        \if\csname pgfd@lbl@\pgfmanualpdflabel@@\endcsname a%
            \def\pgfmanualpdflabel@generateone{1}%
        \else
        \fi
    }%
    \if\pgfmanualpdflabel@generateone1%
        \ifpgfmanualshowlabels
            \pgfkeysvalueof{/pdflinks/show labels code/.@cmd}{\pgfmanualpdflabel@@}\pgfeov
        \fi
        \if@filesw
        \ifx\pgfmanualpdf@catcode\pgfutil@empty
        \else
            \toks0=\expandafter{\pgfmanualpdf@catcode}%
            \immediate\write\@auxout{%
                \noexpand\begingroup
                \the\toks0
            }%
        \fi
        \immediate\write\@auxout{%
            \noexpand\expandafter\noexpand\gdef
            \noexpand\csname pgfd@lbl@\pgfmanualpdflabel@@\noexpand\endcsname{a}%
        }%
        \ifx\pgfmanualpdf@catcode\pgfutil@empty
        \else
            \immediate\write\@auxout{\noexpand\endgroup}%
        \fi
        \fi
        \expandafter\gdef\csname pgfd@lbl@\pgfmanualpdflabel@@\endcsname{w}%
        \edef\pgfmanualpdflabel@@{\pgfkeysvalueof{/pdflinks/internal link prefix}.\pgfmanualpdflabel@@}%
        \ifvmode%
          \expandafter\hypertarget\expandafter{\pgfmanualpdflabel@@}{#2}%
        \else%
          {\setbox0=\hbox{\raise1em\hbox{\expandafter\hypertarget\expandafter{\pgfmanualpdflabel@@}{}}}\ht0=0pt\box0}#2%
        \fi%
    \else
        #2%
    \fi
}%

\def\pgfmanualpdfref#1#2{%
    \begingroup
    \pgfmanual@handlespeciallabeltokens@in{#1}%
    \ifcsname pgfd@lbl@\pgfmanualpdflabel@@\endcsname
    \else
        \global\let\pgfmanual@glob=\pgfmanualpdflabel@@
        \def\pgfmanual@tempa{\foreach \prefix in }%
        \pgfkeysgetvalue{/pdflinks/search key prefixes in}\pgfmanual@tempb
        \expandafter\pgfmanual@tempa\expandafter{\pgfmanual@tempb}{%
            \edef\pgfmanualpdflabel@@{\prefix\pgfmanualpdflabel@@}%
            \expandafter\pgfmanual@handlespeciallabeltokens@in\expandafter{\pgfmanualpdflabel@@}%
            \ifcsname pgfd@lbl@\pgfmanualpdflabel@@\endcsname
                \xdef\pgfmanual@glob{\pgfmanualpdflabel@@}%
                \breakforeach
            \fi
        }%
        \let\pgfmanualpdflabel@@=\pgfmanual@glob
        \ifcsname pgfd@lbl@\pgfmanualpdflabel@@\endcsname
        \else
            \ifpgfmanualpdfwarnings
                \begingroup
                    \toks0={#1}%
                    \pgfmanual@warning{pgfmanualpdfref{\the\toks0 }: target label does not exist.}%
                \endgroup
            \fi
            #2%
            \let\pgfmanualpdflabel@@=\pgfutil@empty
        \fi
    \fi
    \ifx\pgfmanualpdflabel@@\pgfutil@empty
    \else
        \expandafter\pgfmanualpdfref@\expandafter{\pgfmanualpdflabel@@}{#2}%
    \fi
    \endgroup
}%
\def\pgfmanualpdfref@#1#2{%
    \pgfkeysgetvalue{/pdflinks/internal link prefix}\pgfmanual@temp
    \expandafter\hyperlink\expandafter{\pgfmanual@temp.#1}{\pgfkeysvalueof{/pdflinks/render hyperlink/.@cmd}{#2}\pgfeov}%
    \ifpgfmanualshowlabels
        \pgfkeysvalueof{/pdflinks/show labels code/.@cmd}{#1}\pgfeov
    \fi
}%

\def\pgfmanual@handlespeciallabeltokens@in#1{%
    \begingroup
    \pgfmanualpdf@installreplacements
    \expandafter\pgfutil@in@\pgfmanual@pretty@backslash{#1}%
    \ifpgfutil@in@
        \pgfmanualpdfref@substitute@backslash#1\relax
    \else
        \edef\pgfmanualpdflabel@@{#1}%
    \fi
    \def\pgfmanual@tmp{\pgfutilstrreplace{ }{\space}}%
    \expandafter\pgfmanual@tmp\expandafter{\pgfmanualpdflabel@@}%
    \edef\pgfmanualpdflabel@@{\pgfretval}%
    \pgfmath@smuggleone\pgfmanualpdflabel@@
    \endgroup
}%

\expandafter\def\expandafter\pgfmanualpdfref@substitute@backslash\expandafter#\expandafter1\pgfmanual@pretty@backslash#2\relax{%
    \edef\pgfmanualpdflabel@@{#1\textbackslash #2}%
}%

\def\declareandlabel{%
    \begingroup
    \pgfmanual@verb@preparecatcodes@
    \def\pgfmanualprettyprinterhandlecollectedargs##1{%
        \pgfmanualpdflabel##1{\texttt{\declare##1}}%
        \endgroup
    }%
    \pgfmanualprettyprintercollectargcount1{\relax}%
}

\def\verbpdfref{%
    \begingroup
    \pgfmanual@verb@preparecatcodes@
    \def\pgfmanualprettyprinterhandlecollectedargs##1{%
        \pgfmanualpdfref##1{\texttt{##1}}%
        \endgroup
    }%
    \pgfmanualprettyprintercollectargcount1{\relax}%
}

{
    \catcode`\|=12
    \gdef\pgfmanual@verb@bar{|}%
    \catcode`\|=13
    \gdef\pgfmanual@verb@activebar{|}%
}
\def\pgfmanual@verb{%
    \begingroup
    \pgfmanual@verb@preparecatcodes@
    \toksdef\t@pgfmanual@verb=0
    \t@pgfmanual@verb={}%
    \pgfmanual@verb@collect
}
\def\pgfmanual@verb@collect#1{%
    \def\pgfmanual@temp{#1}%
    \ifx\pgfmanual@temp\pgfmanual@verb@bar
        \edef\pgfmanual@verb@collect@next{%
            \noexpand\endgroup
            \noexpand\texttt{\noexpand\pgfmanualprettyprintpgfkeys{\the\t@pgfmanual@verb}}%
        }%
    \else
        \ifx\pgfmanual@temp\pgfmanual@verb@activebar
            \edef\pgfmanual@verb@collect@next{%
                \noexpand\endgroup
                \noexpand\texttt{\the\t@pgfmanual@verb}%
            }%
        \else
            \t@pgfmanual@verb=\expandafter{\the\t@pgfmanual@verb #1}%
            \let\pgfmanual@verb@collect@next=\pgfmanual@verb@collect
        \fi
    \fi
    \pgfmanual@verb@collect@next
}%

\AtBeginDocument{%
    \ifpgfmanualprettyenabled
        \catcode`\|=13
        \expandafter\let\pgfmanual@verb@activebar=\pgfmanual@verb
    \fi
}%

\def\pgfmanual@verb@preparecatcodes@{%
    \let\do\@makeother%
    \dospecials%
    \catcode`\%=12 %
    \catcode`\ =13
    \catcode`\^^I=13
    \expandafter\def\pgfmanual@pretty@activespace{\space}%
    \expandafter\def\pgfmanual@pretty@activetab{\space\space\space\space}%
}%
\endinput
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/doc/pgfmanual.pdflinks.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/doc/pgfmanual.prettyprinter.code.tex ====


\pgfkeys{%
    /codeexample/typeset listing/.code=    {\pgfmanualprettyprintcode{#1}},
    /codeexample/prettyprint/key name/.code={#1},
    /codeexample/prettyprint/key name with handler/.code 2 args={#1/#2},
    /codeexample/prettyprint/key value/.code 2 args={%
        \pgfkeysifdefined{/codeexample/prettyprint/key value/#1}{%
            \pgfkeysalso{/codeexample/prettyprint/key value/#1={#1}{#2}}%
        }{%
            \pgfkeysalso{/codeexample/prettyprint/key value with style detection={#1}{#2}}%
        }%
    },
    /codeexample/prettyprint/key value with style detection/.code 2 args={%
        \pgfutil@in@{style}{#1}%
        \ifpgfutil@in@
            \pgfmanualprettyprintpgfkeys{#2}%
        \else
            \pgfkeysalso{/codeexample/prettyprint/key value display only={#2}}%
        \fi
    },%
    /codeexample/prettyprint/key value display only/.code={#1},
    /codeexample/prettyprint/word/.code={#1},
    /codeexample/prettyprint/if space is word delim/.code 2 args={%
        #1%
    },%
    /codeexample/prettyprint/if is word delim/.code args={#1#2#3}{%
        \edef\pgfmanual@check{,;().;\pgfmanual@pretty@lbrace\pgfmanual@pretty@rbrace}%
        \def\pgfmanual@check@{\pgfutil@in@{#1}}%
        \expandafter\pgfmanual@check@\expandafter{\pgfmanual@check}%
        \ifpgfutil@in@ #2\else #3\fi
    },%
    /codeexample/prettyprint/cs/.code={#1},
    /codeexample/prettyprint/cs with args/.code 2 args={#1\{#2\pgfmanualclosebrace},
    /codeexample/prettyprint/cs arguments/pgfkeys/.initial=1,
    /codeexample/prettyprint/cs/pgfkeys/.code 2 args={#1\{\pgfmanualprettyprintpgfkeys{#2}\pgfmanualclosebrace},
    /codeexample/prettyprint/cs arguments/begin/.initial=1,
    /codeexample/prettyprint/cs/begin/.code 2 args={#1\{#2\pgfmanualclosebrace},
    /codeexample/prettyprint/cs arguments/end/.initial=1,
    /codeexample/prettyprint/cs/end/.code 2 args={#1\{#2\pgfmanualclosebrace},
    /codeexample/prettyprint/point/.code={#1},%
    /codeexample/prettyprint/point with cs/.code 2 args={(#1:#2},%
    /codeexample/prettyprint/comment font/.initial=,%
    /codeexample/prettyprint/colored/.style={%
        /codeexample/prettyprint/key name/.code={\textcolor{red!75!black}{##1}},
        /codeexample/prettyprint/key name with handler/.code 2 args={\textcolor{red!75!black}{##1}/\textcolor{red!90!black}{##2}},
        /codeexample/prettyprint/key value display only/.code={\textcolor{yellow}{##1}},
        /codeexample/prettyprint/cs/.code={\textcolor{green}{##1}},
        /codeexample/prettyprint/cs with args/.code 2 args={\textcolor{green}{##1}\{\textcolor{orange}{##2}\pgfmanualclosebrace},
        /codeexample/prettyprint/cs arguments/pgfkeys/.initial=1,
        /codeexample/prettyprint/cs/pgfkeys/.code 2 args={\textcolor{green}{##1}\{\pgfmanualprettyprintpgfkeys{##2}\pgfmanualclosebrace},
        /codeexample/prettyprint/cs arguments/begin/.initial=1,
        /codeexample/prettyprint/cs/begin/.code 2 args={\textcolor{green}{##1}\{\textcolor{orange}{##2}\pgfmanualclosebrace},
        /codeexample/prettyprint/cs arguments/end/.initial=1,
        /codeexample/prettyprint/cs/end/.code 2 args={\textcolor{green}{##1}\{\textcolor{orange}{##2}\pgfmanualclosebrace},
        /codeexample/prettyprint/word/.code={\textcolor{brown}{##1}},
        /codeexample/prettyprint/point/.code={\textcolor{red}{##1}},%
        /codeexample/prettyprint/point with cs/.code 2 args={(\textcolor{green}{##1}:\textcolor{red}{##2}},%
    },%
    /codeexample/prettyprint/colored and verbose/.style={%
        /codeexample/prettyprint/colored,
        /codeexample/prettyprint/key name/.code={\message{[key name=##1]}\textcolor{red!75!black}{##1}},
        /codeexample/prettyprint/key name with handler/.code 2 args={\message{[key name with handler=##1/##2]}\textcolor{red!75!black}{##1}/\textcolor{red!90!black}{##2}},
        /codeexample/prettyprint/key value display only/.code={\def\temp{##1}\message{[key value=\meaning\temp]}\textcolor{yellow}{##1}},
        /codeexample/prettyprint/cs/.code={\message{[cs=##1]}\textcolor{green}{##1}},
        /codeexample/prettyprint/cs with args/.code 2 args={\def\temp{##2}\message{[cs with args={##1}{\meaning\temp}]}\textcolor{green}{##1}\{\textcolor{orange}{##2}\pgfmanualclosebrace},
        /codeexample/prettyprint/word/.code={\message{[word=##1]}\textcolor{brown}{##1}},
        /codeexample/prettyprint/point/.code={\message{[point=##1]}\textcolor{red}{##1}},%
        /codeexample/prettyprint/point with cs/.code 2 args={\message{[point with cs={##1}{##2}]}(\textcolor{green}{##1}:\textcolor{red}{##2}},%
    },%
}%

\newif\ifpgfmanualprettyenabled
\pgfmanualprettyenabledtrue

\def\pgfmanualclosebrace{%
    \ifpgfmanualprettyprinterarghasunmatchedbraces
    \else
        \}%
    \fi
}%


\long\def\pgfmanualprettyprintcode#1{%
    \ifpgfmanualprettyenabled
        \begingroup
        \pgfmanualprettyprintstyles
        \pgfmanual@pretty@mainloop#1\pgfmanual@EOI
        \endgroup
    \else
        #1%
    \fi
}%

\def\pgfmanualprettyprintstyles{%
    \def\{{\pgfmanual@pretty@lbrace}%
    \def\}{\pgfmanual@pretty@rbrace}%
    \pgfmanual@pretty@installcommenthandler
    \let\pgfmanualprettyprintstyles=\relax
}%


\newif\ifpgfmanualprettycommentactive

\def\pgfmanual@pretty@installcommenthandler{%
    \expandafter\def\pgfmanual@pretty@activepercent{%
        \begingroup%
        \pgfmanualprettycommentactivetrue
        \expandafter\let\pgfmanual@pretty@activenl=\pgfmanual@pretty@recoveraftercomment
        \expandafter\def\pgfmanual@pretty@activepercent{\%}%
        \pgfkeysvalueof{/codeexample/prettyprint/comment font}%
        \%%
    }%
}%
\def\pgfmanual@pretty@recoveraftercomment{%
    \endgroup
    \pgfmanual@pretty@activenl
}%

\def\pgfmanual@EOI{\pgfmanual@EOI}%

{
    \catcode`\[=0
    \catcode`\\=12
    [gdef[pgfmanual@pretty@backslash{\}%
}
\begingroup
    \catcode`\:=12
    \catcode`\(=12
    \catcode`\)=12
    \gdef\pgfmanual@pretty@colon{:}%
    \gdef\pgfmanual@pretty@lroundbrace{(}%
    \gdef\pgfmanual@pretty@rroundbrace{)}%
    \catcode`\[=1
    \catcode`\]=2
    \catcode`\{=12
    \catcode`\}=12
    \gdef\pgfmanual@pretty@lbrace[{]%
    \gdef\pgfmanual@pretty@rbrace[}]%
    \catcode`\{=1
    \catcode`\}=2
    \catcode`\[=12
    \catcode`\]=12
    \catcode`\,=12
    \catcode`\ =10\relax\gdef\pgfmanual@pretty@space{ }%
    \gdef\pgfmanual@pretty@lbracket{[}%
    \gdef\pgfmanual@pretty@rbracket{]}%
    \gdef\pgfmanual@pretty@comma{,}%
    \catcode`\==12
    \gdef\pgfmanual@pretty@eq{=}%
\endgroup
\begingroup
    \catcode`\%=12
    \gdef\pgfmanual@pretty@percent{%}
    \catcode`\%=13
    \gdef\pgfmanual@pretty@activepercent{%}
    \catcode`\^^M=13
    \gdef\pgfmanual@pretty@activenl{^^M}\endgroup
\begingroup
\catcode`\^^I=13\relax\gdef\pgfmanual@pretty@activetab{^^I}%
\catcode`\ =13\relax\gdef\pgfmanual@pretty@activespace{ }\endgroup

\def\pgfmanual@pretty@mainloop{%
    \def\pgfmanual@pretty@mainloop@currentword{}%
    \pgfmanual@pretty@mainloop@
}%
\long\def\pgfmanual@pretty@mainloop@#1{%
    \def\pgfmanual@loc@TMPa{#1}%
    \let\pgfmanual@pretty@mainloop@NEXT=\pgfmanual@pretty@mainloop@
    \ifx\pgfmanual@loc@TMPa\pgfmanual@EOI
        \pgfmanual@pretty@mainloop@finishword
        \let\pgfmanual@pretty@mainloop@NEXT=\relax
    \else
        \ifpgfmanualprettycommentactive
            #1\kern0pt%
        \else
            \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@lbracket%
                \pgfmanual@pretty@mainloop@finishword
                \let\pgfmanual@pretty@mainloop@NEXT=\pgfmanual@pretty@pgfkeys
            \else
                \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@backslash
                    \pgfmanual@pretty@mainloop@finishword
                    \let\pgfmanual@loc@TMPa=\pgfutil@empty
                    \let\pgfmanual@pretty@mainloop@NEXT=\pgfmanual@pretty@collectcs@loop
                \else
                    \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@lroundbrace%
                        \pgfmanual@pretty@mainloop@finishword
                        \let\pgfmanual@pretty@mainloop@NEXT=\pgfmanual@pretty@collectpoint
                    \else
                        \def\pgfmanual@isspace{0}%
                        \ifnum13=\catcode`#1
                            \def\pgfmanual@isspace{1}%
                        \else
                            \ifnum10=\catcode`#1
                                \def\pgfmanual@isspace{1}%
                            \fi
                        \fi
                        \if\pgfmanual@isspace1%
                            \pgfkeysvalueof{/codeexample/prettyprint/if space is word delim/.@cmd}{%
                                \pgfmanual@pretty@mainloop@finishword
                                #1%
                            }{%
                                \expandafter\def\expandafter\pgfmanual@pretty@mainloop@currentword\expandafter{\pgfmanual@pretty@mainloop@currentword #1}%
                            }%
                        \else
                            \pgfkeysvalueof{/codeexample/prettyprint/if is word delim/.@cmd}{#1}{%
                                \pgfmanual@pretty@mainloop@finishword
                                #1%
                            }{%
                                \expandafter\def\expandafter\pgfmanual@pretty@mainloop@currentword\expandafter{\pgfmanual@pretty@mainloop@currentword #1}%
                            }\pgfeov%
                        \fi
                    \fi
                \fi
            \fi
        \fi
    \fi
    \pgfmanual@pretty@mainloop@NEXT
}%

\def\pgfmanual@pretty@mainloop@finishword{%
    \ifx\pgfmanual@pretty@mainloop@currentword\pgfutil@empty
    \else
        \def\pgfmanual@loc@TMPa{\pgfkeysvalueof{/codeexample/prettyprint/word/.@cmd}}%
        \expandafter\pgfmanual@loc@TMPa\pgfmanual@pretty@mainloop@currentword\pgfeov
        \let\pgfmanual@pretty@mainloop@currentword=\pgfutil@empty
    \fi
}%

\def\pgfmanual@pretty@collectpoint{%
    \let\pgfmanualprettyprinterhandlecollectedargsVtwo=\pgfmanual@pretty@collectargs@finish@collectpoint
    \expandafter\pgfmanualprettyprintercollectupto\pgfmanual@pretty@rroundbrace
        {\afterpgfmanual@pretty@collectpoint}%
}

{
\catcode`\:=12
\gdef\pgfmanual@pretty@collectargs@finish@collectpoint#1#2{%
    \expandafter\pgfutil@in@\pgfmanual@pretty@colon{#1}%
    \ifpgfutil@in@
        \def\pgfmanual@pretty@collectpoint@getcoordsystem##1:##2\relax{%
            \begingroup
                \pgfmanual@pretty@restorespaces
                \xdef\pgfmanual@pretty@glob@TMPa{##1}%
            \endgroup
            \pgfkeysifdefined{/codeexample/prettyprint/point with cs/\pgfmanual@pretty@glob@TMPa/.@cmd}{%
                \def\pgfmanual@loc@TMPb{\pgfkeysvalueof{/codeexample/prettyprint/point with cs/\pgfmanual@pretty@glob@TMPa/.@cmd}}%
            }{%
                \def\pgfmanual@loc@TMPb{\pgfkeysvalueof{/codeexample/prettyprint/point with cs/.@cmd}}%
            }%
            \expandafter\def\expandafter\pgfmanual@loc@TMPa\expandafter{\expandafter{\pgfmanual@pretty@glob@TMPa}{##2}}%
            \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa\pgfeov
        }%
        \if1#2%
            \pgfmanual@pretty@collectpoint@getcoordsystem#1)\relax
        \else
            \pgfmanual@pretty@collectpoint@getcoordsystem#1\relax
        \fi
    \else
        \def\pgfmanual@loc@TMPb{\pgfkeysvalueof{/codeexample/prettyprint/point/.@cmd}}%
        \if1#2%
            \pgfmanual@loc@TMPb(#1)\pgfeov
        \else
            \pgfmanual@loc@TMPb(#1\pgfeov
        \fi
    \fi
}%
}
\def\afterpgfmanual@pretty@collectpoint{\pgfmanual@pretty@mainloop}%

\def\pgfmanual@pretty@collectcs@loop#1{%
    \let\pgfmanual@pretty@collectcs@loop@NEXT=\pgfmanual@pretty@collectcs@loop
    \def\pgfmanual@loc@TMPb{#1}%
    \ifx\pgfmanual@loc@TMPb\pgfmanual@EOI
        \def\pgfmanual@pretty@collectcs@loop@NEXT{\pgfmanual@pretty@collectcs@loop@END #1}%
    \else
        \ifnum\lccode`#1=0
            \ifx\pgfmanual@loc@TMPb\pgfmanual@attext%
                \edef\pgfmanual@loc@TMPa{\pgfmanual@loc@TMPa #1}%
            \else
                \def\pgfmanual@pretty@collectcs@loop@NEXT{\pgfmanual@pretty@collectcs@loop@END #1}%
            \fi
        \else
            \edef\pgfmanual@loc@TMPa{\pgfmanual@loc@TMPa #1}%
        \fi
    \fi
    \pgfmanual@pretty@collectcs@loop@NEXT
}%
\def\afterpgfmanual@pretty@cs{\pgfmanual@pretty@mainloop}%
\def\pgfmanual@attext{@}

\def\pgfmanual@pretty@collectcs@loop@END{%
    \pgfkeysifdefined{/codeexample/prettyprint/cs arguments/\pgfmanual@loc@TMPa}{%
        \let\pgfmanualprettyprinterhandlecollectedargs=\pgfmanual@pretty@collectargs@finish@cs
        \def\pgfmanual@pretty@collectcs@loop@END@next{%
            \pgfmanualprettyprintercollectargcount
                {\pgfkeysvalueof{/codeexample/prettyprint/cs arguments/\pgfmanual@loc@TMPa}}%
                {\afterpgfmanual@pretty@cs}%
        }%
    }{%
        \edef\pgfmanual@loc@TMPa{\pgfmanual@pretty@backslash \pgfmanual@loc@TMPa}%
        \def\pgfmanual@loc@TMPb{\pgfkeysvalueof{/codeexample/prettyprint/cs/.@cmd}}%
        \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa\pgfeov
        \let\pgfmanual@pretty@collectcs@loop@END@next=\afterpgfmanual@pretty@cs
    }%
    \pgfmanual@pretty@collectcs@loop@END@next
}%

\newif\ifpgfmanualprettyprinterarghasunmatchedbraces

\def\pgfmanualprettyprintercollectargcount#1#2{%
    \pgfmanualprettyprinterarghasunmatchedbracesfalse
    \begingroup
    \edef\pgfmanual@loc@csargcount{#1}%
    \toksdef\t@afterpgfmanualprettyprinterhandlecollected=10
    \t@afterpgfmanualprettyprinterhandlecollected={#2}%
    \let\c@pgfmanual@pretty@openbracecount=\c@pgf@counta
    \let\c@pgfmanual@pretty@curargcount=\c@pgf@countb
    \c@pgfmanual@pretty@openbracecount=0
    \c@pgfmanual@pretty@curargcount=0
    \toksdef\t@pgfmanual@currentarg=0
    \toksdef\t@pgfmanual@allargs=1
    \t@pgfmanual@currentarg={}%
    \t@pgfmanual@allargs={}%
    \pgfmanual@pretty@collectargs@loop
}%

\def\pgfmanual@pretty@collectargs@loop#1{%
    \let\pgfmanual@pretty@collectargs@loop@NEXT=\pgfmanual@pretty@collectargs@loop
    \def\pgfmanual@loc@TMPc{#1}%
    \ifx\pgfmanual@loc@TMPc\pgfmanual@EOI
        \ifnum\c@pgfmanual@pretty@openbracecount>0
            \ifpgfmanualpdfwarnings
                \pgfplots@warning{The pretty printer did not found the closing curly brace!? This will potentially lead to display errors}%
            \fi
        \fi
        \edef\pgfmanual@pretty@collectargs@loop@NEXT{%
            \noexpand\endgroup
            \ifnum\c@pgfmanual@pretty@openbracecount>0
                \noexpand\pgfmanualprettyprinterarghasunmatchedbracestrue
            \fi
            \noexpand\def\noexpand\pgfmanualprettyprinternumcollectedargs{\the\c@pgfmanual@pretty@curargcount}%
            \noexpand\pgfmanualprettyprinterhandlecollectedargs{\the\t@pgfmanual@allargs\the\t@pgfmanual@currentarg}%
            \the\t@afterpgfmanualprettyprinterhandlecollected
            \noexpand\pgfmanual@EOI%
        }%
    \else
        \ifpgfmanualprettycommentactive
            \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
            \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@activenl
                \pgfmanualprettycommentactivefalse
            \fi
        \else
            \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@activepercent
                \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
                \pgfmanualprettycommentactivetrue
            \else
                \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@lbrace
                    \advance\c@pgfmanual@pretty@openbracecount by1
                    \ifnum\c@pgfmanual@pretty@openbracecount>1
                        \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
                    \fi
                \else
                    \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@rbrace
                        \advance\c@pgfmanual@pretty@openbracecount by-1
                        \ifnum\c@pgfmanual@pretty@openbracecount=0
                            \edef\pgfmanual@loc@TMPc{\the\t@pgfmanual@allargs{\the\t@pgfmanual@currentarg}}%
                            \t@pgfmanual@allargs=\expandafter{\pgfmanual@loc@TMPc}%
                            \t@pgfmanual@currentarg={}%
                            \advance\c@pgfmanual@pretty@curargcount by1
                            \ifnum\c@pgfmanual@pretty@curargcount=\pgfmanual@loc@csargcount\relax
                                \edef\pgfmanual@pretty@collectargs@loop@NEXT{%
                                    \noexpand\endgroup
                                    \noexpand\def\noexpand\pgfmanualprettyprinternumcollectedargs{\the\c@pgfmanual@pretty@curargcount}%
                                    \noexpand\pgfmanualprettyprinterhandlecollectedargs{\the\t@pgfmanual@allargs}%
                                    \the\t@afterpgfmanualprettyprinterhandlecollected
                                }%
                            \fi
                        \else
                            \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
                        \fi
                    \else
                        \ifnum13=\catcode`#1
                            \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
                        \else
                            \ifnum10=\catcode`#1
                                \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
                            \else
                                \ifnum\c@pgfmanual@pretty@openbracecount=0
                                    \ifpgfmanualpdfwarnings
                                        \begingroup
                                        \toks4{#1}%
                                        \pgfplots@warning{The pretty printer did not find the expected \pgfmanual@loc@csargcount\space arguments (only token \the\toks4 )}%
                                        \endgroup
                                    \fi
                                    \edef\pgfmanual@pretty@collectargs@loop@NEXT{%
                                        \noexpand\endgroup
                                        \noexpand\def\noexpand\pgfmanualprettyprinternumcollectedargs{\the\c@pgfmanual@pretty@curargcount}%
                                        \noexpand\pgfmanualprettyprinterhandlecollectedargs{\the\t@pgfmanual@allargs\the\t@pgfmanual@currentarg}%
                                        \the\t@afterpgfmanualprettyprinterhandlecollected
                                        \noexpand#1%
                                    }%
                                \else
                                    \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
                                \fi
                            \fi
                        \fi
                    \fi
                \fi
            \fi
        \fi
    \fi
    \pgfmanual@pretty@collectargs@loop@NEXT
}%

\newif\ifpgfmanualprettyprinterfoundterminator

\def\pgfmanualprettyprinterhandlecollectedargsVtwo@default#1#2{%
    \if1#2%
        \pgfmanualprettyprinterfoundterminatortrue
    \else
        \pgfmanualprettyprinterfoundterminatorfalse
    \fi
    \pgfmanualprettyprinterhandlecollectedargs{#1}%
}%
\def\pgfmanualprettyprintercollectupto@restore@callback{%
    \let\pgfmanualprettyprinterhandlecollectedargsVtwo=\pgfmanualprettyprinterhandlecollectedargsVtwo@default
}%
\pgfmanualprettyprintercollectupto@restore@callback

\def\pgfmanualprettyprintercollectupto#1#2{%
    \pgfmanualprettyprinterarghasunmatchedbracesfalse
    \def\pgfmanualprettyprinterterminator{}%
    \begingroup
    \def\pgfmanual@loc@delimittokens{#1}%
    \toksdef\t@afterpgfmanualprettyprinterhandlecollected=10
    \t@afterpgfmanualprettyprinterhandlecollected={#2}%
    \let\c@pgfmanual@pretty@openbracecount=\c@pgf@counta
    \c@pgfmanual@pretty@openbracecount=0
    \toksdef\t@pgfmanual@currentarg=0
    \t@pgfmanual@currentarg={}%
    \pgfmanual@pretty@collectupto@loop
}%

\def\pgfmanualprettyprinterterminator{}

\def\pgfmanual@pretty@collectupto@loop#1{%
    \let\pgfmanual@pretty@collectupto@loop@NEXT=\pgfmanual@pretty@collectupto@loop
    \def\pgfmanual@loc@TMPc{#1}%
    \ifx\pgfmanual@loc@TMPc\pgfmanual@EOI
        \edef\pgfmanual@pretty@collectupto@loop@NEXT{%
            \noexpand\endgroup
            \ifnum\c@pgfmanual@pretty@openbracecount>0
                \noexpand\pgfmanualprettyprinterarghasunmatchedbracestrue
            \fi
            \noexpand\pgfmanualprettyprinterhandlecollectedargsVtwo{\the\t@pgfmanual@currentarg}{0}%
            \noexpand\pgfmanualprettyprintercollectupto@restore@callback
            \the\t@afterpgfmanualprettyprinterhandlecollected
            \noexpand\pgfmanual@EOI%
        }%
    \else
        \ifpgfmanualprettycommentactive
            \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
            \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@activenl
                \pgfmanualprettycommentactivefalse
            \fi
        \else
            \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@activepercent
                \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
                \pgfmanualprettycommentactivetrue
            \else
                \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@lbrace
                    \advance\c@pgfmanual@pretty@openbracecount by1
                    \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
                \else
                    \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@rbrace
                        \advance\c@pgfmanual@pretty@openbracecount by-1
                        \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
                    \else
                        \expandafter\expandafter\expandafter\pgfutil@in@\expandafter\pgfmanual@loc@TMPc\expandafter{\pgfmanual@loc@delimittokens}%
                        \ifpgfutil@in@
                            \ifnum\c@pgfmanual@pretty@openbracecount=0
                                \edef\pgfmanual@pretty@collectupto@loop@NEXT{%
                                    \noexpand\endgroup
                                    \noexpand\def\noexpand\pgfmanualprettyprinterterminator{\pgfmanual@loc@TMPc}%
                                    \noexpand\pgfmanualprettyprinterhandlecollectedargsVtwo{\the\t@pgfmanual@currentarg}{1}%
                                    \noexpand\pgfmanualprettyprintercollectupto@restore@callback
                                    \the\t@afterpgfmanualprettyprinterhandlecollected
                                }%
                            \else
                                \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
                            \fi
                        \else
                            \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}%
                        \fi
                    \fi
                \fi
            \fi
        \fi
    \fi
    \pgfmanual@pretty@collectupto@loop@NEXT
}%

\def\pgfmanual@pretty@collectargs@finish@cs#1{%
    \def\pgfmanual@pretty@collectargs@finish@cs@hasargs{1}%
    \ifnum\pgfmanualprettyprinternumcollectedargs=0
        \ifpgfmanualprettyprinterarghasunmatchedbraces
        \else
            \def\pgfmanual@pretty@collectargs@finish@cs@hasargs{0}%
        \fi
    \fi
    \if\pgfmanual@pretty@collectargs@finish@cs@hasargs1%
        \pgfkeysifdefined{/codeexample/prettyprint/cs/\pgfmanual@loc@TMPa/.@cmd}{%
            \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/cs/\pgfmanual@loc@TMPa/.@cmd}}%
        }{%
            \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/cs with args/.@cmd}}%
        }%
        \edef\pgfmanual@loc@TMPa{{\pgfmanual@pretty@backslash\pgfmanual@loc@TMPa}}%
        \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa #1\pgfeov
    \else
        \edef\pgfmanual@loc@TMPa{{\pgfmanual@pretty@backslash\pgfmanual@loc@TMPa}}%
        \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/cs/.@cmd}}%
        \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa\pgfeov
        #1\relax%
    \fi
}%

\long\def\pgfmanualprettyprintpgfkeys#1{%
    \ifpgfmanualprettyenabled
        \begingroup
        \pgfmanualprettyprintstyles
        \pgfmanual@pretty@pgfkeys@loop#1\pgfmanual@EOI
        \endgroup
    \else
        #1%
    \fi
}

\def\pgfmanual@pretty@pgfkeys{%
    \let\pgfmanualprettyprinterhandlecollectedargsVtwo=\pgfmanual@pretty@pgfkeys@start
    \pgfmanualprettyprintercollectupto]{\pgfmanual@pretty@mainloop}%
}%
\long\def\pgfmanual@pretty@pgfkeys@start#1#2{%
    [%
    \pgfmanual@pretty@pgfkeys@loop#1\pgfmanual@EOI
    \if1#2%
        ]%
    \fi
}%
\long\def\pgfmanual@pretty@pgfkeys@loop#1{%
    \def\pgfmanual@loc@TMPa{#1}%
    \ifx\pgfmanual@loc@TMPa\pgfmanual@EOI
        \def\pgfmanual@pretty@pgfkeys@loop@NEXT{\relax}%
    \else
        \def\pgfmanual@pretty@pgfkeys@loop@NEXT{\pgfmanual@pretty@pgfkeys@loop}%
        \ifpgfmanualprettycommentactive
            #1\kern0pt%
        \else
            \ifnum13=\catcode`#1
                #1%
            \else
                \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@comma%
                    ,%
                \else
                    \ifnum10=\catcode`#1
                        #1%
                    \else
                        \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@lbrace
                            #1%
                        \else
                            \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@rbrace
                                #1%
                            \else
                                \toks0={}%
                                \def\pgfmanual@pretty@pgfkeys@loop@NEXT{\pgfmanual@pretty@pgfkeys@collectkey #1}%
                            \fi
                        \fi
                    \fi
                \fi
            \fi
        \fi
    \fi
    \pgfmanual@pretty@pgfkeys@loop@NEXT
}%
\def\pgfmanual@pretty@pgfkeys@collectkey#1{%
    \def\pgfmanual@loc@TMPb{#1}%
    \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@collectkey}%
    \ifx\pgfmanual@loc@TMPb\pgfmanual@EOI
        \edef\pgfmanual@loc@TMPb{\the\toks0 }%
        \ifx\pgfmanual@loc@TMPb\pgfutil@empty
        \else
            \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }%
        \fi
        \def\pgfmanual@pretty@pgfkeys@collectkey@next{\relax}%
    \else
        \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@eq
            \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }%
            #1%
            \toks0={}%
            \def\pgfmanual@pretty@pgfkeys@collectvalue@hasconsumedspaces{0}%
            \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@collectvalue}%
        \else
            \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@comma
                \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }%
                #1%
                \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@loop}%
            \else
                \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@activenl
                    \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }%
                    #1%
                    \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@loop}%
                \else
                    \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@backslash
                        \edef\pgfmanual@loc@TMPb{\the\toks0 }%
                        \ifx\pgfmanual@loc@TMPb\pgfutil@empty
                        \else
                            \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }%
                        \fi
                        \begingroup
                        \let\pgfmanual@loc@TMPa=\pgfutil@empty
                        \def\afterpgfmanual@pretty@cs{%
                            \endgroup
                            \pgfmanual@pretty@pgfkeys@loop
                        }%
                        \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@collectcs@loop}%
                    \else
                        \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@lbrace
                            \def\pgfmanualprettyprinterhandlecollectedargs##1{%
                                \toks1={##1}%
                                \edef\pgfmanual@loc@TMPc{%
                                    \the\toks0 \pgfmanual@pretty@lbrace \the\toks1
                                    \ifpgfmanualprettyprinterarghasunmatchedbraces
                                    \else
                                        \pgfmanual@pretty@rbrace
                                    \fi
                                }%
                                \toks0=\expandafter{\pgfmanual@loc@TMPc}%
                            }%
                            \def\pgfmanual@pretty@pgfkeys@collectkey@next{%
                                \pgfmanualprettyprintercollectargcount{1}{\pgfmanual@pretty@pgfkeys@collectkey}%
                                #1%
                            }%
                        \else
                            \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@rbrace
                                \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }%
                                #1%
                                \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@loop}%
                            \else
                                \toks0=\expandafter{\the\toks0 #1}%
                            \fi
                        \fi
                    \fi
                \fi
            \fi
        \fi
    \fi
    \pgfmanual@pretty@pgfkeys@collectkey@next
}%
\def\pgfmanual@pretty@pgfkeys@collectvalue#1{%
    \def\pgfmanual@loc@TMPb{#1}%
    \let\pgfmanual@pretty@pgfkeys@collectvalue@next=\pgfmanual@pretty@pgfkeys@collectvalue
    \ifx\pgfmanual@loc@TMPb\pgfmanual@EOI
        \let\pgfmanual@pretty@pgfkeys@collectvalue@next=\relax
    \else
        \def\pgfmanual@pretty@isconsumed{0}%
        \if\pgfmanual@pretty@pgfkeys@collectvalue@hasconsumedspaces0%
            \ifnum13=\catcode`#1
                #1%
                \def\pgfmanual@pretty@isconsumed{1}%
            \else
                \ifnum10=\catcode`#1
                    \def\pgfmanual@pretty@isconsumed{1}%
                    #1%
                \fi
            \fi
        \fi
        \if\pgfmanual@pretty@isconsumed0%
            \def\pgfmanualprettyprinterhandlecollectedargsVtwo##1##2{\pgfmanual@pretty@pgfkeys@processvalue{##1}}%
            \def\pgfmanual@pretty@pgfkeys@collectvalue@next{%
                \pgfmanualprettyprintercollectupto{,]}{\afterpgfmanual@pretty@collectargs@finish@value}#1%
            }%
        \fi
    \fi
    \pgfmanual@pretty@pgfkeys@collectvalue@next
}%
\def\afterpgfmanual@pretty@collectargs@finish@value{%
    \expandafter\pgfmanual@pretty@pgfkeys@loop\pgfmanualprettyprinterterminator%
}%

{\catcode`\^^M=13 \catcode`\ =13\relax\catcode`\%=13\relax\gdef\pgfmanual@pretty@restorespaces{\def%{\pgfmanual@pretty@percent}\def^^M{\pgfmanual@pretty@space}\def {\pgfmanual@pretty@space}}}

\def\pgfmanual@pretty@pgfkeys@processkey#1{%
    \begingroup
        \pgfmanual@pretty@restorespaces
        \xdef\pgfmanual@pretty@pgfkeys@collectkey@keyname{#1}%
    \endgroup
    \def\pgfmanual@loc@TMPa{\pgfutil@in@{/.}}%
    \expandafter\pgfmanual@loc@TMPa\expandafter{\pgfmanual@pretty@pgfkeys@collectkey@keyname}%
    \ifpgfutil@in@
        \def\pgfmanual@pretty@splitit##1/.##2\relax{%
            \def\pgfmanual@loc@TMPb{{##1}{.##2}}%
        }%
        \expandafter\pgfmanual@pretty@splitit\pgfmanual@pretty@pgfkeys@collectkey@keyname\relax
        \def\pgfmanual@loc@TMPa{\pgfkeysvalueof{/codeexample/prettyprint/key name with handler/.@cmd}}%
        \expandafter\pgfmanual@loc@TMPa\pgfmanual@loc@TMPb\pgfeov
    \else
        \def\pgfmanual@loc@TMPa{\pgfkeysvalueof{/codeexample/prettyprint/key name/.@cmd}}%
        \expandafter\pgfmanual@loc@TMPa\pgfmanual@pretty@pgfkeys@collectkey@keyname\pgfeov
    \fi
}
\def\pgfmanual@pretty@pgfkeys@processvalue#1{%
    \pgfkeysifdefined{/codeexample/prettyprint/key value/\pgfmanual@pretty@pgfkeys@collectkey@keyname/.@cmd}{%
        \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/key value/\pgfmanual@pretty@pgfkeys@collectkey@keyname/.@cmd}}%
    }{%
        \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/key value/.@cmd}}%
    }%
    \edef\pgfmanual@loc@TMPa{{\pgfmanual@pretty@pgfkeys@collectkey@keyname}}%
    \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa{#1}\pgfeov
}
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/doc/pgfmanual.prettyprinter.code.tex ====

==== BEGIN Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/frontendlayer/libraries/tikzlibraryexternal.code.tex ====

\usepackage{pdftexcmds}
\pgfutil@IfFileExists{atveryend.sty}{%
^I\usepackage{atveryend}%
}{%
^I\message{! Package tikz Warning: \string\usepackage{atveryend} impossible. Automatic resolving of references within external files impossible.}%
}%

\input tikzexternalshared.code.tex

\pgfutil@IfUndefined{pdf@mdfivesum}{}{%
^I\let\tikzexternal@mdfivesum=\pdf@mdfivesum
}%

\def\tikzexternal@TEXDIALECT@begpicture{\begin{tikzpicture}}
\def\tikzexternal@TEXDIALECT@endpicture{\end{tikzpicture}}%

\def\tikzexternal@TEXDIALECT@collectpicture#1{%
^I\begingroup
^I\t@tikzexternal@tmpa={}%
^I\tikzexternal@laTeX@collect@until@end@tikzpicture{#1}%
}

\long\def\tikzexternal@laTeX@collect@until@end@tikzpicture#1#2\end#3{%
^I\def\tikzexternal@laTeX@collect@until@end@tikzpicture@{#3}%
^I\ifx\tikzexternal@laTeX@collect@until@end@tikzpicture@\tikzexternal@laTeX@collect@until@end@tikzpicturetikzpicturestring
^I^I\t@tikzexternal@tmpa=\expandafter{\the\t@tikzexternal@tmpa #2}%
^I^I\edef\tikzexternal@TEXDIALECT@collectpicture@next{%
^I^I^I\noexpand\endgroup
^I^I^I\noexpand#1{\the\t@tikzexternal@tmpa}%
^I^I}%
^I^I\t@tikzexternal@tmpa={}%
^I\else
^I^I\t@tikzexternal@tmpa=\expandafter{\the\t@tikzexternal@tmpa #2\end{#3}}%
^I^I\def\tikzexternal@TEXDIALECT@collectpicture@next{%
^I^I^I\tikzexternal@laTeX@collect@until@end@tikzpicture{#1}}%
^I\fi
^I\tikzexternal@TEXDIALECT@collectpicture@next
}%
\def\tikzexternal@laTeX@collect@until@end@tikzpicturetikzpicturestring{tikzpicture}%

\def\tikzexternal@handle@landscape{%
^I\ltx@ifpackageloaded{pdflscape}{%
^I^I\tikzset{
^I^I^Iexternal/.cd,
^I^I^Ioptimize command away=\landscape,
^I^I^Ioptimize command away=\endlandscape
^I^I}%
^I}{%
^I}%
}%

\let\tikzexternal@currname\@currname
\def\@currname{tikzlibraryexternal}

\AtBeginDocument{%
^I\pgfutil@ifundefined{tikzexternalrealjob}{%
^I^I\global\let\tikzexternalrealjob=\jobname
^I}{}%
^I\tikzexternal@handle@landscape
}%

\let\@currname\tikzexternal@currname
==== END Uniform-Stability-of-the-Spherical-Laughlin-Gap//tools/tex/latex/pgf/frontendlayer/libraries/tikzlibraryexternal.code.tex ====