Demo is more interactive on wider screens.
Pinky Playground
output(0.00ms)
tokens(3.10ms)
FUNCfunc
IDENTIFIERmandelbrot
LPAREN(
IDENTIFIERcx
COMMA,
IDENTIFIERcy
RPAREN)
IDENTIFIERx
ASSIGN:=
NUMBER0
IDENTIFIERy
ASSIGN:=
NUMBER0
IDENTIFIERiter
ASSIGN:=
NUMBER0
IDENTIFIERmax
ASSIGN:=
NUMBER16
WHILEwhile
IDENTIFIERx
STAR*
IDENTIFIERx
PLUS+
IDENTIFIERy
STAR*
IDENTIFIERy
LE<=
NUMBER4
ANDand
IDENTIFIERiter
LT<
IDENTIFIERmax
DOdo
IDENTIFIERxtemp
ASSIGN:=
IDENTIFIERx
STAR*
IDENTIFIERx
MINUS-
IDENTIFIERy
STAR*
IDENTIFIERy
PLUS+
IDENTIFIERcx
IDENTIFIERy
ASSIGN:=
NUMBER2
STAR*
IDENTIFIERx
STAR*
IDENTIFIERy
PLUS+
IDENTIFIERcy
IDENTIFIERx
ASSIGN:=
IDENTIFIERxtemp
IDENTIFIERiter
ASSIGN:=
IDENTIFIERiter
PLUS+
NUMBER1
ENDend
RETret
IDENTIFIERiter
ENDend
IDENTIFIERheight
ASSIGN:=
NUMBER16
IDENTIFIERwidth
ASSIGN:=
NUMBER22
IDENTIFIERyi
ASSIGN:=
NUMBER0
WHILEwhile
IDENTIFIERyi
LT<
IDENTIFIERheight
DOdo
IDENTIFIERy0
ASSIGN:=
LPAREN(
IDENTIFIERyi
SLASH/
IDENTIFIERheight
RPAREN)
STAR*
NUMBER2.0
MINUS-
NUMBER1.0
IDENTIFIERxi
ASSIGN:=
NUMBER0
WHILEwhile
IDENTIFIERxi
LT<
IDENTIFIERwidth
DOdo
IDENTIFIERx0
ASSIGN:=
LPAREN(
IDENTIFIERxi
SLASH/
IDENTIFIERwidth
RPAREN)
STAR*
NUMBER3.5
MINUS-
NUMBER2.5
IDENTIFIERm
ASSIGN:=
IDENTIFIERmandelbrot
LPAREN(
IDENTIFIERx0
COMMA,
IDENTIFIERy0
RPAREN)
IFif
IDENTIFIERm
EQEQ==
NUMBER16
THENthen
PRINTprint
STRING
ELSEelse
PRINTprint
STRING
ENDend
IDENTIFIERxi
ASSIGN:=
IDENTIFIERxi
PLUS+
NUMBER1
ENDend
PRINTLNprintln
STRING
IDENTIFIERyi
ASSIGN:=
IDENTIFIERyi
PLUS+
NUMBER1
ENDend
PRINTLNprintln
STRING== Literals and Operators ==
PRINTprint
STRINGhello
PLUS+
STRINGworld
PRINTprint
NUMBER5
PLUS+
NUMBER3
PRINTprint
NUMBER10
MINUS-
NUMBER2
PRINTprint
NUMBER4
STAR*
NUMBER2
PRINTprint
NUMBER8
SLASH/
NUMBER2
PRINTprint
NUMBER3
MOD%
NUMBER2
PRINTprint
NUMBER2
CARET^
NUMBER3
PRINTLNprintln
STRING== Booleans ==
PRINTprint
TRUEtrue
PRINTprint
FALSEfalse
PRINTLNprintln
TRUEtrue
ANDand
FALSEfalse
PRINTLNprintln
FALSEfalse
ORor
TRUEtrue
PRINTLNprintln
TRUEtrue
ANDand
NUMBER7
PRINTLNprintln
FALSEfalse
ORor
STRINGok
PRINTLNprintln
NUMBER1
ORor
NUMBER2
PRINTLNprintln
STRINGx
ANDand
STRINGy
ANDand
STRINGz
PRINTLNprintln
STRING== Comparisons ==
PRINTprint
NUMBER1
EQEQ==
NUMBER1
PRINTprint
NUMBER1
NE~=
NUMBER2
PRINTprint
NUMBER3
LT<
NUMBER5
PRINTprint
NUMBER5
GT>
NUMBER3
PRINTprint
NUMBER3
LE<=
NUMBER3
PRINTLNprintln
NUMBER1
GE>=
NUMBER4
PRINTLNprintln
STRING== Variables and Scope ==
IDENTIFIERx
ASSIGN:=
NUMBER5
PRINTLNprintln
IDENTIFIERx
IFif
TRUEtrue
THENthen
LOCALlocal
IDENTIFIERx
ASSIGN:=
NUMBER10
PRINTLNprintln
IDENTIFIERx
ENDend
PRINTLNprintln
IDENTIFIERx
PRINTLNprintln
STRING== Control Flow: if, elif, else ==
IFif
IDENTIFIERx
EQEQ==
NUMBER5
THENthen
PRINTLNprintln
STRINGfive
ELIFelif
IDENTIFIERx
EQEQ==
NUMBER6
THENthen
PRINTLNprintln
STRINGsix
ELSEelse
PRINTLNprintln
STRINGother
ENDend
PRINTLNprintln
STRING== While Loops ==
IDENTIFIERi
ASSIGN:=
NUMBER0
WHILEwhile
IDENTIFIERi
LT<
NUMBER3
DOdo
PRINTprint
IDENTIFIERi
IDENTIFIERi
ASSIGN:=
IDENTIFIERi
PLUS+
NUMBER1
ENDend
PRINTLNprintln
STRING== For Loops ==
FORfor
IDENTIFIERj
ASSIGN:=
NUMBER5
COMMA,
NUMBER1
COMMA,
MINUS-
NUMBER2
DOdo
PRINTprint
IDENTIFIERj
ENDend
PRINTLNprintln
STRING== Functions ==
FUNCfunc
IDENTIFIERgreet
LPAREN(
RPAREN)
PRINTLNprintln
STRINGhi
ENDend
IDENTIFIERgreet
LPAREN(
RPAREN)
FUNCfunc
IDENTIFIERadd
LPAREN(
IDENTIFIERa
COMMA,
IDENTIFIERb
RPAREN)
RETret
IDENTIFIERa
PLUS+
IDENTIFIERb
ENDend
PRINTLNprintln
IDENTIFIERadd
LPAREN(
NUMBER7
COMMA,
NUMBER8
RPAREN)
FUNCfunc
IDENTIFIERsquare
LPAREN(
IDENTIFIERn
RPAREN)
RETret
IDENTIFIERn
STAR*
IDENTIFIERn
ENDend
PRINTLNprintln
IDENTIFIERsquare
LPAREN(
NUMBER4
RPAREN)
FUNCfunc
IDENTIFIERfact
LPAREN(
IDENTIFIERn
RPAREN)
IFif
IDENTIFIERn
LE<=
NUMBER1
THENthen
RETret
NUMBER1
ELSEelse
RETret
IDENTIFIERn
STAR*
IDENTIFIERfact
LPAREN(
IDENTIFIERn
MINUS-
NUMBER1
RPAREN)
ENDend
ENDend
PRINTLNprintln
IDENTIFIERfact
LPAREN(
NUMBER5
RPAREN)
PRINTLNprintln
STRING== Function Return as Value ==
IDENTIFIERx
ASSIGN:=
IDENTIFIERadd
LPAREN(
NUMBER3
COMMA,
NUMBER4
RPAREN)
PRINTLNprintln
IDENTIFIERx
PRINTLNprintln
STRINGval:
PLUS+
IDENTIFIERadd
LPAREN(
NUMBER1
COMMA,
NUMBER2
RPAREN)
PRINTLNprintln
STRING== Return in Branches ==
FUNCfunc
IDENTIFIERcheck
LPAREN(
IDENTIFIERflag
RPAREN)
IFif
IDENTIFIERflag
THENthen
RETret
STRINGyes
ELSEelse
RETret
STRINGno
ENDend
ENDend
PRINTLNprintln
IDENTIFIERcheck
LPAREN(
TRUEtrue
RPAREN)
PRINTLNprintln
IDENTIFIERcheck
LPAREN(
FALSEfalse
RPAREN)
PRINTLNprintln
STRING== String Concatenation ==
PRINTLNprintln
STRINGScore:
PLUS+
NUMBER10
PRINTLNprintln
NUMBER10
PLUS+
STRING%
PRINTLNprintln
STRINGok:
PLUS+
TRUEtrue
PRINTLNprintln
STRINGResult:
PLUS+
LPAREN(
NUMBER2
PLUS+
NUMBER3
RPAREN)
PLUS+
STRINGdone
PRINTLNprintln
STRING== Nil and Falsy Return ==
FUNCfunc
IDENTIFIERmaybe
LPAREN(
IDENTIFIERflag
RPAREN)
IFif
IDENTIFIERflag
THENthen
RETret
NUMBER1
ENDend
ENDend
PRINTLNprintln
IDENTIFIERmaybe
LPAREN(
FALSEfalse
RPAREN)
COMMENT-- empty line
IFif
IDENTIFIERmaybe
LPAREN(
FALSEfalse
RPAREN)
THENthen
PRINTprint
STRINGbad
ELSEelse
PRINTprint
STRINGfallback
ENDend
PRINTLNprintln
STRING== Scoping and Shadowing ==
IDENTIFIERmsg
ASSIGN:=
STRINGouter
IFif
TRUEtrue
THENthen
LOCALlocal
IDENTIFIERmsg
ASSIGN:=
STRINGinner
PRINTLNprintln
IDENTIFIERmsg
ENDend
PRINTLNprintln
IDENTIFIERmsg
PRINTLNprintln
STRING== Loop Scoping ==
IDENTIFIERx
ASSIGN:=
NUMBER1
IDENTIFIERy
ASSIGN:=
NUMBER0
WHILEwhile
IDENTIFIERx
LT<
NUMBER4
DOdo
LOCALlocal
IDENTIFIERy
ASSIGN:=
NUMBER2
PRINTLNprintln
IDENTIFIERy
IDENTIFIERx
ASSIGN:=
IDENTIFIERx
PLUS+
NUMBER1
ENDend
PRINTLNprintln
IDENTIFIERy
COMMENT-- 0
PRINTLNprintln
STRING== Short-circuit Logic ==
PRINTLNprintln
TRUEtrue
ANDand
FALSEfalse
PRINTLNprintln
FALSEfalse
ORor
TRUEtrue
PRINTLNprintln
TRUEtrue
ORor
FALSEfalse
PRINTLNprintln
STRING== Coercion ==
PRINTprint
NUMBER1
PLUS+
TRUEtrue
PRINTprint
TRUEtrue
PLUS+
FALSEfalse
PRINTprint
FALSEfalse
PLUS+
NUMBER1
EOF
ast(3.00ms)
FunctionDeclStatement
Name:
Identifier
mandelbrot
Params:
Identifier
cx
Identifier
cy
Body:
AssignStatement
Identifier
x
NumberLiteral
0
AssignStatement
Identifier
y
NumberLiteral
0
AssignStatement
Identifier
iter
NumberLiteral
0
AssignStatement
Identifier
max
NumberLiteral
16
WhileStatement
Condition:
BinaryExpression
BinaryExpression
BinaryExpression
BinaryExpression
Identifier
x
*
Identifier
x
+
BinaryExpression
Identifier
y
*
Identifier
y
<=
NumberLiteral
4
and
BinaryExpression
Identifier
iter
<
Identifier
max
Do:
AssignStatement
Identifier
xtemp
BinaryExpression
BinaryExpression
BinaryExpression
Identifier
x
*
Identifier
x
-
BinaryExpression
Identifier
y
*
Identifier
y
+
Identifier
cx
AssignStatement
Identifier
y
BinaryExpression
BinaryExpression
BinaryExpression
NumberLiteral
2
*
Identifier
x
*
Identifier
y
+
Identifier
cy
AssignStatement
Identifier
x
Identifier
xtemp
AssignStatement
Identifier
iter
BinaryExpression
Identifier
iter
+
NumberLiteral
1
ReturnStatement
Identifier
iter
AssignStatement
Identifier
height
NumberLiteral
16
AssignStatement
Identifier
width
NumberLiteral
22
AssignStatement
Identifier
yi
NumberLiteral
0
WhileStatement
Condition:
BinaryExpression
Identifier
yi
<
Identifier
height
Do:
AssignStatement
Identifier
y0
BinaryExpression
BinaryExpression
GroupingExpression
BinaryExpression
Identifier
yi
/
Identifier
height
*
NumberLiteral
2
-
NumberLiteral
1
AssignStatement
Identifier
xi
NumberLiteral
0
WhileStatement
Condition:
BinaryExpression
Identifier
xi
<
Identifier
width
Do:
AssignStatement
Identifier
x0
BinaryExpression
BinaryExpression
GroupingExpression
BinaryExpression
Identifier
xi
/
Identifier
width
*
NumberLiteral
3.5
-
NumberLiteral
2.5
AssignStatement
Identifier
m
FunctionCallExpression
Identifier
mandelbrot
Identifier
x0
Identifier
y0
IfStatement
Condition:
BinaryExpression
Identifier
m
==
NumberLiteral
16
Then:
PrintStatement
StringLiteral
"⚡"
Else:
PrintStatement
StringLiteral
" "
AssignStatement
Identifier
xi
BinaryExpression
Identifier
xi
+
NumberLiteral
1
PrintlnStatement
StringLiteral
""
AssignStatement
Identifier
yi
BinaryExpression
Identifier
yi
+
NumberLiteral
1
PrintlnStatement
StringLiteral
" == Literals and Operators =="
PrintStatement
BinaryExpression
StringLiteral
"hello "
+
StringLiteral
"world"
PrintStatement
BinaryExpression
NumberLiteral
5
+
NumberLiteral
3
PrintStatement
BinaryExpression
NumberLiteral
10
-
NumberLiteral
2
PrintStatement
BinaryExpression
NumberLiteral
4
*
NumberLiteral
2
PrintStatement
BinaryExpression
NumberLiteral
8
/
NumberLiteral
2
PrintStatement
BinaryExpression
NumberLiteral
3
%
NumberLiteral
2
PrintStatement
BinaryExpression
NumberLiteral
2
^
NumberLiteral
3
PrintlnStatement
StringLiteral
" == Booleans =="
PrintStatement
BooleanLiteral
true
PrintStatement
BooleanLiteral
false
PrintlnStatement
BinaryExpression
BooleanLiteral
true
and
BooleanLiteral
false
PrintlnStatement
BinaryExpression
BooleanLiteral
false
or
BooleanLiteral
true
PrintlnStatement
BinaryExpression
BooleanLiteral
true
and
NumberLiteral
7
PrintlnStatement
BinaryExpression
BooleanLiteral
false
or
StringLiteral
"ok"
PrintlnStatement
BinaryExpression
NumberLiteral
1
or
NumberLiteral
2
PrintlnStatement
BinaryExpression
BinaryExpression
StringLiteral
"x"
and
StringLiteral
"y"
and
StringLiteral
"z"
PrintlnStatement
StringLiteral
" == Comparisons =="
PrintStatement
BinaryExpression
NumberLiteral
1
==
NumberLiteral
1
PrintStatement
BinaryExpression
NumberLiteral
1
~=
NumberLiteral
2
PrintStatement
BinaryExpression
NumberLiteral
3
<
NumberLiteral
5
PrintStatement
BinaryExpression
NumberLiteral
5
>
NumberLiteral
3
PrintStatement
BinaryExpression
NumberLiteral
3
<=
NumberLiteral
3
PrintlnStatement
BinaryExpression
NumberLiteral
1
>=
NumberLiteral
4
PrintlnStatement
StringLiteral
" == Variables and Scope =="
AssignStatement
Identifier
x
NumberLiteral
5
PrintlnStatement
Identifier
x
IfStatement
Condition:
BooleanLiteral
true
Then:
LocalAssignStatement
Identifier
x
NumberLiteral
10
PrintlnStatement
Identifier
x
PrintlnStatement
Identifier
x
PrintlnStatement
StringLiteral
" == Control Flow: if, elif, else =="
IfStatement
Condition:
BinaryExpression
Identifier
x
==
NumberLiteral
5
Then:
PrintlnStatement
StringLiteral
"five"
Elif Condition:
BinaryExpression
Identifier
x
==
NumberLiteral
6
Elif Then:
PrintlnStatement
StringLiteral
"six"
Else:
PrintlnStatement
StringLiteral
"other"
PrintlnStatement
StringLiteral
" == While Loops =="
AssignStatement
Identifier
i
NumberLiteral
0
WhileStatement
Condition:
BinaryExpression
Identifier
i
<
NumberLiteral
3
Do:
PrintStatement
Identifier
i
AssignStatement
Identifier
i
BinaryExpression
Identifier
i
+
NumberLiteral
1
PrintlnStatement
StringLiteral
" == For Loops =="
ForStatement
LocalAssignStatement
Identifier
j
NumberLiteral
5
To:
NumberLiteral
1
Step:
UnaryExpression
-
NumberLiteral
2
Do:
PrintStatement
Identifier
j
PrintlnStatement
StringLiteral
" == Functions =="
FunctionDeclStatement
Name:
Identifier
greet
Body:
PrintlnStatement
StringLiteral
"hi"
ExpressionStatement
FunctionCallExpression
Identifier
greet
FunctionDeclStatement
Name:
Identifier
add
Params:
Identifier
a
Identifier
b
Body:
ReturnStatement
BinaryExpression
Identifier
a
+
Identifier
b
PrintlnStatement
FunctionCallExpression
Identifier
add
NumberLiteral
7
NumberLiteral
8
FunctionDeclStatement
Name:
Identifier
square
Params:
Identifier
n
Body:
ReturnStatement
BinaryExpression
Identifier
n
*
Identifier
n
PrintlnStatement
FunctionCallExpression
Identifier
square
NumberLiteral
4
FunctionDeclStatement
Name:
Identifier
fact
Params:
Identifier
n
Body:
IfStatement
Condition:
BinaryExpression
Identifier
n
<=
NumberLiteral
1
Then:
ReturnStatement
NumberLiteral
1
Else:
ReturnStatement
BinaryExpression
Identifier
n
*
FunctionCallExpression
Identifier
fact
BinaryExpression
Identifier
n
-
NumberLiteral
1
PrintlnStatement
FunctionCallExpression
Identifier
fact
NumberLiteral
5
PrintlnStatement
StringLiteral
" == Function Return as Value =="
AssignStatement
Identifier
x
FunctionCallExpression
Identifier
add
NumberLiteral
3
NumberLiteral
4
PrintlnStatement
Identifier
x
PrintlnStatement
BinaryExpression
StringLiteral
"val: "
+
FunctionCallExpression
Identifier
add
NumberLiteral
1
NumberLiteral
2
PrintlnStatement
StringLiteral
" == Return in Branches =="
FunctionDeclStatement
Name:
Identifier
check
Params:
Identifier
flag
Body:
IfStatement
Condition:
Identifier
flag
Then:
ReturnStatement
StringLiteral
"yes"
Else:
ReturnStatement
StringLiteral
"no"
PrintlnStatement
FunctionCallExpression
Identifier
check
BooleanLiteral
true
PrintlnStatement
FunctionCallExpression
Identifier
check
BooleanLiteral
false
PrintlnStatement
StringLiteral
" == String Concatenation =="
PrintlnStatement
BinaryExpression
StringLiteral
"Score: "
+
NumberLiteral
10
PrintlnStatement
BinaryExpression
NumberLiteral
10
+
StringLiteral
"%"
PrintlnStatement
BinaryExpression
StringLiteral
"ok: "
+
BooleanLiteral
true
PrintlnStatement
BinaryExpression
BinaryExpression
StringLiteral
"Result: "
+
GroupingExpression
BinaryExpression
NumberLiteral
2
+
NumberLiteral
3
+
StringLiteral
" done"
PrintlnStatement
StringLiteral
" == Nil and Falsy Return =="
FunctionDeclStatement
Name:
Identifier
maybe
Params:
Identifier
flag
Body:
IfStatement
Condition:
Identifier
flag
Then:
ReturnStatement
NumberLiteral
1
PrintlnStatement
FunctionCallExpression
Identifier
maybe
BooleanLiteral
false
IfStatement
Condition:
FunctionCallExpression
Identifier
maybe
BooleanLiteral
false
Then:
PrintStatement
StringLiteral
"bad"
Else:
PrintStatement
StringLiteral
"fallback"
PrintlnStatement
StringLiteral
" == Scoping and Shadowing =="
AssignStatement
Identifier
msg
StringLiteral
"outer"
IfStatement
Condition:
BooleanLiteral
true
Then:
LocalAssignStatement
Identifier
msg
StringLiteral
"inner"
PrintlnStatement
Identifier
msg
PrintlnStatement
Identifier
msg
PrintlnStatement
StringLiteral
" == Loop Scoping =="
AssignStatement
Identifier
x
NumberLiteral
1
AssignStatement
Identifier
y
NumberLiteral
0
WhileStatement
Condition:
BinaryExpression
Identifier
x
<
NumberLiteral
4
Do:
LocalAssignStatement
Identifier
y
NumberLiteral
2
PrintlnStatement
Identifier
y
AssignStatement
Identifier
x
BinaryExpression
Identifier
x
+
NumberLiteral
1
PrintlnStatement
Identifier
y
PrintlnStatement
StringLiteral
" == Short-circuit Logic =="
PrintlnStatement
BinaryExpression
BooleanLiteral
true
and
BooleanLiteral
false
PrintlnStatement
BinaryExpression
BooleanLiteral
false
or
BooleanLiteral
true
PrintlnStatement
BinaryExpression
BooleanLiteral
true
or
BooleanLiteral
false
PrintlnStatement
StringLiteral
" == Coercion =="
PrintStatement
BinaryExpression
NumberLiteral
1
+
BooleanLiteral
true
PrintStatement
BinaryExpression
BooleanLiteral
true
+
BooleanLiteral
false
PrintStatement
BinaryExpression
BooleanLiteral
false
+
NumberLiteral
1
wasm(18.20ms)
⚡ == Literals and Operators ==hello world == Booleans ==okxyz == Comparisons == == Variables and Scope == == Control Flow: if, elif, else ==fiveothersix == While Loops == == For Loops == == Functions ==hi == Function Return as Value ==val: == Return in Branches ==yesno == String Concatenation ==Score: %ok: Result: done == Nil and Falsy Return ==badfallback == Scoping and Shadowing ==outerinner == Loop Scoping == == Short-circuit Logic == == Coercion ==
0061736d01000000012d0960000060027c7c017c60017f017f60027f7f017f60037f7f7f0060017c017f60017f017c6000017f60017f00023a0403656e76057072696e74000803656e76077072696e746c6e000803656e7609746f5f737472696e67000203656e76086d6174685f706f77000103161500010202020203040506020307080307030202020205030100100607017f0141fb030b071102046d61696e0004066d656d6f727902000ac84515a839011f7f440000000000003040100c2100440000000000003640100c2101440000000000000000100c2102410021080240034020084190ce004f0440000b200841016a21082002100d2000100d63100e1006450d012002100d2000100da3100c100d440000000000000040100c100da2100c100d44000000000000f03f100c100da1100c2103440000000000000000100c2104410021070240034020074190ce004f0440000b200741016a21072004100d2001100d63100e1006450d012004100d2001100da3100c100d440000000000000c40100c100da2100c100d440000000000000440100c100da1100c210520052003101221062006100d440000000000003040100c100d61100e1006044041004103100f10000541044101100f10000b2004100744000000000000f03f100c100772047f200444000000000000f03f100c100a052004100844000000000000f03f100c100872047f20041009100d44000000000000f03f100c1009100da0100c052004100d44000000000000f03f100c100da0100c0b0b21040c000b0b41064100100f10012002100744000000000000f03f100c100772047f200244000000000000f03f100c100a052002100844000000000000f03f100c100872047f20021009100d44000000000000f03f100c1009100da0100c052002100d44000000000000f03f100c100da0100c0b0b21020c000b0b4107411d100f100141254106100f1007412c4105100f100772047f41254106100f412c4105100f100a0541254106100f1008412c4105100f100872047f41254106100f1009100d412c4105100f1009100da0100c0541254106100f100d412c4105100f100da0100c0b0b1000440000000000001440100c1007440000000000000840100c100772047f440000000000001440100c440000000000000840100c100a05440000000000001440100c1008440000000000000840100c100872047f440000000000001440100c1009100d440000000000000840100c1009100da0100c05440000000000001440100c100d440000000000000840100c100da0100c0b0b1000440000000000002440100c100d440000000000000040100c100da1100c1000440000000000001040100c100d440000000000000040100c100da2100c1000440000000000002040100c100d440000000000000040100c100da3100c1000440000000000000840100c100d440000000000000040100c100d1005100c1000440000000000000040100c100d440000000000000840100c100d1003100c100041324110100f10014101100e10004100100e10004101100e210920091006047f4100100e0520090b10014100100e210a200a1006047f200a054101100e0b10014101100e210b200b1006047f440000000000001c40100c05200b0b10014100100e210c200c1006047f200c0541c3004102100f0b100144000000000000f03f100c210d200d1006047f200d05440000000000000040100c0b100141c6004101100f210e200e1006047f41c8004101100f05200e0b210f200f1006047f41ca004101100f05200f0b100141cc004112100f100144000000000000f03f100c100d44000000000000f03f100c100d61100e100044000000000000f03f100c100d440000000000000040100c100d62100e1000440000000000000840100c100d440000000000001440100c100d63100e1000440000000000001440100c100d440000000000000840100c100d64100e1000440000000000000840100c100d440000000000000840100c100d65100e100044000000000000f03f100c100d440000000000001040100c100d66100e100141df00411a100f1001440000000000001440100c2110201010014101100e10060440440000000000002440100c211120111001050b2010100141fa004123100f10012010100d440000000000001440100c100d61100e10060440419e014104100f1001052010100d440000000000001840100c100d61100e1006044041a9014103100f10010541a3014105100f10010b0b41ad014112100f1001440000000000000000100c2112410021130240034020134190ce004f0440000b201341016a21132012100d440000000000000840100c100d63100e1006450d01201210002012100744000000000000f03f100c100772047f201244000000000000f03f100c100a052012100844000000000000f03f100c100872047f20121009100d44000000000000f03f100c1009100da0100c052012100d44000000000000f03f100c100da0100c0b0b21120c000b0b41c0014111100f100141002116440000000000001440100c21144400000000000000c0100c100d4400000000000000006321150240034020164190ce004f0440000b201641016a21162015047f2014100d44000000000000f03f100c100d63052014100d44000000000000f03f100c100d640b0d01201410002014100d4400000000000000c0100c100da0100c21140c000b0b41d2014111100f100110131a440000000000001c40100c440000000000002040100c10141001440000000000001040100c10151001440000000000001440100c1016100141e701411f100f1001440000000000000840100c440000000000001040100c10142110201010014187024105100f100744000000000000f03f100c440000000000000040100c1014100772047f4187024105100f44000000000000f03f100c440000000000000040100c1014100a054187024105100f100844000000000000f03f100c440000000000000040100c1014100872047f4187024105100f1009100d44000000000000f03f100c440000000000000040100c10141009100da0100c054187024105100f100d44000000000000f03f100c440000000000000040100c1014100da0100c0b0b1001418d024119100f10014101100e101710014100100e1017100141ae02411b100f100141ca024107100f1007440000000000002440100c100772047f41ca024107100f440000000000002440100c100a0541ca024107100f1008440000000000002440100c100872047f41ca024107100f1009100d440000000000002440100c1009100da0100c0541ca024107100f100d440000000000002440100c100da0100c0b0b1001440000000000002440100c100741d2024101100f100772047f440000000000002440100c41d2024101100f100a05440000000000002440100c100841d2024101100f100872047f440000000000002440100c1009100d41d2024101100f1009100da0100c05440000000000002440100c100d41d2024101100f100da0100c0b0b100141d4024104100f10074101100e100772047f41d4024104100f4101100e100a0541d4024104100f10084101100e100872047f41d4024104100f1009100d4101100e1009100da0100c0541d4024104100f100d4101100e100da0100c0b0b100141d9024108100f1007440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100772047f41d9024108100f440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100a0541d9024108100f1008440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100872047f41d9024108100f1009100d440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b1009100da0100c0541d9024108100f100d440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100da0100c0b0b100741e2024105100f100772047f41d9024108100f1007440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100772047f41d9024108100f440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100a0541d9024108100f1008440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100872047f41d9024108100f1009100d440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b1009100da0100c0541d9024108100f100d440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100da0100c0b0b41e2024105100f100a0541d9024108100f1007440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100772047f41d9024108100f440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100a0541d9024108100f1008440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100872047f41d9024108100f1009100d440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b1009100da0100c0541d9024108100f100d440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100da0100c0b0b100841e2024105100f100872047f41d9024108100f1007440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100772047f41d9024108100f440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100a0541d9024108100f1008440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100872047f41d9024108100f1009100d440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b1009100da0100c0541d9024108100f100d440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100da0100c0b0b1009100d41e2024105100f1009100da0100c0541d9024108100f1007440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100772047f41d9024108100f440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100a0541d9024108100f1008440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100872047f41d9024108100f1009100d440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b1009100da0100c0541d9024108100f100d440000000000000040100c1007440000000000000840100c100772047f440000000000000040100c440000000000000840100c100a05440000000000000040100c1008440000000000000840100c100872047f440000000000000040100c1009100d440000000000000840100c1009100da0100c05440000000000000040100c100d440000000000000840100c100da0100c0b0b100da0100c0b0b100d41e2024105100f100da0100c0b0b100141e802411b100f10014100100e101810014100100e1018100604404184034103100f1000054188034108100f10000b419103411d100f100141af034105100f21174101100e1006044041b5034105100f211820181001050b2017100141bb034113100f100144000000000000f03f100c2110440000000000000000100c21194100211b02400340201b4190ce004f0440000b201b41016a211b2010100d440000000000001040100c100d63100e1006450d01440000000000000040100c211a201a10012010100744000000000000f03f100c100772047f201044000000000000f03f100c100a052010100844000000000000f03f100c100872047f20101009100d44000000000000f03f100c1009100da0100c052010100d44000000000000f03f100c100da0100c0b0b21100c000b0b2019100141cf03411a100f10014101100e211c201c1006047f4100100e05201c0b10014100100e211d201d1006047f201d054101100e0b10014101100e211e201e1006047f201e054100100e0b100141ea03410f100f100144000000000000f03f100c10074101100e100772047f44000000000000f03f100c4101100e100a0544000000000000f03f100c10084101100e100872047f44000000000000f03f100c1009100d4101100e1009100da0100c0544000000000000f03f100c100d4101100e100da0100c0b0b10004101100e10074100100e100772047f4101100e4100100e100a054101100e10084100100e100872047f4101100e1009100d4100100e1009100da0100c054101100e100d4100100e100da0100c0b0b10004100100e100744000000000000f03f100c100772047f4100100e44000000000000f03f100c100a054100100e100844000000000000f03f100c100872047f4100100e1009100d44000000000000f03f100c1009100da0100c054100100e100d44000000000000f03f100c100da0100c0b0b10000b0e002000200120002001a39da2a10b4d002000280200410146047f200041086a2b030044000000000000000062052000280200410346047f200041046a280200052000280200410246047f200041086a2802004100470541000b0b0b0b0a0020002802004102460b0a0020002802004103460b4b002000280200410146047c200041086a2b0300052000280200410346047c200041046a280200b7052000280200410246047c44000000000000f87f054400000000000000000b0b0b100c0b6601057f41101011200010022100200110022101200041046a2802002102200041086a2802002103200141046a2802002104200141086a280200210523002106200220062003100b2004200620036a2005100b2300200320056a6a24002006200320056a100f0b3201027f4100210302400340200320024e0d01200020036a2d00002104200120036a20043a0000200341016a21030c000b0b0b2601017f411010112300210120014101360200200141086a2000390300230041106a240020010b0a00200041086a2b03000b2601017f411010112300210120014103360200200141046a2000360200230041106a240020010b3001017f411010112300210220024102360200200241046a2000360200200241086a2001360200230041106a240020020b120023004100360200230041106a240023000b2301017f23002101200120006a3f004110744b0440200041ffff036a41107640001a0b0b910601097f440000000000000000100c2102440000000000000000100c2103440000000000000000100c2104440000000000003040100c2105410021080240034020084190ce004f0440000b200841016a21082002100d2002100da2100c10072003100d2003100da2100c100772047f2002100d2002100da2100c2003100d2003100da2100c100a052002100d2002100da2100c10082003100d2003100da2100c100872047f2002100d2002100da2100c1009100d2003100d2003100da2100c1009100da0100c052002100d2002100da2100c100d2003100d2003100da2100c100da0100c0b0b100d440000000000001040100c100d65100e210720071006047f2004100d2005100d63100e0520070b1006450d012002100d2002100da2100c100d2003100d2003100da2100c100da1100c10072000100772047f2002100d2002100da2100c100d2003100d2003100da2100c100da1100c2000100a052002100d2002100da2100c100d2003100d2003100da2100c100da1100c10082000100872047f2002100d2002100da2100c100d2003100d2003100da2100c100da1100c1009100d20001009100da0100c052002100d2002100da2100c100d2003100d2003100da2100c100da1100c100d2000100da0100c0b0b2106440000000000000040100c100d2002100da2100c100d2003100da2100c10072001100772047f440000000000000040100c100d2002100da2100c100d2003100da2100c2001100a05440000000000000040100c100d2002100da2100c100d2003100da2100c10082001100872047f440000000000000040100c100d2002100da2100c100d2003100da2100c1009100d20011009100da0100c05440000000000000040100c100d2002100da2100c100d2003100da2100c100d2001100da0100c0b0b2103200621022004100744000000000000f03f100c100772047f200444000000000000f03f100c100a052004100844000000000000f03f100c100872047f20041009100d44000000000000f03f100c1009100da0100c052004100d44000000000000f03f100c100da0100c0b0b21040c000b0b20040f10100f0b0e0041e4014102100f100110100f0b4201027f200010072001100772047f20002001100a05200010082001100872047f20001009100d20011009100da0100c052000100d2001100da0100c0b0b0f10100f0b1301017f2000100d2000100da2100c0f10100f0b4d01017f2000100d44000000000000f03f100c100d65100e1006044044000000000000f03f100c0f052000100d2000100d44000000000000f03f100c100da1100c1016100da2100c0f0b10100f0b1f01017f20001006044041a7024103100f0f0541ab024102100f0f0b10100f0b1b01017f20001006044044000000000000f03f100c0f050b10100f0b0b8104010041000bfa03e29aa1002000000a3d3d204c69746572616c7320616e64204f70657261746f7273203d3d0068656c6c6f2000776f726c64000a0a3d3d20426f6f6c65616e73203d3d006f6b00780079007a000a3d3d20436f6d70617269736f6e73203d3d000a3d3d205661726961626c657320616e642053636f7065203d3d000a3d3d20436f6e74726f6c20466c6f773a2069662c20656c69662c20656c7365203d3d0066697665006f7468657200736978000a3d3d205768696c65204c6f6f7073203d3d000a0a3d3d20466f72204c6f6f7073203d3d000a0a3d3d2046756e6374696f6e73203d3d006869000a3d3d2046756e6374696f6e2052657475726e2061732056616c7565203d3d0076616c3a20000a3d3d2052657475726e20696e204272616e63686573203d3d00796573006e6f000a3d3d20537472696e6720436f6e636174656e6174696f6e203d3d0053636f72653a200025006f6b3a2000526573756c743a200020646f6e65000a3d3d204e696c20616e642046616c73792052657475726e203d3d006261640066616c6c6261636b000a0a3d3d2053636f70696e6720616e6420536861646f77696e67203d3d006f7574657200696e6e6572000a3d3d204c6f6f702053636f70696e67203d3d000a3d3d2053686f72742d63697263756974204c6f676963203d3d000a3d3d20436f657263696f6e203d3d00
<- scroll bar ->