Project

Profile

Help

RE: Performance variations » explain.rome-test.xml

Vladimir Nesterovsky, 2020-05-19 14:15

 
<stylesheet xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<globalVariables>
<globalVariable name="Q{xslt:priority-queue:2020}empty"
as="1FM k[AS] v[1F]"
line="16"
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
visibility="PRIVATE">
<ifCall baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="16"
name="Q{http://www.w3.org/2005/xpath-functions/map}merge"
type="1FM">
<sequence>
<map size="1">
<str val="keys"/>
<map size="0"/>
</map>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="items"/>
<array size="0"/>
</ifCall>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
</globalVariable>
</globalVariables>
<mode onNo="TC" flags="dW" patternSlots="0">
<ruleSet type="document-node()">
<templateRule prec="5"
prio="-0.5"
seq="0"
rank="0"
minImp="0"
slots="1"
matches="ND"
flags="s"
line="16"
module="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt">
<p.nodeTest role="match" test="ND"/>
<let role="action"
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
line="17"
var="Q{}g"
as="1FM"
slot="0"
eval="16">
<ufCall name="Q{public:this}create-graph" tailCall="false" bSlot="0"/>
<message line="26">
<sequence role="select">
<valueOf>
<str val="Shortest path:&#xA;"/>
</valueOf>
<forEach>
<ufCall name="Q{xslt:graph-api:2020}dijkstra-search"
tailCall="false"
bSlot="1"
eval="0 0 6">
<int val="1498"/>
<int val="351"/>
<varRef name="Q{}g" slot="0"/>
</ufCall>
<sequence line="30">
<valueOf>
<fn name="string-join">
<convert from="A" to="AS">
<data>
<mergeAdj>
<sequence>
<lookup>
<dot type="1FM"/>
<str val="from"/>
</lookup>
<str val=" - "/>
<lookup>
<dot type="1FM"/>
<str val="to"/>
</lookup>
<str val=", distance = "/>
<ufCall name="Q{xslt:graph-api:2020}edge-value"
tailCall="false"
bSlot="2"
eval="16 6">
<check card="1" diag="0|0||g:edge-value">
<lookup>
<dot type="1FM"/>
<str val="edge"/>
</lookup>
</check>
<varRef name="Q{}g" slot="0"/>
</ufCall>
<str val=", total = "/>
<lookup>
<dot type="1FM"/>
<str val="distance"/>
</lookup>
</sequence>
</mergeAdj>
</data>
</convert>
<str val=""/>
</fn>
</valueOf>
<valueOf>
<str val="&#xA;"/>
</valueOf>
</sequence>
</forEach>
</sequence>
<str role="terminate" val="no"/>
<str role="error" val="Q{http://www.w3.org/2005/xqt-errors}XTMM9000"/>
</message>
</let>
</templateRule>
</ruleSet>
</mode>
<namedTemplates>
<template name="f:repeat"
line="180"
module="file:/C:/projects/git/xslt-graph/functions.xslt">
<sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
line="181">
<param name="Q{}state" slot="0">
<empty role="select"/>
<supplied role="conversion" slot="0"/>
</param>
<param line="182"
name="Q{}condition"
slot="1"
flags="i"
as="1F r[1AB] a[*]">
<check role="conversion" card="1" diag="8|0|XTTE0590|condition">
<fnCoercer to="1F r[1AB] a[*]" diag="8|0|XTTE0590|condition">
<supplied slot="1"/>
</fnCoercer>
</check>
</param>
<param line="183" name="Q{}action" slot="2" flags="i" as="1F a[*]">
<check role="conversion" card="1" diag="8|0|XTTE0590|action">
<fnCoercer to="1F a[*]" diag="8|0|XTTE0590|action">
<supplied slot="2"/>
</fnCoercer>
</check>
</param>
<param line="184" name="Q{}next" slot="3" flags="i" as="1F a[*,*]">
<check role="conversion" card="1" diag="8|0|XTTE0590|next">
<fnCoercer to="1F a[*,*]" diag="8|0|XTTE0590|next">
<supplied slot="3"/>
</fnCoercer>
</check>
</param>
<let line="186" var="Q{}items" slot="4" eval="4">
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$action">
<varRef name="Q{}action" slot="2"/>
<arrayBlock>
<varRef name="Q{}state" slot="0"/>
</arrayBlock>
</ifCall>
<sequence line="188">
<varRef name="Q{}items" slot="4"/>
<choose line="190">
<fn name="not">
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
<varRef name="Q{}condition" slot="1"/>
<arrayBlock>
<varRef name="Q{}state" slot="0"/>
</arrayBlock>
</ifCall>
</fn>
<callT line="191"
name="Q{xslt:functions:2020}repeat"
bSlot="0"
flags="t">
<withParam name="Q{}state" flags="c">
<ifCall line="192"
name="Q{http://saxon.sf.net/}apply"
type="*"
dyn="$next">
<varRef name="Q{}next" slot="3"/>
<arrayBlock>
<varRef name="Q{}state" slot="0"/>
<varRef name="Q{}items" slot="4"/>
</arrayBlock>
</ifCall>
</withParam>
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
<varRef line="193" name="Q{}condition" slot="1"/>
</withParam>
<withParam name="Q{}action" flags="c" as="1F a[*]">
<varRef line="194" name="Q{}action" slot="2"/>
</withParam>
<withParam name="Q{}next" flags="c" as="1F a[*,*]">
<varRef line="195" name="Q{}next" slot="3"/>
</withParam>
</callT>
</choose>
</sequence>
</let>
</sequence>
</template>
<template name="f:skip-while"
line="241"
module="file:/C:/projects/git/xslt-graph/functions.xslt">
<sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
line="242">
<param name="Q{}items" slot="0">
<empty role="select"/>
<supplied role="conversion" slot="0"/>
</param>
<param line="243" name="Q{}index" slot="1" as="1ADI">
<int role="select" val="1"/>
<treat role="conversion" as="ADI" diag="8|0|XTTE0590|index">
<check card="1" diag="8|0|XTTE0590|index">
<cvUntyped to="ADI" diag="8|0|XTTE0590|index">
<data diag="8|0|XTTE0590|index">
<supplied slot="1"/>
</data>
</cvUntyped>
</check>
</treat>
</param>
<param line="245"
name="Q{}condition"
slot="2"
flags="i"
as="1F r[1AB] a[1,1ADI]">
<check role="conversion" card="1" diag="8|0|XTTE0590|condition">
<fnCoercer to="1F r[1AB] a[1,1ADI]" diag="8|0|XTTE0590|condition">
<supplied slot="2"/>
</fnCoercer>
</check>
</param>
<let line="247" var="Q{}item" as="?" slot="3" eval="7">
<first>
<varRef name="Q{}items" slot="0"/>
</first>
<let line="248" var="Q{}tail" slot="4" eval="10">
<tail start="2">
<varRef name="Q{}items" slot="0"/>
</tail>
<choose line="251">
<and op="and">
<fn name="exists">
<varRef name="Q{}item" slot="3"/>
</fn>
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
<varRef name="Q{}condition" slot="2"/>
<arrayBlock>
<varRef name="Q{}item" slot="3"/>
<varRef name="Q{}index" slot="1"/>
</arrayBlock>
</ifCall>
</and>
<callT line="252"
name="Q{xslt:functions:2020}skip-while"
bSlot="0"
flags="t">
<withParam name="Q{}items" flags="c">
<varRef line="253" name="Q{}tail" slot="4"/>
</withParam>
<withParam name="Q{}index" flags="c" as="1ADI">
<arith line="254" op="+" calc="i+i">
<varRef name="Q{}index" slot="1"/>
<int val="1"/>
</arith>
</withParam>
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
<varRef line="255" name="Q{}condition" slot="2"/>
</withParam>
</callT>
<true/>
<varRef line="259" name="Q{}tail" slot="4"/>
</choose>
</let>
</let>
</sequence>
</template>
<template name="f:take-while"
line="211"
module="file:/C:/projects/git/xslt-graph/functions.xslt">
<sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
line="212">
<param name="Q{}items" slot="0">
<empty role="select"/>
<supplied role="conversion" slot="0"/>
</param>
<param line="213" name="Q{}index" slot="1" as="1ADI">
<int role="select" val="1"/>
<treat role="conversion" as="ADI" diag="8|0|XTTE0590|index">
<check card="1" diag="8|0|XTTE0590|index">
<cvUntyped to="ADI" diag="8|0|XTTE0590|index">
<data diag="8|0|XTTE0590|index">
<supplied slot="1"/>
</data>
</cvUntyped>
</check>
</treat>
</param>
<param line="215"
name="Q{}condition"
slot="2"
flags="i"
as="1F r[1AB] a[1,1ADI]">
<check role="conversion" card="1" diag="8|0|XTTE0590|condition">
<fnCoercer to="1F r[1AB] a[1,1ADI]" diag="8|0|XTTE0590|condition">
<supplied slot="2"/>
</fnCoercer>
</check>
</param>
<let line="217" var="Q{}item" as="?" slot="3" eval="7">
<first>
<varRef name="Q{}items" slot="0"/>
</first>
<choose line="219">
<and op="and">
<fn name="exists">
<varRef name="Q{}item" slot="3"/>
</fn>
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
<varRef name="Q{}condition" slot="2"/>
<arrayBlock>
<varRef name="Q{}item" slot="3"/>
<varRef name="Q{}index" slot="1"/>
</arrayBlock>
</ifCall>
</and>
<sequence line="220">
<varRef name="Q{}item" slot="3"/>
<callT line="222"
name="Q{xslt:functions:2020}take-while"
bSlot="0"
flags="t">
<withParam name="Q{}items" flags="c">
<tail line="223" start="2">
<varRef name="Q{}items" slot="0"/>
</tail>
</withParam>
<withParam name="Q{}index" flags="c" as="1ADI">
<arith line="224" op="+" calc="i+i">
<varRef name="Q{}index" slot="1"/>
<int val="1"/>
</arith>
</withParam>
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
<varRef line="225" name="Q{}condition" slot="2"/>
</withParam>
</callT>
</sequence>
</choose>
</let>
</sequence>
</template>
<template name="f:while"
line="144"
module="file:/C:/projects/git/xslt-graph/functions.xslt">
<sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
line="145">
<param name="Q{}state" slot="0">
<empty role="select"/>
<supplied role="conversion" slot="0"/>
</param>
<param line="146"
name="Q{}condition"
slot="1"
flags="i"
as="1F r[1AB] a[*]">
<check role="conversion" card="1" diag="8|0|XTTE0590|condition">
<fnCoercer to="1F r[1AB] a[*]" diag="8|0|XTTE0590|condition">
<supplied slot="1"/>
</fnCoercer>
</check>
</param>
<param line="147" name="Q{}action" slot="2" flags="i" as="1F a[*]">
<check role="conversion" card="1" diag="8|0|XTTE0590|action">
<fnCoercer to="1F a[*]" diag="8|0|XTTE0590|action">
<supplied slot="2"/>
</fnCoercer>
</check>
</param>
<param line="148" name="Q{}next" slot="3" flags="i" as="1F a[*,*]">
<check role="conversion" card="1" diag="8|0|XTTE0590|next">
<fnCoercer to="1F a[*,*]" diag="8|0|XTTE0590|next">
<supplied slot="3"/>
</fnCoercer>
</check>
</param>
<choose line="150">
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
<varRef name="Q{}condition" slot="1"/>
<arrayBlock>
<varRef name="Q{}state" slot="0"/>
</arrayBlock>
</ifCall>
<let line="151" var="Q{}items" slot="4" eval="4">
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$action">
<varRef name="Q{}action" slot="2"/>
<arrayBlock>
<varRef name="Q{}state" slot="0"/>
</arrayBlock>
</ifCall>
<sequence line="153">
<varRef name="Q{}items" slot="4"/>
<callT line="155"
name="Q{xslt:functions:2020}while"
bSlot="0"
flags="t">
<withParam name="Q{}state" flags="c">
<ifCall line="156"
name="Q{http://saxon.sf.net/}apply"
type="*"
dyn="$next">
<varRef name="Q{}next" slot="3"/>
<arrayBlock>
<varRef name="Q{}state" slot="0"/>
<varRef name="Q{}items" slot="4"/>
</arrayBlock>
</ifCall>
</withParam>
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
<varRef line="157" name="Q{}condition" slot="1"/>
</withParam>
<withParam name="Q{}action" flags="c" as="1F a[*]">
<varRef line="158" name="Q{}action" slot="2"/>
</withParam>
<withParam name="Q{}next" flags="c" as="1F a[*,*]">
<varRef line="159" name="Q{}next" slot="3"/>
</withParam>
</callT>
</sequence>
</let>
</choose>
</sequence>
</template>
</namedTemplates>
<accumulators/>
<functions>
<function name="Q{xslt:functions:2020}while"
line="48"
module="file:/C:/projects/git/xslt-graph/functions.xslt"
eval="8"
flags="pU"
as="*"
slots="3">
<arg name="Q{}state" as="*"/>
<arg name="Q{}condition" as="1F r[1AB] a[*]"/>
<arg name="Q{}next" as="1F a[*]"/>
<tailCallLoop role="body"
baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
line="57">
<choose>
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
<varRef name="Q{}condition" slot="1"/>
<arrayBlock>
<varRef name="Q{}state" slot="0"/>
</arrayBlock>
</ifCall>
<ufCall name="Q{xslt:functions:2020}while"
tailCall="self"
bSlot="0"
eval="4 6 6">
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$next">
<varRef name="Q{}next" slot="2"/>
<arrayBlock>
<varRef name="Q{}state" slot="0"/>
</arrayBlock>
</ifCall>
<varRef name="Q{}condition" slot="1"/>
<varRef name="Q{}next" slot="2"/>
</ufCall>
<true/>
<varRef name="Q{}state" slot="0"/>
</choose>
</tailCallLoop>
</function>
<function name="Q{public:this}create-graph"
line="42"
module="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
eval="8"
flags="pU"
as="1FM"
slots="4">
<let role="body"
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
line="53"
var="Q{}roads"
as="*FM k[AS] v[?ADI]"
slot="0"
eval="4">
<for var="Q{}line" as="AS" slot="1">
<filter role="in" flags="b">
<fn name="unparsed-text-lines">
<str val="rome99.gr"/>
</fn>
<fn name="starts-with">
<dot type="1AS"/>
<str val="a "/>
</fn>
</filter>
<let role="return" var="Q{}values" slot="2" eval="4">
<fn name="tokenize">
<varRef name="Q{}line" slot="1"/>
</fn>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="from"/>
<cast flags="ae" as="?ADI">
<subscript>
<varRef name="Q{}values" slot="2"/>
<int val="2"/>
</subscript>
</cast>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="to"/>
<cast flags="ae" as="?ADI">
<subscript>
<varRef name="Q{}values" slot="2"/>
<int val="3"/>
</subscript>
</cast>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="length"/>
<cast flags="ae" as="?ADI">
<subscript>
<varRef name="Q{}values" slot="2"/>
<int val="4"/>
</subscript>
</cast>
</ifCall>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
</let>
</for>
<let line="60" var="Q{}vertices" as="1FM" slot="3" eval="8">
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
<forEach>
<varRef name="Q{}roads" slot="0"/>
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<check card="1" diag="0|0||map:entry">
<lookup>
<dot type="1FM k[AS] v[?ADI]"/>
<str val="from"/>
</lookup>
</check>
<dot type="1FM k[AS] v[?ADI]"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<check card="1" diag="0|0||map:entry">
<lookup>
<dot type="1FM k[AS] v[?ADI]"/>
<str val="to"/>
</lookup>
</check>
<dot type="1FM k[AS] v[?ADI]"/>
</ifCall>
</sequence>
</forEach>
<map size="2">
<str val="duplicates"/>
<str val="combine"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
<ifCall line="73"
name="Q{http://www.w3.org/2005/xpath-functions/map}merge"
type="1FM">
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="vertices"/>
<partialApply>
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_1963862935"
arity="1"
bSlot="0"/>
<varRef name="Q{}vertices" slot="3"/>
</partialApply>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="edges"/>
<partialApply>
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_775445710"
arity="1"
bSlot="1"/>
<varRef name="Q{}roads" slot="0"/>
</partialApply>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="edge-value"/>
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_769432223"
arity="1"
bSlot="2"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="edge-vertices"/>
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_696933920"
arity="1"
bSlot="3"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="vertex-edges"/>
<partialApply>
<fnCoercer to="1F a[*,1FM]" diag="0|0||saxon:call">
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_712974096"
arity="2"
bSlot="4"/>
</fnCoercer>
<null/>
<varRef name="Q{}vertices" slot="3"/>
</partialApply>
</ifCall>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
</let>
</let>
</function>
<function name="Q{xslt:functions:2020}while"
line="21"
module="file:/C:/projects/git/xslt-graph/functions.xslt"
eval="9"
flags="pU"
as="*"
slots="4">
<arg name="Q{}state" as="*"/>
<arg name="Q{}condition" as="1F r[1AB] a[*]"/>
<arg name="Q{}action" as="1F a[*]"/>
<arg name="Q{}next" as="1F a[*,*]"/>
<callT role="body"
baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
line="27"
name="Q{xslt:functions:2020}while"
bSlot="0">
<withParam name="Q{}state" flags="c">
<varRef line="28" name="Q{}state" slot="0"/>
</withParam>
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
<varRef line="29" name="Q{}condition" slot="1"/>
</withParam>
<withParam name="Q{}action" flags="c" as="1F a[*]">
<varRef line="30" name="Q{}action" slot="2"/>
</withParam>
<withParam name="Q{}next" flags="c" as="1F a[*,*]">
<varRef line="31" name="Q{}next" slot="3"/>
</withParam>
</callT>
</function>
<function name="Q{xslt:functions:2020}take-while"
line="96"
module="file:/C:/projects/git/xslt-graph/functions.xslt"
eval="9"
flags="pU"
as="*"
slots="2">
<arg name="Q{}items" as="*"/>
<arg name="Q{}condition" as="1F r[1AB] a[1,1ADI]"/>
<callT role="body"
baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
line="101"
name="Q{xslt:functions:2020}take-while"
bSlot="0">
<withParam name="Q{}items" flags="c">
<varRef line="102" name="Q{}items" slot="0"/>
</withParam>
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
<varRef line="103" name="Q{}condition" slot="1"/>
</withParam>
</callT>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_767904468"
line="0"
eval="4"
flags="pU"
as="*"
slots="1">
<arg name="Q{}state" as="1FM"/>
<filter role="body"
baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
line="79"
flags="b">
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}head" type="*">
<treat as="FA" diag="0|0||array:head">
<check card="1" diag="0|0||array:head">
<lookup>
<varRef name="Q{}state" slot="0"/>
<str val="queue"/>
</lookup>
</check>
</treat>
</ifCall>
<fn name="not">
<ifCall name="Q{http://saxon.sf.net/}apply"
type="*"
dyn="$state ? &#34;visited&#34;">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<lookup>
<varRef name="Q{}state" slot="0"/>
<str val="visited"/>
</lookup>
</check>
</treat>
<arrayBlock>
<lookup>
<dot/>
<str val="to"/>
</lookup>
</arrayBlock>
</ifCall>
</fn>
</filter>
</function>
<function name="Q{xslt:graph-api:2020}edges"
line="53"
module="file:/C:/projects/git/xslt-graph/graph.xslt"
eval="4"
flags="pU"
as="*"
slots="1">
<arg name="Q{}g" as="1FM"/>
<forEach role="body"
baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
line="56">
<lookup>
<varRef name="Q{}g" slot="0"/>
<str val="edges"/>
</lookup>
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn=".">
<treat as="F" diag="0|0||saxon:apply">
<dot/>
</treat>
<array size="0"/>
</ifCall>
</forEach>
</function>
<function name="Q{xslt:priority-queue:2020}tail"
line="116"
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
eval="8"
flags="pU"
as="1FM"
slots="2">
<arg name="Q{}q" as="1FM"/>
<let role="body"
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="125"
var="Q{}items"
slot="1"
eval="4">
<lookup>
<varRef name="Q{}q" slot="0"/>
<str val="items"/>
</lookup>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="keys"/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}remove" type="1FM">
<treat as="FM" diag="0|0||map:remove">
<check card="1" diag="0|0||map:remove">
<lookup>
<varRef name="Q{}q" slot="0"/>
<str val="keys"/>
</lookup>
</check>
</treat>
<data diag="0|1||map:remove">
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}head" type="*">
<treat as="FA" diag="0|0||array:head">
<check card="1" diag="0|0||array:head">
<varRef name="Q{}items" slot="1"/>
</check>
</treat>
</ifCall>
</data>
</ifCall>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="items"/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}tail" type="1FA">
<treat as="FA" diag="0|0||array:tail">
<check card="1" diag="0|0||array:tail">
<varRef name="Q{}items" slot="1"/>
</check>
</treat>
</ifCall>
</ifCall>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
</let>
</function>
<function name="Q{xslt:priority-queue:2020}head"
line="105"
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
eval="7"
flags="pU"
as="?FM"
slots="2">
<arg name="Q{}q" as="1FM"/>
<let role="body"
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="108"
var="Q{http://saxon.sf.net/generated-variable}v0"
as="1F"
slot="1"
eval="13">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<lookup>
<varRef name="Q{}q" slot="0"/>
<str val="keys"/>
</lookup>
</check>
</treat>
<treat as="FM" diag="5|0|XTTE0780|q:head#1">
<check card="?" diag="5|0|XTTE0780|q:head#1">
<forEach>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}head" type="*">
<treat as="FA" diag="0|0||array:head">
<check card="1" diag="0|0||array:head">
<lookup>
<varRef name="Q{}q" slot="0"/>
<str val="items"/>
</lookup>
</check>
</treat>
</ifCall>
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$q ? &#34;keys&#34;">
<varRef name="Q{http://saxon.sf.net/generated-variable}v0" slot="1"/>
<arrayBlock>
<dot/>
</arrayBlock>
</ifCall>
</forEach>
</check>
</treat>
</let>
</function>
<function name="Q{xslt:priority-queue:2020}size"
line="91"
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
eval="8"
flags="pU"
as="1ADI"
slots="1">
<arg name="Q{}q" as="1FM"/>
<ifCall role="body"
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="94"
name="Q{http://www.w3.org/2005/xpath-functions/array}size"
type="1ADI">
<treat as="FA" diag="0|0||array:size">
<check card="1" diag="0|0||array:size">
<lookup>
<varRef name="Q{}q" slot="0"/>
<str val="items"/>
</lookup>
</check>
</treat>
</ifCall>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_760357227"
line="0"
eval="4"
flags="pU"
as="*"
slots="10">
<arg name="Q{}state" as="*"/>
<arg name="Q{}g" as="1FM"/>
<arg name="Q{}target" as="?"/>
<let role="body"
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="173"
var="Q{}item"
slot="3"
eval="3">
<lookup>
<ufCall name="Q{xslt:priority-queue:2020}head" tailCall="false" bSlot="0">
<treat as="FM" diag="0|0||q:head">
<check card="1" diag="0|0||q:head">
<subscript>
<varRef name="Q{}state" slot="0"/>
<int val="2"/>
</subscript>
</check>
</treat>
</ufCall>
<str val="value"/>
</lookup>
<let var="Q{}visited" slot="4" eval="7">
<subscript>
<varRef name="Q{}state" slot="0"/>
<int val="3"/>
</subscript>
<let var="Q{}from" slot="5" eval="4">
<lookup>
<varRef name="Q{}item" slot="3"/>
<str val="to"/>
</lookup>
<let var="Q{}total" slot="6" eval="4">
<lookup>
<varRef name="Q{}item" slot="3"/>
<str val="distance"/>
</lookup>
<choose>
<gc op="="
card="M:N"
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
<data diag="1|0||=">
<varRef name="Q{}target" slot="2"/>
</data>
<data diag="1|1||=">
<varRef name="Q{}from" slot="5"/>
</data>
</gc>
<sequence>
<int val="0"/>
<ufCall name="Q{xslt:priority-queue:2020}create" tailCall="false" bSlot="1"/>
<varRef name="Q{}visited" slot="4"/>
</sequence>
<true/>
<fn name="fold-left">
<for var="Q{}edge" slot="7">
<ufCall role="in"
name="Q{xslt:graph-api:2020}vertex-edges"
tailCall="false"
bSlot="2">
<check card="1" diag="0|0||g:vertex-edges">
<varRef name="Q{}from" slot="5"/>
</check>
<varRef name="Q{}g" slot="1"/>
</ufCall>
<let role="return" var="Q{}distance" slot="8" eval="4">
<ufCall name="Q{xslt:graph-api:2020}edge-value" tailCall="false" bSlot="3">
<varRef name="Q{}edge" slot="7"/>
<varRef name="Q{}g" slot="1"/>
</ufCall>
<for var="Q{}to" slot="9">
<ufCall role="in"
name="Q{xslt:graph-api:2020}edge-vertices"
tailCall="false"
bSlot="4">
<varRef name="Q{}edge" slot="7"/>
<varRef name="Q{}g" slot="1"/>
</ufCall>
<choose role="return">
<gc op="="
card="M:N"
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
<data diag="1|0||=">
<varRef name="Q{}to" slot="9"/>
</data>
<data diag="1|1||=">
<varRef name="Q{}from" slot="5"/>
</data>
</gc>
<empty/>
<true/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="from"/>
<varRef name="Q{}from" slot="5"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="to"/>
<varRef name="Q{}to" slot="9"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="edge"/>
<varRef name="Q{}edge" slot="7"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="distance"/>
<choose>
<fn name="empty">
<varRef name="Q{}total" slot="6"/>
</fn>
<varRef name="Q{}distance" slot="8"/>
<true/>
<arith op="+" calc="a+a">
<cvUntyped to="AO">
<atomSing card="?" diag="1|0||+">
<varRef name="Q{}total" slot="6"/>
</atomSing>
</cvUntyped>
<cvUntyped to="AO">
<atomSing card="?" diag="1|1||+">
<varRef name="Q{}distance" slot="8"/>
</atomSing>
</cvUntyped>
</arith>
</choose>
</ifCall>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
</choose>
</for>
</let>
</for>
<sequence>
<int val="0"/>
<ufCall name="Q{xslt:priority-queue:2020}tail" tailCall="false" bSlot="5">
<treat as="FM" diag="0|0||q:tail">
<check card="1" diag="0|0||q:tail">
<subscript>
<varRef name="Q{}state" slot="0"/>
<int val="2"/>
</subscript>
</check>
</treat>
</ufCall>
<varRef name="Q{}visited" slot="4"/>
</sequence>
<fnCoercer to="1F a[*,1]" diag="0|2||fn:fold-left">
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_1944702768"
arity="2"
bSlot="6"/>
</fnCoercer>
</fn>
</choose>
</let>
</let>
</let>
</let>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_769432223"
line="0"
eval="4"
flags="pU"
as="*"
slots="1">
<arg name="Q{}edge" as="1FM"/>
<lookup role="body"
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
line="73">
<varRef name="Q{}edge" slot="0"/>
<str val="length"/>
</lookup>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_696933920"
line="0"
eval="4"
flags="pU"
as="*"
slots="1">
<arg name="Q{}edge" as="1FM"/>
<sequence role="body"
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
line="73">
<lookup>
<varRef name="Q{}edge" slot="0"/>
<str val="from"/>
</lookup>
<lookup>
<varRef name="Q{}edge" slot="0"/>
<str val="to"/>
</lookup>
</sequence>
</function>
<function name="Q{xslt:graph-api:2020}edge-value"
line="83"
module="file:/C:/projects/git/xslt-graph/graph.xslt"
eval="4"
flags="pU"
as="*"
slots="3">
<arg name="Q{}edge" as="1"/>
<arg name="Q{}g" as="1FM"/>
<let role="body"
baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
line="92"
var="Q{}fn"
slot="2"
eval="4">
<lookup>
<varRef name="Q{}g" slot="1"/>
<str val="edge-value"/>
</lookup>
<choose>
<fn name="empty">
<varRef name="Q{}fn" slot="2"/>
</fn>
<varRef name="Q{}edge" slot="0"/>
<true/>
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$fn">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<varRef name="Q{}fn" slot="2"/>
</check>
</treat>
<arrayBlock>
<varRef name="Q{}edge" slot="0"/>
</arrayBlock>
</ifCall>
</choose>
</let>
</function>
<function name="Q{xslt:priority-queue:2020}items"
line="152"
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
eval="4"
flags="pU"
as="*FM"
slots="2">
<arg name="Q{}q" as="1FM"/>
<let role="body"
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="155"
var="Q{http://saxon.sf.net/generated-variable}v0"
as="1F"
slot="1"
eval="13">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<lookup>
<varRef name="Q{}q" slot="0"/>
<str val="keys"/>
</lookup>
</check>
</treat>
<treat as="FM" diag="5|0|XTTE0780|q:items#1">
<forEach>
<lookupAll>
<lookup>
<varRef name="Q{}q" slot="0"/>
<str val="items"/>
</lookup>
</lookupAll>
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$q ? &#34;keys&#34;">
<varRef name="Q{http://saxon.sf.net/generated-variable}v0" slot="1"/>
<arrayBlock>
<dot/>
</arrayBlock>
</ifCall>
</forEach>
</treat>
</let>
</function>
<function name="Q{xslt:priority-queue:2020}remove"
line="67"
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
eval="16"
flags="pU"
as="1FM"
slots="5">
<arg name="Q{}q" as="1FM"/>
<arg name="Q{}key" as="1"/>
<let role="body"
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="83"
var="Q{}keys"
slot="2"
eval="4">
<lookup>
<varRef name="Q{}q" slot="0"/>
<str val="keys"/>
</lookup>
<let var="Q{}items" slot="3" eval="4">
<lookup>
<varRef name="Q{}q" slot="0"/>
<str val="items"/>
</lookup>
<let var="Q{}item" slot="4" eval="4">
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$keys">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<varRef name="Q{}keys" slot="2"/>
</check>
</treat>
<arrayBlock>
<varRef name="Q{}key" slot="1"/>
</arrayBlock>
</ifCall>
<choose>
<fn name="empty">
<varRef name="Q{}item" slot="4"/>
</fn>
<varRef name="Q{}q" slot="0"/>
<true/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="keys"/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}remove" type="1FM">
<treat as="FM" diag="0|0||map:remove">
<check card="1" diag="0|0||map:remove">
<varRef name="Q{}keys" slot="2"/>
</check>
</treat>
<data diag="0|1||map:remove">
<varRef name="Q{}key" slot="1"/>
</data>
</ifCall>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="items"/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}remove" type="1FA">
<treat as="FA" diag="0|0||array:remove">
<check card="1" diag="0|0||array:remove">
<varRef name="Q{}items" slot="3"/>
</check>
</treat>
<ufCall name="Q{private:xslt:priority-queue:2020}find"
tailCall="false"
bSlot="0"
eval="16 16 8 6">
<treat as="FM" diag="0|0||p:find">
<check card="1" diag="0|0||p:find">
<varRef name="Q{}keys" slot="2"/>
</check>
</treat>
<treat as="FA" diag="0|1||p:find">
<check card="1" diag="0|1||p:find">
<varRef name="Q{}items" slot="3"/>
</check>
</treat>
<check card="?" diag="0|2||p:find">
<lookup>
<varRef name="Q{}item" slot="4"/>
<str val="priority"/>
</lookup>
</check>
<varRef name="Q{}key" slot="1"/>
</ufCall>
</ifCall>
</ifCall>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
</choose>
</let>
</let>
</let>
</function>
<function name="Q{xslt:functions:2020}skip-while"
line="117"
module="file:/C:/projects/git/xslt-graph/functions.xslt"
eval="9"
flags="pU"
as="*"
slots="2">
<arg name="Q{}items" as="*"/>
<arg name="Q{}condition" as="1F r[1AB] a[1,1ADI]"/>
<callT role="body"
baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
line="122"
name="Q{xslt:functions:2020}skip-while"
bSlot="0">
<withParam name="Q{}items" flags="c">
<varRef line="123" name="Q{}items" slot="0"/>
</withParam>
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
<varRef line="124" name="Q{}condition" slot="1"/>
</withParam>
</callT>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_658909832"
line="0"
eval="16"
flags="pU"
as="*"
slots="1">
<arg name="Q{}state" as="1FM"/>
<vc role="body"
baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
line="79"
op="gt"
onEmpty="0"
comp="CAVC">
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}size" type="1ADI">
<treat as="FA" diag="0|0||array:size">
<check card="1" diag="0|0||array:size">
<lookup>
<varRef name="Q{}state" slot="0"/>
<str val="queue"/>
</lookup>
</check>
</treat>
</ifCall>
<int val="0"/>
</vc>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_656479172"
line="0"
eval="16"
flags="pU"
as="*"
slots="1">
<arg name="Q{}state" as="*"/>
<vc role="body"
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="173"
op="gt"
onEmpty="0"
comp="CAVC">
<ufCall name="Q{xslt:priority-queue:2020}size" tailCall="false" bSlot="0">
<treat as="FM" diag="0|0||q:size">
<check card="1" diag="0|0||q:size">
<subscript>
<varRef name="Q{}state" slot="0"/>
<int val="2"/>
</subscript>
</check>
</treat>
</ufCall>
<int val="0"/>
</vc>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_775445710"
line="0"
eval="6"
flags="pU"
as="*"
slots="1">
<arg name="Q{}roads" as="*FM k[AS] v[?ADI]"/>
<varRef role="body"
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
line="73"
name="Q{}roads"
slot="0"/>
</function>
<function name="Q{xslt:priority-queue:2020}add"
line="34"
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
eval="8"
flags="pU"
as="1FM"
slots="9">
<arg name="Q{}q" as="1FM"/>
<arg name="Q{}priority" as="?"/>
<arg name="Q{}key" as="1"/>
<arg name="Q{}value" as="*"/>
<let role="body"
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="58"
var="Q{}keys"
slot="4"
eval="3">
<lookup>
<varRef name="Q{}q" slot="0"/>
<str val="keys"/>
</lookup>
<let var="Q{}items" slot="5" eval="3">
<lookup>
<varRef name="Q{}q" slot="0"/>
<str val="items"/>
</lookup>
<let var="Q{}item" slot="6" eval="3">
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$keys">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<varRef name="Q{}keys" slot="4"/>
</check>
</treat>
<arrayBlock>
<varRef name="Q{}key" slot="2"/>
</arrayBlock>
</ifCall>
<let var="Q{}items" slot="7" eval="3">
<choose>
<fn name="empty">
<varRef name="Q{}item" slot="6"/>
</fn>
<varRef name="Q{}items" slot="5"/>
<true/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}remove" type="1FA">
<treat as="FA" diag="0|0||array:remove">
<check card="1" diag="0|0||array:remove">
<varRef name="Q{}items" slot="5"/>
</check>
</treat>
<ufCall name="Q{private:xslt:priority-queue:2020}find"
tailCall="false"
bSlot="0"
eval="16 16 8 6">
<treat as="FM" diag="0|0||p:find">
<check card="1" diag="0|0||p:find">
<varRef name="Q{}keys" slot="4"/>
</check>
</treat>
<treat as="FA" diag="0|1||p:find">
<check card="1" diag="0|1||p:find">
<varRef name="Q{}items" slot="5"/>
</check>
</treat>
<check card="?" diag="0|2||p:find">
<lookup>
<varRef name="Q{}item" slot="6"/>
<str val="priority"/>
</lookup>
</check>
<varRef name="Q{}key" slot="2"/>
</ufCall>
</ifCall>
</choose>
<let var="Q{}index" slot="8" eval="16">
<ufCall name="Q{private:xslt:priority-queue:2020}find"
tailCall="false"
bSlot="1"
eval="16 16 6 6">
<treat as="FM" diag="0|0||p:find">
<check card="1" diag="0|0||p:find">
<varRef name="Q{}keys" slot="4"/>
</check>
</treat>
<treat as="FA" diag="0|1||p:find">
<check card="1" diag="0|1||p:find">
<varRef name="Q{}items" slot="7"/>
</check>
</treat>
<varRef name="Q{}priority" slot="1"/>
<varRef name="Q{}key" slot="2"/>
</ufCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="keys"/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}put" type="1FM">
<treat as="FM" diag="0|0||map:put">
<check card="1" diag="0|0||map:put">
<varRef name="Q{}keys" slot="4"/>
</check>
</treat>
<atomSing diag="0|1||map:put">
<varRef name="Q{}key" slot="2"/>
</atomSing>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="key"/>
<varRef name="Q{}key" slot="2"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="priority"/>
<varRef name="Q{}priority" slot="1"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="value"/>
<varRef name="Q{}value" slot="3"/>
</ifCall>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
</ifCall>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="items"/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}insert-before"
type="1FA">
<treat as="FA" diag="0|0||array:insert-before">
<check card="1" diag="0|0||array:insert-before">
<varRef name="Q{}items" slot="7"/>
</check>
</treat>
<minus>
<varRef name="Q{}index" slot="8"/>
</minus>
<varRef name="Q{}key" slot="2"/>
</ifCall>
</ifCall>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
</let>
</let>
</let>
</let>
</let>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_658404420"
line="0"
eval="8"
flags="pU"
as="*"
slots="2">
<arg name="Q{}vertex" as="1"/>
<arg name="Q{}visited" as="*"/>
<fn role="body"
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="88"
name="exists">
<forEach>
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$visited">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<varRef name="Q{}visited" slot="1"/>
</check>
</treat>
<arrayBlock>
<varRef name="Q{}vertex" slot="0"/>
</arrayBlock>
</ifCall>
<lookup>
<dot/>
<str val="from"/>
</lookup>
</forEach>
</fn>
</function>
<function name="Q{xslt:priority-queue:2020}item"
line="137"
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
eval="7"
flags="pU"
as="?FM"
slots="2">
<arg name="Q{}q" as="1FM"/>
<arg name="Q{}key" as="1"/>
<treat role="body"
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="141"
as="FM"
diag="5|0|XTTE0780|q:item#2">
<check card="?" diag="5|0|XTTE0780|q:item#2">
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$q ? &#34;keys&#34;">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<lookup>
<varRef name="Q{}q" slot="0"/>
<str val="keys"/>
</lookup>
</check>
</treat>
<arrayBlock>
<varRef name="Q{}key" slot="1"/>
</arrayBlock>
</ifCall>
</check>
</treat>
</function>
<function name="Q{xslt:priority-queue:2020}create"
line="22"
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
eval="6"
flags="pU"
as="1FM"
slots="0">
<gVarRef role="body"
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="23"
name="Q{xslt:priority-queue:2020}empty"
bSlot="0"/>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_712974096"
line="0"
eval="4"
flags="pU"
as="*"
slots="2">
<arg name="Q{}vertex" as="1ADI"/>
<arg name="Q{}vertices" as="1FM"/>
<filter role="body"
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
line="73"
flags="b">
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}get" type="*">
<varRef name="Q{}vertices" slot="1"/>
<varRef name="Q{}vertex" slot="0"/>
</ifCall>
<gc op="="
card="N:1"
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
<data diag="1|0||=">
<lookup>
<dot/>
<str val="from"/>
</lookup>
</data>
<varRef name="Q{}vertex" slot="0"/>
</gc>
</filter>
</function>
<function name="Q{xslt:graph-api:2020}dijkstra-search-visited"
line="107"
module="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
eval="16"
flags="pU"
as="1FM"
slots="4">
<arg name="Q{}source" as="1"/>
<arg name="Q{}target" as="?"/>
<arg name="Q{}g" as="1FM"/>
<treat role="body"
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="173"
as="FM"
diag="5|0|XTTE0780|g:dijkstra-search-visited#3">
<check card="1" diag="5|0|XTTE0780|g:dijkstra-search-visited#3">
<subscript>
<ufCall name="Q{xslt:functions:2020}while"
tailCall="false"
bSlot="0"
eval="8 16 16">
<let var="Q{}item" slot="3" eval="8">
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="to"/>
<varRef name="Q{}source" slot="0"/>
</ifCall>
<sequence>
<int val="0"/>
<ufCall name="Q{xslt:priority-queue:2020}add"
tailCall="false"
bSlot="1"
eval="16 0 6 6">
<ufCall name="Q{xslt:priority-queue:2020}create" tailCall="false" bSlot="2"/>
<empty/>
<varRef name="Q{}source" slot="0"/>
<varRef name="Q{}item" slot="3"/>
</ufCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<atomSing diag="0|0||map:entry">
<varRef name="Q{}source" slot="0"/>
</atomSing>
<varRef name="Q{}item" slot="3"/>
</ifCall>
</sequence>
</let>
<fnCoercer to="1F r[1AB] a[*]" diag="0|1||f:while">
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_656479172"
arity="1"
bSlot="3"/>
</fnCoercer>
<partialApply>
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_760357227"
arity="3"
bSlot="4"/>
<null/>
<varRef name="Q{}g" slot="2"/>
<varRef name="Q{}target" slot="1"/>
</partialApply>
</ufCall>
<int val="3"/>
</subscript>
</check>
</treat>
</function>
<function name="Q{xslt:graph-api:2020}dijkstra-search-reversed"
line="75"
module="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
eval="4"
flags="pU"
as="*FM"
slots="4">
<arg name="Q{}source" as="1"/>
<arg name="Q{}target" as="1"/>
<arg name="Q{}g" as="1FM"/>
<let role="body"
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="88"
var="Q{}visited"
slot="3"
eval="16">
<ufCall name="Q{xslt:graph-api:2020}dijkstra-search-visited"
tailCall="false"
bSlot="0"
eval="6 6 6">
<varRef name="Q{}source" slot="0"/>
<varRef name="Q{}target" slot="1"/>
<varRef name="Q{}g" slot="2"/>
</ufCall>
<treat as="FM" diag="5|0|XTTE0780|g:dijkstra-search-reversed#3">
<ufCall name="Q{xslt:functions:2020}while"
tailCall="false"
bSlot="1"
eval="6 16 16 16">
<varRef name="Q{}target" slot="1"/>
<fnCoercer to="1F r[1AB] a[*]" diag="0|1||f:while">
<partialApply>
<fnCoercer to="1F a[*,*]" diag="0|0||saxon:call">
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_658404420"
arity="2"
bSlot="2"/>
</fnCoercer>
<null/>
<varRef name="Q{}visited" slot="3"/>
</partialApply>
</fnCoercer>
<partialApply>
<fnCoercer to="1F a[*,*]" diag="0|0||saxon:call">
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_2108763062"
arity="2"
bSlot="3"/>
</fnCoercer>
<null/>
<varRef name="Q{}visited" slot="3"/>
</partialApply>
<fnCoercer to="1F a[*,*]" diag="0|3||f:while">
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_2017085051"
arity="2"
bSlot="4"/>
</fnCoercer>
</ufCall>
</treat>
</let>
</function>
<function name="Q{xslt:functions:2020}repeat"
line="72"
module="file:/C:/projects/git/xslt-graph/functions.xslt"
eval="9"
flags="pU"
as="*"
slots="4">
<arg name="Q{}state" as="*"/>
<arg name="Q{}condition" as="1F r[1AB] a[*]"/>
<arg name="Q{}action" as="1F a[*]"/>
<arg name="Q{}next" as="1F a[*,*]"/>
<callT role="body"
baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
line="78"
name="Q{xslt:functions:2020}repeat"
bSlot="0">
<withParam name="Q{}state" flags="c">
<varRef line="79" name="Q{}state" slot="0"/>
</withParam>
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
<varRef line="80" name="Q{}condition" slot="1"/>
</withParam>
<withParam name="Q{}action" flags="c" as="1F a[*]">
<varRef line="81" name="Q{}action" slot="2"/>
</withParam>
<withParam name="Q{}next" flags="c" as="1F a[*,*]">
<varRef line="82" name="Q{}next" slot="3"/>
</withParam>
</callT>
</function>
<function name="Q{xslt:graph-api:2020}dijkstra-search"
line="50"
module="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
eval="4"
flags="pU"
as="*FM"
slots="3">
<arg name="Q{}source" as="1"/>
<arg name="Q{}target" as="1"/>
<arg name="Q{}g" as="1FM"/>
<fn role="body"
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="56"
name="reverse">
<ufCall name="Q{xslt:graph-api:2020}dijkstra-search-reversed"
tailCall="false"
bSlot="0"
eval="6 6 6">
<varRef name="Q{}source" slot="0"/>
<varRef name="Q{}target" slot="1"/>
<varRef name="Q{}g" slot="2"/>
</ufCall>
</fn>
</function>
<function name="Q{xslt:graph-api:2020}dijkstra-search"
line="27"
module="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
eval="16"
flags="pU"
as="1FM"
slots="2">
<arg name="Q{}source" as="1"/>
<arg name="Q{}g" as="1FM"/>
<tailCallLoop role="body"
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="31">
<ufCall name="Q{xslt:graph-api:2020}dijkstra-search-visited"
tailCall="foreign"
bSlot="0"
eval="6 0 6">
<varRef name="Q{}source" slot="0"/>
<empty/>
<varRef name="Q{}g" slot="1"/>
</ufCall>
</tailCallLoop>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_1424082571"
line="0"
eval="16"
flags="pU"
as="*"
slots="10">
<arg name="Q{}state" as="1FM"/>
<arg name="Q{}item" as="*"/>
<arg name="Q{}g" as="1FM"/>
<arg name="Q{}is-depth-first" as="1AB"/>
<let role="body"
baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
line="79"
var="Q{}tail"
slot="4"
eval="8">
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}tail" type="1FA">
<treat as="FA" diag="0|0||array:tail">
<check card="1" diag="0|0||array:tail">
<lookup>
<varRef name="Q{}state" slot="0"/>
<str val="queue"/>
</lookup>
</check>
</treat>
</ifCall>
<choose>
<fn name="empty">
<varRef name="Q{}item" slot="1"/>
</fn>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="queue"/>
<varRef name="Q{}tail" slot="4"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="visited"/>
<lookup>
<varRef name="Q{}state" slot="0"/>
<str val="visited"/>
</lookup>
</ifCall>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
<true/>
<let var="Q{}to" slot="5" eval="4">
<lookup>
<varRef name="Q{}item" slot="1"/>
<str val="to"/>
</lookup>
<let var="Q{}visited" slot="6" eval="8">
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}put" type="1FM">
<treat as="FM" diag="0|0||map:put">
<check card="1" diag="0|0||map:put">
<lookup>
<varRef name="Q{}state" slot="0"/>
<str val="visited"/>
</lookup>
</check>
</treat>
<atomSing diag="0|1||map:put">
<varRef name="Q{}to" slot="5"/>
</atomSing>
<true/>
</ifCall>
<let var="Q{}items" slot="7" eval="8">
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}_from-sequence"
type="1FA">
<for var="Q{}edge" slot="8">
<ufCall role="in"
name="Q{xslt:graph-api:2020}vertex-edges"
tailCall="false"
bSlot="0">
<check card="1" diag="0|0||g:vertex-edges">
<varRef name="Q{}to" slot="5"/>
</check>
<varRef name="Q{}g" slot="2"/>
</ufCall>
<for role="return" var="Q{}vertex" slot="9">
<ufCall role="in"
name="Q{xslt:graph-api:2020}edge-vertices"
tailCall="false"
bSlot="1">
<varRef name="Q{}edge" slot="8"/>
<varRef name="Q{}g" slot="2"/>
</ufCall>
<choose role="return">
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}get" type="*">
<varRef name="Q{}visited" slot="6"/>
<atomSing diag="0|1||map:get">
<varRef name="Q{}vertex" slot="9"/>
</atomSing>
</ifCall>
<empty/>
<true/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="from"/>
<varRef name="Q{}to" slot="5"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="to"/>
<varRef name="Q{}vertex" slot="9"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="edge"/>
<varRef name="Q{}edge" slot="8"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="depth"/>
<arith op="+" calc="a+a">
<cvUntyped to="AO">
<atomSing card="?" diag="1|0||+">
<lookup>
<varRef name="Q{}item" slot="1"/>
<str val="depth"/>
</lookup>
</atomSing>
</cvUntyped>
<int val="1"/>
</arith>
</ifCall>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
</choose>
</for>
</for>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="queue"/>
<choose>
<varRef name="Q{}is-depth-first" slot="3"/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}join" type="1FA">
<sequence>
<varRef name="Q{}items" slot="7"/>
<varRef name="Q{}tail" slot="4"/>
</sequence>
</ifCall>
<true/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}join" type="1FA">
<sequence>
<varRef name="Q{}tail" slot="4"/>
<varRef name="Q{}items" slot="7"/>
</sequence>
</ifCall>
</choose>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="visited"/>
<varRef name="Q{}visited" slot="6"/>
</ifCall>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
</let>
</let>
</let>
</choose>
</let>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_1963862935"
line="0"
eval="4"
flags="pU"
as="*"
slots="1">
<arg name="Q{}vertices" as="1FM"/>
<ifCall role="body"
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
line="73"
name="Q{http://www.w3.org/2005/xpath-functions/map}keys"
type="*A">
<varRef name="Q{}vertices" slot="0"/>
</ifCall>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_2017085051"
line="0"
eval="4"
flags="pU"
as="*"
slots="2">
<arg name="Q{}vertex" as="1"/>
<arg name="Q{}item" as="1FM"/>
<lookup role="body"
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="88">
<varRef name="Q{}item" slot="1"/>
<str val="from"/>
</lookup>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_2108763062"
line="0"
eval="4"
flags="pU"
as="*"
slots="2">
<arg name="Q{}vertex" as="1"/>
<arg name="Q{}visited" as="*"/>
<ifCall role="body"
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="88"
name="Q{http://saxon.sf.net/}apply"
type="*"
dyn="$visited">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<varRef name="Q{}visited" slot="1"/>
</check>
</treat>
<arrayBlock>
<varRef name="Q{}vertex" slot="0"/>
</arrayBlock>
</ifCall>
</function>
<function name="Q{xslt:graph-api:2020}edge-vertices"
line="101"
module="file:/C:/projects/git/xslt-graph/graph.xslt"
eval="4"
flags="pU"
as="+"
slots="2">
<arg name="Q{}edge" as="1"/>
<arg name="Q{}g" as="1FM"/>
<check role="body"
baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
line="105"
card="+"
diag="5|0|XTTE0780|g:edge-vertices#2">
<ifCall name="Q{http://saxon.sf.net/}apply"
type="*"
dyn="$g ? &#34;edge-vertices&#34;">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<lookup>
<varRef name="Q{}g" slot="1"/>
<str val="edge-vertices"/>
</lookup>
</check>
</treat>
<arrayBlock>
<varRef name="Q{}edge" slot="0"/>
</arrayBlock>
</ifCall>
</check>
</function>
<function name="Q{http://ns.saxonica.com/anonymous-type}f_1944702768"
line="0"
eval="4"
flags="pU"
as="*"
slots="6">
<arg name="Q{}state" as="*"/>
<arg name="Q{}neighbor" as="1FM"/>
<let role="body"
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="173"
var="Q{}visited"
slot="2"
eval="7">
<subscript>
<varRef name="Q{}state" slot="0"/>
<int val="3"/>
</subscript>
<let var="Q{}to" slot="3" eval="4">
<lookup>
<varRef name="Q{}neighbor" slot="1"/>
<str val="to"/>
</lookup>
<let var="Q{}distance" slot="4" eval="4">
<lookup>
<varRef name="Q{}neighbor" slot="1"/>
<str val="distance"/>
</lookup>
<let var="Q{}item" slot="5" eval="4">
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$visited">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<varRef name="Q{}visited" slot="2"/>
</check>
</treat>
<arrayBlock>
<varRef name="Q{}to" slot="3"/>
</arrayBlock>
</ifCall>
<choose>
<or op="or">
<fn name="empty">
<varRef name="Q{}item" slot="5"/>
</fn>
<vc op="lt"
onEmpty="0"
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
<atomSing card="?" diag="1|0||lt">
<varRef name="Q{}distance" slot="4"/>
</atomSing>
<atomSing card="?" diag="1|1||lt">
<lookup>
<varRef name="Q{}item" slot="5"/>
<str val="distance"/>
</lookup>
</atomSing>
</vc>
</or>
<sequence>
<int val="0"/>
<ufCall name="Q{xslt:priority-queue:2020}add" tailCall="false" bSlot="0">
<treat as="FM" diag="0|0||q:add">
<check card="1" diag="0|0||q:add">
<subscript>
<varRef name="Q{}state" slot="0"/>
<int val="2"/>
</subscript>
</check>
</treat>
<check card="?" diag="0|1||q:add">
<varRef name="Q{}distance" slot="4"/>
</check>
<check card="1" diag="0|2||q:add">
<varRef name="Q{}to" slot="3"/>
</check>
<varRef name="Q{}neighbor" slot="1"/>
</ufCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}put" type="1FM">
<treat as="FM" diag="0|0||map:put">
<check card="1" diag="0|0||map:put">
<varRef name="Q{}visited" slot="2"/>
</check>
</treat>
<atomSing diag="0|1||map:put">
<varRef name="Q{}to" slot="3"/>
</atomSing>
<varRef name="Q{}neighbor" slot="1"/>
</ifCall>
</sequence>
<true/>
<varRef name="Q{}state" slot="0"/>
</choose>
</let>
</let>
</let>
</let>
</function>
<function name="Q{xslt:graph-api:2020}search"
line="22"
module="file:/C:/projects/git/xslt-graph/search.xslt"
eval="4"
flags="pU"
as="*FM"
slots="4">
<arg name="Q{}root" as="1"/>
<arg name="Q{}g" as="1FM"/>
<arg name="Q{}is-depth-first" as="1AB"/>
<arg name="Q{}visited" as="1FM"/>
<treat role="body"
baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
line="79"
as="FM"
diag="5|0|XTTE0780|g:search#4">
<ufCall name="Q{xslt:functions:2020}while"
tailCall="false"
bSlot="0"
eval="4 16 16 16">
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="queue"/>
<arrayBlock>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
<sequence>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="to"/>
<varRef name="Q{}root" slot="0"/>
</ifCall>
<map size="1">
<str val="depth"/>
<int val="0"/>
</map>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
</arrayBlock>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
<str val="visited"/>
<varRef name="Q{}visited" slot="3"/>
</ifCall>
</sequence>
<map size="2">
<str val="duplicates"/>
<str val="reject"/>
<str val="duplicates-error-code"/>
<str val="FOJS0003"/>
</map>
</ifCall>
<fnCoercer to="1F r[1AB] a[*]" diag="0|1||f:while">
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_658909832"
arity="1"
bSlot="1"/>
</fnCoercer>
<fnCoercer to="1F a[*]" diag="0|2||f:while">
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_767904468"
arity="1"
bSlot="2"/>
</fnCoercer>
<partialApply>
<fnCoercer to="1F a[*,*,1FM,1AB]" diag="0|0||saxon:call">
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_1424082571"
arity="4"
bSlot="3"/>
</fnCoercer>
<null/>
<null/>
<varRef name="Q{}g" slot="1"/>
<varRef name="Q{}is-depth-first" slot="2"/>
</partialApply>
</ufCall>
</treat>
</function>
<function name="Q{xslt:graph-api:2020}vertices"
line="42"
module="file:/C:/projects/git/xslt-graph/graph.xslt"
eval="4"
flags="pU"
as="*"
slots="1">
<arg name="Q{}g" as="1FM"/>
<forEach role="body"
baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
line="45">
<lookup>
<varRef name="Q{}g" slot="0"/>
<str val="vertices"/>
</lookup>
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn=".">
<treat as="F" diag="0|0||saxon:apply">
<dot/>
</treat>
<array size="0"/>
</ifCall>
</forEach>
</function>
<function name="Q{private:xslt:priority-queue:2020}find"
line="167"
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
eval="16"
flags="pU"
as="1ADI"
slots="4">
<arg name="Q{}keys" as="1FM"/>
<arg name="Q{}items" as="1FA"/>
<arg name="Q{}priority" as="?"/>
<arg name="Q{}key" as="1"/>
<tailCallLoop role="body"
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="174">
<ufCall name="Q{private:xslt:priority-queue:2020}find"
tailCall="foreign"
bSlot="0"
eval="6 6 6 6 0 16">
<varRef name="Q{}keys" slot="0"/>
<varRef name="Q{}items" slot="1"/>
<varRef name="Q{}priority" slot="2"/>
<varRef name="Q{}key" slot="3"/>
<int val="1"/>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}size" type="1ADI">
<varRef name="Q{}items" slot="1"/>
</ifCall>
</ufCall>
</tailCallLoop>
</function>
<function name="Q{xslt:graph-api:2020}vertex-edges"
line="114"
module="file:/C:/projects/git/xslt-graph/graph.xslt"
eval="4"
flags="pU"
as="*"
slots="2">
<arg name="Q{}vertex" as="1"/>
<arg name="Q{}g" as="1FM"/>
<ifCall role="body"
baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
line="118"
name="Q{http://saxon.sf.net/}apply"
type="*"
dyn="$g ? &#34;vertex-edges&#34;">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<lookup>
<varRef name="Q{}g" slot="1"/>
<str val="vertex-edges"/>
</lookup>
</check>
</treat>
<arrayBlock>
<varRef name="Q{}vertex" slot="0"/>
</arrayBlock>
</ifCall>
</function>
<function name="Q{xslt:graph-api:2020}vertex-value"
line="65"
module="file:/C:/projects/git/xslt-graph/graph.xslt"
eval="4"
flags="pU"
as="*"
slots="3">
<arg name="Q{}vertex" as="1"/>
<arg name="Q{}g" as="1FM"/>
<let role="body"
baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
line="74"
var="Q{}fn"
slot="2"
eval="4">
<lookup>
<varRef name="Q{}g" slot="1"/>
<str val="vertex-value"/>
</lookup>
<choose>
<fn name="empty">
<varRef name="Q{}fn" slot="2"/>
</fn>
<varRef name="Q{}vertex" slot="0"/>
<true/>
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$fn">
<treat as="F" diag="0|0||saxon:apply">
<check card="1" diag="0|0||saxon:apply">
<varRef name="Q{}fn" slot="2"/>
</check>
</treat>
<arrayBlock>
<varRef name="Q{}vertex" slot="0"/>
</arrayBlock>
</ifCall>
</choose>
</let>
</function>
<function name="Q{private:xslt:priority-queue:2020}find"
line="188"
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
eval="16"
flags="pU"
as="1ADI"
slots="10">
<arg name="Q{}keys" as="1FM"/>
<arg name="Q{}items" as="1FA"/>
<arg name="Q{}priority" as="?"/>
<arg name="Q{}key" as="1"/>
<arg name="Q{}low" as="1ADI"/>
<arg name="Q{}high" as="1ADI"/>
<tailCallLoop role="body"
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
line="225">
<choose>
<vc op="gt" onEmpty="0" comp="CAVC">
<varRef name="Q{}low" slot="4"/>
<varRef name="Q{}high" slot="5"/>
</vc>
<minus>
<varRef name="Q{}low" slot="4"/>
</minus>
<true/>
<let var="Q{}mid" slot="6" eval="16">
<arith op="idiv" calc="i~i">
<arith op="+" calc="i+i">
<varRef name="Q{}low" slot="4"/>
<varRef name="Q{}high" slot="5"/>
</arith>
<int val="2"/>
</arith>
<let var="Q{}mid-item" slot="7" eval="4">
<forEach>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}get" type="*">
<varRef name="Q{}items" slot="1"/>
<varRef name="Q{}mid" slot="6"/>
</ifCall>
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}get" type="*">
<varRef name="Q{}keys" slot="0"/>
<atomSing diag="0|1||map:get">
<dot/>
</atomSing>
</ifCall>
</forEach>
<let var="Q{}mid-priority" slot="8" eval="4">
<lookup>
<varRef name="Q{}mid-item" slot="7"/>
<str val="priority"/>
</lookup>
<let var="Q{}mid-key" slot="9" eval="4">
<lookup>
<varRef name="Q{}mid-item" slot="7"/>
<str val="key"/>
</lookup>
<choose>
<or op="or">
<vc op="lt"
onEmpty="0"
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
<atomSing card="?" diag="1|0||lt">
<varRef name="Q{}mid-priority" slot="8"/>
</atomSing>
<atomSing card="?" diag="1|1||lt">
<varRef name="Q{}priority" slot="2"/>
</atomSing>
</vc>
<and op="and">
<fn name="empty">
<varRef name="Q{}mid-priority" slot="8"/>
</fn>
<fn name="exists">
<varRef name="Q{}priority" slot="2"/>
</fn>
</and>
</or>
<ufCall name="Q{private:xslt:priority-queue:2020}find"
tailCall="self"
bSlot="0"
eval="6 6 6 6 16 6">
<varRef name="Q{}keys" slot="0"/>
<varRef name="Q{}items" slot="1"/>
<varRef name="Q{}priority" slot="2"/>
<varRef name="Q{}key" slot="3"/>
<arith op="+" calc="i+i">
<varRef name="Q{}mid" slot="6"/>
<int val="1"/>
</arith>
<varRef name="Q{}high" slot="5"/>
</ufCall>
<true/>
<choose>
<or op="or">
<vc op="gt"
onEmpty="0"
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
<atomSing card="?" diag="1|0||gt">
<varRef name="Q{}mid-priority" slot="8"/>
</atomSing>
<atomSing card="?" diag="1|1||gt">
<varRef name="Q{}priority" slot="2"/>
</atomSing>
</vc>
<and op="and">
<fn name="exists">
<varRef name="Q{}mid-priority" slot="8"/>
</fn>
<fn name="empty">
<varRef name="Q{}priority" slot="2"/>
</fn>
</and>
</or>
<ufCall name="Q{private:xslt:priority-queue:2020}find"
tailCall="self"
bSlot="1"
eval="6 6 6 6 6 16">
<varRef name="Q{}keys" slot="0"/>
<varRef name="Q{}items" slot="1"/>
<varRef name="Q{}priority" slot="2"/>
<varRef name="Q{}key" slot="3"/>
<varRef name="Q{}low" slot="4"/>
<arith op="-" calc="i-i">
<varRef name="Q{}mid" slot="6"/>
<int val="1"/>
</arith>
</ufCall>
<true/>
<choose>
<vc op="lt"
onEmpty="0"
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
<atomSing card="?" diag="1|0||lt">
<varRef name="Q{}mid-key" slot="9"/>
</atomSing>
<atomSing card="?" diag="1|1||lt">
<varRef name="Q{}key" slot="3"/>
</atomSing>
</vc>
<ufCall name="Q{private:xslt:priority-queue:2020}find"
tailCall="self"
bSlot="2"
eval="6 6 6 6 16 6">
<varRef name="Q{}keys" slot="0"/>
<varRef name="Q{}items" slot="1"/>
<varRef name="Q{}priority" slot="2"/>
<varRef name="Q{}key" slot="3"/>
<arith op="+" calc="i+i">
<varRef name="Q{}mid" slot="6"/>
<int val="1"/>
</arith>
<varRef name="Q{}high" slot="5"/>
</ufCall>
<true/>
<choose>
<vc op="gt"
onEmpty="0"
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
<atomSing card="?" diag="1|0||gt">
<varRef name="Q{}mid-key" slot="9"/>
</atomSing>
<atomSing card="?" diag="1|1||gt">
<varRef name="Q{}key" slot="3"/>
</atomSing>
</vc>
<ufCall name="Q{private:xslt:priority-queue:2020}find"
tailCall="self"
bSlot="3"
eval="6 6 6 6 6 16">
<varRef name="Q{}keys" slot="0"/>
<varRef name="Q{}items" slot="1"/>
<varRef name="Q{}priority" slot="2"/>
<varRef name="Q{}key" slot="3"/>
<varRef name="Q{}low" slot="4"/>
<arith op="-" calc="i-i">
<varRef name="Q{}mid" slot="6"/>
<int val="1"/>
</arith>
</ufCall>
<true/>
<varRef name="Q{}mid" slot="6"/>
</choose>
</choose>
</choose>
</choose>
</let>
</let>
</let>
</let>
</choose>
</tailCallLoop>
</function>
</functions>
</stylesheet>
(1-1/2)