nadesiko3 3.3.59 → 3.3.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/package.json +1 -1
- package/core/src/nako_core_version.mjs +2 -2
- package/core/src/nako_core_version.mts +2 -2
- package/core/src/nako_from_dncl.mjs +5 -4
- package/core/src/nako_from_dncl.mts +2 -1
- package/core/src/nako_indent_inline.mjs +4 -1
- package/core/src/nako_indent_inline.mts +2 -1
- package/core/test/flow_test.mjs +0 -36
- package/core/test/inline_indent_test.mjs +103 -0
- package/package.json +1 -1
- package/release/_hash.txt +16 -16
- package/release/_script-tags.txt +14 -14
- package/release/nako_gen_async.js +1 -1
- package/release/stats.json +1 -1
- package/release/version.js +1 -1
- package/release/wnako3.js +1 -1
- package/release/wnako3webworker.js +1 -1
- package/src/nako_version.mjs +2 -2
- package/src/nako_version.mts +2 -2
package/core/package.json
CHANGED
|
@@ -192,7 +192,6 @@ export function convertDNCL(tokens) {
|
|
|
192
192
|
t.value = t.value.substring(0, t.value.length - 1);
|
|
193
193
|
t.josi = 'だけ';
|
|
194
194
|
line.splice(j + 1, 0, NewEmptyToken('word', c, t.indent, t.line, t.file));
|
|
195
|
-
console.log(line);
|
|
196
195
|
}
|
|
197
196
|
j++;
|
|
198
197
|
continue;
|
|
@@ -211,11 +210,13 @@ export function convertDNCL(tokens) {
|
|
|
211
210
|
}
|
|
212
211
|
// console.log(t)
|
|
213
212
|
}
|
|
213
|
+
/*
|
|
214
214
|
// 表示
|
|
215
215
|
lines.map(line => {
|
|
216
|
-
|
|
217
|
-
})
|
|
218
|
-
console.log('===')
|
|
216
|
+
console.log(line.map(t => t.type + '_' + ('' + t.value).replace('\n', '') + t.josi).join(' | '))
|
|
217
|
+
})
|
|
218
|
+
console.log('===')
|
|
219
|
+
*/
|
|
219
220
|
tokens = joinTokenLines(lines);
|
|
220
221
|
return tokens;
|
|
221
222
|
}
|
|
@@ -171,7 +171,6 @@ export function convertDNCL (tokens: Token[]): Token[] {
|
|
|
171
171
|
t.value = t.value.substring(0, t.value.length - 1)
|
|
172
172
|
t.josi = 'だけ'
|
|
173
173
|
line.splice(j + 1, 0, NewEmptyToken('word', c, t.indent, t.line, t.file))
|
|
174
|
-
console.log(line)
|
|
175
174
|
}
|
|
176
175
|
j++
|
|
177
176
|
continue
|
|
@@ -191,11 +190,13 @@ export function convertDNCL (tokens: Token[]): Token[] {
|
|
|
191
190
|
}
|
|
192
191
|
// console.log(t)
|
|
193
192
|
}
|
|
193
|
+
/*
|
|
194
194
|
// 表示
|
|
195
195
|
lines.map(line => {
|
|
196
196
|
console.log(line.map(t => t.type + '_' + ('' + t.value).replace('\n', '') + t.josi).join(' | '))
|
|
197
197
|
})
|
|
198
198
|
console.log('===')
|
|
199
|
+
*/
|
|
199
200
|
tokens = joinTokenLines(lines)
|
|
200
201
|
return tokens
|
|
201
202
|
}
|
|
@@ -20,6 +20,9 @@ export function convertInlineIndent(tokens) {
|
|
|
20
20
|
if (line.length === 0) {
|
|
21
21
|
continue;
|
|
22
22
|
}
|
|
23
|
+
if (line[0].type === 'eol') {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
23
26
|
// インデントの終了を確認する必要があるか?
|
|
24
27
|
if (checkICount >= 0) {
|
|
25
28
|
const lineICount = lines[i][0].indent;
|
|
@@ -65,7 +68,7 @@ export function joinTokenLines(lines) {
|
|
|
65
68
|
r.push(t);
|
|
66
69
|
}
|
|
67
70
|
// debug
|
|
68
|
-
// console.log('@@join=', mkIndent(line[0] ? line[0].indent : 0), line.map(t => (t.type + '_' + t.value + ':' + t.indent)).join(' | '))
|
|
71
|
+
// console.log('@@join=', mkIndent(line[0] ? line[0].indent : 0), line.map(t => (t.type + '_' + t.value + t.josi + ':' + t.indent)).join(' | '))
|
|
69
72
|
}
|
|
70
73
|
// console.log('@@@-----')
|
|
71
74
|
return r;
|
|
@@ -17,6 +17,7 @@ export function convertInlineIndent (tokens: Token[]): Token[] {
|
|
|
17
17
|
for (let i = 0; i < lines.length; i++) {
|
|
18
18
|
const line = lines[i]
|
|
19
19
|
if (line.length === 0) { continue }
|
|
20
|
+
if (line[0].type === 'eol') { continue }
|
|
20
21
|
// インデントの終了を確認する必要があるか?
|
|
21
22
|
if (checkICount >= 0) {
|
|
22
23
|
const lineICount: number = lines[i][0].indent
|
|
@@ -61,7 +62,7 @@ export function joinTokenLines (lines: Token[][]): Token[] {
|
|
|
61
62
|
r.push(t)
|
|
62
63
|
}
|
|
63
64
|
// debug
|
|
64
|
-
// console.log('@@join=', mkIndent(line[0] ? line[0].indent : 0), line.map(t => (t.type + '_' + t.value + ':' + t.indent)).join(' | '))
|
|
65
|
+
// console.log('@@join=', mkIndent(line[0] ? line[0].indent : 0), line.map(t => (t.type + '_' + t.value + t.josi + ':' + t.indent)).join(' | '))
|
|
65
66
|
}
|
|
66
67
|
// console.log('@@@-----')
|
|
67
68
|
return r
|
package/core/test/flow_test.mjs
CHANGED
|
@@ -370,40 +370,4 @@ describe('flow_test', async () => {
|
|
|
370
370
|
it('ならばの直前に空白があるとエラー(#1141)', async () => {
|
|
371
371
|
await cmp('A=30。もし、A>5 ならば、「OK」と表示。', 'OK')
|
|
372
372
|
})
|
|
373
|
-
// inline indent
|
|
374
|
-
it('#1215 インラインインデント構文 - 回', async () => {
|
|
375
|
-
await cmp(
|
|
376
|
-
'3回:\n' +
|
|
377
|
-
' "a"と表示\n', 'a\na\na')
|
|
378
|
-
})
|
|
379
|
-
it('#1215 インラインインデント構文 - もし', async () => {
|
|
380
|
-
await cmp(
|
|
381
|
-
'A=5;B=3;もし,A>Bならば:\n' +
|
|
382
|
-
' "ok"と表示\n' +
|
|
383
|
-
'違えば:\n' +
|
|
384
|
-
' "ng"と表示\n', 'ok')
|
|
385
|
-
})
|
|
386
|
-
it('#1215 インラインインデント構文 - エラー監視', async () => {
|
|
387
|
-
await cmp(
|
|
388
|
-
'エラー監視:\n' +
|
|
389
|
-
' "ok"と表示\n' +
|
|
390
|
-
'エラーならば:\n' +
|
|
391
|
-
' "err"と表示\n',
|
|
392
|
-
'ok')
|
|
393
|
-
await cmp(
|
|
394
|
-
'エラー監視:\n' +
|
|
395
|
-
' "aaa"のエラー発生\n' +
|
|
396
|
-
'エラーならば:\n' +
|
|
397
|
-
' "err"と表示\n',
|
|
398
|
-
'err')
|
|
399
|
-
})
|
|
400
|
-
it('#1215 インラインインデント構文3 - ネスト', async () => {
|
|
401
|
-
await cmp(
|
|
402
|
-
'3回:\n' +
|
|
403
|
-
' もし、5>3ならば:\n' +
|
|
404
|
-
' 「a」と表示\n' +
|
|
405
|
-
' 違えば:\n' +
|
|
406
|
-
' 「b」と表示\n',
|
|
407
|
-
'a\na\na')
|
|
408
|
-
})
|
|
409
373
|
})
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import assert from 'assert'
|
|
2
|
+
import { NakoCompiler } from '../src/nako3.mjs'
|
|
3
|
+
|
|
4
|
+
describe('inline_indent_test', async () => {
|
|
5
|
+
// nako.logger.addListener('trace', ({ browserConsole }) => { console.log(...browserConsole) })
|
|
6
|
+
const cmp = async (/** @type {string} */ code, /** @type {string} */ res) => {
|
|
7
|
+
const nako = new NakoCompiler()
|
|
8
|
+
nako.logger.debug('code=' + code)
|
|
9
|
+
assert.strictEqual((await nako.runAsync(code)).log, res)
|
|
10
|
+
}
|
|
11
|
+
it('繰り返す', async () => {
|
|
12
|
+
await cmp('Nを1から3まで繰り返す:\n Nを表示\n', '1\n2\n3')
|
|
13
|
+
await cmp('Nを1から3まで繰り返す:\n Nを表示\n', '1\n2\n3')
|
|
14
|
+
})
|
|
15
|
+
it('繰り返す2', async () => {
|
|
16
|
+
await cmp('1から3まで繰り返す\nそれを表示\nここまで', '1\n2\n3')
|
|
17
|
+
})
|
|
18
|
+
it('もし-日本語による比較', async () => {
|
|
19
|
+
await cmp('もし3が3と等しいならば:\n 「OK」と表示。', 'OK')
|
|
20
|
+
await cmp('もし(3+2)が5と等しいならば:\n 「OK」と表示。', 'OK')
|
|
21
|
+
})
|
|
22
|
+
it('回-break', async () => {
|
|
23
|
+
await cmp('3回:\n' +
|
|
24
|
+
' \'a\'と表示。\n' +
|
|
25
|
+
' もし(回数=2)ならば、抜ける\n', 'a\na')
|
|
26
|
+
})
|
|
27
|
+
it('反復 - 配列', async () => {
|
|
28
|
+
await cmp('[1,2,3]を反復:\n 対象を表示\n', '1\n2\n3')
|
|
29
|
+
})
|
|
30
|
+
it('反復 - オブジェクト', async () => {
|
|
31
|
+
await cmp('{\'a\':1,\'b\':2,\'c\':3}を反復:\n 対象を表示\n', '1\n2\n3')
|
|
32
|
+
await cmp('{\'a\':1,\'b\':2,\'c\':3}を反復:\n 対象キーを表示\n', 'a\nb\nc')
|
|
33
|
+
})
|
|
34
|
+
it('反復 - 変数付き', async () => {
|
|
35
|
+
await cmp('A=[1,2,3];NでAを反復:\n Nを表示\n', '1\n2\n3')
|
|
36
|
+
await cmp('Nで[1,2,3]を反復:\n Nを表示\n', '1\n2\n3')
|
|
37
|
+
})
|
|
38
|
+
it('繰り返しのネスト', async () => {
|
|
39
|
+
await cmp('C=0;Iを0から3まで繰り返す:\n Jを0から3まで繰り返す:\n C=C+1;\nCを表示', '16')
|
|
40
|
+
})
|
|
41
|
+
it('もし、と戻るの組み合わせ', async () => {
|
|
42
|
+
await cmp('●テスト処理:\n' +
|
|
43
|
+
' 「あ」と表示\n' +
|
|
44
|
+
' もし、3=3ならば、戻る。\n' +
|
|
45
|
+
' 「ここには来ない」と表示\n' +
|
|
46
|
+
'\n' +
|
|
47
|
+
'テスト処理。', 'あ')
|
|
48
|
+
})
|
|
49
|
+
it('もし文のエラー(#378)', async () => {
|
|
50
|
+
await cmp('●AAAとは:\n' +
|
|
51
|
+
' 列を1から3まで繰り返す:\n' +
|
|
52
|
+
' 列を表示。' +
|
|
53
|
+
' もし、列=2ならば、「*」と表示。\n' +
|
|
54
|
+
'AAA', '1\n2\n*\n3')
|
|
55
|
+
})
|
|
56
|
+
it('「増繰り返す」「減繰り返す」を追加#1140', async () => {
|
|
57
|
+
await cmp('Nを0から4まで2ずつ増やし繰り返す:\n Nを表示\n', '0\n2\n4')
|
|
58
|
+
})
|
|
59
|
+
// inline indent
|
|
60
|
+
it('#1215 インラインインデント構文 - 回', async () => {
|
|
61
|
+
await cmp('3回:\n' +
|
|
62
|
+
' "a"と表示\n', 'a\na\na')
|
|
63
|
+
})
|
|
64
|
+
it('#1215 インラインインデント構文 - もし', async () => {
|
|
65
|
+
await cmp(
|
|
66
|
+
'A=5;B=3;もし,A>Bならば:\n' +
|
|
67
|
+
' "ok"と表示\n' +
|
|
68
|
+
'違えば:\n' +
|
|
69
|
+
' "ng"と表示\n', 'ok')
|
|
70
|
+
})
|
|
71
|
+
it('#1215 インラインインデント構文 - エラー監視', async () => {
|
|
72
|
+
await cmp(
|
|
73
|
+
'エラー監視:\n' +
|
|
74
|
+
' "ok"と表示\n' +
|
|
75
|
+
'エラーならば:\n' +
|
|
76
|
+
' "err"と表示\n',
|
|
77
|
+
'ok')
|
|
78
|
+
await cmp(
|
|
79
|
+
'エラー監視:\n' +
|
|
80
|
+
' "aaa"のエラー発生\n' +
|
|
81
|
+
'エラーならば:\n' +
|
|
82
|
+
' "err"と表示\n',
|
|
83
|
+
'err')
|
|
84
|
+
})
|
|
85
|
+
it('#1215 インラインインデント構文3 - ネスト', async () => {
|
|
86
|
+
await cmp(
|
|
87
|
+
'3回:\n' +
|
|
88
|
+
' もし、5>3ならば:\n' +
|
|
89
|
+
' 「a」と表示\n' +
|
|
90
|
+
' 違えば:\n' +
|
|
91
|
+
' 「b」と表示\n',
|
|
92
|
+
'a\na\na')
|
|
93
|
+
})
|
|
94
|
+
it('#1273 インラインインデントで無駄な区切り文字の問題', async () => {
|
|
95
|
+
await cmp(
|
|
96
|
+
'3回:\n' +
|
|
97
|
+
' もし、5>3ならば:\n' +
|
|
98
|
+
' 「a」と表示。\n' +
|
|
99
|
+
' 違えば:\n' +
|
|
100
|
+
' 「b」と表示。\n',
|
|
101
|
+
'a\na\na')
|
|
102
|
+
})
|
|
103
|
+
})
|
package/package.json
CHANGED
package/release/_hash.txt
CHANGED
|
@@ -9,10 +9,10 @@ editor.js:
|
|
|
9
9
|
sha256(base64): mWPVpxYoegeIn6u0PanyI4Z8eRx41UD/kBYns489U04=
|
|
10
10
|
sha512(base64): q9aYWdo2RiNlmsa4gSoQL70F4RkvG/lAUxOYew1tXdyJre4KSm7EWQp9m9+CgexV+sLcOg3DJ3+0/FW8Uu2DIg==
|
|
11
11
|
nako_gen_async.js:
|
|
12
|
-
md5(hex):
|
|
13
|
-
sha256(hex):
|
|
14
|
-
sha256(base64):
|
|
15
|
-
sha512(base64):
|
|
12
|
+
md5(hex): e697ebeb4fa0a1fbc03ddb02b2b7fa33
|
|
13
|
+
sha256(hex): 7b54792b5817eeb8eacff63d47f25020d6f50cbc4942b9ceddb19f13ef201448
|
|
14
|
+
sha256(base64): e1R5K1gX7rjqz/Y9R/JQINb1DLxJQrnO3bGfE+8gFEg=
|
|
15
|
+
sha512(base64): iM3q843vry1CUZSb7xdaRDnbPr7uxBz8Iq9K1ABhMo65Oh4dyxkTVwsstovd2U7kHejOsm7F+fV9KeMfu26YLw==
|
|
16
16
|
plugin_caniuse.js:
|
|
17
17
|
md5(hex): 95a7a5c98a92a46b6435e577daba3241
|
|
18
18
|
sha256(hex): 57638b3979be70b45ab8085861f6b2ece43200bd6aa92765d73caf76b9e6fea9
|
|
@@ -54,17 +54,17 @@ plugin_weykturtle3d.js:
|
|
|
54
54
|
sha256(base64): ND/1JqYrFVGTIPYsbBk+tScnF8RVzgYPM0/E2aE8GRw=
|
|
55
55
|
sha512(base64): T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==
|
|
56
56
|
version.js:
|
|
57
|
-
md5(hex):
|
|
58
|
-
sha256(hex):
|
|
59
|
-
sha256(base64):
|
|
60
|
-
sha512(base64):
|
|
57
|
+
md5(hex): 4079fe3144af4d2138e9f53bdd7b127c
|
|
58
|
+
sha256(hex): dba689c23545cb8ffe6329766fb5724a54abaf35999164df31755b41eeb989b7
|
|
59
|
+
sha256(base64): 26aJwjVFy4/+Yyl2b7VySlSrrzWZkWTfMXVbQe65ibc=
|
|
60
|
+
sha512(base64): 8l9z3XJGeKACofpa7/PKagMbYeX+uSx64KWRxzgCVMRRS+pVMWK6uYSo8GF3qGB9lNOx48JWdehkQ+CQqA0+/w==
|
|
61
61
|
wnako3.js:
|
|
62
|
-
md5(hex):
|
|
63
|
-
sha256(hex):
|
|
64
|
-
sha256(base64):
|
|
65
|
-
sha512(base64):
|
|
62
|
+
md5(hex): e65b17987be7b964cafc7f44e437fcb9
|
|
63
|
+
sha256(hex): 644c1c7d539253a0756ae45bbe0bce1dbdf67ea6b1a084e0f645ea51289486a3
|
|
64
|
+
sha256(base64): ZEwcfVOSU6B1auRbvgvOHb32fqaxoITg9kXqUSiUhqM=
|
|
65
|
+
sha512(base64): fjunKsOP4AkePxDKkrYqLKGbsTWCY/4xTkp+/7Ip20GdPQ75hYd3iKBiG1hZw1lGGBrGajTTrdpKGkBPFQEL9Q==
|
|
66
66
|
wnako3webworker.js:
|
|
67
|
-
md5(hex):
|
|
68
|
-
sha256(hex):
|
|
69
|
-
sha256(base64):
|
|
70
|
-
sha512(base64):
|
|
67
|
+
md5(hex): d2d3fe6f32deb89785585ed9b3b8a0bb
|
|
68
|
+
sha256(hex): 0730ff512a2fb3c44aa0225c28a83f45e44755d4b41999f5cc718e2e62017169
|
|
69
|
+
sha256(base64): BzD/USovs8RKoCJcKKg/ReRHVdS0GZn1zHGOLmIBcWk=
|
|
70
|
+
sha512(base64): 95QfPbuqhr9wwSKwInj4BsXYxjFfTf3AYICv3eODBDn6xGUDU05Z5bjqGIt7a+ju5wzF2jU/GC4c/TT7n1uFKg==
|
package/release/_script-tags.txt
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
2
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
3
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
4
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
5
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
6
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
7
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
8
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
9
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
10
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
11
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
12
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
13
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
14
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
1
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/command.json.js" integrity="sha512-3PHGfRGcyV9VPBflXtm5cP2qT4kGyPgTpCyrFhjUXMHQKRf6+2yGK6VCcAV6KCOkjWIzKVCGeoDo4Pzp+YtckQ==" crossorigin="anonymous"></script>
|
|
2
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/editor.js" integrity="sha512-q9aYWdo2RiNlmsa4gSoQL70F4RkvG/lAUxOYew1tXdyJre4KSm7EWQp9m9+CgexV+sLcOg3DJ3+0/FW8Uu2DIg==" crossorigin="anonymous"></script>
|
|
3
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/nako_gen_async.js" integrity="sha512-iM3q843vry1CUZSb7xdaRDnbPr7uxBz8Iq9K1ABhMo65Oh4dyxkTVwsstovd2U7kHejOsm7F+fV9KeMfu26YLw==" crossorigin="anonymous"></script>
|
|
4
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/plugin_caniuse.js" integrity="sha512-NbX6BKUNq1J8xwtv5CThQC54Lb/KxaPlimRpsF745nxqjYeuGD7S70j4yOgNm4Uwd7AN5FgezS6NDyhlvoJF2w==" crossorigin="anonymous"></script>
|
|
5
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/plugin_csv.js" integrity="sha512-mQvmj25L2Nc2L7gN1rTjayHVMMPhc7TCSiBsuKS4JKOQqN+91uj9qpLAOejzR1ib5jIOBdtrhN+secNTU9BJtw==" crossorigin="anonymous"></script>
|
|
6
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/plugin_datetime.js" integrity="sha512-1ADTZFkcfU6vpEEJZEYmIbqS6G2XViooDFD4198P61n7VKZ0PhEVj9l8ULFGrW7woSbDqfSPZmkZ7yvcRqPKYA==" crossorigin="anonymous"></script>
|
|
7
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/plugin_kansuji.js" integrity="sha512-tXC9Q6LejwYG+HUbXcwBHFmhwTsqiMHOBohLNcSx8b02hxk3waPUEQRWeNP7QxAFMv5BOAY+Grruf+XKmmU26g==" crossorigin="anonymous"></script>
|
|
8
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/plugin_markup.js" integrity="sha512-pvb+QYO9LMUH055nPJJ5QaWyEYR3wDkHHilV5LLNyxObs7enlHGiF7Jt3Csd93JTdJ3n9hxFbTqWa1QuzVmTfQ==" crossorigin="anonymous"></script>
|
|
9
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/plugin_turtle.js" integrity="sha512-3/BlAe3uVDBgJrgFWzLJa3bvNQVhAQuL343Icict5hI3LndcPjV6mAD8KoWRlxmF8A8S6n8eKnmrh6NFWTjyEw==" crossorigin="anonymous"></script>
|
|
10
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/plugin_webworker.js" integrity="sha512-JLlIg9cW9UgM2AT+qMgEuKvea3t8R+1jihhlN/QGDQe7iCaGEfXfKG5gpvRb0IUyisNfzncUN8AfLn9wyxGGiw==" crossorigin="anonymous"></script>
|
|
11
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/plugin_weykturtle3d.js" integrity="sha512-T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==" crossorigin="anonymous"></script>
|
|
12
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/version.js" integrity="sha512-8l9z3XJGeKACofpa7/PKagMbYeX+uSx64KWRxzgCVMRRS+pVMWK6uYSo8GF3qGB9lNOx48JWdehkQ+CQqA0+/w==" crossorigin="anonymous"></script>
|
|
13
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/wnako3.js" integrity="sha512-fjunKsOP4AkePxDKkrYqLKGbsTWCY/4xTkp+/7Ip20GdPQ75hYd3iKBiG1hZw1lGGBrGajTTrdpKGkBPFQEL9Q==" crossorigin="anonymous"></script>
|
|
14
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.60&f=release/wnako3webworker.js" integrity="sha512-95QfPbuqhr9wwSKwInj4BsXYxjFfTf3AYICv3eODBDn6xGUDU05Z5bjqGIt7a+ju5wzF2jU/GC4c/TT7n1uFKg==" crossorigin="anonymous"></script>
|