aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatias Linares <matiaslina@gmail.com>2020-12-05 10:55:56 -0300
committerMatias Linares <matiaslina@gmail.com>2020-12-05 10:55:56 -0300
commita0fcb600572ea0da9dee1b5b9e7a24ce674ebe7e (patch)
treea663ee4f6a427e98db0878ca539c9288bfbc70d0
parent5fa17cd54a1170449a91da48a2fe88a99349daa2 (diff)
downloadadvent-of-code-a0fcb600572ea0da9dee1b5b9e7a24ce674ebe7e.tar.gz
Add 2018 and 2017
-rw-r--r--.gitignore1
-rwxr-xr-x2017/app.p627
-rw-r--r--2017/inputs/day11
-rw-r--r--2017/inputs/day216
-rw-r--r--2017/lib/AdventOfCode.pm678
-rw-r--r--2017/t/01-day.t17
-rw-r--r--2017/t/02-day.t23
-rw-r--r--2017/t/03-day.t11
-rw-r--r--2018/day1.p625
-rw-r--r--2018/day1.txt959
-rw-r--r--2018/day1test.txt5
-rw-r--r--2018/day2.p643
-rw-r--r--2018/day2.txt250
-rw-r--r--2018/day3.data1353
-rw-r--r--2018/day3.p660
-rw-r--r--2018/day4.p650
-rw-r--r--2018/lib/Utils.pm645
-rw-r--r--2018/prof.html1264
18 files changed, 4228 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..546cb48
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.precomp \ No newline at end of file
diff --git a/2017/app.p6 b/2017/app.p6
new file mode 100755
index 0000000..1dc0ac7
--- /dev/null
+++ b/2017/app.p6
@@ -0,0 +1,27 @@
+#!/usr/bin/env perl6
+use v6;
+use lib 'lib';
+use AdventOfCode;
+
+sub MAIN($day) {
+ given $day {
+ when 1 {
+ my $text = 'inputs/day1'.IO.slurp;
+ say "Day01 a: " ~ day01($text);
+ say "Day01 b: " ~ day01b($text);
+ }
+ when 2 {
+ my @spreadsheet;
+ for 'inputs/day2'.IO.lines -> $line {
+ @spreadsheet.push($line.split(/\s+/).map(*.Int));
+ }
+ say "Day02 a: " ~ checksum(@spreadsheet);
+ say "Day02 b: " ~ evenly-divisible-values(@spreadsheet);
+
+ }
+ when 3 {
+ say "Spiral memory for 12: " ~ spiral-memory(12);
+ }
+ default { say "uninplemented"; }
+ }
+}
diff --git a/2017/inputs/day1 b/2017/inputs/day1
new file mode 100644
index 0000000..037cd73
--- /dev/null
+++ b/2017/inputs/day1
@@ -0,0 +1 @@
+8231753674683997878179259195565332579493378483264978184143341284379682788518559178822225126625428318115396632681141871952894291898364781898929292614792884883249356728741993224889167928232261325123447569829932951268292953928766755779761837993812528527484487298117739869189415599461746944992651752768158611996715467871381527675219481185217357632445748912726487669881876129192932995282777848496561259839781188719233951619188388532698519298142112853776942545211859134185231768952888462471642851588368445761489225786919778983848113833773768236969923939838755997989537648222217996381757542964844337285428654375499359997792679256881378967852376848812795761118139288152799921176874256377615952758268844139579622754965461884862647423491918913628848748756595463191585555385849335742224855473769411212376446591654846168189278959857681336724221434846946124915271196433144335482787432683848594487648477532498952572515118864475621828118274911298396748213136426357769991314661642612786847135485969889237193822718111269561741563479116832364485724716242176288642371849569664594194674763319687735723517614962575592111286177553435651952853878775431234327919595595658641534765455489561934548474291254387229751472883423413196845162752716925199866591883313638846474321161569892518574346226751366315311145777448781862222126923449311838564685882695889397531413937666673233451216968414288135984394249684886554812761191289485457945866524228415191549168557957633386991931186773843869999284468773866221976873998168818944399661463963658784821796272987155278195355579386768156718813624559264574836134419725187881514665834441359644955768658663278765363789664721736533517774292478192143934318399418188298753351815388561359528533778996296279366394386455544446922653976725113889842749182361253582433319351193862788433113852782596161148992233558144692913791714859516653421917841295749163469751479835492713392861519993791967927773114713888458982796514977717987598165486967786989991998142488631168697963816156374216224386193941566358543266646516247854435356941566492841213424915682394928959116411457967897614457497279472661229548612777155998358618945222326558176486944695689777438164612198225816646583996426313832539918
diff --git a/2017/inputs/day2 b/2017/inputs/day2
new file mode 100644
index 0000000..545582a
--- /dev/null
+++ b/2017/inputs/day2
@@ -0,0 +1,16 @@
+157 564 120 495 194 520 510 618 244 443 471 473 612 149 506 138
+1469 670 47 604 1500 238 1304 1426 54 749 1218 1409 60 51 1436 598
+578 184 2760 3057 994 167 2149 191 2913 2404 213 1025 1815 588 2421 3138
+935 850 726 155 178 170 275 791 1028 75 781 138 176 621 773 688
+212 977 297 645 229 194 207 640 804 509 833 726 197 825 242 743
+131 43 324 319 64 376 231 146 382 162 464 314 178 353 123 446
+551 121 127 155 1197 288 1412 1285 557 137 145 1651 1549 1217 681 1649
+1723 1789 5525 4890 3368 188 3369 4842 3259 2502 4825 163 146 2941 126 5594
+311 2420 185 211 2659 2568 2461 231 2599 1369 821 506 2227 180 220 1372
+197 4490 141 249 3615 3314 789 4407 169 352 4383 5070 5173 3115 132 3513
+4228 2875 3717 504 114 2679 165 3568 3002 116 756 151 4027 261 4813 2760
+651 3194 2975 2591 1019 835 3007 248 3028 1382 282 3242 296 270 3224 3304
+1858 1650 1720 1848 95 313 500 1776 207 1186 72 259 281 1620 79 77
+3841 3217 440 3481 3643 940 3794 4536 1994 4040 3527 202 193 1961 230 217
+2837 2747 2856 426 72 78 2361 96 2784 2780 98 2041 2444 1267 2167 2480
+411 178 4263 4690 3653 162 3201 4702 3129 2685 3716 147 3790 4888 79 165
diff --git a/2017/lib/AdventOfCode.pm6 b/2017/lib/AdventOfCode.pm6
new file mode 100644
index 0000000..eef09d0
--- /dev/null
+++ b/2017/lib/AdventOfCode.pm6
@@ -0,0 +1,78 @@
+use v6;
+
+sub do-captcha(@input, $cmp-offset) returns Int {
+ my @tmp = @input.rotate($cmp-offset);
+ (@input Z @tmp).map(-> $z {
+ if $z[0] == $z[1] { $z[0] } else { 0 }
+ }).reduce(&[+])
+}
+
+sub day01(Str $input) returns Int is export {
+ do-captcha($input.comb, 1)
+}
+
+sub day01b(Str $input) returns Int is export {
+ do-captcha($input.comb, $input.comb.elems/2)
+}
+
+sub checksum(@input) returns Int is export {
+ [+] @input.map(-> @i {
+ @i.max - @i.min
+ })
+}
+
+sub find-divisible(@row) returns Int {
+ for @row -> $x {
+ for @row -> $y {
+ if $x %% $y and $x != $y {
+ return ($x/$y).Int
+ }
+ }
+ }
+}
+
+sub evenly-divisible-values(@input) returns Int is export {
+ [+] @input.map(-> @i {
+ find-divisible(@i)
+ })
+}
+
+# Day 3
+
+sub position(Int $num) {
+ my Int $num-square = (^Inf).map(*²).grep(* ≥ $num)[0];
+ my Int $square-size = $num-square.sqrt.Int;
+ my $max-step = ($square-size/2).floor;
+ my @retval = $max-step, $max-step;
+ say "$num, $num-square, $square-size, $max-step, {@retval}";
+ if $num-square == $num { return @retval; }
+
+ while $num-square > $num {
+ say "$num-square > ($square-size - 1)";
+ $num-square -= ($square-size -1);
+ }
+
+ $num-square > $num or die(" Error !! $num-square > $num");
+
+ if $num-square == $num { return @retval; }
+
+ for ^($square-size*4 -1) -> $i {
+ $num-square -= 1;
+ say "Step 2-$i: $num-square == $num ? {@retval[0]}";
+ if $num-square != $num {
+ @retval[0] = (@retval[0]-1) % ($max-step + 1);
+ }
+ }
+ say "Returning: {@retval}";
+ return @retval;
+}
+
+sub manhattan-distance(@position) returns Int {
+ say "Sum {@position.perl}";
+ [+] @position
+}
+
+sub spiral-memory(Int $input) returns Int is export {
+ say "position: {position($input).perl}";
+ manhattan-distance(position($input))
+}
diff --git a/2017/t/01-day.t b/2017/t/01-day.t
new file mode 100644
index 0000000..7a3333b
--- /dev/null
+++ b/2017/t/01-day.t
@@ -0,0 +1,17 @@
+use v6;
+use Test;
+use AdventOfCode;
+
+plan 4 + 5;
+
+is day01('1122'), 3;
+is day01('1111'), 4;
+is day01('1234'), 0;
+is day01('91212129'), 9;
+
+
+is day01b('1212'), 6;
+is day01b('1221'), 0;
+is day01b('123425'), 4;
+is day01b('123123'), 12;
+is day01b('12131415'), 4;
diff --git a/2017/t/02-day.t b/2017/t/02-day.t
new file mode 100644
index 0000000..787caff
--- /dev/null
+++ b/2017/t/02-day.t
@@ -0,0 +1,23 @@
+use v6;
+use Test;
+use AdventOfCode;
+
+plan 2;
+
+# First part
+my @mat = (
+ <5 1 9 5>,
+ <7 5 3>,
+ <2 4 6 8>,
+);
+
+is checksum(@mat), 18;
+
+# Second part
+my @spreadsheet2 = (
+ <5 9 2 8>,
+ <9 4 7 3>,
+ <3 8 6 5>,
+);
+
+is evenly-divisible-values(@spreadsheet2), 9;
diff --git a/2017/t/03-day.t b/2017/t/03-day.t
new file mode 100644
index 0000000..7a06465
--- /dev/null
+++ b/2017/t/03-day.t
@@ -0,0 +1,11 @@
+use v6;
+use Test;
+use AdventOfCode;
+
+plan 5;
+
+is spiral-memory(1), 0;
+is spiral-memory(9), 2;
+is spiral-memory(12), 3;
+is spiral-memory(23), 2;
+is spiral-memory(1024), 31;
diff --git a/2018/day1.p6 b/2018/day1.p6
new file mode 100644
index 0000000..5070a6c
--- /dev/null
+++ b/2018/day1.p6
@@ -0,0 +1,25 @@
+
+sub day1(@input) {
+ my $freq = @input.sum;
+ say "Frequency: $freq";
+}
+
+sub day1-pt2(@input) {
+ my $seen = SetHash.new;
+ my $freq = 0;
+ LOOP: loop {
+ for @input -> $val {
+ $freq += $val;
+ if $freq ∈ $seen {
+ last LOOP;
+ }
+ $seen{$freq} = True;
+ }
+ }
+ say "Frequency: $freq";
+
+}
+
+my @input = $*IN.lines.map(*.Int);
+day1(@input);
+day1-pt2(@input);
diff --git a/2018/day1.txt b/2018/day1.txt
new file mode 100644
index 0000000..7401a29
--- /dev/null
+++ b/2018/day1.txt
@@ -0,0 +1,959 @@
+-2
+-6
++2
+-10
+-4
+-7
++8
+-10
+-15
+-4
++20
++16
++20
++5
+-2
++16
++8
+-10
+-2
+-21
++13
++6
++5
+-14
+-13
+-17
+-8
+-7
++19
+-21
+-16
++19
++7
++3
++17
++6
++8
+-4
++2
++21
++8
++11
++5
++8
+-15
+-8
++1
++17
+-7
+-7
+-17
++10
++6
++6
++12
++16
++1
++11
+-10
+-13
+-2
++12
+-14
++13
++13
++13
++6
+-4
++1
++6
+-1
+-18
++14
++3
++18
+-8
++15
+-18
+-21
++4
+-8
+-7
+-16
+-10
++2
+-12
+-15
++13
+-11
+-9
+-5
+-20
++6
+-18
+-15
+-1
++8
++12
++15
++15
++20
++11
++15
++17
++10
+-8
+-7
++1
++12
++7
++11
++3
++5
+-2
++14
+-8
++15
+-3
+-5
+-17
++15
+-3
++23
++14
+-11
+-10
++14
+-15
++6
++10
+-9
++10
+-3
+-4
++10
++8
++16
+-18
+-2
++11
++14
+-16
++6
+-8
++16
+-18
+-16
+-4
+-6
++2
+-3
++2
+-8
+-7
+-5
++13
++2
+-12
+-5
+-23
++13
+-26
+-16
+-1
+-9
+-8
++21
+-1
+-16
+-21
+-16
++14
+-10
++13
++18
++17
++3
++18
+-10
++24
++10
+-20
++36
+-11
+-19
++18
++43
++2
++5
++12
++14
+-15
+-14
++5
++11
++18
+-15
++13
+-4
++8
+-5
+-6
++17
++1
+-3
++4
++11
++16
++16
++11
++11
++13
+-12
++14
+-16
+-7
+-9
++4
+-10
+-13
+-19
++11
++5
+-3
+-9
++17
++6
++9
+-12
++17
+-11
++16
++13
++14
++10
+-5
++2
+-16
++18
+-1
++8
++17
++11
++13
+-18
++10
+-1
++4
++9
++16
++13
+-18
++1
++10
+-7
++11
+-12
+-12
++7
+-20
++18
+-13
++3
++21
++17
++5
++14
+-2
+-14
++13
++4
+-11
+-19
+-15
+-7
++18
+-1
++10
++9
+-8
++2
+-16
+-13
+-9
++3
++10
++15
++18
++9
+-18
+-13
++5
++10
++12
+-10
++17
++16
+-12
++23
++9
++18
++4
+-28
++20
+-4
++56
+-19
+-52
+-28
+-8
+-35
+-20
+-3
+-5
++16
+-19
+-8
++3
++9
++19
++22
++10
+-9
++44
++4
+-17
+-12
+-48
++7
+-14
+-22
++9
+-4
+-16
++5
++12
+-3
+-16
++12
++2
+-15
++12
+-26
+-7
+-12
+-18
+-16
++6
+-15
++17
+-9
+-4
+-8
+-7
++12
+-16
++8
+-5
++3
++7
++8
+-14
+-8
+-13
++10
++14
++26
++14
+-6
++22
+-13
+-1
++11
+-17
++15
++6
++18
++13
+-5
++8
++1
+-5
+-19
+-3
+-3
++14
+-10
+-17
++5
++16
++7
++8
++5
++16
+-20
++19
++4
+-30
+-1
+-20
++5
+-32
+-12
++20
+-14
++3
+-11
+-18
+-21
++4
++1
+-19
+-17
++13
++12
++13
+-1
+-17
+-19
++13
+-6
++20
+-17
+-14
+-22
++9
+-3
++18
++24
+-7
++25
+-38
+-96
++13
++37
++25
++58
+-13
++42
++28
++8
++159
+-43
+-572
+-62794
++19
++8
+-17
+-9
++3
+-1
++5
++4
++16
++11
++4
+-18
++5
+-10
++9
++15
++16
+-5
++17
+-16
+-4
+-11
+-18
++3
+-12
++3
+-18
+-7
+-7
++5
++3
+-17
++8
+-15
+-2
++11
+-6
++17
+-12
+-9
++6
+-4
++10
++7
+-1
+-7
+-16
++3
+-1
+-9
+-4
+-10
++2
+-13
++4
+-19
+-7
+-5
++1
+-17
+-3
+-13
++15
+-3
++9
++14
+-9
++4
+-1
+-9
++14
+-6
+-3
+-17
++19
+-8
+-15
+-9
+-18
++9
++19
+-3
++16
+-20
++3
+-19
++10
++14
++11
+-3
++10
++14
++12
+-14
++15
+-10
+-10
++15
++9
++9
++4
+-2
+-9
+-8
++11
++5
++16
+-8
++16
+-11
++9
+-18
+-11
++17
++15
+-16
++2
+-23
++14
++4
++14
++1
++6
++9
+-19
+-3
+-17
+-6
+-16
+-17
++16
++15
+-9
++32
++11
+-5
+-22
+-14
++5
+-30
+-13
+-10
+-11
+-15
+-5
+-3
+-7
++3
++9
++5
+-1
+-17
+-17
++13
++14
+-7
+-16
++18
+-16
++17
+-9
++10
+-17
+-10
++19
++10
+-16
+-15
++16
+-6
+-6
+-9
+-17
++16
++3
+-7
++17
+-16
+-16
+-9
+-9
++8
+-1
+-6
+-14
++17
+-12
+-13
++12
+-1
++13
++2
++10
+-4
+-5
+-8
++14
+-18
++16
++7
++8
++11
+-14
+-8
+-15
+-21
+-18
++10
+-3
++8
++8
+-6
+-13
+-11
++6
+-2
++14
+-16
+-16
+-17
++10
++11
+-13
+-18
+-5
++4
++9
+-6
++5
++16
++13
++8
+-15
++20
+-7
++19
++7
++15
+-7
+-7
+-18
+-14
++9
+-6
++13
++11
+-8
++6
+-5
+-3
+-26
+-9
++6
+-8
++15
+-18
++12
+-2
+-8
+-25
++15
+-16
+-1
+-7
+-18
++14
++6
++10
+-15
+-17
++12
+-5
++8
+-7
+-10
+-5
+-18
++1
++14
+-2
++11
++4
++18
+-10
+-19
+-18
+-19
++10
+-14
+-12
++14
+-15
++10
++2
++12
+-8
++14
++19
+-20
++11
+-8
++10
+-21
++25
++21
++1
++20
++17
++6
++11
+-13
+-17
+-20
++4
+-1
+-19
+-11
++14
++12
+-18
++5
+-11
++33
++13
++8
++3
++9
+-10
++30
+-18
+-3
++23
++42
++4
+-7
++10
+-14
++20
+-5
++30
++1
+-15
++19
++12
+-3
+-6
++7
++21
+-3
++27
++17
++15
+-18
+-4
+-17
++22
+-14
+-9
++12
++2
+-1
++7
+-10
++6
++3
++17
+-4
+-6
++13
+-34
+-33
+-2
++18
+-11
+-17
+-20
+-3
++15
+-5
+-6
+-48
++12
+-22
+-12
+-17
+-25
+-9
+-24
+-15
+-22
+-15
++17
++5
+-14
++22
++3
+-1
+-18
+-37
+-3
+-8
++4
++9
++7
+-5
+-19
+-19
+-4
++12
+-2
++35
+-28
++8
++11
++80
++20
++12
+-17
++16
+-40
+-43
+-11
+-19
+-8
+-2
++20
+-33
++9
+-71
+-6
++1
+-128
++1
++5
++28
+-27
++16
++40
+-9
++265
++54
+-9
++43
+-39
+-63256
++12
++18
+-14
++13
++15
+-10
++13
++5
++1
++14
++15
+-7
++18
+-2
+-7
+-14
+-6
+-10
+-15
+-3
++12
++17
+-19
++12
++8
++12
+-19
++4
+-18
+-14
+-20
+-6
+-19
++12
+-11
+-19
++2
++19
++4
+-12
++3
++19
++11
++9
+-17
+-11
++1
++13
++11
+-18
+-12
+-2
+-14
+-13
+-6
++7
++2
+-10
+-14
+-18
++1
++14
++11
+-6
+-6
+-3
+-18
+-7
++127054
diff --git a/2018/day1test.txt b/2018/day1test.txt
new file mode 100644
index 0000000..78cd296
--- /dev/null
+++ b/2018/day1test.txt
@@ -0,0 +1,5 @@
++7
++7
+-2
+-7
+-4
diff --git a/2018/day2.p6 b/2018/day2.p6
new file mode 100644
index 0000000..9945024
--- /dev/null
+++ b/2018/day2.p6
@@ -0,0 +1,43 @@
+use v6;
+use lib <lib>;
+
+use Utils;
+
+sub day2-pt1(@input) {
+ my %count = "2" => 0, "3" => 0;
+ for @input -> $line {
+ my $bag = bag $line.comb;
+ %count<2>++ if $bag.first(*.value == 2);
+ %count<3>++ if $bag.first(*.value == 3);
+ }
+ say %count<2> * %count<3>;
+}
+
+sub wolo(@params) {
+ my \s = @params[0];
+ my \t = @params[1];
+ my $ld = levenshtein(s, t);
+ say "Got $ld for {s} and {t}";
+ return (s, t, $ld);
+}
+
+sub wole(@params) {
+ my $s = @params[0];
+ my $t = @params[1];
+
+ my $cmp = ($s.comb Z $t.comb).grep({ $_[0] ne $_[1] }).elems;
+ if $cmp == 1 {
+ say "Got $cmp for $s and $t"
+ }
+ return $s, $t, $cmp
+}
+
+sub day2-pt2(@input) {
+ my ($a, $b, $c) = @input.combinations(2).race.map(&wole).first(-> @vals { @vals[2] == 1 });
+ say $a.comb Z $b.comb;
+ say ($a.comb Z $b.comb).grep({ $_[0] eq $_[1] }).map(*.first).join
+}
+
+my @input = parse-input;
+day2-pt1(@input);
+day2-pt2(@input);
diff --git a/2018/day2.txt b/2018/day2.txt
new file mode 100644
index 0000000..68bbc68
--- /dev/null
+++ b/2018/day2.txt
@@ -0,0 +1,250 @@
+uqcipadzntnheslgvjjozmkfyr
+uqcipadzwtnhexlzvxjobmkfkr
+cqcipadpwtnheslgyxjobmkfyr
+ubnipadzwtnheslgvxjobmkfyw
+uqcisadzwtnheslgvxjfbmkfor
+uqcisaezwtnheslgvxkobmkfyr
+uqcguadzwtnheslgvxjobmkfir
+uqcipadzmtnhesldvxdobmkfyr
+uqcipadzwtzheslgdxjtbmkfyr
+uquipadzwtcheslgvxjobmkfbr
+uqctpadzwtnhesjbvxjobmkfyr
+ueciparzwtnheslgvxjobmkfyx
+uqcipadzwtnhessgvxjkbmkfkr
+uqcipamzwtnheslgvxioamkfyr
+uciizadzwtnheslgvxjobmkfyr
+uqcieadzwtnhesfgvxeobmkfyr
+fqcipadzwtnreslgvkjobmkfyr
+uqcipadzrtnherlgvxjobmklyr
+uqcypadzwtnheslgvxjobmkxfr
+uqcipadzwtnhemlgvxjobmvfur
+uwciuadzwwnheslgvxjobmkfyr
+uqcipadzwtnhcscgvxjobmkuyr
+upripadzwtnheslovxjobmkfyr
+uqcipadzltnheslgvxjobmkftc
+uqcipadzwtnheslgvgjobmifsr
+uqoipadzwtnheslgvxjosmkfkr
+uqcipadzwtbhesrqvxjobmkfyr
+uqcipadzwtnheslpvxjobmhfyx
+uhcinadzwtnheslgvxjybmkfyr
+uqcipadzwtnhhslgvxjabmkbyr
+uecipadzwtnheslgvxjobqyfyr
+uqcipadfwtnheslwvxjobgkfyr
+uqcipadzvtnheshgvxzobmkfyr
+fqcipadzwtcheslgvxjobmkfyt
+uecipadzwtnheslgpxjbbmkfyr
+uqclpadzwtnheslgvnjobukfyr
+qqciprdzetnheslgvxjobmkfyr
+uqcipahpwtnheslgvxjtbmkfyr
+uqcidadzwtnhesljvxyobmkfyr
+uqciradswtnqeslgvxjobmkfyr
+uqcipadzwtrhmslgvxjobmkfyf
+urcipadzjtnheslgvxfobmkfyr
+uqcipadzwznheslgvxjobmkfcv
+uqcipadowtnheslgyxjobmkfym
+uqcigadzwtnheslgvxjoomkmyr
+uqjipafzwtnheslgvejobmkfyr
+uqcioadzwtnhhslgvxzobmkfyr
+uqcgpadkwtnheslgvxjobhkfyr
+ufciiadewtnheslgvxjobmkfyr
+uqoipadzwtnheslgvxjllmkfyr
+uqcipadzutnheslgwxxobmkfyr
+uqcipadzwtlheslgaxjobmkfwr
+uqcbpadzutnheslgvxjbbmkfyr
+uucipadzwvnhesngvxjobmkfyr
+uqcifadzwtnceslgvxjoumkfyr
+ujcipadzwteheslgvxjobmkfyj
+uqcipadzwtnheslqvxjobmkuyp
+uqcipadzwtnheslgvxjoxmkxyw
+uqcipaduwtnheslgvujmbmkfyr
+uicipadnwtnheslgvxjobmbfyr
+uqcipadzwteheslgvxjobbmfyr
+uqcipadzwgnneslgvxjobmklyr
+uqcipadzxtnhwslgvbjobmkfyr
+uqcipaxwwtnheslxvxjobmkfyr
+uocipadzwtnheslgvxjobqdfyr
+uqciaauzwtnheslgtxjobmkfyr
+uncipagzwtnkeslgvxjobmkfyr
+uqcipadzwtnhehlgvxjohdkfyr
+uqcipadzwtnheslgvxjobmspyz
+uccipadzwtnhvsltvxjobmkfyr
+uacipagzwtnheslgvxjoqmkfyr
+tqcipaduwtnheslgvxjobmmfyr
+uqcipadzwtnheslgvxqebmifyr
+uecipadthtnheslgvxjobmkfyr
+uocipadzwtnhdslgvkjobmkfyr
+uqcipadtwtnheslgvxhobmufyr
+uqkipadzwtnleslgtxjobmkfyr
+uqcipadzjunheslgvxjobmnfyr
+ubcipadzwtvheslgvxjobmkfyf
+uqcipadzwpfheslgvxjsbmkfyr
+uocipadzwtndeslgvxjobmmfyr
+uqcipadzwtnheslgtxjobhkfyq
+uqcipadzwtrheslgvxjobmyfya
+uqcipadzwtvheslgvxjolgkfyr
+uqcipidzwtaheslgvxjobmkfxr
+uyzixadzwtnheslgvxjobmkfyr
+uqyihadzwtnhedlgvxjobmkfyr
+uqcipadzwtnhesltvejobqkfyr
+uqciptdzwtnheslgyxlobmkfyr
+uqcipzdzwtnhzslgvxjosmkfyr
+uqcipadzwtnbeslgexjobmkfvr
+uqcipadzwtnheslcwxjobmkkyr
+uqcapadzwcnheslgvxjolmkfyr
+uqcjpadzwtnhejlgvxjxbmkfyr
+uqcipadwwtxweslgvxjobmkfyr
+uqmipadzwtnhezlgvxjobmkyyr
+uqcipubzwtnpeslgvxjobmkfyr
+uecvpadzwtnheslgvxjocmkfyr
+uqcipadzwfnheslgvxjibmkdyr
+uqcipadzwtnheslgvxvfbykfyr
+uqcipadzwtnheslgvgjoimkfyt
+dqcqpaqzwtnheslgvxjobmkfyr
+uqcipbdzwtnheslgvxjobmkghr
+jqcipadzwtnheslgvxjgbmkzyr
+uqcipadzwtnheslgvxqkqmkfyr
+uqcipadzptnheslgvxjxbokfyr
+uucijadzwtwheslgvxjobmkfyr
+uccfpadzwtnheslgvxjobpkfyr
+uqcipadzwtnheslgvxjobakeyq
+uqcipadzwtnheolgvxqobjkfyr
+imiipadzwtnheslgvxjobmkfyr
+uqcehadzwtnheslgvxjobmkuyr
+uqcipadzztnheslgvxjorokfyr
+rqcixadzwtnheelgvxjobmkfyr
+uqcipadzwtzheslgvxjodmkfyi
+uqcipaezwtnwuslgvxjobmkfyr
+uqcipadzwtnheslggxjobjkfyq
+uqcipadzwkghesagvxjobmkfyr
+uqcypqdzwtnheslgvxjobakfyr
+iqcipadzwtnhezltvxjobmkfyr
+uxcimadzwtnheslgvxjobmxfyr
+uqcipaizwtvhwslgvxjobmkfyr
+uqcipafzwtnheslgvxjpbmkfym
+uqcipadzwinheslgvxlobmpfyr
+uqcupadzwtnheslkvxmobmkfyr
+uqcapadzwtnhesrgvxjobmkfsr
+urcipafzwtnheslgvxjobmkfur
+uqcipaczwtnheslgvbjobmknyr
+uqcizadzztgheslgvxjobmkfyr
+uqcipfdzwtnhesxgvxjobmkfyw
+uqcipbdzwtnhyslgvxjobmcfyr
+uqcipadzwanhezlgvxjobmkfwr
+uvcipadzwtnheslgvxjbkmkfyr
+uqcipajzwtnseslgvxjobmkfyq
+uqcipvdzwtnheslgvmlobmkfyr
+uqcipadzdgnheslgmxjobmkfyr
+uqcipddzwtnhestgvpjobmkfyr
+umcipadzwtdheslgvxjzbmkfyr
+uqciuwdzwtnheslgvxjobmkflr
+uqcipadzwtnheslgsxabbmkfyr
+uceipadzwtnheslgvxjobgkfyr
+mqcipadzwtnhesrgvxjobmjfyr
+aqcipadvwtnheslgvxjobmkryr
+uqsipadzwtnofslgvxjobmkfyr
+uqcixadzwtfheslgvxjzbmkfyr
+uqcipadnwfnheslgvxjohmkfyr
+uqcivadzwtnheslfvxjobmkfyz
+uqciprdzwtnheslgvxjobmkjir
+uqcipadhbtnheslgvxjoxmkfyr
+fqcipadzwtnhesfgvxjobmkfye
+uqoipqdzwtnheqlgvxjobmkfyr
+uqcipadzwtnhesltvxmobmkzyr
+uqcipadzwtnhebqgvsjobmkfyr
+uqcipadzwtnheslglxjobmfbyr
+gqcipadzwtgheslgvxjobwkfyr
+uqcipadzwtnheslgfxjzbmlfyr
+ujcnpadzwtnheslrvxjobmkfyr
+ujcivadzwtnheglgvxjobmkfyr
+uqcitadzwgnheslgvxjofmkfyr
+uqcipahzatnhmslgvxjobmkfyr
+uqzipaizwtnheslgvujobmkfyr
+uqcipadzltnheylgvnjobmkfyr
+uqcidadzwtnhwsljvxyobmkfyr
+uqcipadzwtihetlgvxjobhkfyr
+oqcipabzwtnheslgvfjobmkfyr
+uqcipadzwtnveslgvxjobzkfzr
+uqcipadzwtjheslgqxjobmlfyr
+uqcnpadzztnheslgvxjobmkoyr
+uqciuadzwonheslgvxjobmkfyz
+tqcipadzwtnheslgvxaobmqfyr
+uqcipadtwtnhqslgvxjobmkeyr
+uqcipadzwbnheslgvajobmsfyr
+ubcopadzwtnhgslgvxjobmkfyr
+uqcipydzwtwheslgvxjobakfyr
+cqbijadzwtnheslgvxjobmkfyr
+uscipadowtnheslgvxjobmkfcr
+uqcipadzwtgheslnvxjobskfyr
+uqcipzdzwtnzeslgkxjobmkfyr
+uqcipawzwtnhrslgbxjobmkfyr
+uqcipadzatchyslgvxjobmkfyr
+uqcipadzotnpeslgvxjobmjfyr
+uqcipagzwtnheslgvxjobmvfyt
+uqcipadzwhnheslgvxyobmkfyo
+uqcipadzwtnheslgmqjobmkfyc
+uqcupadzwgnheslgvcjobmkfyr
+uqcipabzwbnheslgvxjobmkwyr
+uqciiadzwtnheslgvxjobmkfmz
+uqkipauzwtnheslgvxjjbmkfyr
+uqcipidzetnheslgvxjobmkfyi
+uqcipadzwtnheslgqxjokmkfmr
+uqcipadzqtnhesllvxjobmkfyk
+uqccpadzwtnheslgmxsobmkfyr
+uqcipadzwteheslgvljfbmkfyr
+uqcipadxwinheslgaxjobmkfyr
+uqcipadzwtnheslhvxyobmkfjr
+aqcipadzwnnheslgvxjqbmkfyr
+uvcipadzwtnheszgvxjobmkfyg
+uqcipahzmtnheslgvxjobmkfir
+ukcipadzbtnheslgvxjobmkfyb
+uqcipadzwtnhemlgvqjobmkfpr
+uqcipadzwtnheslgvmeobmkfpr
+uqciphdrwtnheslgvxjobmkfyw
+uqcipadzwtnheslevxqobzkfyr
+uqcipadzwknzeslgvxnobmkfyr
+wqcipadzwjnheslgvxjobbkfyr
+uqcipadzwtdheslgvmjobmkjyr
+uqvipadzwtnhextgvxjobmkfyr
+uqhipadzwtnheslwvxjzbmkfyr
+uqcipadzwtnherlgsxjobmksyr
+uqcipadzwtnhesqgvxjotmvfyr
+udcipadzwtnhekwgvxjobmkfyr
+uqcjprdzwtnheslgvxjobmkfpr
+uqcipadzatnheclgvqjobmkfyr
+uqcbpadzctnheslqvxjobmkfyr
+uqcipadzqtnhesluvxjobrkfyr
+uqcipadzwtnhcslgvxjoomwfyr
+uqcppadzwxnheslgwxjobmkfyr
+uqcipadcwtnheslrvxjdbmkfyr
+ukcipadzwtnhhslgvxjobmkgyr
+uqckpadzwtnheslgvxjokmkiyr
+uqcspadzwtjheslgvxjobmkfjr
+uqcipadpwtnhsslgvxjobmkfyu
+uqcepadzwtnheilgvbjobmkfyr
+jqcipadiwtnheslgvxjobmkjyr
+uqcipadzrtnseslgqxjobmkfyr
+sqmipadzwtnhewlgvxjobmkfyr
+uqcieadzhtnheslgvgjobmkfyr
+uqcipadzwkwhewlgvxjobmkfyr
+uqcipadzwtzheslgvxjpbqkfyr
+uzcipadzjtnheslgvxjobmlfyr
+uqcipadzwtnheslnvxjobmkfee
+uqciyanzwtnheslgvxjoimkfyr
+uqcipadqwtnheswghxjobmkfyr
+uycipadzwtnheslovxjobmofyr
+uqcipadzwtnheslgvxcozmxfyr
+uqmipadzwtnxezlgvxjobmkfyr
+uqcipadzftnheslgvxjotmkffr
+aqcipaizwtnhesagvxjobmkfyr
+uqcipcdzwtnheslgoajobmkfyr
+uqcypadgwtnhesbgvxjobmkfyr
+uqcipcdzwtnheslgvxjebmkfyb
+uhcvpadzwtnheslgvxjobzkfyr
+uqcipadzwtnpesagvxmobmkfyr
+uqcipadzwtnidslgvxjobmkfor
+uqcipadkwtnhesigvxjzbmkfyr
+uqcypadlwtnheslsvxjobmkfyr
+qqcipadzwtnheswgvxjobmkoyr
+uqcipadzwtnheslgvxjhbmmcyr
+uqcipadzwtnhesogvxjormkfmr
+uqcipadzwtnhetcgvxgobmkfyr
diff --git a/2018/day3.data b/2018/day3.data
new file mode 100644
index 0000000..e45d2f4
--- /dev/null
+++ b/2018/day3.data
@@ -0,0 +1,1353 @@
+#1 @ 661,227: 29x11
+#2 @ 391,45: 27x20
+#3 @ 467,241: 23x12
+#4 @ 120,334: 18x28
+#5 @ 671,406: 28x16
+#6 @ 422,790: 23x12
+#7 @ 321,868: 13x17
+#8 @ 509,931: 11x20
+#9 @ 362,833: 26x20
+#10 @ 968,503: 27x16
+#11 @ 479,146: 26x25
+#12 @ 269,129: 25x14
+#13 @ 78,880: 25x17
+#14 @ 141,545: 11x16
+#15 @ 765,139: 21x29
+#16 @ 609,202: 13x16
+#17 @ 582,471: 22x21
+#18 @ 587,65: 10x17
+#19 @ 979,416: 18x23
+#20 @ 904,488: 16x26
+#21 @ 601,930: 12x23
+#22 @ 561,647: 24x26
+#23 @ 814,263: 18x27
+#24 @ 576,362: 20x18
+#25 @ 153,177: 11x18
+#26 @ 128,252: 25x18
+#27 @ 522,934: 20x13
+#28 @ 781,779: 11x25
+#29 @ 668,723: 22x28
+#30 @ 486,100: 16x13
+#31 @ 591,470: 27x16
+#32 @ 142,531: 18x15
+#33 @ 732,362: 24x10
+#34 @ 951,773: 28x27
+#35 @ 383,901: 15x23
+#36 @ 269,710: 20x10
+#37 @ 395,572: 17x18
+#38 @ 840,314: 19x14
+#39 @ 586,939: 20x15
+#40 @ 252,876: 16x29
+#41 @ 405,303: 10x11
+#42 @ 688,462: 27x20
+#43 @ 18,345: 24x22
+#44 @ 837,439: 24x22
+#45 @ 916,32: 27x11
+#46 @ 629,237: 24x10
+#47 @ 527,477: 20x15
+#48 @ 264,798: 29x14
+#49 @ 368,236: 29x26
+#50 @ 913,643: 13x18
+#51 @ 547,923: 24x10
+#52 @ 873,690: 22x20
+#53 @ 535,506: 3x10
+#54 @ 632,282: 10x13
+#55 @ 103,669: 26x24
+#56 @ 271,317: 3x3
+#57 @ 391,863: 22x16
+#58 @ 511,164: 17x20
+#59 @ 936,259: 26x24
+#60 @ 844,927: 23x29
+#61 @ 968,814: 16x24
+#62 @ 650,478: 13x16
+#63 @ 226,896: 22x15
+#64 @ 930,165: 26x23
+#65 @ 287,885: 25x24
+#66 @ 948,620: 22x21
+#67 @ 726,843: 20x27
+#68 @ 10,425: 14x16
+#69 @ 318,574: 11x26
+#70 @ 623,639: 14x23
+#71 @ 449,426: 28x15
+#72 @ 727,691: 23x22
+#73 @ 535,120: 16x21
+#74 @ 490,348: 13x29
+#75 @ 588,653: 5x7
+#76 @ 345,588: 13x26
+#77 @ 637,523: 21x22
+#78 @ 749,374: 25x20
+#79 @ 523,256: 14x19
+#80 @ 72,395: 15x26
+#81 @ 580,845: 12x26
+#82 @ 377,462: 10x19
+#83 @ 686,21: 21x11
+#84 @ 882,745: 20x10
+#85 @ 525,162: 13x18
+#86 @ 355,27: 11x29
+#87 @ 818,943: 17x26
+#88 @ 863,143: 16x27
+#89 @ 980,632: 10x16
+#90 @ 376,804: 17x28
+#91 @ 584,548: 10x18
+#92 @ 273,455: 11x25
+#93 @ 13,347: 11x15
+#94 @ 167,34: 29x23
+#95 @ 405,203: 14x22
+#96 @ 214,395: 14x29
+#97 @ 513,356: 22x25
+#98 @ 406,802: 24x12
+#99 @ 506,941: 10x27
+#100 @ 737,6: 10x24
+#101 @ 217,478: 26x11
+#102 @ 912,86: 25x26
+#103 @ 388,495: 15x12
+#104 @ 924,804: 10x11
+#105 @ 335,646: 28x27
+#106 @ 739,71: 12x16
+#107 @ 600,87: 15x13
+#108 @ 93,360: 22x22
+#109 @ 656,616: 23x18
+#110 @ 9,457: 29x14
+#111 @ 965,620: 19x14
+#112 @ 343,26: 23x13
+#113 @ 279,72: 17x16
+#114 @ 789,653: 13x20
+#115 @ 199,211: 16x23
+#116 @ 529,849: 24x23
+#117 @ 975,605: 13x16
+#118 @ 749,907: 24x24
+#119 @ 641,318: 26x12
+#120 @ 299,356: 16x5
+#121 @ 745,897: 20x27
+#122 @ 308,476: 10x28
+#123 @ 838,835: 28x14
+#124 @ 315,697: 17x17
+#125 @ 896,654: 26x29
+#126 @ 83,115: 19x14
+#127 @ 872,71: 16x15
+#128 @ 722,846: 27x14
+#129 @ 34,807: 22x28
+#130 @ 718,523: 12x24
+#131 @ 852,276: 10x25
+#132 @ 823,716: 22x15
+#133 @ 297,352: 23x13
+#134 @ 348,818: 21x29
+#135 @ 444,538: 13x21
+#136 @ 670,588: 25x28
+#137 @ 669,391: 20x12
+#138 @ 416,799: 22x11
+#139 @ 126,931: 25x10
+#140 @ 667,310: 26x26
+#141 @ 770,497: 18x27
+#142 @ 718,575: 10x28
+#143 @ 734,793: 16x24
+#144 @ 190,687: 28x29
+#145 @ 155,917: 13x29
+#146 @ 479,336: 22x23
+#147 @ 476,28: 22x16
+#148 @ 902,551: 17x17
+#149 @ 173,711: 22x18
+#150 @ 268,468: 19x20
+#151 @ 89,73: 11x18
+#152 @ 122,400: 10x10
+#153 @ 684,306: 18x10
+#154 @ 537,83: 4x20
+#155 @ 512,638: 27x16
+#156 @ 184,753: 24x26
+#157 @ 844,376: 27x14
+#158 @ 423,741: 21x19
+#159 @ 47,171: 17x23
+#160 @ 153,362: 20x28
+#161 @ 437,744: 12x29
+#162 @ 329,325: 14x18
+#163 @ 736,80: 24x23
+#164 @ 892,397: 19x12
+#165 @ 287,735: 18x18
+#166 @ 341,592: 26x29
+#167 @ 814,843: 15x24
+#168 @ 599,99: 21x21
+#169 @ 907,356: 11x13
+#170 @ 389,581: 17x13
+#171 @ 760,314: 22x13
+#172 @ 201,830: 26x16
+#173 @ 974,456: 24x27
+#174 @ 734,8: 29x23
+#175 @ 365,716: 21x29
+#176 @ 979,525: 17x21
+#177 @ 375,143: 24x11
+#178 @ 607,79: 23x14
+#179 @ 345,343: 19x11
+#180 @ 695,816: 10x29
+#181 @ 600,24: 10x22
+#182 @ 321,769: 26x23
+#183 @ 749,677: 20x26
+#184 @ 589,400: 19x24
+#185 @ 129,685: 18x11
+#186 @ 181,961: 22x19
+#187 @ 631,260: 11x23
+#188 @ 910,766: 21x27
+#189 @ 270,690: 10x18
+#190 @ 299,74: 19x25
+#191 @ 97,340: 23x29
+#192 @ 361,595: 23x19
+#193 @ 483,514: 12x11
+#194 @ 428,941: 27x19
+#195 @ 56,213: 28x25
+#196 @ 166,786: 28x29
+#197 @ 773,503: 15x13
+#198 @ 370,10: 18x26
+#199 @ 319,551: 28x20
+#200 @ 677,596: 10x22
+#201 @ 651,26: 24x21
+#202 @ 71,536: 25x21
+#203 @ 220,48: 23x16
+#204 @ 104,38: 16x14
+#205 @ 503,388: 10x19
+#206 @ 610,829: 16x12
+#207 @ 926,772: 23x14
+#208 @ 548,69: 26x13
+#209 @ 535,293: 26x12
+#210 @ 411,767: 23x25
+#211 @ 306,230: 24x25
+#212 @ 338,429: 26x18
+#213 @ 781,134: 22x20
+#214 @ 834,968: 28x19
+#215 @ 578,182: 21x11
+#216 @ 851,158: 23x10
+#217 @ 536,506: 5x5
+#218 @ 229,804: 16x19
+#219 @ 766,398: 14x13
+#220 @ 342,185: 13x15
+#221 @ 62,83: 10x11
+#222 @ 31,433: 29x26
+#223 @ 526,160: 21x17
+#224 @ 18,574: 16x26
+#225 @ 625,411: 21x17
+#226 @ 406,15: 20x29
+#227 @ 643,864: 11x15
+#228 @ 472,148: 5x5
+#229 @ 67,749: 18x27
+#230 @ 860,389: 24x20
+#231 @ 261,140: 19x28
+#232 @ 699,562: 28x12
+#233 @ 344,131: 16x21
+#234 @ 363,443: 20x21
+#235 @ 857,4: 29x19
+#236 @ 378,845: 21x19
+#237 @ 151,546: 25x18
+#238 @ 568,483: 22x10
+#239 @ 833,799: 23x16
+#240 @ 623,219: 19x29
+#241 @ 776,663: 12x24
+#242 @ 604,247: 15x17
+#243 @ 933,589: 11x10
+#244 @ 237,793: 18x25
+#245 @ 780,661: 23x12
+#246 @ 881,684: 18x20
+#247 @ 287,363: 24x13
+#248 @ 302,558: 11x14
+#249 @ 691,378: 19x27
+#250 @ 698,400: 27x24
+#251 @ 818,773: 10x25
+#252 @ 94,694: 24x20
+#253 @ 869,623: 24x12
+#254 @ 951,529: 19x27
+#255 @ 468,86: 18x18
+#256 @ 303,818: 11x22
+#257 @ 905,923: 21x14
+#258 @ 901,720: 15x13
+#259 @ 40,911: 11x27
+#260 @ 434,790: 14x17
+#261 @ 373,229: 17x20
+#262 @ 751,345: 14x14
+#263 @ 562,199: 25x11
+#264 @ 133,279: 17x17
+#265 @ 261,109: 22x22
+#266 @ 36,831: 20x10
+#267 @ 512,603: 16x23
+#268 @ 972,785: 24x21
+#269 @ 472,627: 22x20
+#270 @ 576,454: 16x23
+#271 @ 521,87: 16x18
+#272 @ 386,911: 13x24
+#273 @ 201,699: 14x15
+#274 @ 33,898: 13x28
+#275 @ 459,33: 15x11
+#276 @ 362,863: 24x20
+#277 @ 599,570: 16x16
+#278 @ 385,299: 15x18
+#279 @ 676,408: 18x14
+#280 @ 680,298: 28x23
+#281 @ 267,66: 15x18
+#282 @ 635,207: 11x18
+#283 @ 398,318: 18x28
+#284 @ 356,111: 16x13
+#285 @ 137,416: 16x12
+#286 @ 758,68: 12x29
+#287 @ 709,701: 19x22
+#288 @ 862,189: 20x28
+#289 @ 18,855: 13x18
+#290 @ 526,81: 24x25
+#291 @ 740,8: 3x8
+#292 @ 670,298: 14x21
+#293 @ 588,755: 14x14
+#294 @ 414,786: 4x8
+#295 @ 103,22: 20x17
+#296 @ 665,82: 20x20
+#297 @ 957,786: 13x11
+#298 @ 200,926: 14x26
+#299 @ 348,694: 29x19
+#300 @ 461,371: 25x12
+#301 @ 631,24: 13x25
+#302 @ 286,380: 24x23
+#303 @ 331,391: 12x14
+#304 @ 408,19: 5x20
+#305 @ 280,448: 16x25
+#306 @ 408,281: 15x24
+#307 @ 835,43: 14x22
+#308 @ 886,340: 27x23
+#309 @ 308,276: 17x15
+#310 @ 893,498: 21x24
+#311 @ 139,132: 20x27
+#312 @ 138,203: 24x14
+#313 @ 531,114: 13x25
+#314 @ 633,543: 29x15
+#315 @ 550,208: 27x14
+#316 @ 294,362: 21x17
+#317 @ 140,702: 9x11
+#318 @ 929,771: 26x10
+#319 @ 822,727: 25x13
+#320 @ 461,227: 23x26
+#321 @ 324,669: 24x17
+#322 @ 169,858: 19x17
+#323 @ 490,942: 17x19
+#324 @ 537,884: 25x21
+#325 @ 709,266: 26x25
+#326 @ 265,867: 24x13
+#327 @ 269,79: 24x27
+#328 @ 922,878: 18x17
+#329 @ 694,319: 11x17
+#330 @ 524,864: 11x17
+#331 @ 886,823: 20x10
+#332 @ 479,153: 7x11
+#333 @ 161,788: 27x14
+#334 @ 948,558: 28x25
+#335 @ 886,592: 12x25
+#336 @ 779,23: 29x14
+#337 @ 795,367: 10x15
+#338 @ 101,532: 4x20
+#339 @ 671,528: 29x29
+#340 @ 651,607: 27x20
+#341 @ 88,833: 17x11
+#342 @ 346,560: 24x27
+#343 @ 378,654: 23x10
+#344 @ 262,506: 29x14
+#345 @ 108,71: 24x16
+#346 @ 703,275: 25x29
+#347 @ 48,86: 28x24
+#348 @ 399,14: 12x24
+#349 @ 150,121: 26x24
+#350 @ 548,709: 28x16
+#351 @ 65,850: 28x18
+#352 @ 361,590: 14x13
+#353 @ 307,400: 23x11
+#354 @ 656,705: 16x24
+#355 @ 823,894: 13x16
+#356 @ 96,367: 21x29
+#357 @ 653,316: 13x12
+#358 @ 702,966: 12x18
+#359 @ 734,84: 21x25
+#360 @ 511,288: 18x28
+#361 @ 722,131: 28x16
+#362 @ 646,701: 24x27
+#363 @ 633,333: 12x11
+#364 @ 312,379: 25x15
+#365 @ 513,364: 16x18
+#366 @ 661,229: 22x21
+#367 @ 801,132: 29x12
+#368 @ 383,902: 14x29
+#369 @ 817,437: 27x12
+#370 @ 342,625: 16x28
+#371 @ 575,858: 26x11
+#372 @ 671,315: 29x22
+#373 @ 635,409: 27x17
+#374 @ 65,5: 23x12
+#375 @ 2,590: 23x13
+#376 @ 452,345: 11x22
+#377 @ 104,967: 19x28
+#378 @ 470,150: 15x18
+#379 @ 728,730: 29x21
+#380 @ 900,125: 13x29
+#381 @ 283,848: 26x13
+#382 @ 379,245: 16x17
+#383 @ 42,754: 26x11
+#384 @ 292,460: 28x19
+#385 @ 46,228: 16x14
+#386 @ 534,291: 11x24
+#387 @ 407,2: 29x22
+#388 @ 443,736: 12x20
+#389 @ 852,869: 19x10
+#390 @ 607,309: 16x29
+#391 @ 496,42: 13x10
+#392 @ 250,689: 21x14
+#393 @ 296,564: 24x17
+#394 @ 566,456: 20x29
+#395 @ 293,743: 27x24
+#396 @ 180,48: 17x16
+#397 @ 972,531: 16x17
+#398 @ 623,775: 23x17
+#399 @ 611,777: 14x13
+#400 @ 303,147: 23x20
+#401 @ 680,707: 28x24
+#402 @ 384,29: 17x21
+#403 @ 280,261: 24x15
+#404 @ 784,633: 11x27
+#405 @ 366,250: 16x17
+#406 @ 141,228: 27x19
+#407 @ 381,872: 12x24
+#408 @ 633,851: 26x28
+#409 @ 441,825: 27x29
+#410 @ 214,255: 17x22
+#411 @ 213,393: 27x28
+#412 @ 899,103: 23x23
+#413 @ 382,48: 28x22
+#414 @ 508,241: 19x29
+#415 @ 730,864: 13x17
+#416 @ 252,73: 29x19
+#417 @ 481,38: 19x16
+#418 @ 486,642: 20x10
+#419 @ 146,680: 15x27
+#420 @ 548,218: 24x17
+#421 @ 902,561: 27x13
+#422 @ 531,434: 22x18
+#423 @ 595,242: 17x18
+#424 @ 601,506: 27x14
+#425 @ 181,869: 15x20
+#426 @ 93,903: 12x20
+#427 @ 554,138: 11x26
+#428 @ 444,835: 15x23
+#429 @ 117,391: 11x27
+#430 @ 64,127: 7x5
+#431 @ 25,75: 24x28
+#432 @ 19,728: 23x16
+#433 @ 114,844: 29x18
+#434 @ 272,134: 3x5
+#435 @ 970,666: 25x10
+#436 @ 6,981: 25x10
+#437 @ 933,15: 14x20
+#438 @ 829,147: 18x24
+#439 @ 670,395: 29x25
+#440 @ 67,296: 26x11
+#441 @ 308,872: 6x3
+#442 @ 752,394: 13x12
+#443 @ 673,904: 16x15
+#444 @ 234,114: 10x27
+#445 @ 262,867: 21x18
+#446 @ 495,49: 13x14
+#447 @ 370,635: 27x27
+#448 @ 275,632: 28x13
+#449 @ 953,556: 27x10
+#450 @ 771,360: 20x26
+#451 @ 814,133: 19x23
+#452 @ 694,800: 28x23
+#453 @ 885,506: 29x26
+#454 @ 41,799: 23x20
+#455 @ 358,267: 21x17
+#456 @ 386,653: 18x16
+#457 @ 529,342: 28x21
+#458 @ 687,483: 10x25
+#459 @ 774,660: 12x19
+#460 @ 713,704: 10x17
+#461 @ 757,366: 11x16
+#462 @ 479,34: 18x20
+#463 @ 315,700: 22x18
+#464 @ 149,366: 12x25
+#465 @ 57,730: 22x21
+#466 @ 773,495: 13x18
+#467 @ 951,618: 10x22
+#468 @ 367,772: 25x26
+#469 @ 700,380: 23x14
+#470 @ 873,807: 19x11
+#471 @ 282,152: 19x24
+#472 @ 866,705: 22x29
+#473 @ 464,54: 11x21
+#474 @ 164,131: 19x24
+#475 @ 789,575: 20x16
+#476 @ 310,86: 28x17
+#477 @ 768,325: 12x10
+#478 @ 790,274: 18x27
+#479 @ 19,430: 22x14
+#480 @ 42,813: 11x19
+#481 @ 961,815: 18x23
+#482 @ 288,947: 16x17
+#483 @ 958,779: 10x29
+#484 @ 91,114: 12x24
+#485 @ 580,471: 14x22
+#486 @ 399,908: 29x24
+#487 @ 322,140: 27x16
+#488 @ 288,914: 4x8
+#489 @ 377,715: 10x25
+#490 @ 136,697: 18x24
+#491 @ 887,810: 16x24
+#492 @ 941,762: 29x26
+#493 @ 42,210: 29x24
+#494 @ 182,332: 14x22
+#495 @ 123,847: 27x10
+#496 @ 178,309: 24x23
+#497 @ 917,668: 28x16
+#498 @ 521,926: 15x20
+#499 @ 148,128: 11x23
+#500 @ 589,76: 13x11
+#501 @ 783,575: 4x13
+#502 @ 520,88: 29x10
+#503 @ 300,827: 29x22
+#504 @ 641,537: 25x29
+#505 @ 876,693: 15x13
+#506 @ 515,879: 28x17
+#507 @ 485,515: 24x12
+#508 @ 100,886: 19x10
+#509 @ 261,851: 23x17
+#510 @ 678,735: 17x26
+#511 @ 740,144: 27x12
+#512 @ 300,609: 25x15
+#513 @ 924,625: 21x11
+#514 @ 599,43: 23x16
+#515 @ 630,17: 25x18
+#516 @ 366,743: 10x28
+#517 @ 496,319: 16x13
+#518 @ 745,667: 24x13
+#519 @ 494,387: 26x12
+#520 @ 200,359: 20x16
+#521 @ 853,373: 21x19
+#522 @ 329,311: 24x25
+#523 @ 959,531: 23x22
+#524 @ 78,358: 23x14
+#525 @ 223,266: 28x19
+#526 @ 916,338: 13x20
+#527 @ 672,331: 19x17
+#528 @ 750,346: 18x24
+#529 @ 212,387: 19x20
+#530 @ 245,804: 11x15
+#531 @ 867,849: 23x14
+#532 @ 182,808: 12x22
+#533 @ 718,719: 29x22
+#534 @ 120,965: 14x11
+#535 @ 644,406: 16x23
+#536 @ 879,575: 14x23
+#537 @ 529,409: 19x18
+#538 @ 824,315: 16x23
+#539 @ 531,502: 18x16
+#540 @ 657,478: 18x23
+#541 @ 943,790: 14x15
+#542 @ 77,741: 25x17
+#543 @ 665,518: 18x16
+#544 @ 253,882: 13x6
+#545 @ 517,735: 18x21
+#546 @ 123,711: 16x11
+#547 @ 902,865: 27x28
+#548 @ 304,383: 19x27
+#549 @ 790,556: 18x18
+#550 @ 291,509: 22x29
+#551 @ 801,452: 10x18
+#552 @ 188,239: 29x15
+#553 @ 103,979: 6x4
+#554 @ 973,98: 27x28
+#555 @ 948,811: 25x24
+#556 @ 496,644: 24x26
+#557 @ 508,326: 10x22
+#558 @ 764,396: 26x19
+#559 @ 442,428: 12x14
+#560 @ 883,976: 10x24
+#561 @ 168,556: 19x23
+#562 @ 965,569: 26x19
+#563 @ 640,800: 16x28
+#564 @ 471,535: 11x18
+#565 @ 595,444: 5x5
+#566 @ 629,455: 23x17
+#567 @ 639,870: 17x5
+#568 @ 204,781: 25x22
+#569 @ 313,812: 11x25
+#570 @ 246,591: 25x26
+#571 @ 388,879: 13x16
+#572 @ 408,854: 18x22
+#573 @ 497,933: 17x28
+#574 @ 224,278: 26x22
+#575 @ 35,812: 10x23
+#576 @ 347,631: 28x27
+#577 @ 854,145: 14x22
+#578 @ 171,515: 29x11
+#579 @ 413,872: 5x7
+#580 @ 740,8: 24x11
+#581 @ 700,571: 12x24
+#582 @ 64,694: 21x25
+#583 @ 648,327: 12x25
+#584 @ 546,318: 26x18
+#585 @ 959,432: 28x29
+#586 @ 853,580: 17x29
+#587 @ 11,353: 15x14
+#588 @ 152,901: 24x22
+#589 @ 584,394: 15x14
+#590 @ 291,741: 19x18
+#591 @ 11,451: 24x13
+#592 @ 395,40: 11x21
+#593 @ 107,278: 22x26
+#594 @ 437,853: 26x25
+#595 @ 793,125: 23x26
+#596 @ 521,153: 10x29
+#597 @ 566,627: 18x19
+#598 @ 492,101: 19x17
+#599 @ 239,506: 11x21
+#600 @ 25,433: 11x4
+#601 @ 977,488: 12x24
+#602 @ 537,669: 29x13
+#603 @ 368,503: 6x11
+#604 @ 789,516: 19x12
+#605 @ 247,318: 18x28
+#606 @ 20,186: 27x25
+#607 @ 882,732: 21x11
+#608 @ 26,633: 10x12
+#609 @ 101,826: 26x24
+#610 @ 17,644: 27x19
+#611 @ 727,881: 23x19
+#612 @ 955,436: 24x24
+#613 @ 545,429: 19x13
+#614 @ 438,304: 16x11
+#615 @ 587,567: 14x18
+#616 @ 108,862: 11x29
+#617 @ 307,270: 18x14
+#618 @ 242,255: 25x13
+#619 @ 490,365: 25x23
+#620 @ 752,94: 11x12
+#621 @ 844,848: 26x11
+#622 @ 846,436: 17x15
+#623 @ 185,30: 14x23
+#624 @ 668,232: 21x13
+#625 @ 294,329: 23x15
+#626 @ 492,35: 13x18
+#627 @ 232,909: 4x8
+#628 @ 278,169: 29x10
+#629 @ 829,885: 22x21
+#630 @ 961,608: 27x13
+#631 @ 375,227: 19x19
+#632 @ 131,235: 20x10
+#633 @ 621,891: 12x10
+#634 @ 141,684: 14x22
+#635 @ 450,846: 29x13
+#636 @ 403,579: 12x23
+#637 @ 900,549: 22x22
+#638 @ 858,369: 17x11
+#639 @ 166,116: 24x29
+#640 @ 640,539: 12x12
+#641 @ 461,821: 18x11
+#642 @ 692,744: 27x29
+#643 @ 521,286: 24x21
+#644 @ 920,554: 29x14
+#645 @ 625,876: 24x23
+#646 @ 568,902: 28x10
+#647 @ 270,695: 18x15
+#648 @ 466,929: 23x19
+#649 @ 566,852: 15x18
+#650 @ 97,913: 22x16
+#651 @ 598,111: 17x17
+#652 @ 681,22: 16x19
+#653 @ 350,822: 12x17
+#654 @ 314,676: 13x11
+#655 @ 211,115: 12x16
+#656 @ 854,290: 18x11
+#657 @ 890,566: 27x14
+#658 @ 465,220: 15x11
+#659 @ 814,838: 14x11
+#660 @ 297,278: 15x26
+#661 @ 479,544: 15x29
+#662 @ 251,880: 20x13
+#663 @ 728,250: 24x17
+#664 @ 768,867: 10x28
+#665 @ 964,79: 22x20
+#666 @ 194,56: 10x29
+#667 @ 523,403: 27x28
+#668 @ 104,409: 27x22
+#669 @ 786,631: 10x16
+#670 @ 514,859: 22x20
+#671 @ 357,134: 19x17
+#672 @ 160,504: 26x25
+#673 @ 80,548: 28x17
+#674 @ 617,628: 19x13
+#675 @ 849,317: 23x19
+#676 @ 889,569: 10x10
+#677 @ 238,156: 29x12
+#678 @ 292,954: 24x11
+#679 @ 875,909: 23x15
+#680 @ 722,592: 23x27
+#681 @ 375,287: 29x24
+#682 @ 690,417: 15x12
+#683 @ 766,67: 18x20
+#684 @ 686,895: 14x21
+#685 @ 616,89: 13x23
+#686 @ 395,105: 20x24
+#687 @ 624,541: 12x20
+#688 @ 663,413: 14x25
+#689 @ 226,804: 29x29
+#690 @ 724,219: 29x28
+#691 @ 245,609: 22x18
+#692 @ 402,207: 27x26
+#693 @ 640,441: 24x24
+#694 @ 529,951: 28x29
+#695 @ 402,941: 26x12
+#696 @ 719,599: 13x27
+#697 @ 125,367: 14x13
+#698 @ 740,226: 19x20
+#699 @ 559,466: 21x10
+#700 @ 899,167: 13x14
+#701 @ 616,514: 14x29
+#702 @ 787,556: 17x6
+#703 @ 336,170: 16x23
+#704 @ 444,115: 26x24
+#705 @ 908,767: 19x24
+#706 @ 411,937: 17x23
+#707 @ 601,463: 19x13
+#708 @ 105,305: 26x13
+#709 @ 711,736: 11x24
+#710 @ 2,463: 13x28
+#711 @ 878,829: 27x16
+#712 @ 385,448: 27x15
+#713 @ 203,393: 24x23
+#714 @ 274,325: 10x24
+#715 @ 198,975: 16x11
+#716 @ 52,660: 10x16
+#717 @ 239,583: 12x26
+#718 @ 299,277: 21x22
+#719 @ 121,287: 27x10
+#720 @ 578,464: 24x23
+#721 @ 57,149: 14x23
+#722 @ 808,150: 26x10
+#723 @ 249,476: 27x25
+#724 @ 933,76: 12x29
+#725 @ 156,913: 12x19
+#726 @ 950,778: 27x17
+#727 @ 963,863: 27x12
+#728 @ 115,809: 14x17
+#729 @ 263,636: 18x25
+#730 @ 281,278: 22x17
+#731 @ 598,151: 29x28
+#732 @ 948,678: 19x16
+#733 @ 343,779: 10x19
+#734 @ 40,65: 16x11
+#735 @ 968,207: 12x28
+#736 @ 852,919: 24x17
+#737 @ 288,793: 11x10
+#738 @ 591,720: 13x11
+#739 @ 700,419: 17x28
+#740 @ 98,718: 15x27
+#741 @ 330,555: 20x28
+#742 @ 198,636: 27x14
+#743 @ 134,234: 10x12
+#744 @ 648,687: 11x13
+#745 @ 585,571: 12x14
+#746 @ 715,784: 24x21
+#747 @ 334,17: 18x14
+#748 @ 880,610: 11x18
+#749 @ 290,504: 22x25
+#750 @ 168,273: 28x13
+#751 @ 672,395: 11x3
+#752 @ 293,810: 12x23
+#753 @ 642,437: 23x27
+#754 @ 708,955: 15x28
+#755 @ 601,82: 22x10
+#756 @ 381,202: 25x25
+#757 @ 319,148: 13x12
+#758 @ 398,312: 19x27
+#759 @ 80,398: 15x15
+#760 @ 406,381: 15x23
+#761 @ 949,354: 28x13
+#762 @ 900,88: 18x11
+#763 @ 812,123: 24x15
+#764 @ 793,287: 26x13
+#765 @ 195,755: 23x18
+#766 @ 791,653: 22x13
+#767 @ 622,825: 13x11
+#768 @ 328,230: 14x22
+#769 @ 788,766: 10x14
+#770 @ 4,121: 20x18
+#771 @ 168,248: 25x10
+#772 @ 661,602: 10x11
+#773 @ 338,576: 27x25
+#774 @ 357,595: 14x26
+#775 @ 565,66: 15x23
+#776 @ 941,447: 28x12
+#777 @ 866,416: 13x24
+#778 @ 855,373: 10x17
+#779 @ 765,501: 23x12
+#780 @ 276,922: 13x10
+#781 @ 276,95: 16x18
+#782 @ 617,193: 13x18
+#783 @ 920,772: 28x14
+#784 @ 34,654: 15x16
+#785 @ 223,836: 20x17
+#786 @ 620,232: 25x28
+#787 @ 785,426: 12x15
+#788 @ 556,758: 25x18
+#789 @ 859,937: 10x16
+#790 @ 328,93: 14x26
+#791 @ 486,671: 12x23
+#792 @ 120,299: 26x18
+#793 @ 214,266: 17x24
+#794 @ 357,263: 11x24
+#795 @ 413,403: 21x11
+#796 @ 678,948: 11x28
+#797 @ 887,967: 11x16
+#798 @ 140,833: 11x22
+#799 @ 476,823: 15x13
+#800 @ 27,66: 20x24
+#801 @ 943,449: 18x15
+#802 @ 838,165: 29x17
+#803 @ 811,951: 23x13
+#804 @ 625,32: 18x15
+#805 @ 469,30: 13x19
+#806 @ 287,601: 26x17
+#807 @ 370,919: 23x17
+#808 @ 251,740: 28x12
+#809 @ 566,93: 26x11
+#810 @ 101,976: 11x12
+#811 @ 443,932: 25x11
+#812 @ 163,291: 21x14
+#813 @ 837,268: 18x11
+#814 @ 395,464: 17x12
+#815 @ 549,851: 17x28
+#816 @ 645,803: 25x19
+#817 @ 928,807: 21x10
+#818 @ 831,869: 26x16
+#819 @ 882,366: 17x20
+#820 @ 752,313: 17x14
+#821 @ 640,318: 11x23
+#822 @ 201,302: 14x19
+#823 @ 40,358: 26x27
+#824 @ 574,370: 18x22
+#825 @ 90,42: 27x12
+#826 @ 824,905: 21x21
+#827 @ 663,473: 17x28
+#828 @ 893,432: 28x26
+#829 @ 287,131: 26x26
+#830 @ 792,572: 25x14
+#831 @ 722,966: 17x14
+#832 @ 542,927: 20x26
+#833 @ 626,619: 11x21
+#834 @ 370,758: 29x21
+#835 @ 488,671: 18x14
+#836 @ 220,98: 22x25
+#837 @ 11,894: 12x24
+#838 @ 406,868: 22x21
+#839 @ 474,240: 20x13
+#840 @ 656,526: 20x18
+#841 @ 258,487: 25x28
+#842 @ 469,143: 23x16
+#843 @ 276,701: 11x20
+#844 @ 620,698: 11x11
+#845 @ 302,516: 15x25
+#846 @ 584,651: 22x13
+#847 @ 666,371: 13x20
+#848 @ 636,315: 25x23
+#849 @ 882,689: 15x16
+#850 @ 337,568: 16x18
+#851 @ 932,590: 13x19
+#852 @ 622,419: 18x12
+#853 @ 144,741: 20x19
+#854 @ 263,640: 24x14
+#855 @ 398,307: 20x11
+#856 @ 232,513: 13x13
+#857 @ 648,631: 10x11
+#858 @ 879,831: 10x23
+#859 @ 553,473: 24x27
+#860 @ 15,592: 20x10
+#861 @ 852,363: 12x16
+#862 @ 676,386: 20x13
+#863 @ 8,740: 26x25
+#864 @ 52,80: 11x25
+#865 @ 190,815: 14x26
+#866 @ 724,342: 14x26
+#867 @ 93,13: 20x23
+#868 @ 541,88: 29x16
+#869 @ 693,283: 20x10
+#870 @ 779,658: 10x23
+#871 @ 527,155: 20x15
+#872 @ 273,302: 22x24
+#873 @ 307,884: 29x13
+#874 @ 188,377: 28x17
+#875 @ 393,870: 16x28
+#876 @ 18,431: 16x15
+#877 @ 525,170: 11x13
+#878 @ 528,175: 15x14
+#879 @ 955,425: 19x23
+#880 @ 239,802: 25x28
+#881 @ 255,70: 20x11
+#882 @ 356,653: 20x20
+#883 @ 943,189: 25x20
+#884 @ 912,41: 13x28
+#885 @ 882,628: 17x15
+#886 @ 34,894: 20x24
+#887 @ 969,845: 24x21
+#888 @ 429,777: 21x27
+#889 @ 981,3: 13x10
+#890 @ 436,134: 25x10
+#891 @ 218,612: 29x15
+#892 @ 816,65: 21x14
+#893 @ 24,602: 10x14
+#894 @ 868,971: 14x24
+#895 @ 974,610: 18x14
+#896 @ 569,559: 25x22
+#897 @ 321,591: 14x12
+#898 @ 486,32: 12x26
+#899 @ 328,575: 10x10
+#900 @ 883,667: 16x18
+#901 @ 893,739: 10x11
+#902 @ 845,135: 17x18
+#903 @ 737,78: 11x16
+#904 @ 329,702: 20x21
+#905 @ 463,51: 26x15
+#906 @ 109,295: 12x23
+#907 @ 947,219: 28x11
+#908 @ 642,511: 17x19
+#909 @ 636,366: 26x10
+#910 @ 719,388: 14x13
+#911 @ 915,185: 29x17
+#912 @ 952,166: 14x28
+#913 @ 97,72: 22x14
+#914 @ 83,711: 26x13
+#915 @ 129,359: 29x16
+#916 @ 914,100: 22x23
+#917 @ 395,244: 20x21
+#918 @ 524,755: 18x26
+#919 @ 602,422: 16x26
+#920 @ 181,104: 29x16
+#921 @ 725,849: 19x7
+#922 @ 154,630: 13x20
+#923 @ 791,280: 18x14
+#924 @ 825,118: 17x21
+#925 @ 476,151: 14x18
+#926 @ 17,913: 12x23
+#927 @ 698,957: 22x13
+#928 @ 278,843: 23x11
+#929 @ 968,10: 14x11
+#930 @ 271,638: 20x11
+#931 @ 52,667: 26x15
+#932 @ 142,716: 12x26
+#933 @ 91,78: 27x19
+#934 @ 179,797: 27x12
+#935 @ 493,530: 11x24
+#936 @ 250,645: 9x10
+#937 @ 377,907: 15x11
+#938 @ 945,789: 11x15
+#939 @ 782,628: 15x12
+#940 @ 450,65: 24x27
+#941 @ 32,796: 16x10
+#942 @ 959,623: 25x24
+#943 @ 612,441: 11x25
+#944 @ 233,785: 17x29
+#945 @ 263,315: 17x10
+#946 @ 284,581: 10x17
+#947 @ 298,262: 18x29
+#948 @ 901,68: 23x11
+#949 @ 383,566: 18x15
+#950 @ 367,174: 22x14
+#951 @ 667,881: 26x10
+#952 @ 641,643: 26x10
+#953 @ 598,37: 10x12
+#954 @ 717,667: 13x16
+#955 @ 375,557: 10x23
+#956 @ 836,405: 26x15
+#957 @ 913,651: 15x10
+#958 @ 257,861: 27x15
+#959 @ 844,802: 17x19
+#960 @ 872,138: 27x18
+#961 @ 524,892: 27x16
+#962 @ 771,114: 17x25
+#963 @ 737,729: 11x18
+#964 @ 509,24: 20x14
+#965 @ 95,503: 28x15
+#966 @ 56,575: 11x25
+#967 @ 633,26: 8x20
+#968 @ 661,390: 10x16
+#969 @ 176,336: 21x16
+#970 @ 909,91: 14x27
+#971 @ 867,73: 14x15
+#972 @ 142,559: 23x23
+#973 @ 545,341: 27x26
+#974 @ 46,53: 16x17
+#975 @ 124,856: 27x22
+#976 @ 354,308: 22x19
+#977 @ 202,639: 12x7
+#978 @ 616,419: 26x26
+#979 @ 741,602: 25x11
+#980 @ 689,474: 26x23
+#981 @ 975,580: 10x22
+#982 @ 859,812: 24x20
+#983 @ 119,469: 18x18
+#984 @ 720,656: 27x22
+#985 @ 508,402: 19x19
+#986 @ 700,717: 25x24
+#987 @ 877,973: 10x15
+#988 @ 329,85: 29x15
+#989 @ 845,572: 25x14
+#990 @ 529,964: 10x13
+#991 @ 199,758: 23x20
+#992 @ 631,691: 24x10
+#993 @ 770,570: 22x24
+#994 @ 916,627: 21x16
+#995 @ 315,479: 11x28
+#996 @ 203,520: 17x22
+#997 @ 519,349: 14x20
+#998 @ 130,719: 12x17
+#999 @ 836,304: 26x17
+#1000 @ 809,321: 28x19
+#1001 @ 206,912: 23x21
+#1002 @ 24,854: 26x24
+#1003 @ 180,672: 26x23
+#1004 @ 265,831: 29x25
+#1005 @ 577,767: 22x19
+#1006 @ 660,327: 28x25
+#1007 @ 167,310: 16x29
+#1008 @ 907,212: 29x29
+#1009 @ 618,323: 28x12
+#1010 @ 692,448: 27x27
+#1011 @ 682,232: 23x19
+#1012 @ 305,328: 22x25
+#1013 @ 408,476: 23x12
+#1014 @ 269,478: 19x19
+#1015 @ 460,59: 17x21
+#1016 @ 722,739: 29x14
+#1017 @ 768,645: 29x11
+#1018 @ 406,951: 27x14
+#1019 @ 776,557: 21x23
+#1020 @ 729,952: 23x23
+#1021 @ 499,31: 11x23
+#1022 @ 210,781: 15x16
+#1023 @ 503,308: 12x26
+#1024 @ 665,651: 12x22
+#1025 @ 650,375: 17x13
+#1026 @ 288,687: 23x18
+#1027 @ 740,221: 20x17
+#1028 @ 266,699: 11x25
+#1029 @ 163,796: 15x10
+#1030 @ 542,730: 13x29
+#1031 @ 365,120: 16x17
+#1032 @ 368,643: 29x18
+#1033 @ 941,821: 20x21
+#1034 @ 384,123: 12x21
+#1035 @ 935,338: 19x19
+#1036 @ 664,882: 13x17
+#1037 @ 414,2: 10x11
+#1038 @ 768,632: 20x14
+#1039 @ 189,349: 12x14
+#1040 @ 168,282: 29x26
+#1041 @ 913,98: 6x13
+#1042 @ 642,40: 21x23
+#1043 @ 504,0: 17x28
+#1044 @ 87,847: 24x20
+#1045 @ 893,638: 21x12
+#1046 @ 509,175: 26x10
+#1047 @ 462,354: 15x28
+#1048 @ 851,315: 14x16
+#1049 @ 468,821: 20x12
+#1050 @ 114,470: 13x28
+#1051 @ 213,546: 14x11
+#1052 @ 240,341: 20x15
+#1053 @ 196,249: 28x14
+#1054 @ 268,112: 17x23
+#1055 @ 120,610: 27x22
+#1056 @ 179,367: 14x15
+#1057 @ 523,639: 11x25
+#1058 @ 332,616: 22x25
+#1059 @ 143,646: 25x12
+#1060 @ 529,718: 27x13
+#1061 @ 44,903: 21x27
+#1062 @ 65,738: 14x12
+#1063 @ 92,179: 13x26
+#1064 @ 276,267: 29x18
+#1065 @ 797,518: 25x11
+#1066 @ 368,905: 29x22
+#1067 @ 785,554: 26x11
+#1068 @ 768,651: 20x19
+#1069 @ 749,350: 13x12
+#1070 @ 484,818: 13x15
+#1071 @ 213,198: 16x16
+#1072 @ 466,72: 15x26
+#1073 @ 599,700: 28x21
+#1074 @ 9,980: 15x14
+#1075 @ 385,783: 25x21
+#1076 @ 461,629: 25x25
+#1077 @ 787,19: 11x11
+#1078 @ 774,359: 28x18
+#1079 @ 157,930: 17x18
+#1080 @ 283,700: 16x25
+#1081 @ 177,674: 16x13
+#1082 @ 358,165: 14x13
+#1083 @ 560,272: 28x28
+#1084 @ 142,349: 29x27
+#1085 @ 539,890: 14x29
+#1086 @ 921,651: 14x25
+#1087 @ 876,151: 14x16
+#1088 @ 637,867: 23x13
+#1089 @ 699,294: 26x24
+#1090 @ 199,525: 20x15
+#1091 @ 372,14: 13x18
+#1092 @ 958,533: 22x29
+#1093 @ 607,12: 19x16
+#1094 @ 61,288: 23x14
+#1095 @ 200,231: 22x24
+#1096 @ 845,972: 27x23
+#1097 @ 847,508: 13x16
+#1098 @ 203,417: 13x14
+#1099 @ 413,291: 13x15
+#1100 @ 435,921: 20x16
+#1101 @ 403,888: 13x26
+#1102 @ 145,677: 18x10
+#1103 @ 18,594: 12x10
+#1104 @ 536,123: 16x14
+#1105 @ 719,278: 14x17
+#1106 @ 616,652: 15x25
+#1107 @ 529,445: 27x13
+#1108 @ 516,600: 12x19
+#1109 @ 403,45: 27x29
+#1110 @ 23,173: 17x17
+#1111 @ 763,604: 27x14
+#1112 @ 33,77: 28x10
+#1113 @ 265,596: 27x19
+#1114 @ 44,671: 25x11
+#1115 @ 619,162: 25x24
+#1116 @ 318,14: 20x12
+#1117 @ 477,249: 27x28
+#1118 @ 369,787: 21x29
+#1119 @ 146,389: 23x29
+#1120 @ 767,643: 12x26
+#1121 @ 674,299: 27x11
+#1122 @ 585,606: 21x16
+#1123 @ 196,624: 14x10
+#1124 @ 304,700: 12x28
+#1125 @ 385,635: 14x23
+#1126 @ 114,682: 12x17
+#1127 @ 213,272: 28x22
+#1128 @ 523,116: 20x14
+#1129 @ 622,332: 14x10
+#1130 @ 387,491: 18x23
+#1131 @ 334,903: 18x12
+#1132 @ 412,784: 16x13
+#1133 @ 508,939: 29x14
+#1134 @ 275,741: 25x25
+#1135 @ 535,414: 9x3
+#1136 @ 928,438: 22x20
+#1137 @ 581,439: 23x26
+#1138 @ 826,318: 28x22
+#1139 @ 120,798: 13x15
+#1140 @ 842,505: 27x28
+#1141 @ 758,386: 14x24
+#1142 @ 851,334: 18x27
+#1143 @ 358,421: 25x24
+#1144 @ 90,878: 27x15
+#1145 @ 281,631: 21x13
+#1146 @ 741,92: 24x22
+#1147 @ 114,493: 27x29
+#1148 @ 856,412: 16x14
+#1149 @ 111,866: 19x20
+#1150 @ 31,647: 28x26
+#1151 @ 52,211: 23x28
+#1152 @ 496,643: 26x20
+#1153 @ 973,296: 16x20
+#1154 @ 962,575: 23x11
+#1155 @ 157,382: 27x16
+#1156 @ 123,801: 15x26
+#1157 @ 115,884: 17x27
+#1158 @ 102,857: 12x12
+#1159 @ 237,280: 10x13
+#1160 @ 404,448: 22x28
+#1161 @ 50,590: 25x25
+#1162 @ 848,364: 26x13
+#1163 @ 850,439: 7x8
+#1164 @ 676,610: 23x13
+#1165 @ 394,475: 19x27
+#1166 @ 297,684: 23x18
+#1167 @ 314,494: 19x24
+#1168 @ 542,464: 11x19
+#1169 @ 732,238: 10x19
+#1170 @ 242,634: 26x27
+#1171 @ 549,845: 20x25
+#1172 @ 208,608: 14x25
+#1173 @ 494,650: 17x11
+#1174 @ 550,194: 13x16
+#1175 @ 957,792: 18x10
+#1176 @ 836,65: 11x20
+#1177 @ 910,417: 22x26
+#1178 @ 479,367: 19x11
+#1179 @ 344,257: 27x26
+#1180 @ 477,236: 19x15
+#1181 @ 414,458: 27x28
+#1182 @ 738,10: 26x17
+#1183 @ 401,618: 12x23
+#1184 @ 390,301: 6x13
+#1185 @ 174,768: 27x14
+#1186 @ 378,139: 28x18
+#1187 @ 542,160: 18x23
+#1188 @ 675,408: 27x15
+#1189 @ 532,660: 26x19
+#1190 @ 62,125: 14x15
+#1191 @ 301,495: 23x17
+#1192 @ 286,907: 10x24
+#1193 @ 267,688: 10x28
+#1194 @ 567,464: 27x26
+#1195 @ 724,514: 24x19
+#1196 @ 269,962: 20x21
+#1197 @ 192,925: 28x26
+#1198 @ 190,600: 14x10
+#1199 @ 66,823: 25x12
+#1200 @ 648,490: 18x11
+#1201 @ 692,814: 12x18
+#1202 @ 850,191: 13x11
+#1203 @ 592,705: 15x18
+#1204 @ 169,127: 16x18
+#1205 @ 284,79: 16x28
+#1206 @ 839,61: 25x18
+#1207 @ 220,904: 25x18
+#1208 @ 114,251: 24x14
+#1209 @ 108,918: 23x19
+#1210 @ 589,891: 19x23
+#1211 @ 137,313: 10x17
+#1212 @ 335,907: 15x19
+#1213 @ 438,297: 29x19
+#1214 @ 268,845: 16x29
+#1215 @ 756,319: 13x22
+#1216 @ 649,505: 12x19
+#1217 @ 858,274: 21x21
+#1218 @ 228,104: 26x20
+#1219 @ 383,473: 22x15
+#1220 @ 653,426: 10x10
+#1221 @ 434,744: 27x15
+#1222 @ 548,578: 25x27
+#1223 @ 534,438: 11x29
+#1224 @ 503,647: 27x20
+#1225 @ 99,528: 18x29
+#1226 @ 167,569: 22x26
+#1227 @ 894,557: 14x19
+#1228 @ 208,522: 10x25
+#1229 @ 62,0: 25x20
+#1230 @ 741,4: 12x21
+#1231 @ 78,197: 25x15
+#1232 @ 278,614: 18x22
+#1233 @ 984,301: 10x19
+#1234 @ 915,337: 29x11
+#1235 @ 598,187: 24x16
+#1236 @ 946,539: 21x13
+#1237 @ 137,281: 3x12
+#1238 @ 813,328: 21x26
+#1239 @ 453,531: 25x11
+#1240 @ 432,428: 23x17
+#1241 @ 813,907: 26x23
+#1242 @ 585,560: 15x13
+#1243 @ 827,151: 10x19
+#1244 @ 520,363: 12x26
+#1245 @ 757,894: 23x22
+#1246 @ 787,436: 22x19
+#1247 @ 278,685: 14x29
+#1248 @ 358,347: 23x16
+#1249 @ 181,722: 15x13
+#1250 @ 820,143: 18x12
+#1251 @ 587,611: 26x12
+#1252 @ 684,809: 15x13
+#1253 @ 496,530: 10x12
+#1254 @ 303,500: 16x7
+#1255 @ 263,925: 22x24
+#1256 @ 656,624: 18x23
+#1257 @ 239,42: 19x27
+#1258 @ 695,557: 13x16
+#1259 @ 55,689: 27x15
+#1260 @ 228,478: 19x16
+#1261 @ 650,76: 17x10
+#1262 @ 212,899: 17x17
+#1263 @ 501,362: 11x22
+#1264 @ 711,419: 11x12
+#1265 @ 262,691: 19x21
+#1266 @ 1,118: 29x25
+#1267 @ 545,599: 19x13
+#1268 @ 379,219: 29x20
+#1269 @ 542,669: 12x22
+#1270 @ 481,85: 14x12
+#1271 @ 318,844: 12x27
+#1272 @ 261,236: 14x29
+#1273 @ 256,745: 10x14
+#1274 @ 562,618: 21x21
+#1275 @ 391,246: 14x10
+#1276 @ 695,586: 20x17
+#1277 @ 123,601: 15x17
+#1278 @ 770,883: 27x14
+#1279 @ 841,150: 27x18
+#1280 @ 788,430: 5x7
+#1281 @ 708,978: 29x13
+#1282 @ 150,185: 26x19
+#1283 @ 110,383: 11x21
+#1284 @ 306,864: 11x18
+#1285 @ 954,569: 23x10
+#1286 @ 650,417: 14x28
+#1287 @ 450,420: 15x13
+#1288 @ 380,455: 29x17
+#1289 @ 486,338: 14x11
+#1290 @ 852,142: 26x26
+#1291 @ 114,494: 12x15
+#1292 @ 242,621: 11x17
+#1293 @ 717,586: 10x10
+#1294 @ 281,832: 16x19
+#1295 @ 898,511: 18x12
+#1296 @ 894,703: 11x19
+#1297 @ 508,414: 16x17
+#1298 @ 788,777: 10x18
+#1299 @ 919,278: 19x12
+#1300 @ 964,659: 28x10
+#1301 @ 62,670: 20x20
+#1302 @ 677,947: 11x12
+#1303 @ 259,693: 23x29
+#1304 @ 460,349: 15x27
+#1305 @ 905,235: 23x16
+#1306 @ 174,586: 20x20
+#1307 @ 909,910: 23x19
+#1308 @ 1,594: 28x10
+#1309 @ 553,308: 10x29
+#1310 @ 363,497: 23x26
+#1311 @ 132,175: 28x29
+#1312 @ 854,10: 26x28
+#1313 @ 816,768: 20x15
+#1314 @ 142,242: 20x23
+#1315 @ 169,104: 14x14
+#1316 @ 732,125: 22x12
+#1317 @ 296,391: 22x10
+#1318 @ 259,75: 24x17
+#1319 @ 510,922: 21x11
+#1320 @ 172,266: 11x13
+#1321 @ 895,566: 18x25
+#1322 @ 841,826: 22x12
+#1323 @ 205,384: 14x10
+#1324 @ 567,662: 12x20
+#1325 @ 253,971: 21x21
+#1326 @ 887,154: 23x17
+#1327 @ 29,830: 10x24
+#1328 @ 532,504: 12x17
+#1329 @ 445,930: 16x10
+#1330 @ 642,351: 22x14
+#1331 @ 584,753: 13x21
+#1332 @ 113,893: 13x24
+#1333 @ 109,350: 18x25
+#1334 @ 699,400: 15x20
+#1335 @ 963,664: 13x18
+#1336 @ 376,566: 20x29
+#1337 @ 775,762: 10x18
+#1338 @ 136,486: 13x10
+#1339 @ 638,333: 27x28
+#1340 @ 228,568: 27x19
+#1341 @ 334,600: 26x26
+#1342 @ 537,701: 25x12
+#1343 @ 40,800: 26x20
+#1344 @ 693,318: 11x24
+#1345 @ 883,392: 16x12
+#1346 @ 470,78: 12x13
+#1347 @ 209,900: 11x28
+#1348 @ 204,364: 24x12
+#1349 @ 533,414: 11x10
+#1350 @ 853,314: 22x25
+#1351 @ 543,467: 29x25
+#1352 @ 406,632: 11x27
+#1353 @ 743,209: 14x21 \ No newline at end of file
diff --git a/2018/day3.p6 b/2018/day3.p6
new file mode 100644
index 0000000..ce9ae2d
--- /dev/null
+++ b/2018/day3.p6
@@ -0,0 +1,60 @@
+use lib <lib>;
+use Utils;
+
+class Point { has $.x; has $.y; method gist { "{$.x}×{$.y}" }}
+
+class Fabric {
+ has $.left;
+ has $.top;
+ has $.width;
+ has $.height;
+
+ method points {
+ gather {
+ my @rx = $.left ..^ ($.left+$.width);
+ my @ry = ($.top) ..^ ($.top+$.height);
+ for @rx -> $x {
+ for @ry -> $y {
+ take "$x,$y";
+ }
+ }
+ }
+ }
+}
+
+sub infix:<ð>(Fabric $f1, Fabric $f2) {
+ say $f1.points;
+ say $f2.points;
+ say '';
+ my $a = set($f1.points);
+ my $b = set($f2.points);
+ say $a (&) $b;
+}
+
+sub pt1($data --> Int) {
+ my @fabric = $data.lines.map({
+my $m = Day3.parse($_);
+Fabric.new(
+ left => $m<position><left>,
+ top => $m<position><top>,
+ width => $m<size><width>,
+ height => $m<size><height>
+)});
+
+ for @fabric.combinations(2) -> @f {
+ @f[0] ð @f[1]
+ }
+
+ return 0;
+}
+
+sub MAIN("test") {
+ my @data = q:to/E/;
+ #1 @ 1,3: 4x4
+ #2 @ 3,1: 4x4
+ #3 @ 5,5: 2x2
+ E
+ my $sq = pt1(@data);
+
+ die "Got $sq instead 4" if $sq != 4;
+}
diff --git a/2018/day4.p6 b/2018/day4.p6
new file mode 100644
index 0000000..def1084
--- /dev/null
+++ b/2018/day4.p6
@@ -0,0 +1,50 @@
+#`[
+[1518-11-01 00:00] Guard #10 begins shift
+[1518-11-01 00:05] falls asleep
+[1518-11-01 00:25] wakes up
+[1518-11-01 00:30] falls asleep
+[1518-11-01 00:55] wakes up
+[1518-11-01 23:58] Guard #99 begins shift
+[1518-11-02 00:40] falls asleep
+[1518-11-02 00:50] wakes up
+[1518-11-03 00:05] Guard #10 begins shift
+[1518-11-03 00:24] falls asleep
+[1518-11-03 00:29] wakes up
+[1518-11-04 00:02] Guard #99 begins shift
+[1518-11-04 00:36] falls asleep
+[1518-11-04 00:46] wakes up
+[1518-11-05 00:03] Guard #99 begins shift
+[1518-11-05 00:45] falls asleep
+[1518-11-05 00:55] wakes up
+]
+
+use Grammar::Tracer;
+
+grammar GuardLog {
+ token TOP { [ <guard-log> ]+ }
+ rule guard-log {
+ <shift-start> 'Guard #' <id> begins shift
+ [ <log> ]+
+ }
+ rule log { <date> <action> }
+ token shift-start { <date> }
+ token id { \d+ }
+ token date { '[' \d ** 4 '-' \d ** 2 '-' \d ** 2 ' ' <hour> ']'}
+ token hour { \d ** 2 ':' \d ** 2 }
+
+ rule action {
+ | 'falls asleep'
+ | 'wakes up'
+ }
+}
+
+my $log = GuardLog.parse(q:to/EOF/);
+[1518-11-01 00:00] Guard #10 begins shift
+[1518-11-01 00:05] falls asleep
+[1518-11-01 00:25] wakes up
+[1518-11-01 00:30] falls asleep
+[1518-11-01 00:55] wakes up
+EOF
+
+say $log<guard-log>[0]<log>.elems;
+
diff --git a/2018/lib/Utils.pm6 b/2018/lib/Utils.pm6
new file mode 100644
index 0000000..5b955d3
--- /dev/null
+++ b/2018/lib/Utils.pm6
@@ -0,0 +1,45 @@
+use v6;
+
+grammar Day3 is export {
+ token TOP { <id> " @ " <position> ": " <size> }
+ token id { "#" \d+ }
+ token position { $<left> = [\d+]","$<top>=[\d+] }
+ token size { $<width>=[\d+]"x"$<height>=[\d+] }
+}
+
+sub parse-input(--> List) is export { $*IN.lines.List }
+
+sub to-int(Str @input --> List) is export { @input.map: *.Int }
+
+sub dd-matrix(@m) {
+ for ^@m.shape[0] -> \i {
+ my $s = "";
+ for ^@m.shape[1] -> \j {
+ $s~=@m[i;j];
+ }
+ say "[" ~ $s.comb.join(", ") ~ "]";
+ }
+}
+
+sub levenshtein($s, $t) is export {
+ my $m = $s.chars;
+ my $n = $t.chars;
+ my int32 @d[$m+1;$n+1] = (0 xx $n+1) xx $m+1;
+
+ for 1..$m { @d[$_;0] = $_ };
+ for 1..$n { @d[0;$_] = $_ };
+
+ for 1..$n -> \j {
+ for 1..$m -> \i {
+ my $sub-cost = 0;
+ if $s.comb[i-1] ne $t.comb[j-1] {
+ $sub-cost = 1;
+ }
+ @d[i;j] = (@d[i-1;j] + 1,
+ @d[i;j-1] + 1,
+ @d[i-1;j-1] + $sub-cost).min;
+ }
+ }
+
+ return @d[$m;$n];
+}
diff --git a/2018/prof.html b/2018/prof.html
new file mode 100644
index 0000000..f34c6b0
--- /dev/null
+++ b/2018/prof.html
@@ -0,0 +1,1264 @@
+<!DOCTYPE html>
+<html lang="en" ng-app="moarProfApp" ng-controller="NavigationController">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>MoarVM Profiler Results</title>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css">
+ <style>
+ body {
+ min-height: 500px;
+ padding-top: 70px;
+ }
+ .icyclegraph .call {
+ display: block;
+ border: 1px solid black;
+ overflow: hidden;
+ }
+ .icyclegraph .child {
+ float: left;
+ }
+ .icyclegraph a {
+ color: black;
+ }
+ </style>
+ </head>
+ <body >
+ <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+ <div class="container">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand">MoarVM Profiler Results</a>
+ </div>
+ <div class="navbar-collapse collapse">
+ <ul class="nav navbar-nav">
+ <li ng-class="Tab == 'Overview' ? 'active' : ''"><a href="#overview" ng-click="Tab = 'Overview'">Overview</a></li>
+ <li ng-class="Tab == 'Routines' ? 'active' : ''"><a href="#routines" ng-click="Tab = 'Routines'">Routines</a></li>
+ <li ng-class="Tab == 'Call Graph' ? 'active' : ''"><a href="#callgraph" ng-click="Tab = 'Call Graph'">Call Graph</a></li>
+ <li ng-class="Tab == 'Allocations' ? 'active' : ''"><a href="#allocations" ng-click="Tab = 'Allocations'">Allocations</a></li>
+ <li ng-class="Tab == 'GC' ? 'active' : ''"><a href="#gc" ng-click="Tab = 'GC'">GC</a></li>
+ <li ng-class="Tab == 'OSR/Deopt' ? 'active' : ''"><a href="#osrdeopt" ng-click="Tab = 'OSR/Deopt'">OSR / Deopt</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="container" ng-show="Tab == 'Overview'">
+ <div ng-controller="OverviewController">
+ <h3>Time Spent</h3>
+ <p>The profiled code ran for <strong>{{TotalTime}}ms</strong>. Of this,
+ <strong>{{GCOverheadTime}}ms</strong> were spent on garbage collection
+ (that's <strong>{{GCOverheadTimePercent}}%</strong>).
+ </p>
+ <p>The dynamic optimizer was active for <strong>{{SpeshTimePercent}}%</strong> of the program's run time.
+ <table class="table table-striped table-condensed table-bordered">
+ <tbody>
+ <tr>
+ <td><strong>Executing Code</strong></td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar progress-bar-success" role="progressbar" style="width: {{ExecutingTimePercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{ExecutingTimePercent}}%
+ ({{ExecutingTime}}ms)
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Garbage Collection</strong></td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar progress-bar-warning" role="progressbar" style="width: {{GCTimePercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{GCTimePercent}}%
+ ({{GCTime}}ms)
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Dynamic Optimization</strong></td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar progress-bar-warning" role="progressbar" style="width: {{SpeshTimePercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{SpeshTimePercent}}%
+ ({{SpeshTime}}ms)
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <h3>Call Frames</h3>
+ <p>In total, <strong>{{EntriesWithoutInline}} call frames</strong> were
+ entered and exited by the profiled code. Inlining eliminated the need
+ to create <strong>{{EntriesInline}} call frames</strong> (that's
+ <strong>{{InlinePercent}}%</strong>).
+ </p>
+ <table class="table table-striped table-condensed table-bordered">
+ <tbody>
+ <tr>
+ <td><strong>Interpreted Frames</strong></td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar progress-bar-danger" role="progressbar" style="width: {{InterpFramesPercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{InterpFramesPercent}}%
+ ({{InterpFrames}})
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Specialized Frames</strong></td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar progress-bar-warning" role="progressbar" style="width: {{SpeshFramesPercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{SpeshFramesPercent}}%
+ ({{SpeshFrames}})
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>JIT-Compiled Frames</strong></td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar progress-bar-success" role="progressbar" style="width: {{JITFramesPercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{JITFramesPercent}}%
+ ({{JITFrames}})
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <h3>Garbage Collection</h3>
+ <p>The profiled code did <strong>{{GCRuns}} garbage collections</strong>.
+ There were <strong>{{FullGCRuns}} full collections</strong> involving
+ the entire heap.
+ </p>
+ <p ng-show="{{GCRuns > 0}}">
+ The average nursery collection time was <strong>{{NurseryAverage}}ms</strong>.
+ <span ng-show="{{FullGCRuns > 0}}">
+ The average full collection time was <strong>{{FullAverage}}ms</strong>.
+ </span>
+ <span ng-show="{{AverageParticipants > 1}}">
+ On average, <strong>{{AverageParticipants}}</strong> threads participated in GC.
+ </span>
+ </p>
+
+ <h3>Dynamic Optimization</h3>
+ <p>Of {{OptimizedFrames}} specialized or JIT-compiled frames, there were
+ <strong>{{DeoptOnes}} deoptimizations</strong> (that's <strong>
+ {{DeoptOnePercent}}%</strong> of all optimized frames).
+ </p>
+ <p ng-show="DeoptAlls == 0">
+ There was <strong>no global deoptimization</strong> triggered by the
+ profiled code.
+ </p>
+ <p ng-show="DeoptAlls == 1">
+ There was <strong>one global deoptimization</strong> triggered by the
+ profiled code.
+ </p>
+ <p ng-show="DeoptAlls > 1">
+ There were <strong>{{DeoptAlls}} global deoptimization</strong> triggered
+ by the profiled code.
+ </p>
+ <p ng-show="OSRs == 0">
+ There was <strong>no On Stack Replacement</strong> performed while
+ executing the profiled code (normal if the code lacks long-running
+ loops with many iterations).
+ </p>
+ <p ng-show="OSRs == 1">
+ There was <strong>one On Stack Replacement</strong> performed while
+ executing the profiled code.
+ </p>
+ <p ng-show="OSRs > 1">
+ There were <strong>{{OSRs}} On Stack Replacements</strong> performed
+ while executing the profiled code.
+ </p>
+ </div>
+ </div>
+
+ <div class="container" ng-show="Tab == 'Routines'">
+ <div ng-controller="RoutinesController">
+ <table class="table table-striped table-condensed table-bordered">
+ <thead>
+ <th>
+ <a href="" ng-click="reverse = predicate == 'Name' ? !reverse : false; predicate = 'Name';">Name</a>
+ <input ng-model="NameFilter">
+ </th>
+ <th><a href="" ng-click="reverse = predicate == 'Entries' ? !reverse : true; predicate = 'Entries';">Entries</a></th>
+ <th><a href="" ng-click="reverse = predicate == 'InclusiveTime' ? !reverse : true; predicate = 'InclusiveTime';">Inclusive Time</a></th>
+ <th><a href="" ng-click="reverse = predicate == 'ExclusiveTime' ? !reverse : true; predicate = 'ExclusiveTime';">Exclusive Time</a></th>
+ <th>
+ <span class="text-danger" tooltip-placement="bottom" tooltip="Unoptimized interpreted code">Interp</span> /
+ <span class="text-warning" tooltip-placement="bottom" tooltip="Type-specialized interpreted code">Spesh</span> /
+ <span class="text-success" tooltip-placement="bottom" tooltip="Type-specialized, JIT-compiled code">JIT</span>
+ </th>
+ </thead>
+ <tbody>
+ <tr ng-repeat="routine in Routines | filter:NameFilter | orderBy:predicate:reverse">
+ <td>
+ <strong>{{routine.Name}}</strong><br />
+ <span class="text-muted">{{routine.File}}:{{routine.Line}}</span>
+ </td>
+ <td>{{routine.Entries}}</td>
+ <td>
+ <div class="pull-left" style="width: 70px">
+ <div class="progress" style="width: 60px">
+ <div class="progress-bar" role="progressbar" style="width: {{routine.InclusiveTimePercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ <strong>{{routine.InclusiveTimePercent}}%</strong>
+ ({{routine.InclusiveTime}}ms)
+ </div>
+ </td>
+ <td>
+ <div class="pull-left" style="width: 70px">
+ <div class="progress" style="width: 60px">
+ <div class="progress-bar" role="progressbar" style="width: {{routine.ExclusiveTimePercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ <strong>{{routine.ExclusiveTimePercent}}%</strong>
+ ({{routine.ExclusiveTime}}ms)
+ </div>
+ </td>
+ <td>
+ <div class="pull-left" style="width: 110px">
+ <div class="progress" style="width: 100px">
+ <div class="progress-bar progress-bar-danger" style="width: {{routine.InterpEntriesPercent}}%">
+ </div>
+ <div class="progress-bar progress-bar-warning" style="width: {{routine.SpeshEntriesPercent}}%">
+ </div>
+ <div class="progress-bar progress-bar-success" style="width: {{routine.JITEntriesPercent}}%">
+ </div>
+ </div>
+ </div>
+ <div>
+ <span class="label label-default" ng-show="routine.OSR">OSR</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+
+ <script type="text/ng-template" id="icycle_graph_callee_renderer.html">
+ <a href="#" class="call" style="background-color:{{backgroundColor(callee)}}" ng-click="toCallee(callee)">{{callee.name}}</a>
+ <div class="child" style="width: {{callee.inclusive_time * 100 / Current.inclusive_time}}%;" ng-repeat="callee in callee.callees" title="{{callee.name}}" ng-include="'icycle_graph_callee_renderer.html'"></div>
+ </script>
+
+ <div class="container" ng-show="Tab == 'Call Graph'">
+ <div ng-controller="CallGraphController">
+
+ <ol class="breadcrumb">
+ <li><strong>Callers:</strong></li>
+ <li ng-show="RecentCallers.length == 0"><em>None</em></li>
+ <li ng-repeat="caller in RecentCallers">
+ <a href="" ng-click="toCaller(caller)">
+ {{caller.name == '' ? '&lt;anon&gt;' : caller.name}}
+ </a>
+ </li>
+ </ol>
+
+ <p>
+ <span class="lead">{{Current.name == '' ? '&lt;anon&gt;' : Current.name}}</span><br />
+ <span class="text-muted">{{File}}:{{Line}}</span>
+ </p>
+
+ <div class="icyclegraph">
+ <div class="child" ng-repeat="callee in [Current]" ng-include="'icycle_graph_callee_renderer.html'"></div>
+ </div>
+
+ <table class="table table-striped table-condensed table-bordered">
+ <tbody>
+ <tr>
+ <td><strong>Calls <span class="text-success">(Inlined)</span></strong></td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar" role="progressbar" style="width: {{Percent}}%;">
+ </div>
+ <div class="progress-bar progress-bar-success" role="progressbar" style="width: {{InlinePercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div ng-show="InlinePercent == 0">
+ {{Entries}}
+ </div>
+ <div ng-show="InlinePercent != 0">
+ {{Entries}} +
+ <span class="text-success">{{InlineEntries}} ({{InlinePercent}}%)</span>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Interpreted Calls</strong></td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar progress-bar-danger" role="progressbar" style="width: {{InterpPercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{InterpPercent}}%
+ ({{InterpEntries}})
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Specialized Calls</strong></td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar progress-bar-warning" role="progressbar" style="width: {{SpeshPercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{SpeshPercent}}%
+ ({{SpeshEntries}})
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>JIT-Compiled Calls</strong></td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar progress-bar-success" role="progressbar" style="width: {{JITPercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{JITPercent}}%
+ ({{JITEntries}})
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <div class="panel panel-default">
+ <div class="panel-heading">Callees</div>
+ <table class="table table-striped table-condensed table-bordered" ng-show="Callees.length > 0">
+ <thead>
+ <th>
+ <a href="" ng-click="reverse = predicate == 'Name' ? !reverse : false; predicate = 'Name';">Name</a>
+ <input ng-model="NameFilter">
+ </th>
+ <th><a href="" ng-click="reverse = predicate == 'Calls' ? !reverse : true; predicate = 'Calls';">Calls</a></th>
+ <th><a href="" ng-click="reverse = predicate == 'Time' ? !reverse : true; predicate = 'Time';">Time In Callee</a></th>
+ <th>
+ <span class="text-danger" tooltip-placement="bottom" tooltip="Unoptimized interpreted code">Interp</span> /
+ <span class="text-warning" tooltip-placement="bottom" tooltip="Type-specialized interpreted code">Spesh</span> /
+ <span class="text-success" tooltip-placement="bottom" tooltip="Type-specialized, JIT-compiled code">JIT</span>
+ </th>
+ <th>
+ <span tooltip-placement="bottom" tooltip="Code from this callee was flattened into the routine by the optimizer">Inlined</span>
+ </th>
+ </thead>
+ <tbody>
+ <tr ng-repeat="callee in Callees | filter:NameFilter | orderBy:predicate:reverse">
+ <td>
+ <strong><a href="" ng-click="toCallee(callee.Node)">{{callee.Name}}</a></strong><br />
+ <span class="text-muted">{{callee.File}}:{{callee.Line}}</span>
+ </td>
+ <td>{{callee.Calls}}</td>
+ <td>
+ <div class="pull-left" style="width: 70px">
+ <div class="progress" style="width: 60px">
+ <div class="progress-bar" role="progressbar" style="width: {{callee.TimePercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ <strong>{{callee.TimePercent}}%</strong>
+ ({{callee.Time}}ms)
+ </div>
+ </td>
+ <td>
+ <div class="progress" style="width: 100px">
+ <div class="progress-bar progress-bar-danger" style="width: {{callee.InterpCallsPercent}}%">
+ </div>
+ <div class="progress-bar progress-bar-warning" style="width: {{callee.SpeshCallsPercent}}%">
+ </div>
+ <div class="progress-bar progress-bar-success" style="width: {{callee.JITCallsPercent}}%">
+ </div>
+ </div>
+ </td>
+ <td>
+ <div ng-show="callee.VeryInline">
+ <span class="text-success">
+ <span class="glyphicon glyphicon-star"></span>
+ </span>
+ {{callee.InlinedPercent}}%
+ </div>
+ <div ng-show="callee.SometimesInline">
+ <span class="text-muted">
+ <span class="glyphicon glyphicon-star-empty"></span>
+ </span>
+ {{callee.InlinedPercent}}%
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <div class="panel-body" ng-show="Callees.length == 0">
+ This code has no callees.
+ </div>
+ </div>
+
+ </div>
+ </div>
+
+ <div class="container" ng-show="Tab == 'Allocations'">
+ <div ng-controller="AllocationsController">
+ <table class="table table-striped table-condensed table-bordered">
+ <thead>
+ <th>
+ <a href="" ng-click="reverse = predicate == 'Name' ? !reverse : false; predicate = 'Name';">Name</a>
+ <input ng-model="NameFilter">
+ </th>
+ <th><a href="" ng-click="reverse = predicate == 'Allocations' ? !reverse : true; predicate = 'Allocations';">Allocations</a></th>
+ <th>Allocating Routines</th>
+ </thead>
+ <tbody>
+ <tr ng-repeat="alloc in AllocationSummary | filter:NameFilter | orderBy:predicate:reverse">
+ <td><strong>{{alloc.Name}}</strong></td>
+ <td>
+ <div class="pull-left" style="width: 210px">
+ <div class="progress" style="width: 200px">
+ <div class="progress-bar progress-bar-danger" role="progressbar" style="width: {{alloc.AllocationsInterpPercent}}%;">
+ </div>
+ <div class="progress-bar progress-bar-warning" role="progressbar" style="width: {{alloc.AllocationsSpeshPercent}}%;">
+ </div>
+ <div class="progress-bar progress-bar-success" role="progressbar" style="width: {{alloc.AllocationsJitPercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{alloc.Allocations}}
+ </div>
+ </td>
+ <td>
+ <a href="" ng-click="showAllocatingRoutines(alloc)">View</a>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <script type="text/ng-template" id="myModalContent.html">
+ <div class="modal-header">
+ <button type="button" ng-click="modalInstance.close()"
+ class="close" data-dismiss="modal">
+ <span aria-hidden="true">&times;</span><span class="sr-only">Close</span>
+ </button>
+ <h4 class="modal-title" id="allocatingRoutinesModalLabel">
+ Routines Allocating {{CurrentAllocatingRoutine}}
+ </h4>
+ </div>
+ <div class="modal-body">
+ <table class="table table-striped table-condensed table-bordered">
+ <thead>
+ <th>
+ <a href="" ng-click="routineReverse = routinePredicate == 'Name' ? !routineReverse : false; routinePredicate = 'Name';">Name</a>
+ <input ng-model="RoutineNameFilter">
+ </th>
+ <th><a href="" ng-click="routineReverse = routinePredicate == 'Allocations' ? !routineReverse : true; routinePredicate = 'Allocations';">Allocations</a></th>
+ </thead>
+ <tbody>
+ <tr ng-repeat="routine in CurrentAllocatingRoutineStats | filter:RoutineNameFilter | orderBy:routinePredicate:routineReverse">
+ <td>
+ <strong>{{routine.Name}}</strong><br />
+ <span class="text-muted">{{routine.File}}:{{routine.Line}}</span>
+ </td>
+ <td>
+ <div class="pull-left" style="width: 210px">
+ <div class="progress" style="width: 200px">
+ <div class="progress-bar progress-bar-danger" style="width: {{routine.AllocationsInterpPercent}}%;">
+ </div>
+ <div class="progress-bar progress-bar-warning" style="width: {{routine.AllocationsSpeshPercent}}%;">
+ </div>
+ <div class="progress-bar progress-bar-success" style="width: {{routine.AllocationsJitPercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{routine.Allocations}}
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="modal-footer">
+ <button type="button" ng-click="modalInstance.close()"
+ class="btn btn-default" data-dismiss="modal">Close</button>
+ </div>
+ </script>
+ </div>
+ </div>
+
+ <div class="container" ng-show="Tab == 'GC'">
+ <div ng-controller="GCController">
+ <table class="table table-striped table-condensed table-bordered">
+ <thead>
+ <th>
+ <a href="" ng-click="reverse = predicate == 'StartTime' ? !reverse : false; predicate = 'StartTime';">Start Time</a>
+ </th>
+ <th>
+ <a href="" ng-click="reverse = predicate == 'Run' ? !reverse : false; predicate = 'Run';">Run</a>
+ </th>
+ <th>Full</th>
+ <th>
+ <a href="" ng-click="reverse = predicate == 'Time' ? !reverse : false; predicate = 'Time';">Time</a>
+ </th>
+ <th>
+ Nursery:
+ <span class="text-danger" tooltip-placement="bottom" tooltip="Bytes retained in the nursery">Retained</span> /
+ <span class="text-warning" tooltip-placement="bottom" tooltip="Bytes promoted to gen2 and now available in nursery">Promoted</span> /
+ <span class="text-success" tooltip-placement="bottom" tooltip="Bytes released and now availabe in nursery">Freed</span>
+ </th>
+ </thead>
+ <tbody>
+ <tr ng-repeat="gc in GCs | orderBy:predicate:reverse">
+ <td>{{gc.StartTime}}ms</td>
+ <td><strong>{{gc.Run}}</strong></td>
+ <td>
+ <span class="text-success" ng-show="gc.Full">
+ <span class="glyphicon glyphicon-star"></span>
+ </span>
+ </td>
+ <td>
+ <div class="pull-left" style="width: 210px">
+ <div class="progress" style="width: 200px">
+ <div class="progress-bar" role="progressbar" style="width: {{gc.TimePercent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{gc.Time}}ms
+ </div>
+ </td>
+ <td>
+ <div class="pull-left" style="width: 210px">
+ <div class="progress" style="width: 200px">
+ <div class="progress-bar progress-bar-danger" style="width: {{gc.RetainedPercent}}%">
+ </div>
+ <div class="progress-bar progress-bar-warning" style="width: {{gc.PromotedPercent}}%">
+ </div>
+ <div class="progress-bar progress-bar-success" style="width: {{gc.ClearedPercent}}%">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{gc.RetainedKilobytes}}KB /
+ {{gc.PromotedKilobytes}}KB /
+ {{gc.ClearedKilobytes}}KB ...
+ <small>{{gc.Gen2Roots}} gen2 roots</small>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+
+ <div class="container" ng-show="Tab == 'OSR/Deopt'">
+ <div ng-controller="OSRDeoptController">
+ <h3>OSR</h3>
+ <p>On Stack Replacement detects routines containing hot loops that are
+ being interpreted, and replaces them with specialized or JIT-compiled
+ code.</p>
+ <table class="table table-striped table-condensed table-bordered" ng-show="OSRs.length > 0">
+ <thead>
+ <th>
+ Routine
+ </th>
+ <th>On Stack Replacements</th>
+ </thead>
+ <tbody>
+ <tr ng-repeat="osr in OSRs | orderBy:predicate:reverse">
+ <td>
+ <strong>{{osr.Name}}</strong><br />
+ <span class="text-muted">{{osr.File}}:{{osr.Line}}</span>
+ </td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar" role="progressbar" style="width: {{osr.Percent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{osr.Count}}
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <p ng-show="OSRs.length == 0">
+ <em>No OSR was performed during this profile.</em>
+ </p>
+
+ <h3>Local Deoptimization</h3>
+ <p>Local deoptimization happens when a guard in specialized or JIT-compiled
+ code fails. Since the code was produced assuming the guard would hold,
+ the VM falls back to running the safe, but slower, interpreted code.</p>
+ <table class="table table-striped table-condensed table-bordered" ng-show="DeoptOnes.length > 0">
+ <thead>
+ <th>
+ Routine
+ </th>
+ <th>Deoptimizations</th>
+ </thead>
+ <tbody>
+ <tr ng-repeat="deopt in DeoptOnes | orderBy:predicate:reverse">
+ <td>
+ <strong>{{deopt.Name}}</strong><br />
+ <span class="text-muted">{{deopt.File}}:{{deopt.Line}}</span>
+ </td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar" role="progressbar" style="width: {{deopt.Percent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{deopt.Count}}
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <p ng-show="DeoptOnes.length == 0">
+ <em>No local deoptimizations occurred during this profile.</em>
+ </p>
+
+ <h3>Global Deoptimization</h3>
+ <p>Global deoptimization happens when an event occurs that renders
+ all currently type-specialized or JIT-compiled code on the call
+ stack potentially invalid. Mixins - changing the type of an object
+ in place - are a common reason.</p>
+ <table class="table table-striped table-condensed table-bordered" ng-show="DeoptAlls.length > 0">
+ <thead>
+ <th>
+ Routine
+ </th>
+ <th>Deoptimizations</th>
+ </thead>
+ <tbody>
+ <tr ng-repeat="deopt in DeoptAlls | orderBy:predicate:reverse">
+ <td>
+ <strong>{{deopt.Name}}</strong><br />
+ <span class="text-muted">{{deopt.File}}:{{deopt.Line}}</span>
+ </td>
+ <td>
+ <div class="pull-left" style="width: 310px">
+ <div class="progress" style="width: 300px">
+ <div class="progress-bar" role="progressbar" style="width: {{deopt.Percent}}%;">
+ </div>
+ </div>
+ </div>
+ <div>
+ {{deopt.Count}}
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <p ng-show="DeoptAlls.length == 0">
+ <em>No global deoptimizations occurred during this profile.</em>
+ </p>
+
+ </div>
+ </div>
+
+ <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/2.2.0/ui-bootstrap-tpls.js"></script>
+ <script>
+ var rawData = JSON.parse('[{"99":{"name":"STORE_AT_KEY","line":49,"file":"SETTING::src/core/Hash.pm6"},"98":{"name":"STORE_AT_KEY","line":48,"file":"SETTING::src/core/Hash.pm6"},"97":{"name":"pull-one","line":2723,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"96":{"name":"SET-SELF","line":2711,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"95":"Rakudo::Iterator::ReifiedListIterator","94":{"name":"new","line":2721,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"93":{"name":"ReifiedList","line":2790,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"92":{"name":"STORE","line":76,"file":"SETTING::src/core/Hash.pm6"},"91":{"name":"day2-pt1","line":6,"file":"day2.p6"},"90":{"name":"done","line":628,"file":"SETTING::src/core/List.pm6"},"9":"BOOTHash","89":{"name":"fully-reified","line":172,"file":"SETTING::src/core/List.pm6"},"88":{"name":"assign-scalar-no-whence-no-typecheck","line":4151,"file":"gen/moar/BOOTSTRAP.nqp"},"87":{"name":"of","line":1147,"file":"gen/moar/BOOTSTRAP.nqp"},"86":{"name":"","line":4192,"file":"gen/moar/BOOTSTRAP.nqp"},"85":{"name":"push","line":31,"file":"SETTING::src/core/Array.pm6"},"84":{"name":"push","line":20,"file":"SETTING::src/core/IterationBuffer.pm6"},"83":{"name":"sink","line":728,"file":"SETTING::src/core/List.pm6"},"82":{"name":"is-empty","line":48,"file":"SETTING::src/core/Encoding/Decoder/Builtin.pm6"},"81":{"name":"last","line":76,"file":"SETTING::src/core/control.pm6"},"80":"Str","8":{"name":"lines","line":501,"file":"SETTING::src/core/IO/Handle.pm6"},"79":{"name":"add-bytes","line":18,"file":"SETTING::src/core/Encoding/Decoder/Builtin.pm6"},"78":{"name":"elems","line":117,"file":"SETTING::src/core/Buf.pm6"},"77":"Buf[uint8]","76":{"name":"new","line":37,"file":"SETTING::src/core/Buf.pm6"},"75":{"name":"new","line":112,"file":"SETTING::src/core/Mu.pm6"},"74":{"name":"","line":1828,"file":"gen/moar/Metamodel.nqp"},"73":"BOOTStr","72":{"name":"find_method","line":1817,"file":"gen/moar/Metamodel.nqp"},"71":{"name":"READ","line":251,"file":"SETTING::src/core/IO/Handle.pm6"},"70":{"name":"","line":263,"file":"SETTING::src/core/IO/Handle.pm6"},"7":{"name":"DYNAMIC","line":33,"file":"SETTING::src/core/stubs.pm6"},"69":{"name":"EOF","line":247,"file":"SETTING::src/core/IO/Handle.pm6"},"68":{"name":"get-line-slow-path","line":260,"file":"SETTING::src/core/IO/Handle.pm6"},"67":{"name":"defined","line":108,"file":"SETTING::src/core/Mu.pm6"},"66":{"name":"sink","line":13,"file":"SETTING::src/core/Mu.pm6"},"65":{"name":"get","line":255,"file":"SETTING::src/core/IO/Handle.pm6"},"64":{"name":"consume-line-chars","line":43,"file":"SETTING::src/core/Encoding/Decoder/Builtin.pm6"},"63":{"name":"push-all","line":432,"file":"SETTING::src/core/IO/Handle.pm6"},"62":{"name":"is-lazy","line":114,"file":"SETTING::src/core/Iterator.pm6"},"61":{"name":"push-until-lazy","line":69,"file":"SETTING::src/core/Iterator.pm6"},"60":{"name":"reify-until-lazy","line":99,"file":"SETTING::src/core/List.pm6"},"6":{"name":"parse-input","line":3,"file":"/home/matias/Workspace/deprecated/advent-of-code/2018/lib/Utils.pm6 (Utils)"},"59":{"name":"push-until-lazy","line":633,"file":"SETTING::src/core/List.pm6"},"58":"Array::ArrayReificationTarget","57":{"name":"new","line":22,"file":"SETTING::src/core/Array.pm6"},"56":{"name":"SET-SELF","line":593,"file":"SETTING::src/core/List.pm6"},"55":"List::Todo","54":{"name":"new","line":609,"file":"SETTING::src/core/List.pm6"},"53":{"name":"iterator","line":664,"file":"SETTING::src/core/List.pm6"},"52":{"name":"STORE","line":285,"file":"SETTING::src/core/Array.pm6"},"51":{"name":"STORE","line":284,"file":"SETTING::src/core/Array.pm6"},"50":{"name":"nominal","line":86,"file":"gen/moar/Metamodel.nqp"},"5":"Array","49":{"name":"definite","line":95,"file":"gen/moar/Metamodel.nqp"},"48":{"name":"coercive","line":94,"file":"gen/moar/Metamodel.nqp"},"47":{"name":"archetypes","line":3068,"file":"gen/moar/Metamodel.nqp"},"46":{"name":"","line":4068,"file":"gen/moar/BOOTSTRAP.nqp"},"45":"List::Reifier","44":"IterationBuffer","43":{"name":"from-iterator","line":187,"file":"SETTING::src/core/List.pm6"},"42":{"name":"type_check","line":2764,"file":"gen/moar/Metamodel.nqp"},"41":{"name":"iterator","line":18,"file":"SETTING::src/core/Seq.pm6"},"40":{"name":"List","line":42,"file":"SETTING::src/core/Sequence.pm6"},"4":{"name":"<unit>","line":1,"file":"day2.p6"},"39":{"name":"List","line":66,"file":"SETTING::src/core/Any.pm6"},"38":"Seq","37":{"name":"new","line":10,"file":"SETTING::src/core/Seq.pm6"},"36":{"name":"identity","line":3898,"file":"gen/moar/BOOTSTRAP.nqp"},"35":{"name":"decontrv_plugin","line":3930,"file":"gen/moar/BOOTSTRAP.nqp"},"34":"IO::Handle::GetLineFast","33":{"name":"new","line":405,"file":"SETTING::src/core/IO/Handle.pm6"},"32":{"name":"LINES-ITERATOR","line":493,"file":"SETTING::src/core/IO/Handle.pm6"},"31":{"name":"lines","line":510,"file":"SETTING::src/core/IO/Handle.pm6"},"30":{"name":"add_to_cache","line":2879,"file":"gen/moar/BOOTSTRAP.nqp"},"3":"BOOTArray","29":{"name":"handle_optional","line":627,"file":"gen/moar/BOOTSTRAP.nqp"},"28":{"name":"","line":339,"file":"gen/moar/BOOTSTRAP.nqp"},"27":"Scalar","26":{"name":"bind_one_param","line":201,"file":"gen/moar/BOOTSTRAP.nqp"},"25":"Hash","249":{"name":"","line":1838,"file":"gen/moar/stage2/NQPHLL.nqp"},"248":{"name":"","line":-1,"file":"/home/matias/.rakudobrew/moar-master/install/share/nqp/lib/NQPHLL.moarvm"},"247":"BOOTException","246":{"name":"throw","line":53,"file":"SETTING::src/core/Exception.pm6"},"245":{"name":"archetypes","line":3678,"file":"gen/moar/Metamodel.nqp"},"244":{"name":"BUILDALL","line":2256,"file":"SETTING::src/core/Exception.pm6"},"243":"X::TypeCheck::Binding::Parameter","242":{"name":"","line":2726,"file":"SETTING::src/core/Exception.pm6"},"241":{"name":"","line":326,"file":"gen/moar/BOOTSTRAP.nqp"},"240":{"name":"","line":319,"file":"gen/moar/BOOTSTRAP.nqp"},"24":"BOOTContext","239":{"name":"","line":314,"file":"gen/moar/BOOTSTRAP.nqp"},"238":{"name":"bind","line":919,"file":"gen/moar/BOOTSTRAP.nqp"},"237":{"name":"","line":3654,"file":"gen/moar/BOOTSTRAP.nqp"},"236":{"name":"wolo","line":16,"file":"day2.p6"},"235":{"name":"item","line":570,"file":"SETTING::src/core/Mu.pm6"},"234":{"name":"","line":1610,"file":"gen/moar/BOOTSTRAP.nqp"},"233":{"name":"BUILD","line":10,"file":"SETTING::src/core/RaceSeq.pm6"},"232":{"name":"BUILDALL","line":-1,"file":"/home/matias/.rakudobrew/moar-master/install/share/perl6/runtime/CORE.setting.moarvm"},"231":{"name":"BUILD","line":8,"file":"SETTING::src/core/Rakudo/Internals/HyperIteratorBatcher.pm6"},"230":{"name":"BUILDALL","line":-1,"file":"/home/matias/.rakudobrew/moar-master/install/share/perl6/runtime/CORE.setting.moarvm"},"23":{"name":"bind","line":660,"file":"gen/moar/BOOTSTRAP.nqp"},"229":{"name":"infix:«<=»","line":401,"file":"SETTING::src/core/Int.pm6"},"228":{"name":"infix:«<=»","line":316,"file":"SETTING::src/core/Numeric.pm6"},"227":{"name":"TWEAK","line":9,"file":"SETTING::src/core/HyperConfiguration.pm6"},"226":{"name":"BUILDALL","line":-1,"file":"/home/matias/.rakudobrew/moar-master/install/share/perl6/runtime/CORE.setting.moarvm"},"225":"RaceSeq","224":"Rakudo::Internals::HyperIteratorBatcher","223":"HyperConfiguration","222":{"name":"new","line":113,"file":"SETTING::src/core/Mu.pm6"},"221":{"name":"race","line":125,"file":"SETTING::src/core/Iterable.pm6"},"220":{"name":"SET-SELF","line":2162,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"22":{"name":"","line":981,"file":"gen/moar/BOOTSTRAP.nqp"},"219":"Rakudo::Iterator::ListIndexes","218":{"name":"new","line":2169,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"217":{"name":"ListIndexes","line":2192,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"216":{"name":"SET-SELF","line":761,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"215":"Rakudo::Iterator::Combinations","214":{"name":"new","line":771,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"213":{"name":"infix:«<»","line":394,"file":"SETTING::src/core/Int.pm6"},"212":{"name":"infix:«<»","line":312,"file":"SETTING::src/core/Numeric.pm6"},"211":{"name":"infix:«>»","line":408,"file":"SETTING::src/core/Int.pm6"},"210":{"name":"infix:«>»","line":322,"file":"SETTING::src/core/Numeric.pm6"},"21":{"name":"is_bindable","line":975,"file":"gen/moar/BOOTSTRAP.nqp"},"209":{"name":"Combinations","line":817,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"208":{"name":"elems","line":470,"file":"SETTING::src/core/List.pm6"},"207":{"name":"elems","line":86,"file":"SETTING::src/core/Any.pm6"},"206":{"name":"combinations","line":1175,"file":"SETTING::src/core/List.pm6"},"205":{"name":"combinations","line":1142,"file":"SETTING::src/core/List.pm6"},"204":{"name":"day2-pt2","line":23,"file":"day2.p6"},"203":{"name":"WRITE","line":612,"file":"SETTING::src/core/IO/Handle.pm6"},"202":"utf8","201":{"name":"encode-chars","line":22,"file":"SETTING::src/core/Encoding/Encoder/Builtin.pm6"},"200":{"name":"print","line":653,"file":"SETTING::src/core/IO/Handle.pm6"},"20":{"name":"is_narrower","line":2281,"file":"gen/moar/BOOTSTRAP.nqp"},"2":"BOOTCode","199":{"name":"print","line":652,"file":"SETTING::src/core/IO/Handle.pm6"},"198":{"name":"nl-out","line":4,"file":"SETTING::src/core/IO/Handle.pm6"},"197":{"name":"Str","line":49,"file":"SETTING::src/core/Int.pm6"},"196":{"name":"Str","line":546,"file":"SETTING::src/core/Mu.pm6"},"195":{"name":"gist","line":32,"file":"SETTING::src/core/Numeric.pm6"},"194":{"name":"gist","line":602,"file":"SETTING::src/core/Mu.pm6"},"193":{"name":"say","line":12,"file":"SETTING::src/core/io_operators.pm6"},"192":{"name":"say","line":10,"file":"SETTING::src/core/io_operators.pm6"},"191":{"name":"infix:<*>","line":290,"file":"SETTING::src/core/Int.pm6"},"190":{"name":"infix:<*>","line":213,"file":"SETTING::src/core/Numeric.pm6"},"19":"BOOTInt","189":"IntAttrRef","188":{"name":"DESTROY","line":34,"file":"SETTING::src/core/Failure.pm6"},"187":{"name":"DESTROY","line":828,"file":"SETTING::src/core/IO/Handle.pm6"},"186":{"name":"destroyers","line":475,"file":"gen/moar/Metamodel.nqp"},"185":{"name":"","line":3726,"file":"gen/moar/BOOTSTRAP.nqp"},"184":{"name":"","line":11,"file":"day2.p6"},"183":{"name":"postfix:<++>","line":241,"file":"SETTING::src/core/Int.pm6"},"182":{"name":"postfix:<++>","line":479,"file":"SETTING::src/core/Any.pm6"},"181":{"name":"AT-KEY","line":35,"file":"SETTING::src/core/Hash.pm6"},"180":{"name":"AT-KEY","line":380,"file":"SETTING::src/core/Any.pm6"},"18":"BOOTIntArray","179":{"name":"postcircumfix:<{ }>","line":6,"file":"SETTING::src/core/hash_slice.pm6"},"178":{"name":"postcircumfix:<{ }>","line":3,"file":"SETTING::src/core/hash_slice.pm6"},"177":{"name":"first-result","line":990,"file":"SETTING::src/core/Any-iterable-methods.pm6"},"176":{"name":"infix:<==>","line":384,"file":"SETTING::src/core/Int.pm6"},"175":{"name":"infix:<==>","line":287,"file":"SETTING::src/core/Numeric.pm6"},"174":{"name":"value","line":1,"file":"SETTING::src/core/Pair.pm6"},"173":{"name":"","line":10,"file":"day2.p6"},"172":{"name":"pull-one","line":2276,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"171":"BOOTIter","170":"Rakudo::Iterator::Mappy-values","17":"NQPArrayIter","169":{"name":"Mappy-values","line":2290,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"168":{"name":"iterator","line":141,"file":"SETTING::src/core/Baggy.pm6"},"167":{"name":"iterator","line":47,"file":"SETTING::src/core/Mu.pm6"},"166":"IntLexRef","165":{"name":"","line":1147,"file":"SETTING::src/core/Any-iterable-methods.pm6"},"164":{"name":"first","line":1125,"file":"SETTING::src/core/Any-iterable-methods.pm6"},"163":{"name":"pull-one","line":1555,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"162":{"name":"Empty","line":1563,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"161":{"name":"SET-SELF","line":72,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"160":{"name":"find_private_method","line":621,"file":"gen/moar/Metamodel.nqp"},"16":{"name":"","line":2251,"file":"gen/moar/BOOTSTRAP.nqp"},"159":{"name":"","line":3853,"file":"gen/moar/BOOTSTRAP.nqp"},"158":"Map::Iterate","157":{"name":"new","line":83,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"156":{"name":"iterator","line":199,"file":"SETTING::src/core/Map.pm6"},"155":{"name":"STORE","line":75,"file":"SETTING::src/core/Hash.pm6"},"154":{"name":"first","line":1115,"file":"SETTING::src/core/Any-iterable-methods.pm6"},"153":"WhateverCode","152":{"name":"","line":1997,"file":"gen/moar/BOOTSTRAP.nqp"},"151":{"name":"archetypes","line":2645,"file":"gen/moar/Metamodel.nqp"},"150":{"name":"base_type","line":3944,"file":"gen/moar/Metamodel.nqp"},"15":"Int","149":{"name":"check_instantiated","line":3939,"file":"gen/moar/Metamodel.nqp"},"148":{"name":"definite","line":3949,"file":"gen/moar/Metamodel.nqp"},"147":{"name":"archetypes","line":3902,"file":"gen/moar/Metamodel.nqp"},"146":{"name":"SET-SELF","line":5,"file":"SETTING::src/core/QuantHash.pm6"},"145":"Pair","144":{"name":"new","line":8,"file":"SETTING::src/core/Pair.pm6"},"143":"ValueObjAt","142":{"name":"WHICH","line":23,"file":"SETTING::src/core/Str.pm6"},"141":{"name":"WHICH","line":27,"file":"SETTING::src/core/Mu.pm6"},"140":{"name":"ADD-ITERATOR-TO-BAG","line":592,"file":"SETTING::src/core/Rakudo/QuantHash.pm6"},"14":"NQPArray","139":"Rakudo::Internals::IterationSet","138":"Bag","137":{"name":"create-from-iterator","line":97,"file":"SETTING::src/core/Baggy.pm6"},"136":{"name":"new","line":110,"file":"SETTING::src/core/Baggy.pm6"},"135":{"name":"pretending_to_be","line":186,"file":"gen/moar/Metamodel.nqp"},"134":{"name":"pull-one","line":355,"file":"SETTING::src/core/Str.pm6"},"133":{"name":"push-exactly","line":28,"file":"SETTING::src/core/Iterator.pm6"},"132":{"name":"push-at-least","line":49,"file":"SETTING::src/core/Iterator.pm6"},"131":{"name":"reify-at-least","line":40,"file":"SETTING::src/core/List.pm6"},"130":{"name":"pull-one","line":611,"file":"SETTING::src/core/List.pm6"},"13":{"name":"","line":2595,"file":"gen/moar/BOOTSTRAP.nqp"},"129":{"name":"push-all","line":54,"file":"SETTING::src/core/Iterable.pm6"},"128":{"name":"is-lazy","line":178,"file":"SETTING::src/core/List.pm6"},"127":{"name":"is-lazy","line":662,"file":"SETTING::src/core/List.pm6"},"126":{"name":"is-lazy","line":77,"file":"SETTING::src/core/Iterable.pm6"},"125":"ContainerDescriptor","124":{"name":"reification-target","line":330,"file":"SETTING::src/core/Array.pm6"},"123":"Slip","122":{"name":"Slip","line":43,"file":"SETTING::src/core/Sequence.pm6"},"121":{"name":"Slip","line":68,"file":"SETTING::src/core/Any.pm6"},"120":"Iterable::Flat","12":"List","119":{"name":"new","line":24,"file":"SETTING::src/core/Iterable.pm6"},"118":{"name":"flat","line":79,"file":"SETTING::src/core/Iterable.pm6"},"117":{"name":"cache","line":24,"file":"SETTING::src/core/Sequence.pm6"},"116":{"name":"from-slurpy-flat","line":280,"file":"SETTING::src/core/List.pm6"},"115":{"name":"bag","line":7,"file":"SETTING::src/core/set_operators.pm6"},"114":{"name":"bag","line":5,"file":"SETTING::src/core/set_operators.pm6"},"113":{"name":"SET-SELF","line":346,"file":"SETTING::src/core/Str.pm6"},"112":"Str::CombAll","111":{"name":"new","line":354,"file":"SETTING::src/core/Str.pm6"},"110":{"name":"comb","line":381,"file":"SETTING::src/core/Str.pm6"},"11":{"name":"","line":3547,"file":"gen/moar/BOOTSTRAP.nqp"},"109":{"name":"comb","line":340,"file":"SETTING::src/core/Str.pm6"},"108":{"name":"","line":8,"file":"day2.p6"},"107":{"name":"pull-one","line":2628,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"106":"Block","105":{"name":"","line":2057,"file":"gen/moar/BOOTSTRAP.nqp"},"104":{"name":"SET-SELF","line":2614,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"103":"Rakudo::Iterator::ReifiedArrayIterator","102":{"name":"new","line":2622,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"101":{"name":"ReifiedArray","line":2700,"file":"SETTING::src/core/Rakudo/Iterator.pm6"},"100":{"name":"iterator","line":183,"file":"SETTING::src/core/Array.pm6"},"10":"CallCapture","1":{"name":"<unit-outer>","line":1,"file":"day2.p6"},"0":{"name":"","line":1678,"file":"gen/moar/stage2/NQPHLL.nqp"}},{"total_time":174177,"thread":1,"start_time":0,"spesh_time":103474,"parent":0,"gcs":[{"time":8949,"start_time":48631,"sequence":1,"retained_bytes":67760,"responsible":1,"promoted_bytes_unmanaged":1321894,"promoted_bytes":1020952,"gen2_roots":8422,"full":0,"cleared_bytes":3105584},{"time":5173,"start_time":121747,"sequence":2,"retained_bytes":9744,"responsible":1,"promoted_bytes_unmanaged":57108,"promoted_bytes":61248,"gen2_roots":798,"full":0,"cleared_bytes":4123296}],"call_graph":{"inclusive_time":121826,"id":"0","highest_child_id":819,"first_entry_time":0,"exclusive_time":12,"entries":1,"callees":[{"inclusive_time":121813,"id":"1","highest_child_id":819,"first_entry_time":12,"exclusive_time":36,"entries":1,"callees":[{"inclusive_time":121776,"id":"4","highest_child_id":819,"first_entry_time":48,"exclusive_time":122,"entries":1,"callees":[{"inclusive_time":1198,"id":"6","highest_child_id":51,"first_entry_time":79,"exclusive_time":111,"entries":1,"callees":[{"inclusive_time":15,"id":"7","highest_child_id":4,"first_entry_time":114,"exclusive_time":15,"entries":1},{"inclusive_time":921,"id":"8","highest_child_id":28,"first_entry_time":151,"exclusive_time":145,"entries":1,"callees":[{"inclusive_time":1,"id":"11","highest_child_id":6,"first_entry_time":158,"exclusive_time":1,"entries":1,"allocations":[{"id":"12","count":1}]},{"inclusive_time":559,"id":"13","highest_child_id":16,"first_entry_time":296,"exclusive_time":137,"entries":1,"callees":[{"inclusive_time":99,"id":"16","highest_child_id":9,"first_entry_time":404,"exclusive_time":95,"entries":1,"callees":[{"inclusive_time":4,"id":"20","highest_child_id":9,"first_entry_time":494,"exclusive_time":4,"entries":2}],"allocations":[{"id":"14","count":12},{"id":"17","count":3},{"id":"9","count":4},{"id":"18","count":4},{"id":"19","count":2}]},{"inclusive_time":320,"id":"21","highest_child_id":15,"first_entry_time":525,"exclusive_time":31,"entries":1,"callees":[{"inclusive_time":288,"id":"22","highest_child_id":15,"first_entry_time":555,"exclusive_time":101,"entries":1,"callees":[{"inclusive_time":186,"id":"23","highest_child_id":15,"first_entry_time":656,"exclusive_time":153,"entries":1,"callees":[{"inclusive_time":32,"id":"26","highest_child_id":14,"first_entry_time":792,"exclusive_time":30,"entries":3,"callees":[{"inclusive_time":1,"id":"28","highest_child_id":14,"first_entry_time":811,"exclusive_time":1,"entries":1}],"allocations":[{"id":"2","count":12},{"id":"27","count":1}]},{"inclusive_time":1,"id":"29","highest_child_id":15,"first_entry_time":830,"exclusive_time":1,"entries":1}],"allocations":[{"id":"24","count":1},{"id":"25","count":1}]}]}]},{"inclusive_time":2,"id":"30","highest_child_id":16,"first_entry_time":853,"exclusive_time":2,"entries":1}],"allocations":[{"id":"2","count":1},{"id":"14","count":2},{"id":"9","count":1},{"id":"10","count":1},{"id":"15","count":1}]},{"inclusive_time":214,"id":"31","highest_child_id":28,"first_entry_time":857,"exclusive_time":45,"entries":1,"callees":[{"inclusive_time":163,"id":"32","highest_child_id":23,"first_entry_time":885,"exclusive_time":131,"entries":1,"callees":[{"inclusive_time":30,"id":"33","highest_child_id":21,"first_entry_time":1015,"exclusive_time":27,"entries":1,"callees":[{"inclusive_time":2,"id":"35","highest_child_id":20,"first_entry_time":1036,"exclusive_time":2,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":21,"first_entry_time":1045,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"34","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":22,"first_entry_time":1046,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":23,"first_entry_time":1048,"exclusive_time":0,"entries":1}],"allocations":[{"id":"27","count":1},{"id":"9","count":1}]},{"inclusive_time":4,"id":"37","highest_child_id":26,"first_entry_time":1065,"exclusive_time":3,"entries":1,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":25,"first_entry_time":1067,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":26,"first_entry_time":1069,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"38","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":27,"first_entry_time":1070,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":28,"first_entry_time":1072,"exclusive_time":0,"entries":1}],"allocations":[{"id":"27","count":1},{"id":"9","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":117,"id":"39","highest_child_id":44,"first_entry_time":1083,"exclusive_time":20,"entries":1,"callees":[{"inclusive_time":0,"id":"11","highest_child_id":30,"first_entry_time":1084,"exclusive_time":0,"entries":1,"allocations":[{"id":"12","count":1}]},{"inclusive_time":36,"id":"13","highest_child_id":34,"first_entry_time":1088,"exclusive_time":9,"entries":1,"callees":[{"inclusive_time":25,"id":"16","highest_child_id":33,"first_entry_time":1091,"exclusive_time":21,"entries":1,"callees":[{"inclusive_time":3,"id":"20","highest_child_id":33,"first_entry_time":1106,"exclusive_time":3,"entries":2}],"allocations":[{"id":"14","count":12},{"id":"17","count":3},{"id":"9","count":4},{"id":"18","count":4},{"id":"19","count":2}]},{"inclusive_time":1,"id":"30","highest_child_id":34,"first_entry_time":1123,"exclusive_time":1,"entries":1}],"allocations":[{"id":"2","count":1},{"id":"14","count":2},{"id":"9","count":1}]},{"inclusive_time":60,"id":"40","highest_child_id":44,"first_entry_time":1140,"exclusive_time":31,"entries":1,"callees":[{"inclusive_time":22,"id":"41","highest_child_id":39,"first_entry_time":1158,"exclusive_time":20,"entries":1,"callees":[{"inclusive_time":1,"id":"42","highest_child_id":37,"first_entry_time":1176,"exclusive_time":1,"entries":1},{"inclusive_time":1,"id":"35","highest_child_id":38,"first_entry_time":1178,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":39,"first_entry_time":1180,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":5,"id":"43","highest_child_id":42,"first_entry_time":1193,"exclusive_time":4,"entries":1,"callees":[{"inclusive_time":0,"id":"35","highest_child_id":41,"first_entry_time":1197,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":42,"first_entry_time":1198,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"44","count":1},{"id":"12","count":1},{"id":"45","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":43,"first_entry_time":1199,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":44,"first_entry_time":1201,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":0,"id":"35","highest_child_id":45,"first_entry_time":1203,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":46,"first_entry_time":1204,"exclusive_time":0,"entries":2},{"inclusive_time":31,"id":"46","highest_child_id":51,"first_entry_time":1246,"exclusive_time":28,"entries":1,"callees":[{"inclusive_time":1,"id":"47","highest_child_id":48,"first_entry_time":1253,"exclusive_time":1,"entries":3},{"inclusive_time":1,"id":"48","highest_child_id":49,"first_entry_time":1260,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"49","highest_child_id":50,"first_entry_time":1268,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"50","highest_child_id":51,"first_entry_time":1275,"exclusive_time":0,"entries":1}]}]},{"inclusive_time":16767,"id":"51","highest_child_id":140,"first_entry_time":1291,"exclusive_time":25,"entries":1,"callees":[{"inclusive_time":0,"id":"11","highest_child_id":53,"first_entry_time":1293,"exclusive_time":0,"entries":1,"allocations":[{"id":"12","count":1}]},{"inclusive_time":12,"id":"13","highest_child_id":55,"first_entry_time":1297,"exclusive_time":11,"entries":1,"callees":[{"inclusive_time":1,"id":"30","highest_child_id":55,"first_entry_time":1307,"exclusive_time":1,"entries":1}],"allocations":[{"id":"2","count":1},{"id":"14","count":2},{"id":"9","count":1}]},{"inclusive_time":16728,"id":"52","highest_child_id":140,"first_entry_time":1330,"exclusive_time":64,"entries":1,"callees":[{"inclusive_time":34,"id":"53","highest_child_id":65,"first_entry_time":1345,"exclusive_time":13,"entries":1,"callees":[{"inclusive_time":21,"id":"54","highest_child_id":63,"first_entry_time":1356,"exclusive_time":14,"entries":1,"callees":[{"inclusive_time":5,"id":"56","highest_child_id":61,"first_entry_time":1370,"exclusive_time":4,"entries":1,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":60,"first_entry_time":1372,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":61,"first_entry_time":1375,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":62,"first_entry_time":1376,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":63,"first_entry_time":1377,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"55","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":64,"first_entry_time":1378,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":65,"first_entry_time":1379,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":4,"id":"57","highest_child_id":68,"first_entry_time":1391,"exclusive_time":3,"entries":1,"callees":[{"inclusive_time":0,"id":"35","highest_child_id":67,"first_entry_time":1393,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":68,"first_entry_time":1395,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"58","count":1}]},{"inclusive_time":16622,"id":"59","highest_child_id":138,"first_entry_time":1431,"exclusive_time":217,"entries":1,"callees":[{"inclusive_time":15993,"id":"60","highest_child_id":128,"first_entry_time":1461,"exclusive_time":18,"entries":1,"callees":[{"inclusive_time":15973,"id":"61","highest_child_id":125,"first_entry_time":1473,"exclusive_time":39,"entries":1,"callees":[{"inclusive_time":0,"id":"62","highest_child_id":72,"first_entry_time":1479,"exclusive_time":0,"entries":1,"allocations":[{"id":"9","count":1}]},{"inclusive_time":15931,"id":"63","highest_child_id":123,"first_entry_time":1510,"exclusive_time":812,"entries":1,"callees":[{"inclusive_time":556,"id":"64","highest_child_id":81,"first_entry_time":1532,"exclusive_time":481,"entries":251,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":75,"first_entry_time":1538,"exclusive_time":1,"entries":1},{"inclusive_time":65,"id":"36","highest_child_id":76,"first_entry_time":1540,"exclusive_time":65,"entries":502},{"inclusive_time":7,"id":"46","highest_child_id":81,"first_entry_time":1542,"exclusive_time":5,"entries":1,"callees":[{"inclusive_time":0,"id":"47","highest_child_id":78,"first_entry_time":1543,"exclusive_time":0,"entries":3},{"inclusive_time":0,"id":"48","highest_child_id":79,"first_entry_time":1544,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"49","highest_child_id":80,"first_entry_time":1546,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"50","highest_child_id":81,"first_entry_time":1547,"exclusive_time":0,"entries":1}]}],"allocations":[{"id":"9","count":251}]},{"inclusive_time":14225,"id":"65","highest_child_id":119,"first_entry_time":1594,"exclusive_time":911,"entries":251,"callees":[{"inclusive_time":73,"id":"66","highest_child_id":83,"first_entry_time":1607,"exclusive_time":73,"entries":251,"allocations":[{"id":"9","count":251}]},{"inclusive_time":498,"id":"64","highest_child_id":85,"first_entry_time":1610,"exclusive_time":442,"entries":251,"callees":[{"inclusive_time":55,"id":"36","highest_child_id":85,"first_entry_time":1615,"exclusive_time":55,"entries":502}],"allocations":[{"id":"9","count":251}]},{"inclusive_time":88,"id":"67","highest_child_id":86,"first_entry_time":1627,"exclusive_time":88,"entries":251,"allocations":[{"id":"9","count":251}]},{"inclusive_time":12612,"id":"68","highest_child_id":117,"first_entry_time":1655,"exclusive_time":741,"entries":251,"callees":[{"inclusive_time":374,"id":"69","highest_child_id":90,"first_entry_time":1671,"exclusive_time":337,"entries":251,"callees":[{"inclusive_time":2,"id":"35","highest_child_id":89,"first_entry_time":1677,"exclusive_time":2,"entries":1},{"inclusive_time":34,"id":"36","highest_child_id":90,"first_entry_time":1681,"exclusive_time":34,"entries":251}],"allocations":[{"id":"9","count":251}]},{"inclusive_time":11460,"id":"70","highest_child_id":115,"first_entry_time":1727,"exclusive_time":1356,"entries":251,"callees":[{"inclusive_time":8403,"id":"71","highest_child_id":103,"first_entry_time":1746,"exclusive_time":3325,"entries":251,"callees":[{"inclusive_time":546,"id":"72","highest_child_id":93,"first_entry_time":1779,"exclusive_time":546,"entries":251,"allocations":[{"id":"73","count":251},{"id":"2","count":217}]},{"inclusive_time":4472,"id":"74","highest_child_id":101,"first_entry_time":1800,"exclusive_time":364,"entries":251,"callees":[{"inclusive_time":4108,"id":"75","highest_child_id":101,"first_entry_time":1818,"exclusive_time":1291,"entries":251,"callees":[{"inclusive_time":125,"id":"11","highest_child_id":96,"first_entry_time":1820,"exclusive_time":125,"entries":251,"allocations":[{"id":"12","count":251}]},{"inclusive_time":2367,"id":"13","highest_child_id":98,"first_entry_time":1826,"exclusive_time":2198,"entries":251,"callees":[{"inclusive_time":168,"id":"30","highest_child_id":98,"first_entry_time":1843,"exclusive_time":168,"entries":251}],"allocations":[{"id":"2","count":501},{"id":"14","count":502},{"id":"9","count":251}]},{"inclusive_time":324,"id":"76","highest_child_id":101,"first_entry_time":1857,"exclusive_time":286,"entries":251,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":100,"first_entry_time":1861,"exclusive_time":1,"entries":1},{"inclusive_time":36,"id":"36","highest_child_id":101,"first_entry_time":1864,"exclusive_time":36,"entries":251}],"allocations":[{"id":"9","count":251},{"id":"77","count":251}]}],"allocations":[{"id":"9","count":251},{"id":"3","count":251},{"id":"10","count":753}]}],"allocations":[{"id":"14","count":251},{"id":"9","count":251}]},{"inclusive_time":2,"id":"35","highest_child_id":102,"first_entry_time":1904,"exclusive_time":2,"entries":1},{"inclusive_time":55,"id":"36","highest_child_id":103,"first_entry_time":1907,"exclusive_time":55,"entries":251}],"allocations":[{"id":"9","count":251}]},{"inclusive_time":249,"id":"78","highest_child_id":104,"first_entry_time":1921,"exclusive_time":249,"entries":251,"allocations":[{"id":"9","count":251},{"id":"15","count":250}]},{"inclusive_time":269,"id":"79","highest_child_id":105,"first_entry_time":1936,"exclusive_time":269,"entries":250,"allocations":[{"id":"9","count":250}]},{"inclusive_time":1044,"id":"64","highest_child_id":108,"first_entry_time":1941,"exclusive_time":975,"entries":250,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":107,"first_entry_time":1951,"exclusive_time":1,"entries":1},{"inclusive_time":66,"id":"36","highest_child_id":108,"first_entry_time":1954,"exclusive_time":66,"entries":500}],"allocations":[{"id":"9","count":250},{"id":"80","count":250}]},{"inclusive_time":121,"id":"81","highest_child_id":109,"first_entry_time":1967,"exclusive_time":121,"entries":251},{"inclusive_time":2,"id":"69","highest_child_id":111,"first_entry_time":17382,"exclusive_time":1,"entries":1,"callees":[{"inclusive_time":0,"id":"36","highest_child_id":111,"first_entry_time":17384,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":12,"id":"82","highest_child_id":114,"first_entry_time":17407,"exclusive_time":8,"entries":1,"callees":[{"inclusive_time":3,"id":"35","highest_child_id":113,"first_entry_time":17415,"exclusive_time":3,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":114,"first_entry_time":17419,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"83","highest_child_id":115,"first_entry_time":17429,"exclusive_time":0,"entries":1,"allocations":[{"id":"9","count":1}]}]},{"inclusive_time":2,"id":"35","highest_child_id":116,"first_entry_time":1973,"exclusive_time":2,"entries":2},{"inclusive_time":33,"id":"36","highest_child_id":117,"first_entry_time":1976,"exclusive_time":33,"entries":251}],"allocations":[{"id":"9","count":251},{"id":"27","count":251},{"id":"2","count":201}]},{"inclusive_time":1,"id":"35","highest_child_id":118,"first_entry_time":1977,"exclusive_time":1,"entries":2},{"inclusive_time":39,"id":"36","highest_child_id":119,"first_entry_time":1979,"exclusive_time":39,"entries":251}],"allocations":[{"id":"9","count":251}]},{"inclusive_time":336,"id":"84","highest_child_id":122,"first_entry_time":1993,"exclusive_time":292,"entries":250,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":121,"first_entry_time":1996,"exclusive_time":1,"entries":1},{"inclusive_time":41,"id":"36","highest_child_id":122,"first_entry_time":1999,"exclusive_time":41,"entries":250}],"allocations":[{"id":"9","count":250}]},{"inclusive_time":0,"id":"83","highest_child_id":123,"first_entry_time":17441,"exclusive_time":0,"entries":1,"allocations":[{"id":"9","count":1}]}],"allocations":[{"id":"27","count":1},{"id":"9","count":1}]},{"inclusive_time":1,"id":"35","highest_child_id":124,"first_entry_time":17443,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":125,"first_entry_time":17445,"exclusive_time":0,"entries":1}],"allocations":[{"id":"27","count":1},{"id":"9","count":1}]},{"inclusive_time":1,"id":"42","highest_child_id":126,"first_entry_time":17449,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"35","highest_child_id":127,"first_entry_time":17453,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":128,"first_entry_time":17454,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"27","count":1},{"id":"15","count":1}]},{"inclusive_time":406,"id":"85","highest_child_id":134,"first_entry_time":17470,"exclusive_time":343,"entries":250,"callees":[{"inclusive_time":17,"id":"86","highest_child_id":133,"first_entry_time":17508,"exclusive_time":14,"entries":1,"callees":[{"inclusive_time":0,"id":"87","highest_child_id":131,"first_entry_time":17517,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"47","highest_child_id":132,"first_entry_time":17519,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"50","highest_child_id":133,"first_entry_time":17522,"exclusive_time":0,"entries":1}]},{"inclusive_time":45,"id":"88","highest_child_id":134,"first_entry_time":17531,"exclusive_time":45,"entries":250}],"allocations":[{"id":"9","count":250},{"id":"27","count":250}]},{"inclusive_time":1,"id":"89","highest_child_id":135,"first_entry_time":18027,"exclusive_time":1,"entries":1,"allocations":[{"id":"9","count":1}]},{"inclusive_time":1,"id":"90","highest_child_id":136,"first_entry_time":18048,"exclusive_time":1,"entries":1,"allocations":[{"id":"9","count":1}]},{"inclusive_time":1,"id":"35","highest_child_id":137,"first_entry_time":18051,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":138,"first_entry_time":18054,"exclusive_time":0,"entries":1}],"allocations":[{"id":"27","count":1},{"id":"9","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":139,"first_entry_time":18056,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":140,"first_entry_time":18058,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"44","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":100446,"id":"91","highest_child_id":700,"first_entry_time":18104,"exclusive_time":570,"entries":1,"callees":[{"inclusive_time":147,"id":"92","highest_child_id":169,"first_entry_time":18142,"exclusive_time":32,"entries":1,"callees":[{"inclusive_time":48,"id":"53","highest_child_id":154,"first_entry_time":18146,"exclusive_time":15,"entries":1,"callees":[{"inclusive_time":32,"id":"93","highest_child_id":152,"first_entry_time":18159,"exclusive_time":12,"entries":1,"callees":[{"inclusive_time":19,"id":"94","highest_child_id":150,"first_entry_time":18171,"exclusive_time":12,"entries":1,"callees":[{"inclusive_time":5,"id":"96","highest_child_id":148,"first_entry_time":18182,"exclusive_time":3,"entries":1,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":147,"first_entry_time":18184,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":148,"first_entry_time":18187,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":149,"first_entry_time":18188,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":150,"first_entry_time":18190,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"95","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":151,"first_entry_time":18191,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":152,"first_entry_time":18192,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":153,"first_entry_time":18193,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":154,"first_entry_time":18195,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"27","count":1}]},{"inclusive_time":2,"id":"97","highest_child_id":155,"first_entry_time":18206,"exclusive_time":2,"entries":3,"allocations":[{"id":"9","count":3}]},{"inclusive_time":58,"id":"98","highest_child_id":165,"first_entry_time":18219,"exclusive_time":17,"entries":1,"callees":[{"inclusive_time":0,"id":"11","highest_child_id":157,"first_entry_time":18221,"exclusive_time":0,"entries":1,"allocations":[{"id":"12","count":1}]},{"inclusive_time":27,"id":"13","highest_child_id":159,"first_entry_time":18225,"exclusive_time":25,"entries":1,"callees":[{"inclusive_time":2,"id":"30","highest_child_id":159,"first_entry_time":18250,"exclusive_time":2,"entries":1}],"allocations":[{"id":"2","count":2},{"id":"14","count":2},{"id":"9","count":1}]},{"inclusive_time":12,"id":"99","highest_child_id":165,"first_entry_time":18265,"exclusive_time":5,"entries":1,"callees":[{"inclusive_time":6,"id":"86","highest_child_id":164,"first_entry_time":18268,"exclusive_time":5,"entries":1,"callees":[{"inclusive_time":0,"id":"87","highest_child_id":162,"first_entry_time":18271,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"47","highest_child_id":163,"first_entry_time":18272,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"50","highest_child_id":164,"first_entry_time":18273,"exclusive_time":0,"entries":1}]},{"inclusive_time":0,"id":"88","highest_child_id":165,"first_entry_time":18276,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"27","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":3,"id":"99","highest_child_id":167,"first_entry_time":18282,"exclusive_time":2,"entries":1,"callees":[{"inclusive_time":0,"id":"88","highest_child_id":167,"first_entry_time":18284,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"27","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":168,"first_entry_time":18287,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":169,"first_entry_time":18289,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":2},{"id":"25","count":1}]},{"inclusive_time":45,"id":"100","highest_child_id":181,"first_entry_time":18307,"exclusive_time":13,"entries":1,"callees":[{"inclusive_time":31,"id":"101","highest_child_id":179,"first_entry_time":18319,"exclusive_time":12,"entries":1,"callees":[{"inclusive_time":17,"id":"102","highest_child_id":177,"first_entry_time":18330,"exclusive_time":12,"entries":1,"callees":[{"inclusive_time":4,"id":"104","highest_child_id":175,"first_entry_time":18341,"exclusive_time":3,"entries":1,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":174,"first_entry_time":18343,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":175,"first_entry_time":18345,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":176,"first_entry_time":18346,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":177,"first_entry_time":18347,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"103","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":178,"first_entry_time":18348,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":179,"first_entry_time":18350,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":180,"first_entry_time":18351,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":181,"first_entry_time":18352,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":1,"id":"105","highest_child_id":182,"first_entry_time":18368,"exclusive_time":1,"entries":1,"allocations":[{"id":"106","count":1},{"id":"2","count":1}]},{"jit_entries":208,"inclusive_time":77,"id":"107","highest_child_id":183,"first_entry_time":18384,"exclusive_time":77,"entries":251,"allocations":[{"id":"9","count":43}]},{"inclusive_time":99072,"id":"108","highest_child_id":635,"first_entry_time":18418,"exclusive_time":3294,"entries":250,"callees":[{"inclusive_time":367,"id":"109","highest_child_id":201,"first_entry_time":18441,"exclusive_time":21,"entries":1,"callees":[{"inclusive_time":0,"id":"11","highest_child_id":186,"first_entry_time":18442,"exclusive_time":0,"entries":1,"allocations":[{"id":"12","count":1}]},{"inclusive_time":172,"id":"13","highest_child_id":190,"first_entry_time":18445,"exclusive_time":35,"entries":1,"callees":[{"inclusive_time":134,"id":"16","highest_child_id":189,"first_entry_time":18449,"exclusive_time":74,"entries":1,"callees":[{"inclusive_time":59,"id":"20","highest_child_id":189,"first_entry_time":18494,"exclusive_time":59,"entries":30}],"allocations":[{"id":"14","count":32},{"id":"17","count":7},{"id":"9","count":12},{"id":"18","count":12},{"id":"19","count":6}]},{"inclusive_time":2,"id":"30","highest_child_id":190,"first_entry_time":18615,"exclusive_time":2,"entries":1}],"allocations":[{"id":"2","count":2},{"id":"14","count":2},{"id":"9","count":1}]},{"inclusive_time":172,"id":"110","highest_child_id":201,"first_entry_time":18635,"exclusive_time":139,"entries":1,"callees":[{"inclusive_time":29,"id":"111","highest_child_id":197,"first_entry_time":18771,"exclusive_time":21,"entries":1,"callees":[{"inclusive_time":7,"id":"113","highest_child_id":195,"first_entry_time":18791,"exclusive_time":5,"entries":1,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":194,"first_entry_time":18795,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":195,"first_entry_time":18798,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":196,"first_entry_time":18799,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":197,"first_entry_time":18800,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"112","count":1}]},{"inclusive_time":2,"id":"37","highest_child_id":199,"first_entry_time":18803,"exclusive_time":2,"entries":1,"callees":[{"inclusive_time":0,"id":"36","highest_child_id":199,"first_entry_time":18805,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"38","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":200,"first_entry_time":18806,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":201,"first_entry_time":18808,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":2652,"id":"114","highest_child_id":376,"first_entry_time":18836,"exclusive_time":27,"entries":1,"callees":[{"inclusive_time":12,"id":"13","highest_child_id":204,"first_entry_time":18844,"exclusive_time":10,"entries":1,"callees":[{"inclusive_time":1,"id":"30","highest_child_id":204,"first_entry_time":18854,"exclusive_time":1,"entries":1}],"allocations":[{"id":"2","count":2},{"id":"14","count":2},{"id":"9","count":1}]},{"inclusive_time":2613,"id":"115","highest_child_id":376,"first_entry_time":18875,"exclusive_time":744,"entries":1,"callees":[{"inclusive_time":931,"id":"116","highest_child_id":303,"first_entry_time":18911,"exclusive_time":71,"entries":1,"callees":[{"inclusive_time":0,"id":"11","highest_child_id":207,"first_entry_time":18913,"exclusive_time":0,"entries":1,"allocations":[{"id":"12","count":1}]},{"inclusive_time":18,"id":"117","highest_child_id":216,"first_entry_time":18929,"exclusive_time":6,"entries":1,"callees":[{"inclusive_time":8,"id":"41","highest_child_id":212,"first_entry_time":18932,"exclusive_time":6,"entries":1,"callees":[{"inclusive_time":1,"id":"42","highest_child_id":210,"first_entry_time":18935,"exclusive_time":1,"entries":1},{"inclusive_time":1,"id":"35","highest_child_id":211,"first_entry_time":18938,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":212,"first_entry_time":18941,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":2,"id":"43","highest_child_id":214,"first_entry_time":18943,"exclusive_time":2,"entries":1,"callees":[{"inclusive_time":0,"id":"36","highest_child_id":214,"first_entry_time":18945,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"44","count":1},{"id":"12","count":1},{"id":"45","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":215,"first_entry_time":18946,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":216,"first_entry_time":18948,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"27","count":1}]},{"inclusive_time":124,"id":"118","highest_child_id":230,"first_entry_time":18965,"exclusive_time":102,"entries":1,"callees":[{"inclusive_time":7,"id":"53","highest_child_id":223,"first_entry_time":18966,"exclusive_time":2,"entries":1,"callees":[{"inclusive_time":4,"id":"54","highest_child_id":222,"first_entry_time":18968,"exclusive_time":2,"entries":1,"callees":[{"inclusive_time":2,"id":"56","highest_child_id":221,"first_entry_time":18970,"exclusive_time":2,"entries":1,"callees":[{"inclusive_time":0,"id":"36","highest_child_id":221,"first_entry_time":18972,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"36","highest_child_id":222,"first_entry_time":18973,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"55","count":1}]},{"inclusive_time":0,"id":"36","highest_child_id":223,"first_entry_time":18974,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":8,"id":"119","highest_child_id":226,"first_entry_time":19072,"exclusive_time":7,"entries":1,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":225,"first_entry_time":19074,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"36","highest_child_id":226,"first_entry_time":19080,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"120","count":1}]},{"inclusive_time":3,"id":"37","highest_child_id":228,"first_entry_time":19082,"exclusive_time":3,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":228,"first_entry_time":19085,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"38","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":229,"first_entry_time":19087,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":230,"first_entry_time":19088,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":112,"id":"121","highest_child_id":246,"first_entry_time":19105,"exclusive_time":55,"entries":1,"callees":[{"inclusive_time":0,"id":"11","highest_child_id":232,"first_entry_time":19107,"exclusive_time":0,"entries":1,"allocations":[{"id":"12","count":1}]},{"inclusive_time":38,"id":"13","highest_child_id":236,"first_entry_time":19146,"exclusive_time":10,"entries":1,"callees":[{"inclusive_time":27,"id":"16","highest_child_id":235,"first_entry_time":19149,"exclusive_time":22,"entries":1,"callees":[{"inclusive_time":4,"id":"20","highest_child_id":235,"first_entry_time":19165,"exclusive_time":4,"entries":2}],"allocations":[{"id":"14","count":12},{"id":"17","count":3},{"id":"9","count":4},{"id":"18","count":4},{"id":"19","count":2}]},{"inclusive_time":1,"id":"30","highest_child_id":236,"first_entry_time":19183,"exclusive_time":1,"entries":1}],"allocations":[{"id":"2","count":2},{"id":"14","count":2},{"id":"9","count":1}]},{"inclusive_time":17,"id":"122","highest_child_id":246,"first_entry_time":19200,"exclusive_time":5,"entries":1,"callees":[{"inclusive_time":7,"id":"41","highest_child_id":241,"first_entry_time":19203,"exclusive_time":5,"entries":1,"callees":[{"inclusive_time":0,"id":"42","highest_child_id":239,"first_entry_time":19205,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"35","highest_child_id":240,"first_entry_time":19208,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":241,"first_entry_time":19210,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":4,"id":"43","highest_child_id":244,"first_entry_time":19212,"exclusive_time":3,"entries":1,"callees":[{"inclusive_time":0,"id":"35","highest_child_id":243,"first_entry_time":19214,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":244,"first_entry_time":19216,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"44","count":1},{"id":"123","count":1},{"id":"45","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":245,"first_entry_time":19217,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":246,"first_entry_time":19218,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":8,"id":"124","highest_child_id":251,"first_entry_time":19234,"exclusive_time":4,"entries":1,"callees":[{"inclusive_time":2,"id":"57","highest_child_id":249,"first_entry_time":19237,"exclusive_time":2,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":249,"first_entry_time":19239,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"58","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":250,"first_entry_time":19241,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":251,"first_entry_time":19242,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"125","count":1}]},{"inclusive_time":592,"id":"60","highest_child_id":300,"first_entry_time":19244,"exclusive_time":5,"entries":1,"callees":[{"inclusive_time":4,"id":"53","highest_child_id":258,"first_entry_time":19247,"exclusive_time":1,"entries":1,"callees":[{"inclusive_time":3,"id":"54","highest_child_id":257,"first_entry_time":19248,"exclusive_time":1,"entries":1,"callees":[{"inclusive_time":1,"id":"56","highest_child_id":256,"first_entry_time":19249,"exclusive_time":1,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":256,"first_entry_time":19250,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":257,"first_entry_time":19251,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"55","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":258,"first_entry_time":19252,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":581,"id":"59","highest_child_id":299,"first_entry_time":19254,"exclusive_time":22,"entries":1,"callees":[{"inclusive_time":513,"id":"60","highest_child_id":294,"first_entry_time":19255,"exclusive_time":3,"entries":1,"callees":[{"inclusive_time":508,"id":"61","highest_child_id":292,"first_entry_time":19256,"exclusive_time":50,"entries":1,"callees":[{"inclusive_time":41,"id":"126","highest_child_id":271,"first_entry_time":19273,"exclusive_time":16,"entries":1,"callees":[{"inclusive_time":24,"id":"127","highest_child_id":269,"first_entry_time":19288,"exclusive_time":16,"entries":1,"callees":[{"inclusive_time":6,"id":"128","highest_child_id":267,"first_entry_time":19304,"exclusive_time":4,"entries":1,"callees":[{"inclusive_time":0,"id":"62","highest_child_id":265,"first_entry_time":19305,"exclusive_time":0,"entries":1,"allocations":[{"id":"9","count":1}]},{"inclusive_time":1,"id":"35","highest_child_id":266,"first_entry_time":19307,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":267,"first_entry_time":19310,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":268,"first_entry_time":19311,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":269,"first_entry_time":19312,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":270,"first_entry_time":19313,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":271,"first_entry_time":19314,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":417,"id":"129","highest_child_id":291,"first_entry_time":19347,"exclusive_time":49,"entries":1,"callees":[{"inclusive_time":345,"id":"130","highest_child_id":289,"first_entry_time":19365,"exclusive_time":71,"entries":27,"callees":[{"inclusive_time":273,"id":"131","highest_child_id":288,"first_entry_time":19396,"exclusive_time":65,"entries":27,"callees":[{"inclusive_time":205,"id":"132","highest_child_id":285,"first_entry_time":19414,"exclusive_time":56,"entries":27,"callees":[{"inclusive_time":146,"id":"133","highest_child_id":283,"first_entry_time":19438,"exclusive_time":75,"entries":27,"callees":[{"inclusive_time":45,"id":"134","highest_child_id":279,"first_entry_time":19454,"exclusive_time":40,"entries":27,"callees":[{"inclusive_time":2,"id":"35","highest_child_id":278,"first_entry_time":19457,"exclusive_time":2,"entries":2},{"jit_entries":27,"inclusive_time":1,"id":"36","highest_child_id":279,"first_entry_time":19460,"exclusive_time":1,"entries":27}],"allocations":[{"id":"9","count":27},{"id":"80","count":26}]},{"inclusive_time":22,"id":"84","highest_child_id":281,"first_entry_time":19463,"exclusive_time":20,"entries":26,"callees":[{"jit_entries":26,"inclusive_time":1,"id":"36","highest_child_id":281,"first_entry_time":19464,"exclusive_time":1,"entries":26}],"allocations":[{"id":"9","count":26}]},{"inclusive_time":1,"id":"35","highest_child_id":282,"first_entry_time":19466,"exclusive_time":1,"entries":2},{"jit_entries":27,"inclusive_time":1,"id":"36","highest_child_id":283,"first_entry_time":19468,"exclusive_time":1,"entries":27}],"allocations":[{"id":"27","count":27},{"id":"9","count":27}]},{"inclusive_time":1,"id":"35","highest_child_id":284,"first_entry_time":19469,"exclusive_time":1,"entries":2},{"jit_entries":27,"inclusive_time":1,"id":"36","highest_child_id":285,"first_entry_time":19470,"exclusive_time":1,"entries":27}],"allocations":[{"id":"27","count":27},{"id":"9","count":27}]},{"inclusive_time":0,"id":"35","highest_child_id":286,"first_entry_time":19472,"exclusive_time":0,"entries":1},{"jit_entries":27,"inclusive_time":1,"id":"36","highest_child_id":287,"first_entry_time":19474,"exclusive_time":1,"entries":27},{"inclusive_time":0,"id":"42","highest_child_id":288,"first_entry_time":19759,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":27},{"id":"27","count":1},{"id":"15","count":13}]},{"inclusive_time":1,"id":"90","highest_child_id":289,"first_entry_time":19762,"exclusive_time":1,"entries":1,"allocations":[{"id":"9","count":1}]}],"allocations":[{"id":"9","count":27}]},{"inclusive_time":22,"id":"84","highest_child_id":291,"first_entry_time":19476,"exclusive_time":20,"entries":26,"callees":[{"jit_entries":26,"inclusive_time":1,"id":"36","highest_child_id":291,"first_entry_time":19477,"exclusive_time":1,"entries":26}],"allocations":[{"id":"9","count":26}]}],"allocations":[{"id":"27","count":2},{"id":"9","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":292,"first_entry_time":19765,"exclusive_time":0,"entries":1}],"allocations":[{"id":"27","count":1},{"id":"9","count":1}]},{"inclusive_time":0,"id":"42","highest_child_id":293,"first_entry_time":19766,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":294,"first_entry_time":19768,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"27","count":1},{"id":"15","count":1}]},{"inclusive_time":44,"id":"85","highest_child_id":296,"first_entry_time":19770,"exclusive_time":39,"entries":26,"callees":[{"inclusive_time":5,"id":"88","highest_child_id":296,"first_entry_time":19773,"exclusive_time":5,"entries":26}],"allocations":[{"id":"9","count":26},{"id":"27","count":26}]},{"inclusive_time":0,"id":"89","highest_child_id":297,"first_entry_time":19832,"exclusive_time":0,"entries":1,"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"90","highest_child_id":298,"first_entry_time":19834,"exclusive_time":0,"entries":1,"allocations":[{"id":"9","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":299,"first_entry_time":19835,"exclusive_time":0,"entries":1}],"allocations":[{"id":"27","count":1},{"id":"9","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":300,"first_entry_time":19836,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"27","count":1},{"id":"15","count":1}]},{"inclusive_time":0,"id":"89","highest_child_id":301,"first_entry_time":19837,"exclusive_time":0,"entries":1,"allocations":[{"id":"9","count":1}]},{"inclusive_time":1,"id":"35","highest_child_id":302,"first_entry_time":19839,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":303,"first_entry_time":19842,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":1},{"id":"44","count":2},{"id":"5","count":1},{"id":"45","count":1}]},{"inclusive_time":876,"id":"75","highest_child_id":364,"first_entry_time":20546,"exclusive_time":47,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"11","highest_child_id":305,"first_entry_time":20549,"exclusive_time":0,"entries":1,"allocations":[{"jit":1,"id":"12","count":1}]},{"jit_entries":1,"inclusive_time":147,"id":"13","highest_child_id":311,"first_entry_time":20553,"exclusive_time":12,"entries":1,"callees":[{"inclusive_time":133,"id":"16","highest_child_id":310,"first_entry_time":20558,"exclusive_time":68,"entries":1,"callees":[{"inclusive_time":64,"id":"20","highest_child_id":310,"first_entry_time":20593,"exclusive_time":46,"entries":20,"callees":[{"inclusive_time":18,"id":"42","highest_child_id":310,"first_entry_time":20614,"exclusive_time":16,"entries":6,"callees":[{"inclusive_time":1,"id":"135","highest_child_id":310,"first_entry_time":20623,"exclusive_time":1,"entries":6}],"allocations":[{"id":"17","count":6}]}]}],"allocations":[{"id":"14","count":27},{"id":"17","count":6},{"id":"9","count":10},{"id":"18","count":10},{"id":"19","count":7}]},{"jit_entries":1,"inlined_entries":1,"inclusive_time":2,"id":"30","highest_child_id":311,"first_entry_time":20699,"exclusive_time":2,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":680,"id":"136","highest_child_id":364,"first_entry_time":20742,"exclusive_time":35,"entries":1,"callees":[{"inclusive_time":12,"id":"100","highest_child_id":320,"first_entry_time":20746,"exclusive_time":4,"entries":1,"callees":[{"inclusive_time":8,"id":"101","highest_child_id":319,"first_entry_time":20750,"exclusive_time":2,"entries":1,"callees":[{"inclusive_time":5,"id":"102","highest_child_id":318,"first_entry_time":20752,"exclusive_time":2,"entries":1,"callees":[{"inclusive_time":3,"id":"104","highest_child_id":317,"first_entry_time":20754,"exclusive_time":2,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":317,"first_entry_time":20756,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":318,"first_entry_time":20757,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"103","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":319,"first_entry_time":20758,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":320,"first_entry_time":20759,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"27","count":1}]},{"inclusive_time":622,"id":"137","highest_child_id":352,"first_entry_time":20787,"exclusive_time":296,"entries":1,"callees":[{"inclusive_time":0,"id":"62","highest_child_id":322,"first_entry_time":20789,"exclusive_time":0,"entries":1,"allocations":[{"id":"9","count":1}]},{"inclusive_time":266,"id":"140","highest_child_id":337,"first_entry_time":21061,"exclusive_time":101,"entries":1,"callees":[{"inclusive_time":17,"id":"107","highest_child_id":324,"first_entry_time":21065,"exclusive_time":17,"entries":27,"allocations":[{"id":"9","count":27}]},{"inclusive_time":92,"id":"141","highest_child_id":331,"first_entry_time":21085,"exclusive_time":24,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"11","highest_child_id":326,"first_entry_time":21087,"exclusive_time":0,"entries":1,"allocations":[{"jit":1,"id":"12","count":1}]},{"osr":1,"jit_entries":2,"inclusive_time":61,"id":"13","highest_child_id":330,"first_entry_time":21092,"exclusive_time":11,"entries":1,"deopt_one":1,"callees":[{"inclusive_time":48,"id":"16","highest_child_id":329,"first_entry_time":21093,"exclusive_time":36,"entries":1,"callees":[{"inclusive_time":12,"id":"20","highest_child_id":329,"first_entry_time":21118,"exclusive_time":12,"entries":6}],"allocations":[{"id":"14","count":17},{"id":"17","count":4},{"id":"9","count":6},{"id":"18","count":6},{"id":"19","count":3}]},{"jit_entries":1,"inlined_entries":1,"inclusive_time":1,"id":"30","highest_child_id":330,"first_entry_time":21152,"exclusive_time":1,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":6,"id":"142","highest_child_id":331,"first_entry_time":21171,"exclusive_time":6,"entries":1,"allocations":[{"id":"9","count":1},{"id":"143","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":32,"id":"144","highest_child_id":334,"first_entry_time":21191,"exclusive_time":29,"entries":23,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":333,"first_entry_time":21195,"exclusive_time":1,"entries":1},{"jit_entries":23,"inclusive_time":1,"id":"36","highest_child_id":334,"first_entry_time":21199,"exclusive_time":1,"entries":23}],"allocations":[{"id":"9","count":23},{"id":"145","count":23}]},{"inclusive_time":21,"id":"142","highest_child_id":335,"first_entry_time":21204,"exclusive_time":21,"entries":25,"allocations":[{"id":"9","count":25},{"id":"143","count":25}]},{"inclusive_time":1,"id":"35","highest_child_id":336,"first_entry_time":21325,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":337,"first_entry_time":21328,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":6,"id":"146","highest_child_id":340,"first_entry_time":21346,"exclusive_time":5,"entries":1,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":339,"first_entry_time":21350,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":340,"first_entry_time":21352,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":341,"first_entry_time":21354,"exclusive_time":0,"entries":1},{"jit_entries":2,"inclusive_time":0,"id":"36","highest_child_id":342,"first_entry_time":21355,"exclusive_time":0,"entries":2},{"inclusive_time":50,"id":"46","highest_child_id":352,"first_entry_time":21357,"exclusive_time":36,"entries":1,"callees":[{"inclusive_time":0,"id":"147","highest_child_id":344,"first_entry_time":21365,"exclusive_time":0,"entries":2},{"inclusive_time":1,"id":"48","highest_child_id":345,"first_entry_time":21368,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"49","highest_child_id":346,"first_entry_time":21371,"exclusive_time":0,"entries":1},{"inclusive_time":8,"id":"148","highest_child_id":348,"first_entry_time":21380,"exclusive_time":7,"entries":1,"callees":[{"inclusive_time":0,"id":"149","highest_child_id":348,"first_entry_time":21386,"exclusive_time":0,"entries":1}]},{"inclusive_time":1,"id":"150","highest_child_id":350,"first_entry_time":21396,"exclusive_time":0,"entries":1,"callees":[{"inclusive_time":0,"id":"149","highest_child_id":350,"first_entry_time":21397,"exclusive_time":0,"entries":1}]},{"inclusive_time":0,"id":"151","highest_child_id":351,"first_entry_time":21403,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"50","highest_child_id":352,"first_entry_time":21405,"exclusive_time":0,"entries":1}],"allocations":[{"id":"19","count":1}]}],"allocations":[{"id":"138","count":1},{"id":"139","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":353,"first_entry_time":21410,"exclusive_time":0,"entries":1},{"jit_entries":2,"inclusive_time":0,"id":"36","highest_child_id":354,"first_entry_time":21411,"exclusive_time":0,"entries":2},{"inclusive_time":9,"id":"46","highest_child_id":364,"first_entry_time":21412,"exclusive_time":5,"entries":1,"callees":[{"inclusive_time":0,"id":"147","highest_child_id":356,"first_entry_time":21413,"exclusive_time":0,"entries":2},{"inclusive_time":0,"id":"48","highest_child_id":357,"first_entry_time":21414,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"49","highest_child_id":358,"first_entry_time":21416,"exclusive_time":0,"entries":1},{"inclusive_time":1,"id":"148","highest_child_id":360,"first_entry_time":21416,"exclusive_time":0,"entries":1,"callees":[{"inclusive_time":0,"id":"149","highest_child_id":360,"first_entry_time":21417,"exclusive_time":0,"entries":1}]},{"inclusive_time":0,"id":"150","highest_child_id":362,"first_entry_time":21418,"exclusive_time":0,"entries":1,"callees":[{"inclusive_time":0,"id":"149","highest_child_id":362,"first_entry_time":21419,"exclusive_time":0,"entries":1}]},{"inclusive_time":0,"id":"151","highest_child_id":363,"first_entry_time":21420,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"50","highest_child_id":364,"first_entry_time":21420,"exclusive_time":0,"entries":1}],"allocations":[{"id":"19","count":1}]}],"allocations":[{"id":"9","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":0,"id":"35","highest_child_id":365,"first_entry_time":21425,"exclusive_time":0,"entries":1},{"jit_entries":2,"inclusive_time":0,"id":"36","highest_child_id":366,"first_entry_time":21426,"exclusive_time":0,"entries":2},{"inclusive_time":59,"id":"46","highest_child_id":376,"first_entry_time":21427,"exclusive_time":55,"entries":1,"callees":[{"inclusive_time":0,"id":"147","highest_child_id":368,"first_entry_time":21428,"exclusive_time":0,"entries":2},{"inclusive_time":0,"id":"48","highest_child_id":369,"first_entry_time":21429,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"49","highest_child_id":370,"first_entry_time":21430,"exclusive_time":0,"entries":1},{"inclusive_time":1,"id":"148","highest_child_id":372,"first_entry_time":21431,"exclusive_time":0,"entries":1,"callees":[{"inclusive_time":0,"id":"149","highest_child_id":372,"first_entry_time":21431,"exclusive_time":0,"entries":1}]},{"inclusive_time":0,"id":"150","highest_child_id":374,"first_entry_time":21433,"exclusive_time":0,"entries":1,"callees":[{"inclusive_time":0,"id":"149","highest_child_id":374,"first_entry_time":21433,"exclusive_time":0,"entries":1}]},{"inclusive_time":0,"id":"47","highest_child_id":375,"first_entry_time":21484,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"50","highest_child_id":376,"first_entry_time":21485,"exclusive_time":0,"entries":1}],"allocations":[{"id":"19","count":1}]}],"allocations":[{"id":"3","count":1}]}],"allocations":[{"id":"10","count":3}]},{"inclusive_time":7,"id":"86","highest_child_id":380,"first_entry_time":21492,"exclusive_time":6,"entries":1,"callees":[{"inclusive_time":0,"id":"87","highest_child_id":378,"first_entry_time":21496,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"47","highest_child_id":379,"first_entry_time":21497,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"50","highest_child_id":380,"first_entry_time":21498,"exclusive_time":0,"entries":1}]},{"jit_entries":142,"inclusive_time":74,"id":"88","highest_child_id":381,"first_entry_time":21501,"exclusive_time":74,"entries":250},{"jit_entries":170,"inclusive_time":341,"id":"152","highest_child_id":382,"first_entry_time":21584,"exclusive_time":341,"entries":500,"allocations":[{"jit":170,"id":"153","count":500},{"jit":170,"id":"2","count":500}]},{"inclusive_time":1213,"id":"154","highest_child_id":460,"first_entry_time":21605,"exclusive_time":54,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"11","highest_child_id":384,"first_entry_time":21608,"exclusive_time":0,"entries":1,"allocations":[{"jit":1,"id":"12","count":1}]},{"inclusive_time":555,"id":"13","highest_child_id":417,"first_entry_time":21659,"exclusive_time":21,"entries":1,"callees":[{"inclusive_time":121,"id":"16","highest_child_id":389,"first_entry_time":21663,"exclusive_time":68,"entries":1,"callees":[{"inclusive_time":53,"id":"20","highest_child_id":389,"first_entry_time":21699,"exclusive_time":43,"entries":20,"callees":[{"inclusive_time":9,"id":"42","highest_child_id":389,"first_entry_time":21709,"exclusive_time":8,"entries":5,"callees":[{"inclusive_time":0,"id":"135","highest_child_id":389,"first_entry_time":21710,"exclusive_time":0,"entries":5}],"allocations":[{"id":"17","count":8}]}]}],"allocations":[{"id":"14","count":27},{"id":"17","count":6},{"id":"9","count":10},{"id":"18","count":10},{"id":"19","count":5}]},{"inclusive_time":410,"id":"21","highest_child_id":416,"first_entry_time":21799,"exclusive_time":28,"entries":1,"callees":[{"inclusive_time":382,"id":"22","highest_child_id":416,"first_entry_time":21826,"exclusive_time":4,"entries":1,"callees":[{"inclusive_time":377,"id":"23","highest_child_id":416,"first_entry_time":21831,"exclusive_time":12,"entries":1,"callees":[{"inclusive_time":363,"id":"26","highest_child_id":415,"first_entry_time":21835,"exclusive_time":57,"entries":4,"callees":[{"inclusive_time":5,"id":"42","highest_child_id":395,"first_entry_time":21847,"exclusive_time":4,"entries":2,"callees":[{"inclusive_time":0,"id":"135","highest_child_id":395,"first_entry_time":21848,"exclusive_time":0,"entries":2}],"allocations":[{"id":"17","count":4}]},{"inclusive_time":1,"id":"28","highest_child_id":396,"first_entry_time":21852,"exclusive_time":1,"entries":1},{"inclusive_time":299,"id":"155","highest_child_id":415,"first_entry_time":21902,"exclusive_time":7,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"11","highest_child_id":398,"first_entry_time":21904,"exclusive_time":0,"entries":1,"allocations":[{"jit":1,"id":"12","count":1}]},{"osr":1,"jit_entries":2,"inclusive_time":10,"id":"13","highest_child_id":400,"first_entry_time":21907,"exclusive_time":8,"entries":1,"deopt_one":1,"callees":[{"jit_entries":1,"inlined_entries":1,"inclusive_time":1,"id":"30","highest_child_id":400,"first_entry_time":21916,"exclusive_time":1,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":281,"id":"92","highest_child_id":415,"first_entry_time":21920,"exclusive_time":25,"entries":1,"callees":[{"inclusive_time":254,"id":"156","highest_child_id":413,"first_entry_time":21937,"exclusive_time":140,"entries":1,"callees":[{"inclusive_time":113,"id":"157","highest_child_id":411,"first_entry_time":22075,"exclusive_time":42,"entries":1,"callees":[{"inclusive_time":50,"id":"159","highest_child_id":405,"first_entry_time":22091,"exclusive_time":47,"entries":1,"callees":[{"inclusive_time":3,"id":"160","highest_child_id":405,"first_entry_time":22137,"exclusive_time":3,"entries":1,"allocations":[{"id":"73","count":1}]}]},{"inclusive_time":19,"id":"161","highest_child_id":409,"first_entry_time":22166,"exclusive_time":15,"entries":1,"callees":[{"inclusive_time":1,"id":"162","highest_child_id":407,"first_entry_time":22178,"exclusive_time":1,"entries":1,"allocations":[{"id":"9","count":1}]},{"inclusive_time":1,"id":"35","highest_child_id":408,"first_entry_time":22182,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":409,"first_entry_time":22185,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":2}]},{"inclusive_time":0,"id":"35","highest_child_id":410,"first_entry_time":22187,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":411,"first_entry_time":22189,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"158","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":412,"first_entry_time":22190,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":413,"first_entry_time":22191,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"163","highest_child_id":414,"first_entry_time":22198,"exclusive_time":0,"entries":1,"allocations":[{"id":"9","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":415,"first_entry_time":22200,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":2},{"id":"25","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]}],"allocations":[{"id":"2","count":16},{"id":"27","count":2},{"id":"25","count":1}]},{"inclusive_time":1,"id":"29","highest_child_id":416,"first_entry_time":21858,"exclusive_time":1,"entries":1}],"allocations":[{"id":"24","count":1},{"id":"25","count":1}]}]}]},{"jit_entries":1,"inclusive_time":2,"id":"30","highest_child_id":417,"first_entry_time":22212,"exclusive_time":2,"entries":1,"deopt_one":1}],"allocations":[{"id":"2","count":2},{"id":"14","count":2},{"id":"9","count":1},{"id":"10","count":1},{"id":"15","count":1}]},{"inclusive_time":602,"id":"164","highest_child_id":460,"first_entry_time":22216,"exclusive_time":28,"entries":1,"callees":[{"inclusive_time":12,"id":"92","highest_child_id":428,"first_entry_time":22221,"exclusive_time":3,"entries":1,"callees":[{"inclusive_time":8,"id":"156","highest_child_id":426,"first_entry_time":22222,"exclusive_time":1,"entries":1,"callees":[{"inclusive_time":6,"id":"157","highest_child_id":425,"first_entry_time":22224,"exclusive_time":2,"entries":1,"callees":[{"inclusive_time":4,"id":"161","highest_child_id":424,"first_entry_time":22226,"exclusive_time":2,"entries":1,"callees":[{"inclusive_time":0,"id":"162","highest_child_id":423,"first_entry_time":22228,"exclusive_time":0,"entries":1,"allocations":[{"id":"9","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":424,"first_entry_time":22229,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":425,"first_entry_time":22230,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"158","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":426,"first_entry_time":22231,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"163","highest_child_id":427,"first_entry_time":22231,"exclusive_time":0,"entries":1,"allocations":[{"id":"9","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":428,"first_entry_time":22232,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":2},{"id":"25","count":1}]},{"inclusive_time":561,"id":"165","highest_child_id":460,"first_entry_time":22257,"exclusive_time":192,"entries":1,"callees":[{"inclusive_time":253,"id":"167","highest_child_id":451,"first_entry_time":22273,"exclusive_time":27,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"11","highest_child_id":431,"first_entry_time":22274,"exclusive_time":0,"entries":1,"allocations":[{"jit":1,"id":"12","count":1}]},{"osr":1,"jit_entries":2,"inclusive_time":64,"id":"13","highest_child_id":437,"first_entry_time":22278,"exclusive_time":7,"entries":1,"deopt_one":1,"callees":[{"inclusive_time":55,"id":"16","highest_child_id":436,"first_entry_time":22279,"exclusive_time":36,"entries":1,"callees":[{"inclusive_time":19,"id":"20","highest_child_id":436,"first_entry_time":22301,"exclusive_time":12,"entries":6,"callees":[{"inclusive_time":7,"id":"42","highest_child_id":436,"first_entry_time":22306,"exclusive_time":6,"entries":4,"callees":[{"inclusive_time":0,"id":"135","highest_child_id":436,"first_entry_time":22308,"exclusive_time":0,"entries":4}],"allocations":[{"id":"17","count":4}]}]}],"allocations":[{"id":"14","count":17},{"id":"17","count":4},{"id":"9","count":6},{"id":"18","count":6},{"id":"19","count":3}]},{"jit_entries":1,"inlined_entries":1,"inclusive_time":1,"id":"30","highest_child_id":437,"first_entry_time":22341,"exclusive_time":1,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":160,"id":"168","highest_child_id":451,"first_entry_time":22365,"exclusive_time":34,"entries":1,"callees":[{"inclusive_time":125,"id":"169","highest_child_id":449,"first_entry_time":22399,"exclusive_time":76,"entries":1,"callees":[{"inclusive_time":48,"id":"157","highest_child_id":447,"first_entry_time":22474,"exclusive_time":7,"entries":1,"callees":[{"inclusive_time":33,"id":"159","highest_child_id":442,"first_entry_time":22477,"exclusive_time":31,"entries":1,"callees":[{"inclusive_time":2,"id":"160","highest_child_id":442,"first_entry_time":22507,"exclusive_time":2,"entries":1,"allocations":[{"id":"73","count":1}]}]},{"inclusive_time":6,"id":"161","highest_child_id":445,"first_entry_time":22512,"exclusive_time":5,"entries":1,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":444,"first_entry_time":22516,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":445,"first_entry_time":22519,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"171","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":446,"first_entry_time":22520,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":447,"first_entry_time":22522,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"170","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":448,"first_entry_time":22523,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":449,"first_entry_time":22524,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":0,"id":"35","highest_child_id":450,"first_entry_time":22525,"exclusive_time":0,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":451,"first_entry_time":22526,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":4,"id":"172","highest_child_id":452,"first_entry_time":22539,"exclusive_time":4,"entries":6,"allocations":[{"id":"9","count":6}]},{"inclusive_time":104,"id":"173","highest_child_id":459,"first_entry_time":22553,"exclusive_time":36,"entries":6,"callees":[{"inclusive_time":2,"id":"174","highest_child_id":454,"first_entry_time":22566,"exclusive_time":2,"entries":6,"allocations":[{"id":"9","count":6}]},{"inclusive_time":63,"id":"175","highest_child_id":458,"first_entry_time":22579,"exclusive_time":14,"entries":1,"callees":[{"inclusive_time":46,"id":"13","highest_child_id":457,"first_entry_time":22585,"exclusive_time":44,"entries":1,"callees":[{"inclusive_time":1,"id":"30","highest_child_id":457,"first_entry_time":22629,"exclusive_time":1,"entries":1}],"allocations":[{"id":"2","count":2},{"id":"14","count":2},{"id":"9","count":1}]},{"inclusive_time":1,"id":"176","highest_child_id":458,"first_entry_time":22641,"exclusive_time":1,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"25","count":1},{"id":"10","count":3}]},{"inclusive_time":2,"id":"176","highest_child_id":459,"first_entry_time":22648,"exclusive_time":2,"entries":5}]},{"inclusive_time":6,"id":"177","highest_child_id":460,"first_entry_time":22812,"exclusive_time":6,"entries":1,"allocations":[{"id":"2","count":3},{"id":"27","count":1},{"id":"9","count":1},{"id":"25","count":1}]}],"allocations":[{"id":"27","count":1},{"id":"166","count":1}]}],"allocations":[{"id":"2","count":1},{"id":"27","count":1},{"id":"9","count":1},{"id":"25","count":2}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":151,"id":"178","highest_child_id":469,"first_entry_time":22838,"exclusive_time":15,"entries":1,"callees":[{"inclusive_time":94,"id":"13","highest_child_id":463,"first_entry_time":22843,"exclusive_time":92,"entries":1,"callees":[{"inclusive_time":2,"id":"30","highest_child_id":463,"first_entry_time":22934,"exclusive_time":2,"entries":1}],"allocations":[{"id":"2","count":2},{"id":"14","count":3},{"id":"9","count":2}]},{"inclusive_time":41,"id":"179","highest_child_id":469,"first_entry_time":22947,"exclusive_time":12,"entries":1,"callees":[{"inclusive_time":29,"id":"180","highest_child_id":469,"first_entry_time":22959,"exclusive_time":16,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"11","highest_child_id":466,"first_entry_time":22961,"exclusive_time":0,"entries":1,"allocations":[{"jit":1,"id":"12","count":1}]},{"inclusive_time":10,"id":"13","highest_child_id":468,"first_entry_time":22965,"exclusive_time":9,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":1,"id":"30","highest_child_id":468,"first_entry_time":22973,"exclusive_time":1,"entries":1,"deopt_one":1}],"allocations":[{"id":"2","count":2},{"id":"14","count":2},{"id":"9","count":1}]},{"inclusive_time":1,"id":"181","highest_child_id":469,"first_entry_time":22987,"exclusive_time":1,"entries":1,"allocations":[{"id":"9","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]}]}],"allocations":[{"id":"9","count":1},{"id":"25","count":1},{"id":"10","count":3}]},{"inclusive_time":69,"id":"182","highest_child_id":480,"first_entry_time":23005,"exclusive_time":20,"entries":1,"callees":[{"inclusive_time":25,"id":"13","highest_child_id":472,"first_entry_time":23009,"exclusive_time":24,"entries":1,"callees":[{"inclusive_time":1,"id":"30","highest_child_id":472,"first_entry_time":23033,"exclusive_time":1,"entries":1}],"allocations":[{"id":"2","count":2},{"id":"14","count":2},{"id":"9","count":1}]},{"inclusive_time":23,"id":"183","highest_child_id":480,"first_entry_time":23050,"exclusive_time":11,"entries":1,"callees":[{"inclusive_time":9,"id":"86","highest_child_id":477,"first_entry_time":23054,"exclusive_time":8,"entries":1,"callees":[{"inclusive_time":0,"id":"87","highest_child_id":475,"first_entry_time":23057,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"47","highest_child_id":476,"first_entry_time":23059,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"50","highest_child_id":477,"first_entry_time":23061,"exclusive_time":0,"entries":1}]},{"inclusive_time":1,"id":"88","highest_child_id":478,"first_entry_time":23068,"exclusive_time":1,"entries":1},{"inclusive_time":1,"id":"35","highest_child_id":479,"first_entry_time":23071,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":480,"first_entry_time":23073,"exclusive_time":0,"entries":1}]}],"allocations":[{"id":"9","count":1},{"id":"25","count":1},{"id":"10","count":3}]},{"jit_entries":141,"inclusive_time":45,"id":"66","highest_child_id":481,"first_entry_time":23077,"exclusive_time":45,"entries":247,"allocations":[{"id":"9","count":106}]},{"jit_entries":170,"inclusive_time":16161,"id":"164","highest_child_id":509,"first_entry_time":23082,"exclusive_time":1280,"entries":499,"callees":[{"jit_entries":174,"inclusive_time":2684,"id":"92","highest_child_id":492,"first_entry_time":23086,"exclusive_time":882,"entries":499,"callees":[{"jit_entries":207,"inlined_entries":174,"inclusive_time":1673,"id":"156","highest_child_id":490,"first_entry_time":23087,"exclusive_time":448,"entries":499,"callees":[{"jit_entries":334,"inlined_entries":207,"inclusive_time":1194,"id":"157","highest_child_id":489,"first_entry_time":23089,"exclusive_time":306,"entries":499,"callees":[{"jit_entries":336,"inlined_entries":334,"inclusive_time":860,"id":"161","highest_child_id":488,"first_entry_time":23090,"exclusive_time":658,"entries":499,"callees":[{"jit_entries":210,"inclusive_time":174,"id":"162","highest_child_id":487,"first_entry_time":23092,"exclusive_time":174,"entries":499,"allocations":[{"id":"9","count":289}]},{"jit_entries":499,"inlined_entries":336,"inclusive_time":27,"id":"36","highest_child_id":488,"first_entry_time":23094,"exclusive_time":27,"entries":499}],"allocations":[{"id":"9","count":163}]},{"jit_entries":499,"inlined_entries":334,"inclusive_time":27,"id":"36","highest_child_id":489,"first_entry_time":23095,"exclusive_time":27,"entries":499}],"allocations":[{"id":"9","count":165},{"jit":334,"id":"158","count":499}]},{"jit_entries":499,"inlined_entries":207,"inclusive_time":30,"id":"36","highest_child_id":490,"first_entry_time":23095,"exclusive_time":30,"entries":499}],"allocations":[{"id":"9","count":292}]},{"jit_entries":210,"inlined_entries":174,"inclusive_time":99,"id":"163","highest_child_id":491,"first_entry_time":23096,"exclusive_time":99,"entries":499,"allocations":[{"id":"9","count":289}]},{"jit_entries":499,"inlined_entries":174,"inclusive_time":28,"id":"36","highest_child_id":492,"first_entry_time":23098,"exclusive_time":28,"entries":499}],"allocations":[{"jit":348,"id":"9","count":998},{"jit":174,"id":"25","count":499}]},{"jit_entries":398,"inclusive_time":12196,"id":"165","highest_child_id":509,"first_entry_time":23099,"exclusive_time":4372,"entries":499,"callees":[{"jit_entries":172,"inclusive_time":1709,"id":"168","highest_child_id":501,"first_entry_time":23101,"exclusive_time":495,"entries":499,"callees":[{"jit_entries":198,"inlined_entries":172,"inclusive_time":1186,"id":"169","highest_child_id":500,"first_entry_time":23102,"exclusive_time":434,"entries":499,"callees":[{"jit_entries":332,"inlined_entries":198,"inclusive_time":723,"id":"157","highest_child_id":499,"first_entry_time":23103,"exclusive_time":273,"entries":499,"callees":[{"jit_entries":337,"inlined_entries":332,"inclusive_time":424,"id":"161","highest_child_id":498,"first_entry_time":23105,"exclusive_time":394,"entries":499,"callees":[{"jit_entries":499,"inlined_entries":337,"inclusive_time":29,"id":"36","highest_child_id":498,"first_entry_time":23107,"exclusive_time":29,"entries":499}],"allocations":[{"id":"9","count":162},{"jit":337,"id":"171","count":499}]},{"jit_entries":499,"inlined_entries":332,"inclusive_time":25,"id":"36","highest_child_id":499,"first_entry_time":23107,"exclusive_time":25,"entries":499}],"allocations":[{"id":"9","count":167},{"jit":332,"id":"170","count":499}]},{"jit_entries":499,"inlined_entries":198,"inclusive_time":27,"id":"36","highest_child_id":500,"first_entry_time":23108,"exclusive_time":27,"entries":499}],"allocations":[{"id":"9","count":301}]},{"jit_entries":499,"inlined_entries":172,"inclusive_time":27,"id":"36","highest_child_id":501,"first_entry_time":23109,"exclusive_time":27,"entries":499}],"allocations":[{"id":"9","count":327}]},{"jit_entries":6140,"inlined_entries":6061,"inclusive_time":1293,"id":"172","highest_child_id":502,"first_entry_time":23109,"exclusive_time":1293,"entries":7633,"allocations":[{"id":"9","count":1493}]},{"jit_entries":4329,"inclusive_time":2750,"id":"184","highest_child_id":505,"first_entry_time":23123,"exclusive_time":1602,"entries":5424,"callees":[{"jit_entries":4347,"inlined_entries":4329,"inclusive_time":451,"id":"174","highest_child_id":504,"first_entry_time":23125,"exclusive_time":451,"entries":5424,"allocations":[{"id":"9","count":1077}]},{"jit_entries":4347,"inlined_entries":4329,"inclusive_time":696,"id":"176","highest_child_id":505,"first_entry_time":23126,"exclusive_time":696,"entries":5424}]},{"jit_entries":1365,"inclusive_time":1351,"id":"173","highest_child_id":508,"first_entry_time":23840,"exclusive_time":880,"entries":1993,"callees":[{"jit_entries":1629,"inlined_entries":1365,"inclusive_time":183,"id":"174","highest_child_id":507,"first_entry_time":23841,"exclusive_time":183,"entries":1993,"allocations":[{"id":"9","count":364}]},{"jit_entries":1629,"inlined_entries":1365,"inclusive_time":286,"id":"176","highest_child_id":508,"first_entry_time":23843,"exclusive_time":286,"entries":1993}]},{"inclusive_time":719,"id":"177","highest_child_id":509,"first_entry_time":23850,"exclusive_time":719,"entries":283,"allocations":[{"id":"2","count":849},{"id":"27","count":283},{"id":"9","count":283},{"id":"25","count":283}]}],"allocations":[{"jit":398,"id":"27","count":499},{"jit":227,"id":"166","count":283}]}],"allocations":[{"jit":340,"id":"2","count":878},{"jit":170,"id":"27","count":499},{"jit":170,"id":"9","count":499},{"jit":340,"id":"25","count":998}]},{"inclusive_time":1516,"id":"110","highest_child_id":517,"first_entry_time":23212,"exclusive_time":557,"entries":249,"callees":[{"inclusive_time":745,"id":"111","highest_child_id":514,"first_entry_time":23214,"exclusive_time":289,"entries":249,"callees":[{"inclusive_time":442,"id":"113","highest_child_id":513,"first_entry_time":23216,"exclusive_time":420,"entries":249,"callees":[{"jit_entries":249,"inclusive_time":21,"id":"36","highest_child_id":513,"first_entry_time":23218,"exclusive_time":21,"entries":249}],"allocations":[{"id":"9","count":249}]},{"jit_entries":249,"inclusive_time":13,"id":"36","highest_child_id":514,"first_entry_time":23219,"exclusive_time":13,"entries":249}],"allocations":[{"id":"9","count":249},{"id":"112","count":249}]},{"jit_entries":102,"inclusive_time":197,"id":"37","highest_child_id":516,"first_entry_time":23222,"exclusive_time":176,"entries":249,"callees":[{"jit_entries":249,"inlined_entries":102,"inclusive_time":20,"id":"36","highest_child_id":516,"first_entry_time":23224,"exclusive_time":20,"entries":249}],"allocations":[{"id":"9","count":147},{"jit":102,"id":"38","count":249}]},{"jit_entries":249,"inclusive_time":17,"id":"36","highest_child_id":517,"first_entry_time":23225,"exclusive_time":17,"entries":249}],"allocations":[{"id":"9","count":249}]},{"inclusive_time":71916,"id":"115","highest_child_id":629,"first_entry_time":23227,"exclusive_time":799,"entries":249,"callees":[{"jit_entries":92,"inclusive_time":54508,"id":"116","highest_child_id":607,"first_entry_time":23229,"exclusive_time":1756,"entries":249,"callees":[{"jit_entries":249,"inclusive_time":41,"id":"11","highest_child_id":520,"first_entry_time":23230,"exclusive_time":41,"entries":249,"allocations":[{"jit":249,"id":"12","count":249}]},{"inclusive_time":1755,"id":"117","highest_child_id":528,"first_entry_time":23234,"exclusive_time":693,"entries":249,"callees":[{"spesh_entries":106,"inclusive_time":783,"id":"41","highest_child_id":525,"first_entry_time":23236,"exclusive_time":619,"entries":249,"deopt_one":106,"callees":[{"jit_entries":169,"inclusive_time":146,"id":"42","highest_child_id":523,"first_entry_time":23238,"exclusive_time":146,"entries":249},{"jit_entries":249,"inclusive_time":14,"id":"36","highest_child_id":524,"first_entry_time":23241,"exclusive_time":14,"entries":249},{"inclusive_time":2,"id":"35","highest_child_id":525,"first_entry_time":93267,"exclusive_time":2,"entries":1}],"allocations":[{"id":"9","count":143}]},{"jit_entries":107,"inclusive_time":262,"id":"43","highest_child_id":527,"first_entry_time":23243,"exclusive_time":242,"entries":249,"callees":[{"jit_entries":249,"inlined_entries":107,"inclusive_time":19,"id":"36","highest_child_id":527,"first_entry_time":23245,"exclusive_time":19,"entries":249}],"allocations":[{"id":"9","count":142},{"jit":107,"id":"44","count":249},{"jit":107,"id":"12","count":249},{"jit":107,"id":"45","count":249}]},{"jit_entries":249,"inclusive_time":16,"id":"36","highest_child_id":528,"first_entry_time":23246,"exclusive_time":16,"entries":249}],"allocations":[{"id":"9","count":249},{"id":"27","count":249}]},{"inclusive_time":1705,"id":"118","highest_child_id":540,"first_entry_time":23248,"exclusive_time":643,"entries":249,"callees":[{"jit_entries":104,"inclusive_time":647,"id":"53","highest_child_id":535,"first_entry_time":23249,"exclusive_time":223,"entries":249,"callees":[{"jit_entries":108,"inlined_entries":104,"inclusive_time":410,"id":"54","highest_child_id":534,"first_entry_time":23252,"exclusive_time":177,"entries":249,"callees":[{"jit_entries":109,"inlined_entries":108,"inclusive_time":219,"id":"56","highest_child_id":533,"first_entry_time":23253,"exclusive_time":203,"entries":249,"callees":[{"jit_entries":249,"inlined_entries":109,"inclusive_time":15,"id":"36","highest_child_id":533,"first_entry_time":23255,"exclusive_time":15,"entries":249}],"allocations":[{"id":"9","count":140}]},{"jit_entries":249,"inlined_entries":108,"inclusive_time":13,"id":"36","highest_child_id":534,"first_entry_time":23256,"exclusive_time":13,"entries":249}],"allocations":[{"id":"9","count":141},{"jit":108,"id":"55","count":249}]},{"jit_entries":249,"inlined_entries":104,"inclusive_time":12,"id":"36","highest_child_id":535,"first_entry_time":23257,"exclusive_time":12,"entries":249}],"allocations":[{"id":"9","count":145}]},{"inclusive_time":246,"id":"119","highest_child_id":537,"first_entry_time":23259,"exclusive_time":228,"entries":249,"callees":[{"jit_entries":249,"inclusive_time":18,"id":"36","highest_child_id":537,"first_entry_time":23260,"exclusive_time":18,"entries":249}],"allocations":[{"id":"9","count":249},{"id":"120","count":249}]},{"jit_entries":107,"inclusive_time":149,"id":"37","highest_child_id":539,"first_entry_time":23261,"exclusive_time":132,"entries":249,"callees":[{"jit_entries":249,"inlined_entries":107,"inclusive_time":16,"id":"36","highest_child_id":539,"first_entry_time":23262,"exclusive_time":16,"entries":249}],"allocations":[{"id":"9","count":142},{"jit":107,"id":"38","count":249}]},{"jit_entries":249,"inclusive_time":18,"id":"36","highest_child_id":540,"first_entry_time":23263,"exclusive_time":18,"entries":249}],"allocations":[{"id":"9","count":249}]},{"inclusive_time":1232,"id":"122","highest_child_id":548,"first_entry_time":23265,"exclusive_time":516,"entries":249,"callees":[{"spesh_entries":106,"inclusive_time":453,"id":"41","highest_child_id":545,"first_entry_time":23267,"exclusive_time":361,"entries":249,"deopt_one":106,"callees":[{"jit_entries":169,"inclusive_time":76,"id":"42","highest_child_id":543,"first_entry_time":23268,"exclusive_time":76,"entries":249},{"jit_entries":249,"inclusive_time":13,"id":"36","highest_child_id":544,"first_entry_time":23269,"exclusive_time":13,"entries":249},{"inclusive_time":1,"id":"35","highest_child_id":545,"first_entry_time":93290,"exclusive_time":1,"entries":1}],"allocations":[{"id":"9","count":143}]},{"jit_entries":107,"inclusive_time":248,"id":"43","highest_child_id":547,"first_entry_time":23270,"exclusive_time":231,"entries":249,"callees":[{"jit_entries":249,"inlined_entries":107,"inclusive_time":16,"id":"36","highest_child_id":547,"first_entry_time":23272,"exclusive_time":16,"entries":249}],"allocations":[{"id":"9","count":142},{"jit":107,"id":"44","count":249},{"jit":107,"id":"123","count":249},{"jit":107,"id":"45","count":249}]},{"jit_entries":249,"inclusive_time":14,"id":"36","highest_child_id":548,"first_entry_time":23273,"exclusive_time":14,"entries":249}],"allocations":[{"id":"9","count":249}]},{"inclusive_time":779,"id":"124","highest_child_id":552,"first_entry_time":23276,"exclusive_time":460,"entries":249,"callees":[{"inclusive_time":302,"id":"57","highest_child_id":551,"first_entry_time":23279,"exclusive_time":282,"entries":249,"callees":[{"jit_entries":249,"inclusive_time":19,"id":"36","highest_child_id":551,"first_entry_time":23281,"exclusive_time":19,"entries":249}],"allocations":[{"id":"9","count":249},{"id":"58","count":249}]},{"jit_entries":249,"inclusive_time":16,"id":"36","highest_child_id":552,"first_entry_time":23282,"exclusive_time":16,"entries":249}],"allocations":[{"id":"9","count":249},{"id":"125","count":249}]},{"osr":99,"jit_entries":198,"inclusive_time":47100,"id":"60","highest_child_id":605,"first_entry_time":23284,"exclusive_time":858,"entries":249,"deopt_one":99,"callees":[{"jit_entries":105,"inlined_entries":99,"inclusive_time":593,"id":"53","highest_child_id":559,"first_entry_time":23287,"exclusive_time":184,"entries":249,"callees":[{"jit_entries":108,"inlined_entries":105,"inclusive_time":395,"id":"54","highest_child_id":558,"first_entry_time":23288,"exclusive_time":177,"entries":249,"callees":[{"jit_entries":110,"inlined_entries":108,"inclusive_time":204,"id":"56","highest_child_id":557,"first_entry_time":23289,"exclusive_time":187,"entries":249,"callees":[{"jit_entries":249,"inlined_entries":110,"inclusive_time":17,"id":"36","highest_child_id":557,"first_entry_time":23290,"exclusive_time":17,"entries":249}],"allocations":[{"id":"9","count":139}]},{"jit_entries":249,"inlined_entries":108,"inclusive_time":13,"id":"36","highest_child_id":558,"first_entry_time":23291,"exclusive_time":13,"entries":249}],"allocations":[{"id":"9","count":141},{"jit":108,"id":"55","count":249}]},{"jit_entries":249,"inlined_entries":105,"inclusive_time":13,"id":"36","highest_child_id":559,"first_entry_time":23291,"exclusive_time":13,"entries":249}],"allocations":[{"id":"9","count":144}]},{"osr":1,"jit_entries":201,"inclusive_time":45628,"id":"59","highest_child_id":604,"first_entry_time":23293,"exclusive_time":1907,"entries":249,"callees":[{"jit_entries":99,"inclusive_time":40496,"id":"60","highest_child_id":599,"first_entry_time":23295,"exclusive_time":773,"entries":249,"deopt_one":99,"callees":[{"inclusive_time":39642,"id":"61","highest_child_id":597,"first_entry_time":23296,"exclusive_time":612,"entries":249,"callees":[{"inclusive_time":1174,"id":"126","highest_child_id":569,"first_entry_time":23298,"exclusive_time":287,"entries":249,"callees":[{"inclusive_time":871,"id":"127","highest_child_id":568,"first_entry_time":23300,"exclusive_time":400,"entries":249,"callees":[{"inclusive_time":456,"id":"128","highest_child_id":567,"first_entry_time":23302,"exclusive_time":396,"entries":249,"callees":[{"jit_entries":111,"inclusive_time":44,"id":"62","highest_child_id":566,"first_entry_time":23304,"exclusive_time":44,"entries":249,"allocations":[{"id":"9","count":138}]},{"jit_entries":249,"inclusive_time":15,"id":"36","highest_child_id":567,"first_entry_time":23305,"exclusive_time":15,"entries":249}],"allocations":[{"id":"9","count":249}]},{"jit_entries":249,"inclusive_time":14,"id":"36","highest_child_id":568,"first_entry_time":23306,"exclusive_time":14,"entries":249}],"allocations":[{"id":"9","count":249}]},{"jit_entries":249,"inclusive_time":15,"id":"36","highest_child_id":569,"first_entry_time":23307,"exclusive_time":15,"entries":249}],"allocations":[{"id":"9","count":249}]},{"osr":1,"jit_entries":203,"inclusive_time":37834,"id":"129","highest_child_id":596,"first_entry_time":23308,"exclusive_time":5421,"entries":249,"callees":[{"jit_entries":5517,"inclusive_time":31053,"id":"130","highest_child_id":594,"first_entry_time":23310,"exclusive_time":3865,"entries":6723,"callees":[{"jit_entries":5535,"inclusive_time":27123,"id":"131","highest_child_id":593,"first_entry_time":23313,"exclusive_time":4709,"entries":6723,"callees":[{"spesh_entries":5589,"inclusive_time":21966,"id":"132","highest_child_id":591,"first_entry_time":23315,"exclusive_time":4676,"entries":6723,"callees":[{"spesh_entries":6588,"inclusive_time":16947,"id":"133","highest_child_id":589,"first_entry_time":23317,"exclusive_time":8975,"entries":6723,"callees":[{"spesh_entries":5589,"inclusive_time":5169,"id":"134","highest_child_id":577,"first_entry_time":23319,"exclusive_time":4796,"entries":6723,"callees":[{"spesh_entries":5589,"jit_entries":1134,"inlined_entries":5589,"inclusive_time":368,"id":"36","highest_child_id":576,"first_entry_time":23321,"exclusive_time":368,"entries":6723},{"inclusive_time":5,"id":"35","highest_child_id":577,"first_entry_time":57958,"exclusive_time":5,"entries":2}],"allocations":[{"id":"9","count":1134},{"spesh":5382,"id":"80","count":6474}]},{"spesh_entries":6344,"jit_entries":130,"inlined_entries":6344,"inclusive_time":2210,"id":"84","highest_child_id":579,"first_entry_time":23323,"exclusive_time":1688,"entries":6474,"callees":[{"spesh_entries":6344,"jit_entries":130,"inlined_entries":6474,"inclusive_time":522,"id":"36","highest_child_id":579,"first_entry_time":23324,"exclusive_time":522,"entries":6474}]},{"spesh_entries":6588,"jit_entries":135,"inlined_entries":6588,"inclusive_time":437,"id":"36","highest_child_id":580,"first_entry_time":23325,"exclusive_time":437,"entries":6723},{"inclusive_time":2,"id":"35","highest_child_id":581,"first_entry_time":26938,"exclusive_time":2,"entries":2},{"inclusive_time":152,"id":"185","highest_child_id":589,"first_entry_time":127338,"exclusive_time":123,"entries":1,"callees":[{"inclusive_time":5,"id":"186","highest_child_id":583,"first_entry_time":127358,"exclusive_time":5,"entries":3},{"inclusive_time":15,"id":"187","highest_child_id":586,"first_entry_time":127387,"exclusive_time":11,"entries":2,"callees":[{"inclusive_time":4,"id":"35","highest_child_id":585,"first_entry_time":127394,"exclusive_time":4,"entries":1},{"jit_entries":2,"inclusive_time":0,"id":"36","highest_child_id":586,"first_entry_time":127401,"exclusive_time":0,"entries":2}],"allocations":[{"id":"9","count":2}]},{"inclusive_time":7,"id":"188","highest_child_id":589,"first_entry_time":127482,"exclusive_time":6,"entries":1,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":588,"first_entry_time":127487,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":589,"first_entry_time":127489,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"189","count":1}]}],"allocations":[{"id":"3","count":1},{"id":"17","count":4}]}],"allocations":[{"spesh":6588,"id":"27","count":6723},{"spesh":6588,"id":"9","count":6723}]},{"spesh_entries":5589,"jit_entries":1134,"inlined_entries":5589,"inclusive_time":339,"id":"36","highest_child_id":590,"first_entry_time":23326,"exclusive_time":339,"entries":6723},{"inclusive_time":1,"id":"35","highest_child_id":591,"first_entry_time":57968,"exclusive_time":1,"entries":2}],"allocations":[{"spesh":5589,"id":"27","count":6723},{"id":"9","count":1134}]},{"jit_entries":6723,"inlined_entries":5535,"inclusive_time":334,"id":"36","highest_child_id":592,"first_entry_time":23328,"exclusive_time":334,"entries":6723},{"jit_entries":169,"inclusive_time":113,"id":"42","highest_child_id":593,"first_entry_time":23582,"exclusive_time":113,"entries":249}],"allocations":[{"jit":5535,"id":"9","count":6723},{"jit":205,"id":"27","count":249},{"jit":2665,"id":"15","count":3237}]},{"jit_entries":205,"inlined_entries":205,"inclusive_time":64,"id":"90","highest_child_id":594,"first_entry_time":23585,"exclusive_time":64,"entries":249,"allocations":[{"id":"9","count":44}]}],"allocations":[{"id":"9","count":1206}]},{"jit_entries":6474,"inclusive_time":1358,"id":"84","highest_child_id":596,"first_entry_time":23330,"exclusive_time":1023,"entries":6474,"callees":[{"jit_entries":6474,"inlined_entries":6474,"inclusive_time":335,"id":"36","highest_child_id":596,"first_entry_time":23330,"exclusive_time":335,"entries":6474}]}],"allocations":[{"jit":404,"id":"27","count":498},{"jit":202,"id":"9","count":249}]},{"jit_entries":249,"inclusive_time":21,"id":"36","highest_child_id":597,"first_entry_time":23587,"exclusive_time":21,"entries":249}],"allocations":[{"id":"27","count":249},{"id":"9","count":249}]},{"jit_entries":169,"inclusive_time":63,"id":"42","highest_child_id":598,"first_entry_time":23588,"exclusive_time":63,"entries":249},{"jit_entries":249,"inclusive_time":17,"id":"36","highest_child_id":599,"first_entry_time":23590,"exclusive_time":17,"entries":249}],"allocations":[{"jit":99,"id":"9","count":249},{"jit":99,"id":"27","count":249},{"jit":99,"id":"15","count":249}]},{"jit_entries":5252,"inlined_entries":5226,"inclusive_time":3100,"id":"85","highest_child_id":601,"first_entry_time":23593,"exclusive_time":2610,"entries":6474,"callees":[{"jit_entries":5278,"inlined_entries":5252,"inclusive_time":489,"id":"88","highest_child_id":601,"first_entry_time":23596,"exclusive_time":489,"entries":6474}],"allocations":[{"id":"9","count":1222},{"jit":5252,"id":"27","count":6474}]},{"jit_entries":201,"inlined_entries":201,"inclusive_time":57,"id":"89","highest_child_id":602,"first_entry_time":23659,"exclusive_time":57,"entries":249,"allocations":[{"id":"9","count":48}]},{"jit_entries":201,"inlined_entries":201,"inclusive_time":51,"id":"90","highest_child_id":603,"first_entry_time":23661,"exclusive_time":51,"entries":249,"allocations":[{"id":"9","count":48}]},{"jit_entries":249,"inlined_entries":201,"inclusive_time":15,"id":"36","highest_child_id":604,"first_entry_time":23662,"exclusive_time":15,"entries":249}],"allocations":[{"jit":200,"id":"27","count":249},{"jit":200,"id":"9","count":249}]},{"jit_entries":249,"inlined_entries":99,"inclusive_time":18,"id":"36","highest_child_id":605,"first_entry_time":23664,"exclusive_time":18,"entries":249}],"allocations":[{"jit":99,"id":"9","count":249},{"jit":99,"id":"27","count":249},{"jit":99,"id":"15","count":249}]},{"jit_entries":92,"inlined_entries":92,"inclusive_time":117,"id":"89","highest_child_id":606,"first_entry_time":23665,"exclusive_time":117,"entries":249,"allocations":[{"id":"9","count":157}]},{"jit_entries":249,"inlined_entries":92,"inclusive_time":19,"id":"36","highest_child_id":607,"first_entry_time":23666,"exclusive_time":19,"entries":249}],"allocations":[{"jit":92,"id":"9","count":249},{"jit":92,"id":"3","count":249},{"jit":92,"id":"10","count":249},{"jit":184,"id":"44","count":498},{"jit":92,"id":"5","count":249},{"jit":92,"id":"45","count":249}]},{"inclusive_time":16579,"id":"136","highest_child_id":628,"first_entry_time":23668,"exclusive_time":622,"entries":249,"callees":[{"inclusive_time":1446,"id":"100","highest_child_id":616,"first_entry_time":23670,"exclusive_time":442,"entries":249,"callees":[{"inclusive_time":990,"id":"101","highest_child_id":615,"first_entry_time":23672,"exclusive_time":361,"entries":249,"callees":[{"inclusive_time":613,"id":"102","highest_child_id":614,"first_entry_time":23674,"exclusive_time":301,"entries":249,"callees":[{"inclusive_time":298,"id":"104","highest_child_id":613,"first_entry_time":23675,"exclusive_time":280,"entries":249,"callees":[{"jit_entries":249,"inclusive_time":18,"id":"36","highest_child_id":613,"first_entry_time":23677,"exclusive_time":18,"entries":249}],"allocations":[{"id":"9","count":249}]},{"jit_entries":249,"inclusive_time":13,"id":"36","highest_child_id":614,"first_entry_time":23678,"exclusive_time":13,"entries":249}],"allocations":[{"id":"9","count":249},{"id":"103","count":249}]},{"jit_entries":249,"inclusive_time":14,"id":"36","highest_child_id":615,"first_entry_time":23679,"exclusive_time":14,"entries":249}],"allocations":[{"id":"9","count":249}]},{"jit_entries":249,"inclusive_time":13,"id":"36","highest_child_id":616,"first_entry_time":23680,"exclusive_time":13,"entries":249}],"allocations":[{"id":"9","count":249},{"id":"27","count":249}]},{"inclusive_time":14481,"id":"137","highest_child_id":627,"first_entry_time":23680,"exclusive_time":986,"entries":249,"callees":[{"jit_entries":105,"inclusive_time":41,"id":"62","highest_child_id":618,"first_entry_time":23682,"exclusive_time":41,"entries":249,"allocations":[{"id":"9","count":144}]},{"jit_entries":243,"inclusive_time":13090,"id":"140","highest_child_id":624,"first_entry_time":23684,"exclusive_time":8182,"entries":249,"deopt_one":243,"callees":[{"jit_entries":5594,"inclusive_time":1002,"id":"107","highest_child_id":620,"first_entry_time":23685,"exclusive_time":1002,"entries":6723,"allocations":[{"id":"9","count":1129}]},{"jit_entries":5382,"inclusive_time":2098,"id":"142","highest_child_id":621,"first_entry_time":23687,"exclusive_time":2098,"entries":6474,"allocations":[{"id":"9","count":1092},{"jit":5382,"id":"143","count":6474}]},{"jit_entries":4801,"inclusive_time":1791,"id":"144","highest_child_id":623,"first_entry_time":23692,"exclusive_time":1528,"entries":5776,"callees":[{"jit_entries":5776,"inlined_entries":4801,"inclusive_time":262,"id":"36","highest_child_id":623,"first_entry_time":23693,"exclusive_time":262,"entries":5776}],"allocations":[{"id":"9","count":975},{"jit":4801,"id":"145","count":5776}]},{"jit_entries":249,"inclusive_time":15,"id":"36","highest_child_id":624,"first_entry_time":23804,"exclusive_time":15,"entries":249}],"allocations":[{"jit":243,"id":"9","count":249}]},{"inclusive_time":330,"id":"146","highest_child_id":626,"first_entry_time":23806,"exclusive_time":312,"entries":249,"callees":[{"jit_entries":249,"inclusive_time":18,"id":"36","highest_child_id":626,"first_entry_time":23807,"exclusive_time":18,"entries":249}],"allocations":[{"id":"9","count":249}]},{"jit_entries":498,"inclusive_time":32,"id":"36","highest_child_id":627,"first_entry_time":23808,"exclusive_time":32,"entries":498}],"allocations":[{"id":"138","count":249},{"id":"139","count":249}]},{"jit_entries":498,"inclusive_time":29,"id":"36","highest_child_id":628,"first_entry_time":23809,"exclusive_time":29,"entries":498}],"allocations":[{"id":"9","count":249}]},{"jit_entries":498,"inclusive_time":29,"id":"36","highest_child_id":629,"first_entry_time":23810,"exclusive_time":29,"entries":498}],"allocations":[{"id":"3","count":249}]},{"jit_entries":73,"inclusive_time":477,"id":"179","highest_child_id":631,"first_entry_time":23855,"exclusive_time":268,"entries":283,"callees":[{"jit_entries":75,"inlined_entries":73,"inclusive_time":208,"id":"181","highest_child_id":631,"first_entry_time":23857,"exclusive_time":208,"entries":283,"allocations":[{"id":"9","count":208}]}]},{"jit_entries":73,"inclusive_time":779,"id":"183","highest_child_id":634,"first_entry_time":23859,"exclusive_time":695,"entries":283,"callees":[{"jit_entries":160,"inlined_entries":73,"inclusive_time":55,"id":"88","highest_child_id":633,"first_entry_time":23861,"exclusive_time":55,"entries":283},{"jit_entries":283,"inlined_entries":73,"inclusive_time":28,"id":"36","highest_child_id":634,"first_entry_time":23862,"exclusive_time":28,"entries":283}],"allocations":[{"jit":73,"id":"15","count":256}]},{"inclusive_time":2,"id":"83","highest_child_id":635,"first_entry_time":61412,"exclusive_time":2,"entries":3,"allocations":[{"id":"9","count":3}]}],"allocations":[{"id":"2","count":913},{"id":"27","count":501}]},{"jit_entries":2,"inclusive_time":1,"id":"179","highest_child_id":637,"first_entry_time":132098,"exclusive_time":0,"entries":2,"callees":[{"jit_entries":2,"inlined_entries":2,"inclusive_time":0,"id":"181","highest_child_id":637,"first_entry_time":132098,"exclusive_time":0,"entries":2}]},{"inclusive_time":88,"id":"190","highest_child_id":652,"first_entry_time":132125,"exclusive_time":25,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":30,"id":"13","highest_child_id":640,"first_entry_time":132133,"exclusive_time":28,"entries":1,"callees":[{"inclusive_time":2,"id":"30","highest_child_id":640,"first_entry_time":132160,"exclusive_time":2,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":31,"id":"191","highest_child_id":652,"first_entry_time":132181,"exclusive_time":9,"entries":1,"callees":[{"inclusive_time":22,"id":"46","highest_child_id":651,"first_entry_time":132186,"exclusive_time":15,"entries":1,"callees":[{"inclusive_time":0,"id":"147","highest_child_id":643,"first_entry_time":132189,"exclusive_time":0,"entries":2},{"inclusive_time":1,"id":"48","highest_child_id":644,"first_entry_time":132192,"exclusive_time":1,"entries":1},{"inclusive_time":0,"id":"49","highest_child_id":645,"first_entry_time":132195,"exclusive_time":0,"entries":1},{"inclusive_time":2,"id":"148","highest_child_id":647,"first_entry_time":132197,"exclusive_time":1,"entries":1,"callees":[{"inclusive_time":0,"id":"149","highest_child_id":647,"first_entry_time":132198,"exclusive_time":0,"entries":1}]},{"inclusive_time":1,"id":"150","highest_child_id":649,"first_entry_time":132201,"exclusive_time":0,"entries":1,"callees":[{"inclusive_time":0,"id":"149","highest_child_id":649,"first_entry_time":132202,"exclusive_time":0,"entries":1}]},{"inclusive_time":0,"id":"47","highest_child_id":650,"first_entry_time":132204,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"50","highest_child_id":651,"first_entry_time":132205,"exclusive_time":0,"entries":1}],"allocations":[{"id":"19","count":1}]},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":652,"first_entry_time":132213,"exclusive_time":0,"entries":1}],"allocations":[{"id":"15","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"25","count":1},{"id":"10","count":3}]},{"inclusive_time":441,"id":"192","highest_child_id":698,"first_entry_time":132228,"exclusive_time":28,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":8,"id":"13","highest_child_id":655,"first_entry_time":132233,"exclusive_time":6,"entries":1,"callees":[{"inclusive_time":1,"id":"30","highest_child_id":655,"first_entry_time":132239,"exclusive_time":1,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":404,"id":"193","highest_child_id":698,"first_entry_time":132265,"exclusive_time":52,"entries":1,"callees":[{"inclusive_time":13,"id":"7","highest_child_id":657,"first_entry_time":132271,"exclusive_time":13,"entries":1},{"inclusive_time":146,"id":"194","highest_child_id":673,"first_entry_time":132301,"exclusive_time":25,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"11","highest_child_id":659,"first_entry_time":132303,"exclusive_time":0,"entries":1,"allocations":[{"jit":1,"id":"12","count":1}]},{"osr":1,"jit_entries":2,"inclusive_time":78,"id":"13","highest_child_id":665,"first_entry_time":132308,"exclusive_time":15,"entries":1,"deopt_one":1,"callees":[{"jit_entries":1,"inclusive_time":61,"id":"16","highest_child_id":664,"first_entry_time":132314,"exclusive_time":31,"entries":1,"callees":[{"inclusive_time":30,"id":"20","highest_child_id":664,"first_entry_time":132334,"exclusive_time":20,"entries":6,"callees":[{"inclusive_time":9,"id":"42","highest_child_id":664,"first_entry_time":132345,"exclusive_time":8,"entries":4,"callees":[{"inclusive_time":1,"id":"135","highest_child_id":664,"first_entry_time":132347,"exclusive_time":1,"entries":4}],"allocations":[{"id":"17","count":4}]}]}],"allocations":[{"jit":17,"id":"14","count":17},{"jit":4,"id":"17","count":4},{"jit":6,"id":"9","count":6},{"jit":6,"id":"18","count":6},{"jit":3,"id":"19","count":3}]},{"jit_entries":1,"inlined_entries":1,"inclusive_time":1,"id":"30","highest_child_id":665,"first_entry_time":132384,"exclusive_time":1,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":42,"id":"195","highest_child_id":673,"first_entry_time":132405,"exclusive_time":16,"entries":1,"callees":[{"inclusive_time":24,"id":"196","highest_child_id":671,"first_entry_time":132418,"exclusive_time":12,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"11","highest_child_id":668,"first_entry_time":132419,"exclusive_time":0,"entries":1,"allocations":[{"jit":1,"id":"12","count":1}]},{"osr":1,"jit_entries":2,"inclusive_time":8,"id":"13","highest_child_id":670,"first_entry_time":132422,"exclusive_time":7,"entries":1,"deopt_one":1,"callees":[{"jit_entries":1,"inlined_entries":1,"inclusive_time":1,"id":"30","highest_child_id":670,"first_entry_time":132430,"exclusive_time":1,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":2,"id":"197","highest_child_id":671,"first_entry_time":132440,"exclusive_time":2,"entries":1,"allocations":[{"id":"9","count":1},{"id":"80","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":1,"id":"35","highest_child_id":672,"first_entry_time":132444,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":673,"first_entry_time":132447,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":1,"id":"198","highest_child_id":674,"first_entry_time":132459,"exclusive_time":1,"entries":1,"allocations":[{"id":"9","count":1}]},{"inclusive_time":188,"id":"199","highest_child_id":696,"first_entry_time":132476,"exclusive_time":33,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"11","highest_child_id":676,"first_entry_time":132478,"exclusive_time":0,"entries":1,"allocations":[{"jit":1,"id":"12","count":1}]},{"jit_entries":1,"inclusive_time":42,"id":"13","highest_child_id":680,"first_entry_time":132482,"exclusive_time":7,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":33,"id":"16","highest_child_id":679,"first_entry_time":132483,"exclusive_time":21,"entries":1,"callees":[{"inclusive_time":12,"id":"20","highest_child_id":679,"first_entry_time":132496,"exclusive_time":12,"entries":6}],"allocations":[{"jit":17,"id":"14","count":17},{"jit":4,"id":"17","count":4},{"jit":6,"id":"9","count":6},{"jit":6,"id":"18","count":6},{"jit":4,"id":"19","count":4}]},{"jit_entries":1,"inlined_entries":1,"inclusive_time":1,"id":"30","highest_child_id":680,"first_entry_time":132522,"exclusive_time":1,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":112,"id":"200","highest_child_id":696,"first_entry_time":132552,"exclusive_time":61,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":1,"id":"66","highest_child_id":682,"first_entry_time":132576,"exclusive_time":1,"entries":2,"allocations":[{"id":"9","count":1}]},{"inclusive_time":28,"id":"201","highest_child_id":695,"first_entry_time":132597,"exclusive_time":10,"entries":1,"callees":[{"inclusive_time":1,"id":"35","highest_child_id":684,"first_entry_time":132604,"exclusive_time":1,"entries":1},{"jit_entries":2,"inclusive_time":0,"id":"36","highest_child_id":685,"first_entry_time":132607,"exclusive_time":0,"entries":2},{"inclusive_time":15,"id":"46","highest_child_id":695,"first_entry_time":132609,"exclusive_time":9,"entries":1,"callees":[{"inclusive_time":0,"id":"147","highest_child_id":687,"first_entry_time":132611,"exclusive_time":0,"entries":2},{"inclusive_time":0,"id":"48","highest_child_id":688,"first_entry_time":132612,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"49","highest_child_id":689,"first_entry_time":132614,"exclusive_time":0,"entries":1},{"inclusive_time":1,"id":"148","highest_child_id":691,"first_entry_time":132615,"exclusive_time":1,"entries":1,"callees":[{"inclusive_time":0,"id":"149","highest_child_id":691,"first_entry_time":132616,"exclusive_time":0,"entries":1}]},{"inclusive_time":1,"id":"150","highest_child_id":693,"first_entry_time":132618,"exclusive_time":0,"entries":1,"callees":[{"inclusive_time":0,"id":"149","highest_child_id":693,"first_entry_time":132619,"exclusive_time":0,"entries":1}]},{"inclusive_time":0,"id":"151","highest_child_id":694,"first_entry_time":132621,"exclusive_time":0,"entries":1},{"inclusive_time":0,"id":"50","highest_child_id":695,"first_entry_time":132622,"exclusive_time":0,"entries":1}],"allocations":[{"id":"19","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"202","count":1}]},{"inclusive_time":21,"id":"203","highest_child_id":696,"first_entry_time":132639,"exclusive_time":21,"entries":1,"allocations":[{"id":"9","count":1}]}],"allocations":[{"id":"80","count":1},{"id":"9","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"10","count":3}]},{"inclusive_time":1,"id":"35","highest_child_id":697,"first_entry_time":132666,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":698,"first_entry_time":132669,"exclusive_time":0,"entries":1}]}],"allocations":[{"id":"10","count":3}]},{"inclusive_time":1,"id":"35","highest_child_id":699,"first_entry_time":132671,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":700,"first_entry_time":132673,"exclusive_time":0,"entries":1}],"allocations":[{"id":"25","count":1}]},{"inclusive_time":1,"id":"66","highest_child_id":701,"first_entry_time":132676,"exclusive_time":1,"entries":1,"allocations":[{"id":"9","count":1}]},{"inclusive_time":3239,"id":"204","highest_child_id":819,"first_entry_time":132709,"exclusive_time":120,"entries":1,"callees":[{"inclusive_time":1200,"id":"205","highest_child_id":750,"first_entry_time":132735,"exclusive_time":165,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"11","highest_child_id":704,"first_entry_time":132738,"exclusive_time":0,"entries":1,"allocations":[{"jit":1,"id":"12","count":1}]},{"jit_entries":1,"inclusive_time":147,"id":"13","highest_child_id":708,"first_entry_time":132858,"exclusive_time":19,"entries":1,"callees":[{"inclusive_time":124,"id":"16","highest_child_id":707,"first_entry_time":132863,"exclusive_time":84,"entries":1,"callees":[{"inclusive_time":39,"id":"20","highest_child_id":707,"first_entry_time":132915,"exclusive_time":39,"entries":12}],"allocations":[{"id":"14","count":19},{"id":"17","count":4},{"id":"9","count":8},{"id":"18","count":6},{"id":"19","count":4}]},{"jit_entries":1,"inclusive_time":3,"id":"30","highest_child_id":708,"first_entry_time":133000,"exclusive_time":3,"entries":1,"deopt_one":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":887,"id":"206","highest_child_id":750,"first_entry_time":133048,"exclusive_time":149,"entries":1,"callees":[{"inclusive_time":67,"id":"207","highest_child_id":716,"first_entry_time":133068,"exclusive_time":40,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":1,"id":"11","highest_child_id":711,"first_entry_time":133070,"exclusive_time":1,"entries":1,"allocations":[{"jit":1,"id":"12","count":1}]},{"jit_entries":1,"inclusive_time":13,"id":"13","highest_child_id":713,"first_entry_time":133077,"exclusive_time":10,"entries":1,"callees":[{"inclusive_time":2,"id":"30","highest_child_id":713,"first_entry_time":133087,"exclusive_time":2,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":12,"id":"208","highest_child_id":716,"first_entry_time":133123,"exclusive_time":9,"entries":1,"callees":[{"inclusive_time":3,"id":"35","highest_child_id":715,"first_entry_time":133129,"exclusive_time":3,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":716,"first_entry_time":133135,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"15","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":476,"id":"209","highest_child_id":735,"first_entry_time":133214,"exclusive_time":273,"entries":1,"callees":[{"inclusive_time":67,"id":"210","highest_child_id":721,"first_entry_time":133248,"exclusive_time":25,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":39,"id":"13","highest_child_id":720,"first_entry_time":133258,"exclusive_time":36,"entries":1,"callees":[{"inclusive_time":3,"id":"30","highest_child_id":720,"first_entry_time":133293,"exclusive_time":3,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":2,"id":"211","highest_child_id":721,"first_entry_time":133312,"exclusive_time":2,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"25","count":1},{"id":"10","count":3}]},{"inclusive_time":1,"id":"176","highest_child_id":722,"first_entry_time":133321,"exclusive_time":1,"entries":1},{"inclusive_time":66,"id":"212","highest_child_id":726,"first_entry_time":133341,"exclusive_time":21,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":43,"id":"13","highest_child_id":725,"first_entry_time":133347,"exclusive_time":40,"entries":1,"callees":[{"inclusive_time":3,"id":"30","highest_child_id":725,"first_entry_time":133386,"exclusive_time":3,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":2,"id":"213","highest_child_id":726,"first_entry_time":133404,"exclusive_time":2,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"25","count":1},{"id":"10","count":3}]},{"inclusive_time":2,"id":"213","highest_child_id":727,"first_entry_time":133410,"exclusive_time":2,"entries":2},{"inclusive_time":63,"id":"214","highest_child_id":733,"first_entry_time":133621,"exclusive_time":46,"entries":1,"callees":[{"inclusive_time":15,"id":"216","highest_child_id":731,"first_entry_time":133663,"exclusive_time":11,"entries":1,"callees":[{"inclusive_time":2,"id":"35","highest_child_id":730,"first_entry_time":133672,"exclusive_time":2,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":731,"first_entry_time":133678,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"18","count":1},{"id":"44","count":1}]},{"inclusive_time":1,"id":"35","highest_child_id":732,"first_entry_time":133681,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":733,"first_entry_time":133683,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"215","count":1}]},{"inclusive_time":1,"id":"35","highest_child_id":734,"first_entry_time":133687,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":735,"first_entry_time":133689,"exclusive_time":0,"entries":1}],"allocations":[{"id":"27","count":2},{"id":"9","count":1}]},{"inclusive_time":185,"id":"217","highest_child_id":746,"first_entry_time":133730,"exclusive_time":128,"entries":1,"callees":[{"inclusive_time":6,"id":"208","highest_child_id":738,"first_entry_time":133736,"exclusive_time":5,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":738,"first_entry_time":133741,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"15","count":1}]},{"inclusive_time":48,"id":"218","highest_child_id":744,"first_entry_time":133862,"exclusive_time":36,"entries":1,"callees":[{"inclusive_time":10,"id":"220","highest_child_id":742,"first_entry_time":133895,"exclusive_time":7,"entries":1,"callees":[{"inclusive_time":2,"id":"35","highest_child_id":741,"first_entry_time":133901,"exclusive_time":2,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":742,"first_entry_time":133905,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":1,"id":"35","highest_child_id":743,"first_entry_time":133908,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":744,"first_entry_time":133910,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"219","count":1}]},{"inclusive_time":1,"id":"35","highest_child_id":745,"first_entry_time":133913,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":746,"first_entry_time":133916,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":5,"id":"37","highest_child_id":748,"first_entry_time":133923,"exclusive_time":4,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":748,"first_entry_time":133928,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"38","count":1}]},{"inclusive_time":1,"id":"35","highest_child_id":749,"first_entry_time":133931,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":750,"first_entry_time":133934,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":1198,"id":"221","highest_child_id":786,"first_entry_time":133984,"exclusive_time":536,"entries":1,"callees":[{"inclusive_time":639,"id":"75","highest_child_id":779,"first_entry_time":134086,"exclusive_time":69,"entries":3,"callees":[{"jit_entries":3,"inclusive_time":2,"id":"11","highest_child_id":753,"first_entry_time":134092,"exclusive_time":2,"entries":3,"allocations":[{"jit":3,"id":"12","count":3}]},{"jit_entries":3,"inclusive_time":45,"id":"13","highest_child_id":755,"first_entry_time":134100,"exclusive_time":34,"entries":3,"callees":[{"jit_entries":3,"inlined_entries":3,"inclusive_time":10,"id":"30","highest_child_id":755,"first_entry_time":134113,"exclusive_time":10,"entries":3}],"allocations":[{"jit":6,"id":"2","count":6},{"jit":6,"id":"14","count":6},{"jit":3,"id":"9","count":3}]},{"inclusive_time":522,"id":"222","highest_child_id":779,"first_entry_time":134144,"exclusive_time":135,"entries":3,"callees":[{"inclusive_time":207,"id":"226","highest_child_id":769,"first_entry_time":134182,"exclusive_time":59,"entries":1,"callees":[{"inclusive_time":18,"id":"86","highest_child_id":761,"first_entry_time":134190,"exclusive_time":14,"entries":1,"callees":[{"inclusive_time":1,"id":"87","highest_child_id":759,"first_entry_time":134196,"exclusive_time":1,"entries":1},{"inclusive_time":1,"id":"47","highest_child_id":760,"first_entry_time":134201,"exclusive_time":1,"entries":1},{"inclusive_time":1,"id":"50","highest_child_id":761,"first_entry_time":134204,"exclusive_time":1,"entries":1}]},{"jit_entries":1,"inclusive_time":0,"id":"88","highest_child_id":762,"first_entry_time":134212,"exclusive_time":0,"entries":1},{"inclusive_time":128,"id":"227","highest_child_id":769,"first_entry_time":134260,"exclusive_time":45,"entries":1,"callees":[{"inclusive_time":79,"id":"228","highest_child_id":767,"first_entry_time":134299,"exclusive_time":31,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":45,"id":"13","highest_child_id":766,"first_entry_time":134308,"exclusive_time":42,"entries":1,"callees":[{"inclusive_time":3,"id":"30","highest_child_id":766,"first_entry_time":134349,"exclusive_time":3,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":2,"id":"229","highest_child_id":767,"first_entry_time":134375,"exclusive_time":2,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"25","count":1},{"id":"10","count":3}]},{"inclusive_time":2,"id":"35","highest_child_id":768,"first_entry_time":134383,"exclusive_time":2,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":769,"first_entry_time":134388,"exclusive_time":0,"entries":1}],"allocations":[{"id":"27","count":1},{"id":"9","count":1}]}],"allocations":[{"id":"27","count":1}]},{"inclusive_time":56,"id":"35","highest_child_id":770,"first_entry_time":134393,"exclusive_time":56,"entries":3},{"jit_entries":3,"inclusive_time":1,"id":"36","highest_child_id":771,"first_entry_time":134447,"exclusive_time":1,"entries":3},{"inclusive_time":41,"id":"230","highest_child_id":775,"first_entry_time":134645,"exclusive_time":26,"entries":1,"callees":[{"inclusive_time":14,"id":"231","highest_child_id":775,"first_entry_time":134670,"exclusive_time":10,"entries":1,"callees":[{"inclusive_time":3,"id":"35","highest_child_id":774,"first_entry_time":134678,"exclusive_time":3,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":775,"first_entry_time":134684,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]}]},{"inclusive_time":80,"id":"232","highest_child_id":779,"first_entry_time":135084,"exclusive_time":31,"entries":1,"callees":[{"inclusive_time":49,"id":"233","highest_child_id":779,"first_entry_time":135114,"exclusive_time":39,"entries":1,"callees":[{"inclusive_time":9,"id":"234","highest_child_id":779,"first_entry_time":135150,"exclusive_time":8,"entries":2,"callees":[{"inclusive_time":1,"id":"87","highest_child_id":779,"first_entry_time":135154,"exclusive_time":1,"entries":2}]}],"allocations":[{"id":"27","count":2},{"id":"9","count":1}]}]}],"allocations":[{"id":"9","count":3},{"id":"25","count":3},{"id":"223","count":1},{"id":"224","count":1},{"id":"225","count":1}]}],"allocations":[{"id":"9","count":3},{"id":"3","count":3},{"id":"10","count":9}]},{"spesh_entries":1,"inclusive_time":18,"id":"41","highest_child_id":783,"first_entry_time":134453,"exclusive_time":14,"entries":1,"deopt_one":1,"callees":[{"jit_entries":1,"inclusive_time":1,"id":"42","highest_child_id":781,"first_entry_time":134459,"exclusive_time":1,"entries":1},{"inclusive_time":2,"id":"35","highest_child_id":782,"first_entry_time":134465,"exclusive_time":2,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":783,"first_entry_time":134471,"exclusive_time":0,"entries":1}]},{"inclusive_time":1,"id":"235","highest_child_id":784,"first_entry_time":134483,"exclusive_time":1,"entries":1,"allocations":[{"id":"9","count":1}]},{"inclusive_time":1,"id":"35","highest_child_id":785,"first_entry_time":135178,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":786,"first_entry_time":135181,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1}]},{"inclusive_time":720,"id":"236","highest_child_id":819,"first_entry_time":135228,"exclusive_time":64,"entries":1,"callees":[{"inclusive_time":655,"id":"237","highest_child_id":819,"first_entry_time":135292,"exclusive_time":43,"entries":1,"callees":[{"inclusive_time":105,"id":"238","highest_child_id":794,"first_entry_time":135317,"exclusive_time":3,"entries":1,"callees":[{"inclusive_time":102,"id":"23","highest_child_id":794,"first_entry_time":135320,"exclusive_time":10,"entries":1,"callees":[{"inclusive_time":91,"id":"26","highest_child_id":794,"first_entry_time":135329,"exclusive_time":44,"entries":1,"callees":[{"inclusive_time":2,"id":"42","highest_child_id":792,"first_entry_time":135340,"exclusive_time":2,"entries":1},{"inclusive_time":44,"id":"239","highest_child_id":794,"first_entry_time":135376,"exclusive_time":33,"entries":1,"callees":[{"inclusive_time":10,"id":"240","highest_child_id":794,"first_entry_time":135407,"exclusive_time":10,"entries":1}]}],"allocations":[{"id":"2","count":4}]}]}]},{"inclusive_time":506,"id":"241","highest_child_id":819,"first_entry_time":135441,"exclusive_time":49,"entries":1,"callees":[{"inclusive_time":457,"id":"242","highest_child_id":819,"first_entry_time":135490,"exclusive_time":205,"entries":1,"callees":[{"inclusive_time":17,"id":"86","highest_child_id":800,"first_entry_time":135506,"exclusive_time":13,"entries":1,"callees":[{"inclusive_time":1,"id":"87","highest_child_id":798,"first_entry_time":135512,"exclusive_time":1,"entries":1},{"inclusive_time":1,"id":"47","highest_child_id":799,"first_entry_time":135516,"exclusive_time":1,"entries":1},{"inclusive_time":1,"id":"50","highest_child_id":800,"first_entry_time":135520,"exclusive_time":1,"entries":1}]},{"jit_entries":1,"inclusive_time":0,"id":"88","highest_child_id":801,"first_entry_time":135527,"exclusive_time":0,"entries":1},{"inclusive_time":176,"id":"75","highest_child_id":815,"first_entry_time":135686,"exclusive_time":16,"entries":1,"callees":[{"jit_entries":1,"inclusive_time":1,"id":"11","highest_child_id":803,"first_entry_time":135692,"exclusive_time":1,"entries":1,"allocations":[{"jit":1,"id":"12","count":1}]},{"jit_entries":1,"inclusive_time":16,"id":"13","highest_child_id":805,"first_entry_time":135700,"exclusive_time":12,"entries":1,"callees":[{"jit_entries":1,"inlined_entries":1,"inclusive_time":4,"id":"30","highest_child_id":805,"first_entry_time":135712,"exclusive_time":4,"entries":1}],"allocations":[{"jit":2,"id":"2","count":2},{"jit":2,"id":"14","count":2},{"jit":1,"id":"9","count":1}]},{"inclusive_time":141,"id":"222","highest_child_id":815,"first_entry_time":135720,"exclusive_time":54,"entries":1,"callees":[{"inclusive_time":84,"id":"244","highest_child_id":813,"first_entry_time":135769,"exclusive_time":30,"entries":1,"callees":[{"inclusive_time":53,"id":"86","highest_child_id":812,"first_entry_time":135775,"exclusive_time":45,"entries":5,"callees":[{"inclusive_time":2,"id":"87","highest_child_id":809,"first_entry_time":135779,"exclusive_time":2,"entries":5},{"inclusive_time":1,"id":"47","highest_child_id":810,"first_entry_time":135782,"exclusive_time":1,"entries":4},{"inclusive_time":2,"id":"50","highest_child_id":811,"first_entry_time":135785,"exclusive_time":2,"entries":5},{"inclusive_time":0,"id":"245","highest_child_id":812,"first_entry_time":135846,"exclusive_time":0,"entries":1}]},{"jit_entries":5,"inclusive_time":1,"id":"88","highest_child_id":813,"first_entry_time":135791,"exclusive_time":1,"entries":5}],"allocations":[{"id":"27","count":5}]},{"inclusive_time":1,"id":"35","highest_child_id":814,"first_entry_time":135857,"exclusive_time":1,"entries":1},{"jit_entries":1,"inclusive_time":0,"id":"36","highest_child_id":815,"first_entry_time":135861,"exclusive_time":0,"entries":1}],"allocations":[{"id":"9","count":1},{"id":"25","count":1},{"id":"243","count":1}]}],"allocations":[{"id":"9","count":1},{"id":"3","count":1},{"id":"10","count":3}]},{"inclusive_time":57,"id":"246","highest_child_id":819,"first_entry_time":135890,"exclusive_time":32,"entries":1,"callees":[{"inclusive_time":1,"id":"66","highest_child_id":817,"first_entry_time":135900,"exclusive_time":1,"entries":1,"allocations":[{"id":"9","count":1}]},{"inclusive_time":22,"id":"248","highest_child_id":819,"first_entry_time":135924,"exclusive_time":21,"entries":1,"callees":[{"inclusive_time":1,"id":"249","highest_child_id":819,"first_entry_time":135944,"exclusive_time":1,"entries":1}]}],"allocations":[{"id":"27","count":2},{"id":"9","count":1},{"id":"247","count":1}]}],"allocations":[{"id":"27","count":6},{"id":"80","count":1}]}]}],"allocations":[{"id":"10","count":1},{"id":"14","count":1},{"id":"24","count":1}]}]}],"allocations":[{"id":"27","count":1}]}],"allocations":[{"id":"5","count":1}]}],"allocations":[{"id":"2","count":1},{"id":"3","count":1}]}]}},{"total_time":127948,"thread":3,"start_time":49749,"spesh_time":0,"parent":0,"gcs":[{"time":6079,"start_time":49749,"sequence":1,"retained_bytes":0,"responsible":0,"promoted_bytes_unmanaged":434176,"promoted_bytes":192,"gen2_roots":18,"full":0,"cleared_bytes":80}]}]');
+
+ // grab the "dictionary" from the very first entry
+ var id_to_things = rawData[0];
+ // the rest of the program expects the list to contain callframes, not the dictionary
+ // so we just shift it off the beginning.
+ rawData.shift();
+
+ // Extract some common things out of the raw data.
+ var nodeIdToName = {};
+ var nodeIdToFile = {};
+ var nodeIdToLine = {};
+ (function () {
+ function walkCallGraphNode(node) {
+ if (!nodeIdToName[node.id]) {
+ var existing_data = id_to_things[node.id.toString()];
+ node.name = existing_data.name;
+ node.line = existing_data.line;
+ node.file = existing_data.file;
+ nodeIdToName[node.id] = node.name == "" ? "<anon>" : node.name;
+ nodeIdToLine[node.id] = node.line < 1 ? "<unknown>" : node.line;
+ nodeIdToFile[node.id] = node.file == "" ? "<unknown>" : node.file;
+ }
+ if (node.callees)
+ node.callees.map(walkCallGraphNode);
+ }
+ rawData.forEach(function (thread) {
+ if (typeof thread.call_graph != "undefined")
+ walkCallGraphNode(thread.call_graph);
+ });
+ }());
+
+ var maxSeqNum = 0;
+ var gcParticipants = [];
+ var gcTimings = [];
+ (function() {
+ rawData.forEach(function (data, index) {
+ gcs = data.gcs;
+ if (gcs.length == 0)
+ return;
+ let seq = gcs[gcs.length - 1].sequence;
+ if (seq > maxSeqNum)
+ maxSeqNum = seq;
+ gcs.forEach(function (data) {
+ if (typeof gcParticipants[data.sequence] == "undefined")
+ gcParticipants[data.sequence] = [];
+ if (typeof gcTimings[data.sequence] == "undefined")
+ gcTimings[data.sequence] = { start: Infinity, end: -Infinity, full: 0 };
+ gcParticipants[data.sequence].push(index);
+ if (data.start_time < gcTimings[data.sequence].start)
+ gcTimings[data.sequence].start = data.start_time;
+ if (data.start_time + data.time > gcTimings[data.sequence].end)
+ gcTimings[data.sequence].end = data.start_time + data.time;
+ gcTimings[data.sequence].full = data.full;
+ });
+ });
+ gcTimings.forEach(function (data) {
+ data.total = data.end - data.start;
+ });
+ }());
+
+
+ // Register application and add controllers, increase recursion depth for callGraphController
+ var moarProfApp = angular.module('moarProfApp', ['ui.bootstrap']).config(function($rootScopeProvider) {
+ $rootScopeProvider.digestTtl(100);
+ });
+
+ moarProfApp.controller('NavigationController', function ($scope) {
+ $scope.Tab = 'Overview';
+ });
+
+ moarProfApp.controller('OverviewController', function ($scope) {
+ /* It's okay to take only the first thread's data here:
+ * - the total time of the main thread should be the maximum
+ * anyway, since all other threads are spawned from it.
+ * - Spesh time is stashed in the main thread's profile data,
+ * even though it's actually spent in another thread.
+ */
+ var totalTime = rawData[0].total_time;
+ var speshTime = rawData[0].spesh_time;
+ var gcTime = 0;
+ var gcNursery = 0;
+ var gcFull = 0;
+ var gcNurseryTime = 0;
+ var gcFullTime = 0;
+ var totalEntries = 0;
+ var inlineEntries = 0;
+ var jitEntries = 0;
+ var speshEntries = 0;
+ var deoptOnes = 0;
+ var deoptAlls = 0;
+ var osrs = 0;
+ var numThreads = rawData.length;
+
+ var averageParticipants = 0;
+ gcParticipants.forEach(function (run) {
+ averageParticipants += run.length;
+ });
+
+ averageParticipants = averageParticipants / gcParticipants.length;
+ gcTimings.map(function (gc) {
+ gcTime += gc.total;
+ if (gc.full) {
+ gcFull++;
+ gcFullTime += gc.total;
+ }
+ else {
+ gcNursery++;
+ gcNurseryTime += gc.total;
+ }
+ });
+ function walkCallGraphNode(node) {
+ totalEntries += node.entries || 0;
+ inlineEntries += node.inlined_entries || 0;
+ speshEntries += node.spesh_entries || 0;
+ jitEntries += node.jit_entries || 0;
+ deoptOnes += node.deopt_one || 0;
+ deoptAlls += node.deopt_all || 0;
+ osrs += node.osr || 0;
+ if (node.callees)
+ node.callees.map(walkCallGraphNode);
+ }
+ rawData.forEach(function (thread) {
+ if (typeof thread.call_graph != "undefined")
+ walkCallGraphNode(thread.call_graph);
+ });
+
+ $scope.NumThreads = numThreads;
+
+ // Time spent
+ var overheadTime = gcTime;
+ var executingTime = totalTime - overheadTime;
+ $scope.TotalTime = +(totalTime / 1000).toFixed(2);
+ $scope.GCOverheadTime = +(overheadTime / 1000).toFixed(2);
+ $scope.GCOverheadTimePercent = +(100 * overheadTime / totalTime).toFixed(2);
+ $scope.ExecutingTime = +(executingTime / 1000).toFixed(2);
+ $scope.ExecutingTimePercent = +(100 * executingTime / totalTime).toFixed(2);
+ $scope.GCTime = +(gcTime / 1000).toFixed(2);
+ $scope.GCTimePercent = +(100 * gcTime / totalTime).toFixed(2);
+ $scope.SpeshTime = +(speshTime / 1000).toFixed(2);
+ $scope.SpeshTimePercent = +(100 * speshTime / totalTime).toFixed(2);
+
+ // Routines
+ var interpEntries = totalEntries - (jitEntries + speshEntries);
+ $scope.EntriesWithoutInline = totalEntries - inlineEntries;
+ $scope.EntriesInline = inlineEntries;
+ $scope.InlinePercent = +(100 * inlineEntries / totalEntries).toFixed(2);
+ $scope.InterpFrames = interpEntries;
+ $scope.InterpFramesPercent = +(100 * interpEntries / totalEntries).toFixed(2);
+ $scope.SpeshFrames = speshEntries;
+ $scope.SpeshFramesPercent = +(100 * speshEntries / totalEntries).toFixed(2);
+ $scope.JITFrames = jitEntries;
+ $scope.JITFramesPercent = +(100 * jitEntries / totalEntries).toFixed(2);
+
+ // Garbage collection
+ $scope.GCRuns = gcNursery + gcFull;
+ $scope.FullGCRuns = gcFull;
+ $scope.NurseryAverage = +((gcNurseryTime / 1000) / gcNursery).toFixed(2);
+ $scope.FullAverage = +((gcFullTime / 1000) / gcFull).toFixed(2);
+ $scope.AverageParticipants = averageParticipants.toFixed(2);
+
+ // Dynamic optimization
+ var optimizedFrames = speshEntries + jitEntries;
+ $scope.OptimizedFrames = optimizedFrames;
+ $scope.DeoptOnes = deoptOnes;
+ $scope.DeoptOnePercent = +(100 * deoptOnes / (optimizedFrames || 1)).toFixed(2);
+ $scope.DeoptAlls = deoptAlls;
+ $scope.OSRs = osrs;
+ });
+
+ moarProfApp.controller('RoutinesController', function ($scope) {
+ // Walk call graph to build data.
+ var idToEntries = {};
+ var idToSpeshEntries = {};
+ var idToJITEntries = {};
+ var idToExclusive = {};
+ var idToInclusive = {};
+ var idToOSR = {};
+ var idRecDepth = {};
+ var totalExclusive = 0;
+ var totalInclusive = rawData[0].call_graph.inclusive_time;
+ function walkCallGraphNode(node) {
+ if (!idToEntries[node.id]) {
+ idToEntries[node.id] = 0;
+ idToSpeshEntries[node.id] = 0;
+ idToJITEntries[node.id] = 0;
+ idToExclusive[node.id] = 0;
+ idToInclusive[node.id] = 0;
+ idToOSR[node.id] = false;
+ idRecDepth[node.id] = 0;
+ }
+ idToEntries[node.id] += node.entries || 0;
+ idToSpeshEntries[node.id] += node.spesh_entries || 0;
+ idToJITEntries[node.id] += node.jit_entries || 0;
+ idToExclusive[node.id] += node.exclusive_time || 0;
+ totalExclusive += node.exclusive_time || 0;
+ if (node.osr > 0)
+ idToOSR[node.id] = true;
+ if (idRecDepth[node.id] == 0)
+ idToInclusive[node.id] += node.inclusive_time;
+ if (node.callees) {
+ idRecDepth[node.id]++;
+ node.callees.map(walkCallGraphNode);
+ idRecDepth[node.id]--;
+ }
+ }
+ rawData.forEach(function (thread) {
+ if (typeof thread.call_graph != "undefined")
+ walkCallGraphNode(thread.call_graph);
+ });
+
+ // Build object list per routine.
+ var routineList = [];
+ for (id in idToEntries) {
+ var speshEntriesPercent = +(100 * idToSpeshEntries[id] / idToEntries[id]).toFixed(2);
+ var jitEntriesPercent = +(100 * idToJITEntries[id] / idToEntries[id]).toFixed(2);
+ var interpEntriesPercent = 100 - (speshEntriesPercent + jitEntriesPercent);
+ var entry = {
+ Name: nodeIdToName[id],
+ Line: nodeIdToLine[id],
+ File: nodeIdToFile[id],
+ Entries: idToEntries[id],
+ InterpEntriesPercent: interpEntriesPercent,
+ SpeshEntriesPercent: speshEntriesPercent,
+ JITEntriesPercent: jitEntriesPercent,
+ InclusiveTime: +(idToInclusive[id] / 1000).toFixed(2),
+ InclusiveTimePercent: +(100 * idToInclusive[id] / totalInclusive).toFixed(2),
+ ExclusiveTime: +(idToExclusive[id] / 1000).toFixed(2),
+ ExclusiveTimePercent: +(100 * idToExclusive[id] / totalExclusive).toFixed(2),
+ OSR: idToOSR[id]
+ };
+ routineList.push(entry);
+ }
+ $scope.Routines = routineList;
+ $scope.predicate = "InclusiveTime";
+ $scope.reverse = true;
+ });
+
+ moarProfApp.controller('CallGraphController', function ($scope) {
+ $scope.Current = rawData[0].call_graph;
+ $scope.total_time = rawData[0].total_time;
+ $scope.SuchCallers = false;
+ $scope.RecentCallers = [];
+ $scope.predicate = "Time";
+ $scope.reverse = true;
+ var all_callers = [];
+ updateCurrentData();
+
+ $scope.toCallee = function (callee) {
+ // Update caller history.
+ all_callers.push($scope.Current);
+ $scope.RecentCallers.push($scope.Current);
+ if ($scope.RecentCallers.length > 5)
+ $scope.RecentCallers.shift();
+
+ // Update current node and callees.
+ $scope.Current = callee;
+ updateCurrentData();
+ };
+
+ $scope.toCaller = function (caller) {
+ // Update caller history.
+ while (all_callers.length > 0) {
+ var removed = all_callers.pop();
+ if ($scope.RecentCallers.length > 0)
+ $scope.RecentCallers.pop();
+ if (removed == caller)
+ break;
+ }
+ if (all_callers.length > $scope.RecentCallers.length) {
+ var ptr = all_callers.length - $scope.RecentCallers.length;
+ while (ptr >= 0 && $scope.RecentCallers.length < 5) {
+ $scope.RecentCallers.unshift(all_callers[ptr]);
+ ptr--;
+ }
+ }
+
+ // Update current node and callees.
+ $scope.Current = caller;
+ updateCurrentData();
+ }
+
+ /*
+ * Given a callee, create a unique, repeatable color;
+ * h/t https://stackoverflow.com/questions/3426404
+ */
+ $scope.backgroundColor = function (callee) {
+ var str = callee.$$hashKey + callee.file + callee.name;
+ for (var i = 0, hash = 0; i < str.length; hash = str.charCodeAt(i++) + ((hash << 5) - hash));
+ for (var i = 0, colour = "#"; i < 3; colour += ("00" + ((hash >> i++ * 8) & 0xFF).toString(16)).slice(-2));
+ return colour;
+ }
+
+ function updateCurrentData() {
+ // Line and file.
+ var current = $scope.Current;
+ $scope.Line = current.line;
+ $scope.File = current.file;
+
+ // Entry statistics.
+ var interpEntries = current.entries - (current.spesh_entries + current.jit_entries);
+ var nonInlineEntries = current.entries - current.inlined_entries;
+ $scope.Entries = nonInlineEntries;
+ $scope.Percent = (100 * nonInlineEntries / current.entries).toFixed(2);
+ $scope.InlineEntries = current.inlined_entries;
+ $scope.InlinePercent = (100 * current.inlined_entries / current.entries).toFixed(2);
+ $scope.InterpEntries = interpEntries;
+ $scope.InterpPercent = (100 * interpEntries / current.entries).toFixed(2);
+ $scope.SpeshEntries = current.spesh_entries;
+ $scope.SpeshPercent = (100 * current.spesh_entries / current.entries).toFixed(2);
+ $scope.JITEntries = current.jit_entries;
+ $scope.JITPercent = (100 * current.jit_entries / current.entries).toFixed(2);
+
+ // Callees.
+ $scope.Callees = calleesOf(current);
+ }
+
+ function calleesOf(node) {
+ if (!node.callees)
+ return [];
+
+ var totalExclusive = 0.0;
+ node.callees.map(function (c) { totalExclusive += c.exclusive_time; });
+
+ return node.callees.map(function (c) {
+ var speshCallsPercent = +(100 * c.spesh_entries / c.entries).toFixed(2);
+ var jitCallsPercent = +(100 * c.jit_entries / c.entries).toFixed(2);
+ var interpCallsPercent = 100 - (speshCallsPercent + jitCallsPercent);
+ var inlinedPercent = +(100 * c.inlined_entries / c.entries).toFixed(2);
+ return {
+ Name: nodeIdToName[c.id],
+ Line: nodeIdToLine[c.id],
+ File: nodeIdToFile[c.id],
+ Calls: c.entries,
+ Time: +(c.inclusive_time / 1000).toFixed(2),
+ TimePercent: +(100 * c.inclusive_time / node.inclusive_time).toFixed(2),
+ InterpCallsPercent: interpCallsPercent,
+ SpeshCallsPercent: speshCallsPercent,
+ JITCallsPercent: jitCallsPercent,
+ InlinedPercent: inlinedPercent,
+ VeryInline: inlinedPercent >= 95,
+ SometimesInline: inlinedPercent < 95 && inlinedPercent > 10,
+ Node: c
+ };
+ });
+ }
+ });
+
+ moarProfApp.controller('AllocationsController', function ($scope, $uibModal) {
+ // Traverse all call nodes, counting up the allocations.
+ var typeIdToName = {};
+ var typeIdToAllocations = {};
+ var typeIdToAllocationsByType = {};
+ var typeIdToRoutineStats = {};
+ var maxAllocations = 1;
+ function walkCallGraphNode(node) {
+ if (node.allocations) {
+ node.allocations.map(function (alloc) {
+ alloc.type = id_to_things[alloc.id];
+ if (!typeIdToName[alloc.id]) {
+ typeIdToName[alloc.id] = alloc.type == "" ? "<anon>" : alloc.type;
+ typeIdToAllocations[alloc.id] = 0;
+ typeIdToAllocationsByType[alloc.id] = [0, 0, 0];
+ typeIdToRoutineStats[alloc.id] = {};
+ }
+ typeIdToAllocations[alloc.id] += alloc.count;
+ typeIdToAllocationsByType[alloc.id][0] += alloc.count - (alloc.spesh || 0) - (alloc.jit || 0);
+ typeIdToAllocationsByType[alloc.id][1] += alloc.spesh || 0;
+ typeIdToAllocationsByType[alloc.id][2] += alloc.jit || 0;
+ if (typeIdToAllocations[alloc.id] > maxAllocations)
+ maxAllocations = typeIdToAllocations[alloc.id];
+ if (typeIdToRoutineStats[alloc.id][node.id]) {
+ typeIdToRoutineStats[alloc.id][node.id]['count'] += alloc.count || 0;
+ typeIdToRoutineStats[alloc.id][node.id]['spesh'] += alloc.spesh || 0;
+ typeIdToRoutineStats[alloc.id][node.id]['jit'] += alloc.jit || 0;
+ } else {
+ typeIdToRoutineStats[alloc.id][node.id] = {
+ count: alloc.count || 0,
+ spesh: alloc.spesh || 0,
+ jit: alloc.jit || 0
+ };
+ }
+ });
+ }
+ if (node.callees) {
+ node.callees.map(walkCallGraphNode);
+ }
+ }
+ rawData.forEach(function (thread) {
+ if (typeof thread.call_graph != "undefined")
+ walkCallGraphNode(thread.call_graph);
+ });
+
+ // Build allocation summary.
+ var allocationSummary = [];
+ for (id in typeIdToName) {
+ var maxAllocationByRoutine = 1;
+ for (var rid in typeIdToRoutineStats[id])
+ if (typeIdToRoutineStats[id][rid]['count'] > maxAllocationByRoutine)
+ maxAllocationByRoutine = typeIdToRoutineStats[id][rid]['count'];
+ var routineStats = [];
+ for (var rid in typeIdToRoutineStats[id])
+ routineStats.push({
+ Name: nodeIdToName[rid],
+ Line: nodeIdToLine[rid],
+ File: nodeIdToFile[rid],
+ Allocations: typeIdToRoutineStats[id][rid]['count'],
+ AllocationsSpesh: typeIdToRoutineStats[id][rid]['spesh'],
+ AllocationsJit: typeIdToRoutineStats[id][rid]['jit'],
+ AllocationsPercent: (100 * typeIdToRoutineStats[id][rid]['count'] / maxAllocationByRoutine),
+ AllocationsInterpPercent: (100 * (typeIdToRoutineStats[id][rid]['count'] - typeIdToRoutineStats[id][rid]['jit'] - typeIdToRoutineStats[id][rid]['spesh']) / maxAllocationByRoutine),
+ AllocationsSpeshPercent: (100 * typeIdToRoutineStats[id][rid]['spesh'] / maxAllocationByRoutine),
+ AllocationsJitPercent: (100 * typeIdToRoutineStats[id][rid]['jit'] / maxAllocationByRoutine)
+ });
+ var entry = {
+ Name: typeIdToName[id],
+ Allocations: typeIdToAllocations[id],
+ AllocationsPercent: +(100 * typeIdToAllocations[id] / maxAllocations).toFixed(2),
+ AllocationsInterpPercent: +(100 * typeIdToAllocationsByType[id][0] / maxAllocations).toFixed(2),
+ AllocationsSpeshPercent: +(100 * typeIdToAllocationsByType[id][1] / maxAllocations).toFixed(2),
+ AllocationsJitPercent: +(100 * typeIdToAllocationsByType[id][2] / maxAllocations).toFixed(2),
+ RoutineStats: routineStats
+ };
+ allocationSummary.push(entry);
+ }
+ $scope.AllocationSummary = allocationSummary;
+ $scope.predicate = "Allocations";
+ $scope.reverse = true;
+ $scope.routinePredicate = "Allocations";
+ $scope.routineReverse = true;
+
+ // Allocating routines handlng.
+ $scope.modalInstance = null;
+ $scope.showAllocatingRoutines = function (alloc) {
+ // Show modal dialog with data.
+ $scope.CurrentAllocatingRoutine = alloc.Name;
+ $scope.CurrentAllocatingRoutineStats = alloc.RoutineStats;
+ $scope.modalInstance = $uibModal.open({
+ templateUrl: 'myModalContent.html',
+ scope: $scope
+ });
+ }
+ });
+
+ moarProfApp.controller('GCController', function ($scope) {
+ // Find longest GC run.
+ var longestGC = 0;
+ gcTimings.map(function (timing) {
+ if (timing.total > longestGC)
+ longestGC = timing.total;
+ });
+
+ // Produce something nice to render.
+ var run = 0;
+ $scope.GCs = rawData[0].gcs.map(function (gc) {
+ var totalBytes = gc.cleared_bytes + gc.retained_bytes + gc.promoted_bytes;
+ return {
+ Run: ++run,
+ StartTime: +(gc.start_time / 1000).toFixed(2),
+ Time: +(gc.time / 1000).toFixed(2),
+ Full: (gc.full != 0),
+ TimePercent: +(100 * gc.time / longestGC).toFixed(2),
+ RetainedKilobytes: Math.round(gc.retained_bytes / 1024),
+ PromotedKilobytes: Math.round(gc.promoted_bytes / 1024),
+ ClearedKilobytes: Math.round(gc.cleared_bytes / 1024),
+ RetainedPercent: +(100 * gc.retained_bytes / totalBytes).toFixed(2),
+ PromotedPercent: +(100 * gc.promoted_bytes / totalBytes).toFixed(2),
+ ClearedPercent: +(100 * gc.cleared_bytes / totalBytes).toFixed(2),
+ Gen2Roots: 'gen2_roots' in gc ? gc.gen2_roots : 0
+ };
+ });
+ $scope.predicate = 'Run';
+ $scope.reverse = false;
+ });
+
+ moarProfApp.controller('OSRDeoptController', function ($scope) {
+ // Walk call graph to build data.
+ var idToOSR = {};
+ var idToDeoptOne = {};
+ var idToDeoptAll = {};
+ var maxOSR = 1;
+ var maxDeoptOne = 1;
+ var maxDeoptAll = 1;
+ function walkCallGraphNode(node) {
+ if (!idToOSR[node.id]) {
+ idToOSR[node.id] = 0;
+ idToDeoptOne[node.id] = 0;
+ idToDeoptAll[node.id] = 0;
+ }
+ idToOSR[node.id] += node.osr || 0;
+ idToDeoptOne[node.id] += node.deopt_one || 0;
+ idToDeoptAll[node.id] += node.deopt_all || 0;
+ if (idToOSR[node.id] > maxOSR)
+ maxOSR = idToOSR[node.id];
+ if (idToDeoptOne[node.id] > maxDeoptOne)
+ maxDeoptOne = idToDeoptOne[node.id];
+ if (idToDeoptAll[node.id] > maxDeoptAll)
+ maxDeoptAll = idToDeoptAll[node.id];
+ if (node.callees)
+ node.callees.map(walkCallGraphNode);
+ }
+ walkCallGraphNode(rawData[0].call_graph);
+
+ // Build up OSR, deopt one, and deopt all tables.
+ var osrs = [];
+ var deoptOnes = [];
+ var deoptAlls = [];
+ for (id in idToOSR) {
+ if (idToOSR[id] > 0) {
+ osrs.push({
+ Name: nodeIdToName[id],
+ Line: nodeIdToLine[id],
+ File: nodeIdToFile[id],
+ Count: idToOSR[id],
+ Percent: Math.round(100 * idToOSR[id] / maxOSR)
+ });
+ }
+ if (idToDeoptOne[id] > 0) {
+ deoptOnes.push({
+ Name: nodeIdToName[id],
+ Line: nodeIdToLine[id],
+ File: nodeIdToFile[id],
+ Count: idToDeoptOne[id],
+ Percent: Math.round(100 * idToDeoptOne[id] / maxDeoptOne)
+ });
+ }
+ if (idToDeoptAll[id] > 0) {
+ deoptAlls.push({
+ Name: nodeIdToName[id],
+ Line: nodeIdToLine[id],
+ File: nodeIdToFile[id],
+ Count: idToDeoptAll[id],
+ Percent: Math.round(100 * idToDeoptAll[id] / maxDeoptAll)
+ });
+ }
+ }
+ $scope.OSRs = osrs;
+ $scope.DeoptOnes = deoptOnes;
+ $scope.DeoptAlls = deoptAlls;
+ $scope.predicate = 'Count';
+ $scope.reverse = true;
+ });
+ </script>
+ </body>
+</html>