Add String#replace & String#replaceAll (#653)

This commit is contained in:
Max Graey 2019-06-12 18:39:49 +03:00 committed by Daniel Wirtz
parent d4313f1ed8
commit 3af2603daa
15 changed files with 5206 additions and 3013 deletions

View File

@ -1240,6 +1240,8 @@ declare class String {
padStart(targetLength: i32, padString?: string): string;
padEnd(targetLength: i32, padString?: string): string;
repeat(count?: i32): string;
replace(search: string, replacement: string): string;
replaceAll(search: string, replacement: string): string;
slice(beginIndex: i32, endIndex?: i32): string;
split(separator?: string, limit?: i32): string[];
toString(): string;

View File

@ -43,7 +43,6 @@ import { idof } from "./builtins";
}
@operator("[]") charAt(pos: i32): String {
assert(this !== null);
if (<u32>pos >= <u32>this.length) return changetype<String>("");
var out = __alloc(2, idof<String>());
store<u16>(out, load<u16>(changetype<usize>(this) + (<usize>pos << 1)));
@ -81,7 +80,6 @@ import { idof } from "./builtins";
}
endsWith(search: String, end: i32 = String.MAX_LENGTH): bool {
assert(this !== null);
if (search === null) return false;
end = min(max(end, 0), this.length);
var searchLength = <isize>search.length;
@ -169,7 +167,6 @@ import { idof } from "./builtins";
}
startsWith(search: String, start: i32 = 0): bool {
assert(this !== null);
if (search === null) search = changetype<String>("null");
var len = <isize>this.length;
var searchStart = min(max(<isize>start, 0), len);
@ -180,7 +177,6 @@ import { idof } from "./builtins";
}
substr(start: i32, length: i32 = i32.MAX_VALUE): String { // legacy
assert(this !== null);
var intStart: isize = start;
var end: isize = length;
var size: isize = this.length;
@ -193,7 +189,6 @@ import { idof } from "./builtins";
}
substring(start: i32, end: i32 = i32.MAX_VALUE): String {
assert(this !== null);
var len: isize = this.length;
var finalStart = min<isize>(max(start, 0), len);
var finalEnd = min<isize>(max(end, 0), len);
@ -208,7 +203,6 @@ import { idof } from "./builtins";
}
trim(): String {
assert(this !== null);
var length = this.length;
var size: usize = length << 1;
while (
@ -246,7 +240,6 @@ import { idof } from "./builtins";
}
trimStart(): String {
assert(this !== null);
var size = <usize>this.length << 1;
var offset: usize = 0;
while (
@ -266,7 +259,6 @@ import { idof } from "./builtins";
}
trimEnd(): String {
assert(this !== null);
var originalSize = <usize>this.length << 1;
var size = originalSize;
while (
@ -285,7 +277,6 @@ import { idof } from "./builtins";
}
padStart(length: i32, pad: string = " "): String {
assert(this !== null);
var thisSize = <usize>this.length << 1;
var targetSize = <usize>length << 1;
var padSize = <usize>pad.length << 1;
@ -306,7 +297,6 @@ import { idof } from "./builtins";
}
padEnd(length: i32, pad: string = " "): String {
assert(this !== null);
var thisSize = <usize>this.length << 1;
var targetSize = <usize>length << 1;
var padSize = <usize>pad.length << 1;
@ -327,7 +317,6 @@ import { idof } from "./builtins";
}
repeat(count: i32 = 0): String {
assert(this !== null);
var length = this.length;
// Most browsers can't handle strings 1 << 28 chars or longer
@ -342,8 +331,121 @@ import { idof } from "./builtins";
return changetype<String>(out); // retains
}
replace(search: String, replacement: String): String {
var len: usize = this.length;
var slen: usize = search.length;
if (len <= slen) {
return len < slen ? this : select<String>(replacement, this, search == this);
}
var index: isize = this.indexOf(search);
if (~index) {
let rlen: usize = replacement.length;
len -= slen;
let olen = len + rlen;
if (olen) {
let out = __alloc(olen << 1, idof<String>());
memory.copy(out, changetype<usize>(this), index << 1);
memory.copy(
out + (index << 1),
changetype<usize>(replacement),
rlen << 1
);
memory.copy(
out + ((index + rlen) << 1),
changetype<usize>(this) + ((index + slen) << 1),
(len - index) << 1
);
return changetype<String>(out);
}
}
return this;
}
replaceAll(search: String, replacement: String): String {
var len: usize = this.length;
var slen: usize = search.length;
if (len <= slen) {
return len < slen ? this : select<String>(replacement, this, search == this);
}
var rlen: usize = replacement.length;
if (!slen) {
if (!rlen) return this;
// Special case: 'abc'.replaceAll('', '-') -> '-a-b-c-'
let out = __alloc((len + (len + 1) * rlen) << 1, idof<String>());
memory.copy(out, changetype<usize>(replacement), rlen << 1);
let offset = rlen;
for (let i: usize = 0; i < len; ++i) {
store<u16>(
changetype<usize>(out) + (offset++ << 1),
load<u16>(changetype<usize>(this) + (i << 1))
);
memory.copy(
out + (offset << 1),
changetype<usize>(replacement),
rlen << 1
);
offset += rlen;
}
return changetype<String>(out);
}
var prev: isize = 0, next: isize = 0;
if (slen == rlen) {
// Fast path when search and replacement have same length
let size = len << 1;
let out = __alloc(size, idof<String>());
memory.copy(out, changetype<usize>(this), size);
while (~(next = <isize>this.indexOf(search, <i32>prev))) {
memory.copy(out + (next << 1), changetype<usize>(replacement), rlen << 1);
prev = next + slen;
}
return changetype<String>(out);
}
var out: usize = 0, offset: usize = 0, resLen = len;
while (~(next = <isize>this.indexOf(search, <i32>prev))) {
if (!out) out = __alloc(len << 1, idof<String>());
if (offset > resLen) {
let newLength = resLen << 1;
out = __realloc(out, newLength << 1);
resLen = newLength;
}
let chunk = next - prev;
memory.copy(
out + (offset << 1),
changetype<usize>(this) + (prev << 1),
chunk << 1
);
offset += chunk;
memory.copy(
out + (offset << 1),
changetype<usize>(replacement),
rlen << 1
);
offset += rlen;
prev = next + slen;
}
if (offset) {
if (offset > resLen) {
let newLength = resLen << 1;
out = __realloc(out, newLength << 1);
resLen = newLength;
}
let rest = len - prev;
if (rest) {
memory.copy(
out + (offset << 1),
changetype<usize>(this) + (prev << 1),
rest << 1
);
}
rest += offset;
if (resLen > rest) out = __realloc(out, rest << 1);
return changetype<String>(out);
}
return this;
}
slice(start: i32, end: i32 = i32.MAX_VALUE): String {
var len = this.length;
var len = this.length;
start = start < 0 ? max(start + len, 0) : min(start, len);
end = end < 0 ? max(end + len, 0) : min(end, len);
len = end - start;
@ -354,7 +456,6 @@ import { idof } from "./builtins";
}
split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] {
assert(this !== null);
if (!limit) return changetype<Array<String>>(__allocArray(0, alignof<String>(), idof<Array<String>>())); // retains
if (separator === null) return <String[]>[this];
var length: isize = this.length;
@ -380,7 +481,7 @@ import { idof } from "./builtins";
}
var result = changetype<Array<String>>(__allocArray(0, alignof<String>(), idof<Array<String>>())); // retains
var end = 0, start = 0, i = 0;
while ((end = this.indexOf(separator, start)) != -1) {
while (~(end = this.indexOf(separator, start))) {
let len = end - start;
if (len > 0) {
let out = __alloc(<usize>len << 1, idof<String>());

View File

@ -461,6 +461,7 @@ declare class String {
padStart(targetLength: i32, padString?: string): string;
padEnd(targetLength: i32, padString?: string): string;
replace(search: string, replacement: string): string;
replaceAll(search: string, replacement: string): string;
repeat(count?: i32): string;
slice(beginIndex: i32, endIndex?: i32): string;
split(separator?: string, limit?: i32): string[];

View File

@ -196,6 +196,16 @@ String["fromCodePoints"] = function fromCodePoints(arr) {
return String.fromCodePoint.apply(String, arr);
};
if (!String.prototype.replaceAll) {
Object.defineProperty(String.prototype, "replaceAll", {
value: function replaceAll(search, replacment) {
var res = this.split(search).join(replacment);
if (!search.length) res = replacment + res + replacment;
return res;
}
});
}
globalScope["isInteger"] = Number.isInteger;
globalScope["isFloat"] = function isFloat(arg) {

View File

@ -24,15 +24,14 @@
(data (i32.const 1152) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\d0\03\00\00\d0\03\00\00\ae\00\00\00W")
(data (i32.const 1184) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;")
(data (i32.const 1240) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\b0\04\00\00\b0\04\00\00(\00\00\00\n")
(data (i32.const 1272) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s")
(data (i32.const 1324) "\01\00\00\00\01")
(data (i32.const 1336) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\00.\000")
(data (i32.const 1360) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003")
(data (i32.const 1384) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\005")
(data (i32.const 1408) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004")
(data (i32.const 1432) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002")
(data (i32.const 1456) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e")
(data (i32.const 1480) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e")
(data (i32.const 1276) "\01\00\00\00\01")
(data (i32.const 1288) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\00.\000")
(data (i32.const 1312) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003")
(data (i32.const 1336) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\005")
(data (i32.const 1360) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004")
(data (i32.const 1384) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002")
(data (i32.const 1408) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e")
(data (i32.const 1432) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e")
(global $number/a (mut i32) (i32.const 1))
(global $~lib/rt/stub/startOffset (mut i32) (i32.const 0))
(global $~lib/rt/stub/offset (mut i32) (i32.const 0))
@ -1320,16 +1319,6 @@
(func $~lib/string/String#substring (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.eqz
if
i32.const 0
i32.const 1288
i32.const 196
i32.const 4
call $~lib/builtins/abort
unreachable
end
i32.const 0
local.get $0
call $~lib/string/String#get:length
@ -1372,7 +1361,7 @@
local.tee $2
i32.eqz
if
i32.const 1336
i32.const 1288
return
end
local.get $3
@ -1432,8 +1421,8 @@
call $~lib/string/String#substring
)
(func $~lib/number/Bool#toString (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
i32.const 1472
i32.const 1496
i32.const 1424
i32.const 1448
local.get $0
select
)
@ -1488,7 +1477,7 @@
)
(func $start:number (; 21 ;) (type $FUNCSIG$v)
(local $0 i32)
i32.const 1520
i32.const 1472
global.set $~lib/rt/stub/startOffset
global.get $~lib/rt/stub/startOffset
global.set $~lib/rt/stub/offset
@ -1506,7 +1495,7 @@
unreachable
end
call $~lib/util/number/dtoa
i32.const 1352
i32.const 1304
call $~lib/string/String.__eq
i32.eqz
if
@ -1519,7 +1508,7 @@
end
i32.const 3
call $~lib/util/number/itoa32
i32.const 1376
i32.const 1328
call $~lib/string/String.__eq
i32.eqz
if
@ -1532,7 +1521,7 @@
end
i32.const -5
call $~lib/util/number/itoa32
i32.const 1400
i32.const 1352
call $~lib/string/String.__eq
i32.eqz
if
@ -1545,7 +1534,7 @@
end
i32.const 4
call $~lib/util/number/itoa32
i32.const 1424
i32.const 1376
call $~lib/string/String.__eq
i32.eqz
if
@ -1562,7 +1551,7 @@
global.set $number/a
global.get $number/a
call $~lib/util/number/itoa32
i32.const 1448
i32.const 1400
call $~lib/string/String.__eq
i32.eqz
if
@ -1592,7 +1581,7 @@
end
i32.const 1
call $~lib/number/Bool#toString
i32.const 1472
i32.const 1424
call $~lib/string/String.__eq
i32.eqz
if
@ -1605,7 +1594,7 @@
end
i32.const 0
call $~lib/number/Bool#toString
i32.const 1496
i32.const 1448
call $~lib/string/String.__eq
i32.eqz
if
@ -1641,7 +1630,7 @@
global.set $number/a
local.get $0
call $~lib/util/number/itoa32
i32.const 1448
i32.const 1400
call $~lib/string/String.__eq
i32.eqz
if

View File

@ -30,15 +30,14 @@
(data (i32.const 1600) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\90\05\00\00\90\05\00\00\ae\00\00\00W\00\00\00")
(data (i32.const 1632) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;")
(data (i32.const 1688) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00p\06\00\00p\06\00\00(\00\00\00\n\00\00\00")
(data (i32.const 1720) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00")
(data (i32.const 1768) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00")
(data (i32.const 1784) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\00.\000\00")
(data (i32.const 1808) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003\00")
(data (i32.const 1832) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\005\00")
(data (i32.const 1856) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004\00")
(data (i32.const 1880) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00")
(data (i32.const 1904) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00")
(data (i32.const 1928) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00")
(data (i32.const 1720) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00")
(data (i32.const 1736) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\00.\000\00")
(data (i32.const 1760) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003\00")
(data (i32.const 1784) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\005\00")
(data (i32.const 1808) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004\00")
(data (i32.const 1832) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00")
(data (i32.const 1856) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00")
(data (i32.const 1880) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $number/a (mut i32) (i32.const 1))
@ -59,7 +58,7 @@
(global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991))
(global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991))
(global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16))
(global $~lib/heap/__heap_base i32 (i32.const 1956))
(global $~lib/heap/__heap_base i32 (i32.const 1908))
(export "memory" (memory $0))
(start $start)
(func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
@ -3122,18 +3121,6 @@
(local $9 i32)
(local $10 i32)
local.get $0
i32.const 0
i32.ne
i32.eqz
if
i32.const 0
i32.const 1736
i32.const 196
i32.const 4
call $~lib/builtins/abort
unreachable
end
local.get $0
call $~lib/string/String#get:length
local.set $3
local.get $1
@ -3197,7 +3184,7 @@
local.get $3
i32.eqz
if
i32.const 1784
i32.const 1736
call $~lib/rt/stub/__retain
return
end
@ -3302,11 +3289,11 @@
(local $2 i32)
local.get $0
if (result i32)
i32.const 1920
i32.const 1872
call $~lib/rt/stub/__retain
local.tee $1
else
i32.const 1944
i32.const 1896
call $~lib/rt/stub/__retain
local.tee $2
end
@ -3416,7 +3403,7 @@
i32.const 0
call $~lib/number/F64#toString
local.tee $1
i32.const 1800
i32.const 1752
call $~lib/string/String.__eq
i32.eqz
if
@ -3430,7 +3417,7 @@
i32.const 3
call $~lib/number/I32#toString
local.tee $2
i32.const 1824
i32.const 1776
call $~lib/string/String.__eq
i32.eqz
if
@ -3444,7 +3431,7 @@
i32.const -5
call $~lib/number/I32#toString
local.tee $3
i32.const 1848
i32.const 1800
call $~lib/string/String.__eq
i32.eqz
if
@ -3458,7 +3445,7 @@
i32.const 4
call $~lib/number/I32#toString
local.tee $4
i32.const 1872
i32.const 1824
call $~lib/string/String.__eq
i32.eqz
if
@ -3476,7 +3463,7 @@
global.get $number/a
call $~lib/number/I32#toString
local.tee $5
i32.const 1896
i32.const 1848
call $~lib/string/String.__eq
i32.eqz
if
@ -3509,7 +3496,7 @@
i32.eqz
call $~lib/number/Bool#toString
local.tee $7
i32.const 1920
i32.const 1872
call $~lib/string/String.__eq
i32.eqz
if
@ -3524,7 +3511,7 @@
i32.eqz
call $~lib/number/Bool#toString
local.tee $8
i32.const 1944
i32.const 1896
call $~lib/string/String.__eq
i32.eqz
if
@ -3562,7 +3549,7 @@
local.get $10
call $~lib/number/I32#toString
local.tee $10
i32.const 1896
i32.const 1848
call $~lib/string/String.__eq
i32.eqz
if

View File

@ -10,8 +10,7 @@
(data (i32.const 120) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
(data (i32.const 168) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e")
(data (i32.const 228) "\01\00\00\00\01")
(data (i32.const 240) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s")
(data (i32.const 288) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l")
(data (i32.const 240) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l")
(export "memory" (memory $0))
(export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess))
(export "stringArrayPropertyAccess" (func $std/array-access/stringArrayPropertyAccess))
@ -140,16 +139,6 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.eqz
if
i32.const 0
i32.const 256
i32.const 172
i32.const 4
call $~lib/builtins/abort
unreachable
end
i32.const 0
local.get $0
call $~lib/string/String#get:length

View File

@ -12,8 +12,7 @@
(data (i32.const 120) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00")
(data (i32.const 168) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00")
(data (i32.const 224) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00")
(data (i32.const 240) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00")
(data (i32.const 288) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00")
(data (i32.const 240) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(export "memory" (memory $0))
@ -257,23 +256,11 @@
local.get $1
call $~lib/rt/stub/__retain
drop
local.get $0
i32.const 0
i32.ne
i32.eqz
if
i32.const 0
i32.const 256
i32.const 172
i32.const 4
call $~lib/builtins/abort
unreachable
end
local.get $1
i32.const 0
i32.eq
if
i32.const 304
i32.const 256
local.tee $3
local.get $1
local.tee $4

File diff suppressed because it is too large Load Diff

View File

@ -147,67 +147,66 @@
(data (i32.const 4232) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00")
(data (i32.const 4248) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\008\10\00\00P\10\00\008\10\00\00h\10\00\00\80\10\00\00\98\10\00\00\00\00\00\00")
(data (i32.const 4296) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\98\10\00\008\10\00\008\10\00\00h\10\00\00P\10\00\00\80\10\00\00\00\00\00\00")
(data (i32.const 4344) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00")
(data (i32.const 4392) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00")
(data (i32.const 4416) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\00")
(data (i32.const 4440) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00")
(data (i32.const 4464) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00")
(data (i32.const 4496) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00")
(data (i32.const 4520) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00")
(data (i32.const 4560) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff")
(data (i32.const 4592) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00")
(data (i32.const 4616) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00")
(data (i32.const 5032) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00\18\12\00\00\18\12\00\00\90\01\00\00d\00\00\00")
(data (i32.const 5064) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00")
(data (i32.const 5096) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00")
(data (i32.const 5128) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00")
(data (i32.const 5152) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80")
(data (i32.const 5176) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00_\00_\00")
(data (i32.const 5200) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00")
(data (i32.const 5264) "0\00\00\00\01\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f")
(data (i32.const 5328) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 \00")
(data (i32.const 5352) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00")
(data (i32.const 5376) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00")
(data (i32.const 5400) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00")
(data (i32.const 5440) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00")
(data (i32.const 5472) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8<D\a7\a4\d9|\9b\fb\10D\a4\a7LLv\bb\1a\9c@\b6\ef\8e\ab\8b,\84W\a6\10\ef\1f\d0)1\91\e9\e5\a4\10\9b\9d\0c\9c\a1\fb\9b\10\e7)\f4;b\d9 (\ac\85\cf\a7z^KD\80-\dd\ac\03@\e4!\bf\8f\ffD^/\9cg\8eA\b8\8c\9c\9d\173\d4\a9\1b\e3\b4\92\db\19\9e\d9w\df\ban\bf\96\ebk\ee\f0\9b;\02\87\af")
(data (i32.const 6184) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00p\15\00\00p\15\00\00\b8\02\00\00W\00\00\00")
(data (i32.const 6216) "\ae\00\00\00\01\00\00\00\00\00\00\00\ae\00\00\00<\fbW\fbr\fb\8c\fb\a7\fb\c1\fb\dc\fb\f6\fb\11\fc,\fcF\fca\fc{\fc\96\fc\b1\fc\cb\fc\e6\fc\00\fd\1b\fd5\fdP\fdk\fd\85\fd\a0\fd\ba\fd\d5\fd\ef\fd\n\fe%\fe?\feZ\fet\fe\8f\fe\a9\fe\c4\fe\df\fe\f9\fe\14\ff.\ffI\ffc\ff~\ff\99\ff\b3\ff\ce\ff\e8\ff\03\00\1e\008\00S\00m\00\88\00\a2\00\bd\00\d8\00\f2\00\0d\01\'\01B\01\\\01w\01\92\01\ac\01\c7\01\e1\01\fc\01\16\021\02L\02f\02\81\02\9b\02\b6\02\d0\02\eb\02\06\03 \03;\03U\03p\03\8b\03\a5\03\c0\03\da\03\f5\03\0f\04*\04")
(data (i32.const 6408) "\10\00\00\00\01\00\00\00\11\00\00\00\10\00\00\00X\18\00\00X\18\00\00\ae\00\00\00W\00\00\00")
(data (i32.const 6440) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;")
(data (i32.const 6496) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\008\19\00\008\19\00\00(\00\00\00\n\00\00\00")
(data (i32.const 6528) "P\00\00\00\01\00\00\00\01\00\00\00P\00\00\000\00.\000\00,\00 \001\00.\000\00,\00 \00-\002\00.\000\00,\00 \00N\00a\00N\00,\00 \00-\00I\00n\00f\00i\00n\00i\00t\00y\00,\00 \00I\00n\00f\00i\00n\00i\00t\00y\00")
(data (i32.const 6624) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00")
(data (i32.const 6648) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\98\10\00\00\f0\19\00\00\00\00\00\00")
(data (i32.const 6680) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00")
(data (i32.const 6728) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00")
(data (i32.const 6808) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00")
(data (i32.const 6824) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00")
(data (i32.const 6848) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00")
(data (i32.const 6872) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00")
(data (i32.const 6904) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00,\002\00")
(data (i32.const 6928) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00")
(data (i32.const 6960) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\01\ff\00")
(data (i32.const 6984) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00")
(data (i32.const 7016) "\06\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff\00\00")
(data (i32.const 7040) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00")
(data (i32.const 7080) "\18\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00")
(data (i32.const 7120) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00")
(data (i32.const 7184) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f")
(data (i32.const 7232) "T\00\00\00\01\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00")
(data (i32.const 7336) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\98\10\00\008\10\00\008\10\00\00h\10\00\00P\10\00\00\80\10\00\00\00\00\00\00")
(data (i32.const 7384) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00")
(data (i32.const 7432) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00")
(data (i32.const 7456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004\00")
(data (i32.const 7480) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\f0\19\00\00\18\1d\00\00\00\00\00\000\1d\00\00")
(data (i32.const 7512) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00")
(data (i32.const 7544) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00")
(data (i32.const 7568) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00")
(data (i32.const 7592) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00")
(data (i32.const 7624) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\02")
(data (i32.const 7648) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\03\04")
(data (i32.const 7672) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00")
(data (i32.const 7696) "\1a\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93\04\00\00\02\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\003\00\00\00\02\00\00\00\93\00\00\00\02\00\00\00\93\0c\00\00\02\00\00\00\13\0d\00\00\02\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\930\00\00\02\00\00\00\93 \00\00\02\00\00\003\00\00\00\02\00\00\00\13\01\00\00\02\00\00\00S\04\00\00\02\00\00\00\10\00\00\00\00\00\00\00\930\00\00\02\00\00\003\04\00\00\02\00\00\00S\00\00\00\02\00\00\00\13\05\00\00\02\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\00")
(data (i32.const 4344) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00")
(data (i32.const 4368) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\00")
(data (i32.const 4392) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00")
(data (i32.const 4416) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00")
(data (i32.const 4448) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00")
(data (i32.const 4472) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00")
(data (i32.const 4512) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff")
(data (i32.const 4544) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00")
(data (i32.const 4568) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00")
(data (i32.const 4984) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00\e8\11\00\00\e8\11\00\00\90\01\00\00d\00\00\00")
(data (i32.const 5016) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00")
(data (i32.const 5048) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00")
(data (i32.const 5080) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00")
(data (i32.const 5104) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80")
(data (i32.const 5128) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00_\00_\00")
(data (i32.const 5152) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00")
(data (i32.const 5216) "0\00\00\00\01\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f")
(data (i32.const 5280) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 \00")
(data (i32.const 5304) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00")
(data (i32.const 5328) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00")
(data (i32.const 5352) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00")
(data (i32.const 5392) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00")
(data (i32.const 5424) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8<D\a7\a4\d9|\9b\fb\10D\a4\a7LLv\bb\1a\9c@\b6\ef\8e\ab\8b,\84W\a6\10\ef\1f\d0)1\91\e9\e5\a4\10\9b\9d\0c\9c\a1\fb\9b\10\e7)\f4;b\d9 (\ac\85\cf\a7z^KD\80-\dd\ac\03@\e4!\bf\8f\ffD^/\9cg\8eA\b8\8c\9c\9d\173\d4\a9\1b\e3\b4\92\db\19\9e\d9w\df\ban\bf\96\ebk\ee\f0\9b;\02\87\af")
(data (i32.const 6136) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00@\15\00\00@\15\00\00\b8\02\00\00W\00\00\00")
(data (i32.const 6168) "\ae\00\00\00\01\00\00\00\00\00\00\00\ae\00\00\00<\fbW\fbr\fb\8c\fb\a7\fb\c1\fb\dc\fb\f6\fb\11\fc,\fcF\fca\fc{\fc\96\fc\b1\fc\cb\fc\e6\fc\00\fd\1b\fd5\fdP\fdk\fd\85\fd\a0\fd\ba\fd\d5\fd\ef\fd\n\fe%\fe?\feZ\fet\fe\8f\fe\a9\fe\c4\fe\df\fe\f9\fe\14\ff.\ffI\ffc\ff~\ff\99\ff\b3\ff\ce\ff\e8\ff\03\00\1e\008\00S\00m\00\88\00\a2\00\bd\00\d8\00\f2\00\0d\01\'\01B\01\\\01w\01\92\01\ac\01\c7\01\e1\01\fc\01\16\021\02L\02f\02\81\02\9b\02\b6\02\d0\02\eb\02\06\03 \03;\03U\03p\03\8b\03\a5\03\c0\03\da\03\f5\03\0f\04*\04")
(data (i32.const 6360) "\10\00\00\00\01\00\00\00\11\00\00\00\10\00\00\00(\18\00\00(\18\00\00\ae\00\00\00W\00\00\00")
(data (i32.const 6392) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;")
(data (i32.const 6448) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00\08\19\00\00\08\19\00\00(\00\00\00\n\00\00\00")
(data (i32.const 6480) "P\00\00\00\01\00\00\00\01\00\00\00P\00\00\000\00.\000\00,\00 \001\00.\000\00,\00 \00-\002\00.\000\00,\00 \00N\00a\00N\00,\00 \00-\00I\00n\00f\00i\00n\00i\00t\00y\00,\00 \00I\00n\00f\00i\00n\00i\00t\00y\00")
(data (i32.const 6576) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00")
(data (i32.const 6600) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\98\10\00\00\c0\19\00\00\00\00\00\00")
(data (i32.const 6632) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00")
(data (i32.const 6680) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00")
(data (i32.const 6760) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00")
(data (i32.const 6776) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00")
(data (i32.const 6800) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00")
(data (i32.const 6824) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00")
(data (i32.const 6856) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00,\002\00")
(data (i32.const 6880) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00")
(data (i32.const 6912) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\01\ff\00")
(data (i32.const 6936) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00")
(data (i32.const 6968) "\06\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff\00\00")
(data (i32.const 6992) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00")
(data (i32.const 7032) "\18\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00")
(data (i32.const 7072) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00")
(data (i32.const 7136) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f")
(data (i32.const 7184) "T\00\00\00\01\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00")
(data (i32.const 7288) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\98\10\00\008\10\00\008\10\00\00h\10\00\00P\10\00\00\80\10\00\00\00\00\00\00")
(data (i32.const 7336) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00")
(data (i32.const 7384) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00")
(data (i32.const 7408) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004\00")
(data (i32.const 7432) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\c0\19\00\00\e8\1c\00\00\00\00\00\00\00\1d\00\00")
(data (i32.const 7464) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00")
(data (i32.const 7496) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00")
(data (i32.const 7520) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00")
(data (i32.const 7544) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00")
(data (i32.const 7576) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\02")
(data (i32.const 7600) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\03\04")
(data (i32.const 7624) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00")
(data (i32.const 7648) "\1a\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93\04\00\00\02\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\003\00\00\00\02\00\00\00\93\00\00\00\02\00\00\00\93\0c\00\00\02\00\00\00\13\0d\00\00\02\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\930\00\00\02\00\00\00\93 \00\00\02\00\00\003\00\00\00\02\00\00\00\13\01\00\00\02\00\00\00S\04\00\00\02\00\00\00\10\00\00\00\00\00\00\00\930\00\00\02\00\00\003\04\00\00\02\00\00\00S\00\00\00\02\00\00\00\13\05\00\00\02\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\00")
(table $0 57 funcref)
(elem (i32.const 0) $null $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|4 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|39 $start:std/array~anonymous|40 $start:std/array~anonymous|41 $start:std/array~anonymous|42 $~lib/util/sort/COMPARATOR<f32>~anonymous|0 $~lib/util/sort/COMPARATOR<f64>~anonymous|0 $~lib/util/sort/COMPARATOR<i32>~anonymous|0 $~lib/util/sort/COMPARATOR<u32>~anonymous|0 $~lib/util/sort/COMPARATOR<i32>~anonymous|1 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0)
(global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0))
@ -235,8 +234,8 @@
(global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1))
(global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807))
(global $~lib/started (mut i32) (i32.const 0))
(global $~lib/rt/__rtti_base i32 (i32.const 7696))
(global $~lib/heap/__heap_base i32 (i32.const 7908))
(global $~lib/rt/__rtti_base i32 (i32.const 7648))
(global $~lib/heap/__heap_base i32 (i32.const 7860))
(export "__start" (func $start))
(export "memory" (memory $0))
(func $~lib/rt/tlsf/removeBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
@ -10677,18 +10676,6 @@
)
(func $~lib/string/String#charAt (; 209 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
local.get $0
i32.const 0
i32.ne
i32.eqz
if
i32.const 0
i32.const 4360
i32.const 46
i32.const 4
call $~lib/builtins/abort
unreachable
end
local.get $1
local.get $0
call $~lib/string/String#get:length
@ -10727,7 +10714,7 @@
i32.const 0
i32.eq
if
i32.const 4408
i32.const 4360
local.tee $2
local.get $1
local.tee $3
@ -10798,7 +10785,7 @@
call $~lib/rt/pure/__retain
drop
local.get $0
i32.const 4408
i32.const 4360
local.get $0
i32.const 0
i32.ne
@ -11426,18 +11413,6 @@
(local $9 i32)
(local $10 i32)
local.get $0
i32.const 0
i32.ne
i32.eqz
if
i32.const 0
i32.const 4360
i32.const 196
i32.const 4
call $~lib/builtins/abort
unreachable
end
local.get $0
call $~lib/string/String#get:length
local.set $3
local.get $1
@ -11571,8 +11546,8 @@
local.get $2
i32.eqz
if
i32.const 4456
i32.const 4480
i32.const 4408
i32.const 4432
local.get $4
i32.load8_u
select
@ -11631,8 +11606,8 @@
i32.const 1
i32.shl
i32.add
i32.const 4456
i32.const 4480
i32.const 4408
i32.const 4432
local.get $10
select
local.get $6
@ -11685,8 +11660,8 @@
i32.const 1
i32.shl
i32.add
i32.const 4456
i32.const 4480
i32.const 4408
i32.const 4432
local.get $10
select
local.get $6
@ -11807,7 +11782,7 @@
(local $7 i32)
(local $8 i64)
(local $9 i64)
i32.const 5048
i32.const 5000
i32.load offset=4
local.set $3
block $break|0
@ -11951,7 +11926,7 @@
local.get $0
i32.eqz
if
i32.const 4608
i32.const 4560
call $~lib/rt/pure/__retain
return
end
@ -12234,7 +12209,7 @@
local.get $0
i32.eqz
if
i32.const 4608
i32.const 4560
call $~lib/rt/pure/__retain
return
end
@ -12549,7 +12524,7 @@
local.set $14
local.get $6
local.set $15
i32.const 6512
i32.const 6464
i32.load offset=4
local.set $16
block $break|0
@ -13480,11 +13455,11 @@
i32.shl
i32.sub
global.set $~lib/util/number/_K
i32.const 6200
i32.const 6152
local.get $14
call $~lib/array/Array<u64>#__unchecked_get
global.set $~lib/util/number/_frc_pow
i32.const 6424
i32.const 6376
local.get $14
call $~lib/array/Array<i16>#__unchecked_get
global.set $~lib/util/number/_exp_pow
@ -13745,7 +13720,7 @@
f64.const 0
f64.eq
if
i32.const 5368
i32.const 5320
call $~lib/rt/pure/__retain
return
end
@ -13756,12 +13731,12 @@
local.get $0
call $~lib/number/isNaN<f64>
if
i32.const 5392
i32.const 5344
call $~lib/rt/pure/__retain
return
end
i32.const 5416
i32.const 5456
i32.const 5368
i32.const 5408
local.get $0
f64.const 0
f64.lt
@ -13849,8 +13824,8 @@
i32.add
local.set $4
local.get $0
i32.const 5416
i32.const 5456
i32.const 5368
i32.const 5408
local.get $3
select
local.get $4
@ -14331,7 +14306,7 @@
local.get $2
i32.eqz
if
i32.const 6696
i32.const 6648
call $~lib/rt/pure/__retain
local.set $3
local.get $1
@ -14396,7 +14371,7 @@
i32.const 1
i32.shl
i32.add
i32.const 6696
i32.const 6648
i32.const 15
i32.const 1
i32.shl
@ -14443,7 +14418,7 @@
i32.const 1
i32.shl
i32.add
i32.const 6696
i32.const 6648
i32.const 15
i32.const 1
i32.shl
@ -14495,7 +14470,7 @@
)
(func $~lib/array/Array<i32>#toString (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 4512
i32.const 4464
call $~lib/array/Array<i32>#join
)
(func $~lib/util/number/itoa<i8> (; 256 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
@ -14749,7 +14724,7 @@
)
(func $~lib/array/Array<i8>#toString (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 4512
i32.const 4464
call $~lib/array/Array<i8>#join
)
(func $~lib/util/number/itoa<u16> (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
@ -14971,7 +14946,7 @@
)
(func $~lib/array/Array<u16>#toString (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 4512
i32.const 4464
call $~lib/array/Array<u16>#join
)
(func $~lib/util/number/decimalCount64 (; 266 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
@ -15052,7 +15027,7 @@
(local $11 i32)
(local $12 i64)
(local $13 i64)
i32.const 5048
i32.const 5000
i32.load offset=4
local.set $3
block $break|0
@ -15178,7 +15153,7 @@
local.get $0
i64.eqz
if
i32.const 4608
i32.const 4560
call $~lib/rt/pure/__retain
return
end
@ -15467,7 +15442,7 @@
)
(func $~lib/array/Array<u64>#toString (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 4512
i32.const 4464
call $~lib/array/Array<u64>#join
)
(func $~lib/util/number/itoa64 (; 274 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32)
@ -15482,7 +15457,7 @@
local.get $0
i64.eqz
if
i32.const 4608
i32.const 4560
call $~lib/rt/pure/__retain
return
end
@ -15814,7 +15789,7 @@
)
(func $~lib/array/Array<i64>#toString (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 4512
i32.const 4464
call $~lib/array/Array<i64>#join
)
(func $~lib/array/Array<~lib/string/String | null>#join_str (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
@ -16068,12 +16043,12 @@
)
(func $~lib/array/Array<~lib/string/String | null>#toString (; 282 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 4512
i32.const 4464
call $~lib/array/Array<~lib/string/String | null>#join
)
(func $~lib/array/Array<~lib/string/String>#toString (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 4512
i32.const 4464
call $~lib/array/Array<~lib/string/String>#join
)
(func $~lib/array/Array<~lib/array/Array<i32>>#join_arr (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
@ -16310,7 +16285,7 @@
)
(func $~lib/array/Array<~lib/array/Array<i32>>#toString (; 286 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 4512
i32.const 4464
call $~lib/array/Array<~lib/array/Array<i32>>#join
)
(func $~lib/util/number/itoa<u8> (; 287 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
@ -16764,7 +16739,7 @@
)
(func $~lib/array/Array<~lib/array/Array<u8>>#toString (; 293 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 4512
i32.const 4464
call $~lib/array/Array<~lib/array/Array<u8>>#join
)
(func $~lib/array/Array<~lib/array/Array<u32>>#join_arr (; 294 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
@ -17233,7 +17208,7 @@
)
(func $~lib/array/Array<~lib/array/Array<~lib/array/Array<u32>>>#toString (; 298 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 4512
i32.const 4464
call $~lib/array/Array<~lib/array/Array<~lib/array/Array<u32>>>#join
)
(func $start:std/array (; 299 ;) (type $FUNCSIG$v)
@ -22319,14 +22294,14 @@
i32.const 2
i32.const 0
i32.const 15
i32.const 4432
i32.const 4384
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $2
i32.const 4512
i32.const 4464
call $~lib/array/Array<bool>#join
local.tee $14
i32.const 4536
i32.const 4488
call $~lib/string/String.__eq
i32.eqz
if
@ -22340,14 +22315,14 @@
i32.const 3
i32.const 2
i32.const 3
i32.const 4576
i32.const 4528
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $17
i32.const 4248
call $~lib/array/Array<i32>#join
local.tee $12
i32.const 5080
i32.const 5032
call $~lib/string/String.__eq
i32.eqz
if
@ -22361,14 +22336,14 @@
i32.const 3
i32.const 2
i32.const 7
i32.const 5112
i32.const 5064
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $13
i32.const 5144
i32.const 5096
call $~lib/array/Array<u32>#join
local.tee $15
i32.const 5080
i32.const 5032
call $~lib/string/String.__eq
i32.eqz
if
@ -22382,14 +22357,14 @@
i32.const 2
i32.const 2
i32.const 3
i32.const 5168
i32.const 5120
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $11
i32.const 5192
i32.const 5144
call $~lib/array/Array<i32>#join
local.tee $1
i32.const 5216
i32.const 5168
call $~lib/string/String.__eq
i32.eqz
if
@ -22403,14 +22378,14 @@
i32.const 6
i32.const 3
i32.const 9
i32.const 5280
i32.const 5232
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $7
i32.const 5344
i32.const 5296
call $~lib/array/Array<f64>#join
local.tee $9
i32.const 6544
i32.const 6496
call $~lib/string/String.__eq
i32.eqz
if
@ -22424,14 +22399,14 @@
i32.const 3
i32.const 2
i32.const 14
i32.const 6664
i32.const 6616
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $8
i32.const 4248
call $~lib/array/Array<~lib/string/String>#join
local.tee $10
i32.const 6640
i32.const 6592
call $~lib/string/String.__eq
i32.eqz
if
@ -22471,10 +22446,10 @@
call $~lib/rt/pure/__retain
local.set $34
local.get $34
i32.const 4512
i32.const 4464
call $~lib/array/Array<std/array/Ref | null>#join
local.tee $5
i32.const 6744
i32.const 6696
call $~lib/string/String.__eq
i32.eqz
if
@ -22520,7 +22495,7 @@
i32.const 0
i32.const 2
i32.const 3
i32.const 6824
i32.const 6776
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $34
@ -22529,7 +22504,7 @@
i32.const 1
i32.const 2
i32.const 3
i32.const 6840
i32.const 6792
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $38
@ -22538,7 +22513,7 @@
i32.const 2
i32.const 2
i32.const 3
i32.const 6864
i32.const 6816
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $8
@ -22547,7 +22522,7 @@
i32.const 4
i32.const 2
i32.const 3
i32.const 6888
i32.const 6840
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $7
@ -22570,7 +22545,7 @@
local.get $42
call $~lib/array/Array<i32>#toString
local.tee $11
i32.const 6640
i32.const 6592
call $~lib/string/String.__eq
i32.eqz
if
@ -22584,7 +22559,7 @@
local.get $10
call $~lib/array/Array<i32>#toString
local.tee $15
i32.const 6920
i32.const 6872
call $~lib/string/String.__eq
i32.eqz
if
@ -22598,7 +22573,7 @@
local.get $9
call $~lib/array/Array<i32>#toString
local.tee $13
i32.const 6944
i32.const 6896
call $~lib/string/String.__eq
i32.eqz
if
@ -22612,13 +22587,13 @@
i32.const 3
i32.const 0
i32.const 20
i32.const 6976
i32.const 6928
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $17
call $~lib/array/Array<i8>#toString
local.tee $12
i32.const 7000
i32.const 6952
call $~lib/string/String.__eq
i32.eqz
if
@ -22632,13 +22607,13 @@
i32.const 3
i32.const 1
i32.const 21
i32.const 7032
i32.const 6984
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $2
call $~lib/array/Array<u16>#toString
local.tee $14
i32.const 7056
i32.const 7008
call $~lib/string/String.__eq
i32.eqz
if
@ -22652,13 +22627,13 @@
i32.const 3
i32.const 3
i32.const 16
i32.const 7096
i32.const 7048
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $41
call $~lib/array/Array<u64>#toString
local.tee $40
i32.const 7136
i32.const 7088
call $~lib/string/String.__eq
i32.eqz
if
@ -22672,13 +22647,13 @@
i32.const 4
i32.const 3
i32.const 22
i32.const 7200
i32.const 7152
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $39
call $~lib/array/Array<i64>#toString
local.tee $45
i32.const 7248
i32.const 7200
call $~lib/string/String.__eq
i32.eqz
if
@ -22692,7 +22667,7 @@
i32.const 7
i32.const 2
i32.const 13
i32.const 7352
i32.const 7304
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $48
@ -22701,7 +22676,7 @@
local.get $44
call $~lib/array/Array<~lib/string/String | null>#toString
local.tee $46
i32.const 7400
i32.const 7352
call $~lib/string/String.__eq
i32.eqz
if
@ -22715,13 +22690,13 @@
i32.const 4
i32.const 2
i32.const 14
i32.const 7496
i32.const 7448
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $47
call $~lib/array/Array<~lib/string/String>#toString
local.tee $43
i32.const 7528
i32.const 7480
call $~lib/string/String.__eq
i32.eqz
if
@ -22745,7 +22720,7 @@
i32.const 2
i32.const 2
i32.const 3
i32.const 7560
i32.const 7512
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $52
@ -22755,7 +22730,7 @@
i32.const 2
i32.const 2
i32.const 3
i32.const 7584
i32.const 7536
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $16
@ -22767,7 +22742,7 @@
local.get $54
call $~lib/array/Array<~lib/array/Array<i32>>#toString
local.tee $50
i32.const 7608
i32.const 7560
call $~lib/string/String.__eq
i32.eqz
if
@ -22791,7 +22766,7 @@
i32.const 2
i32.const 0
i32.const 6
i32.const 7640
i32.const 7592
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $19
@ -22801,7 +22776,7 @@
i32.const 2
i32.const 0
i32.const 6
i32.const 7664
i32.const 7616
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $20
@ -22813,7 +22788,7 @@
local.get $55
call $~lib/array/Array<~lib/array/Array<u8>>#toString
local.tee $53
i32.const 7608
i32.const 7560
call $~lib/string/String.__eq
i32.eqz
if
@ -22847,7 +22822,7 @@
i32.const 1
i32.const 2
i32.const 7
i32.const 7688
i32.const 7640
call $~lib/rt/__allocArray
call $~lib/rt/pure/__retain
local.tee $23
@ -22862,7 +22837,7 @@
local.get $56
call $~lib/array/Array<~lib/array/Array<~lib/array/Array<u32>>>#toString
local.tee $0
i32.const 6640
i32.const 6592
call $~lib/string/String.__eq
i32.eqz
if

View File

@ -633,7 +633,7 @@
if
i32.const 0
i32.const 128
i32.const 450
i32.const 551
i32.const 8
call $~lib/builtins/abort
unreachable
@ -677,7 +677,7 @@
if
i32.const 0
i32.const 128
i32.const 454
i32.const 555
i32.const 8
call $~lib/builtins/abort
unreachable
@ -756,7 +756,7 @@
if
i32.const 0
i32.const 128
i32.const 466
i32.const 567
i32.const 8
call $~lib/builtins/abort
unreachable
@ -811,7 +811,7 @@
if
i32.const 0
i32.const 128
i32.const 475
i32.const 576
i32.const 4
call $~lib/builtins/abort
unreachable

View File

@ -1787,7 +1787,7 @@
if
i32.const 0
i32.const 128
i32.const 450
i32.const 551
i32.const 8
call $~lib/builtins/abort
unreachable
@ -1838,7 +1838,7 @@
if
i32.const 0
i32.const 128
i32.const 454
i32.const 555
i32.const 8
call $~lib/builtins/abort
unreachable
@ -1927,7 +1927,7 @@
if
i32.const 0
i32.const 128
i32.const 466
i32.const 567
i32.const 8
call $~lib/builtins/abort
unreachable
@ -1985,7 +1985,7 @@
if
i32.const 0
i32.const 128
i32.const 475
i32.const 576
i32.const 4
call $~lib/builtins/abort
unreachable

File diff suppressed because it is too large Load Diff

View File

@ -146,6 +146,44 @@ assert("a".repeat(5) == "aaaaa");
assert("a".repeat(6) == "aaaaaa");
assert("a".repeat(7) == "aaaaaaa");
assert("".replace("", "") == "");
assert("".replace("", "+") == "+");
assert("+".replace("+", "") == "");
assert("+".replace("", "") == "+");
assert("abc".replace("-", "+") == "abc");
assert("abc".replace("abc", "+") == "+");
assert("abc".replace("abcd", "+") == "abc");
assert("abc".replace("ab", "ab") == "abc");
assert("a-b-c".replace("-", "+") == "a+b-c");
assert("abc".replace("", "+") == "+abc");
assert("\nabc".replace("\n", "+") == "+abc");
assert("abc".replace("c", "++") == "ab++");
assert("abc".replace("c", "") == "ab");
assert("".replaceAll("", "abc") == "abc");
assert("abc".replaceAll("-", "+") == "abc");
assert("abcabc".replaceAll("abc", "+") == "++");
assert("abcabcabc".replaceAll("abc", "+") == "+++");
assert("abcabc".replaceAll("ab", "ab") == "abcabc");
assert("abcabca".replaceAll("a", "+++") == "+++bc+++bc+++");
assert("abcabc".replaceAll("ab", "++") == "++c++c");
assert("cccc".replaceAll("cc", "++") == "++++");
assert("abc".replaceAll("abcd", "+") == "abc");
assert("abcd".replaceAll("e", "++") == "abcd");
assert("abc".replaceAll("bc", "+") == "a+");
assert("ab".replaceAll("ab", "+") == "+");
assert("a-b-c".replaceAll("-", "+") == "a+b+c");
// cpecial cases
assert("".replaceAll("", "") == "");
assert("".replaceAll("", "+") == "+");
assert("+".replaceAll("+", "") == "");
assert("+".replaceAll("", "") == "+");
assert("abc".replaceAll("abc", "-") == "-");
assert("abc".replaceAll("abd", "-") == "abc");
assert("abc".replaceAll("", "+") == "+a+b+c+");
assert("abc".replaceAll("", "") == "abc");
// test cases for slice method
str = "abcdefghijklmn";
assert(str.slice(0) == "abcdefghijklmn");

File diff suppressed because it is too large Load Diff