nadesiko3 3.6.8 → 3.6.9

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.
@@ -0,0 +1,112 @@
1
+ /**
2
+ * file: plugin_snako.js
3
+ * 簡単なファイル読み書きのプラグイン
4
+ */
5
+ import fs from 'node:fs';
6
+ import { execSync } from 'node:child_process';
7
+ import path from 'node:path';
8
+ export default {
9
+ 'meta': {
10
+ type: 'const',
11
+ value: {
12
+ pluginName: 'plugin_snako',
13
+ description: '最小の機能を提供するプラグイン',
14
+ pluginVersion: '3.6.3',
15
+ nakoRuntime: ['cnako'],
16
+ nakoVersion: '3.6.3' // 要求なでしこバージョン
17
+ }
18
+ },
19
+ '初期化': {
20
+ type: 'func',
21
+ josi: [],
22
+ pure: true,
23
+ fn: function (sys) {
24
+ sys.__getBokanPath = () => {
25
+ let nakofile;
26
+ const cmd = path.basename(process.argv[1]);
27
+ if (cmd.indexOf('snako') < 0) {
28
+ nakofile = process.argv[1];
29
+ }
30
+ else {
31
+ nakofile = process.argv[2];
32
+ }
33
+ return path.dirname(path.resolve(nakofile));
34
+ };
35
+ sys.__setSysVar('コマンドライン', process.argv);
36
+ sys.__setSysVar('ナデシコランタイムパス', process.argv[0]);
37
+ sys.__setSysVar('ナデシコランタイム', path.basename(process.argv[0]));
38
+ sys.__setSysVar('母艦パス', sys.__getBokanPath());
39
+ }
40
+ },
41
+ // @SNAKO
42
+ 'コマンドライン': { type: 'const', value: '' },
43
+ 'ナデシコランタイムパス': { type: 'const', value: '' },
44
+ 'ナデシコランタイム': { type: 'const', value: '' },
45
+ '母艦パス': { type: 'const', value: '' },
46
+ '読': {
47
+ type: 'func',
48
+ josi: [['を', 'から']],
49
+ pure: true,
50
+ fn: function (f) {
51
+ return '' + fs.readFileSync(f);
52
+ }
53
+ },
54
+ '開': {
55
+ type: 'func',
56
+ josi: [['を', 'から']],
57
+ pure: true,
58
+ fn: function (f) {
59
+ return '' + fs.readFileSync(f);
60
+ }
61
+ },
62
+ '保存': {
63
+ type: 'func',
64
+ josi: [['を'], ['に', 'へ']],
65
+ pure: true,
66
+ fn: function (s, f) {
67
+ fs.writeFileSync(f, s, 'utf-8');
68
+ },
69
+ return_none: true
70
+ },
71
+ '起動待機': {
72
+ type: 'func',
73
+ josi: [['を']],
74
+ pure: true,
75
+ fn: function (s) {
76
+ const r = execSync(s);
77
+ return r.toString();
78
+ }
79
+ },
80
+ 'ファイル名抽出': {
81
+ type: 'func',
82
+ josi: [['から', 'の']],
83
+ pure: true,
84
+ fn: function (s) {
85
+ return path.basename(s);
86
+ }
87
+ },
88
+ 'パス抽出': {
89
+ type: 'func',
90
+ josi: [['から', 'の']],
91
+ pure: true,
92
+ fn: function (s) {
93
+ return path.dirname(s);
94
+ }
95
+ },
96
+ '絶対パス変換': {
97
+ type: 'func',
98
+ josi: [['を', 'の']],
99
+ pure: true,
100
+ fn: function (a) {
101
+ return path.resolve(a);
102
+ }
103
+ },
104
+ '相対パス展開': {
105
+ type: 'func',
106
+ josi: [['を'], ['で']],
107
+ pure: true,
108
+ fn: function (a, b) {
109
+ return path.resolve(path.join(a, b));
110
+ }
111
+ }
112
+ };
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env node --no-warnings=ExperimentalWarning --loader ts-node/esm
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import com from '../index.mjs';
5
+ import { argv as nodejs_argv } from 'node:process';
6
+ import * as url from 'node:url';
7
+ import { NakoGenOptions } from '../src/nako_gen.mjs';
8
+ import PluginSnako from './plugin_snako.mjs';
9
+ const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
10
+ /** コマンドラインオプション */
11
+ class CommandOptions {
12
+ isDebug;
13
+ filename;
14
+ nodePath;
15
+ scriptPath;
16
+ evalStr;
17
+ flagConvert;
18
+ constructor() {
19
+ this.nodePath = '';
20
+ this.scriptPath = '';
21
+ this.filename = '';
22
+ this.evalStr = '';
23
+ this.isDebug = false;
24
+ this.flagConvert = false;
25
+ }
26
+ }
27
+ /** メイン処理 */
28
+ async function main(argvOrg) {
29
+ // コマンドラインオプションを確認
30
+ const argv = [...argvOrg];
31
+ const opt = new CommandOptions();
32
+ opt.nodePath = argv.shift() || '';
33
+ opt.scriptPath = argv.shift() || '';
34
+ while (argv.length > 0) {
35
+ const arg = argv.shift() || '';
36
+ if (arg === '-d' || arg === '--debug') {
37
+ opt.isDebug = true;
38
+ continue;
39
+ }
40
+ if (arg === '-e' || arg === '--eval') {
41
+ opt.evalStr = argv.shift() || '';
42
+ continue;
43
+ }
44
+ if (arg === '-c' || arg === '--convert') {
45
+ opt.flagConvert = true;
46
+ continue;
47
+ }
48
+ if (opt.filename === '') {
49
+ opt.filename = arg;
50
+ }
51
+ }
52
+ // なでしこのコンパイラを生成
53
+ const nako = new com.NakoCompiler();
54
+ nako.addPluginObject('PluginSnako', PluginSnako);
55
+ // 実行前にイベントを挟みたいとき
56
+ nako.addListener('beforeRun', (g) => {
57
+ g.__varslist[0].set('ナデシコ種類', 'snako');
58
+ });
59
+ // logger を設定 --- リスナーを登録することでデバッグレベルを指定
60
+ const logger = nako.getLogger();
61
+ if (opt.isDebug) {
62
+ logger.addListener('trace', (data) => {
63
+ console.log(data.nodeConsole);
64
+ });
65
+ }
66
+ logger.addListener('stdout', (data) => {
67
+ console.log(data.noColor);
68
+ });
69
+ // -e オプションを実行したとき
70
+ if (opt.evalStr) {
71
+ await nako.runAsync(opt.evalStr, 'main.nako3');
72
+ return;
73
+ }
74
+ // パラメータが空だったとき
75
+ if (opt.filename === '') {
76
+ showHelp();
77
+ return;
78
+ }
79
+ // ソースコードをファイルから読み込む
80
+ const code = fs.readFileSync(opt.filename, 'utf-8');
81
+ // -c オプションが指定されたとき
82
+ if (opt.flagConvert) {
83
+ convert(nako, code, opt);
84
+ }
85
+ // 実行
86
+ await nako.runAsync(code, opt.filename);
87
+ }
88
+ // -c オプションを指定したとき
89
+ function convert(nako, code, opt) {
90
+ // オプションを指定
91
+ const genOpt = new NakoGenOptions(false, ['nako_errors.mjs', 'nako_core_version.mjs', 'plugin_system.mjs'], '__self.__varslist[0].set(\'ナデシコ種類\', \'snako\')');
92
+ // スタンドアロンコードを生成
93
+ const js = nako.compileStandalone(code, opt.filename, genOpt);
94
+ const jsFilename = opt.filename + '.js';
95
+ fs.writeFileSync(jsFilename, js, { encoding: 'utf-8' });
96
+ // 必要なライブラリをコピー
97
+ const runtimeDir = path.join(path.dirname(jsFilename), 'nako3runtime');
98
+ const srcDir = path.join(__dirname, '..', 'src');
99
+ if (!fs.existsSync(runtimeDir)) {
100
+ fs.mkdirSync(runtimeDir);
101
+ }
102
+ for (const f of genOpt.importFiles) {
103
+ fs.copyFileSync(path.join(srcDir, f), path.join(runtimeDir, f));
104
+ }
105
+ }
106
+ /** 使い方を表示 */
107
+ function showHelp() {
108
+ console.log('●なでしこ(簡易版) # v.' + com.version.version);
109
+ console.log('[使い方] node snako.mjs [--debug|-d] (filename)');
110
+ console.log('[使い方] node snako.mjs [--eval|-e] (source)');
111
+ console.log('[使い方] node snako.mjs [-c] (source) ... convert');
112
+ }
113
+ /** メイン処理を実行 */
114
+ main(nodejs_argv);
package/core/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nadesiko3core",
3
- "version": "3.6.7",
3
+ "version": "3.6.9",
4
4
  "description": "Japanese Programming Language Nadesiko v3 core",
5
5
  "main": "index.mjs",
6
6
  "type": "module",
@@ -0,0 +1,7 @@
1
+ import core from '../index.mjs';
2
+ const main = async () => {
3
+ const com = new core.NakoCompiler();
4
+ const g = await com.runAsync('1 + 2 * 3を表示', 'main.nako3');
5
+ console.log(g.log);
6
+ };
7
+ await main();
@@ -85,8 +85,8 @@ export class NakoCompiler {
85
85
  this.lexer.setFuncList(this.funclist);
86
86
  this.lexer.setModuleExport(this.moduleExport);
87
87
  // link for plysin_system::予約語一覧取得/助詞一覧取得
88
- this.reservedWords = this.lexer.reservedWords;
89
- this.josiList = this.lexer.josiList;
88
+ this.reservedWords = JSON.parse(JSON.stringify(this.lexer.reservedWords)); // 外部公開用のデータなので複製して保持する
89
+ this.josiList = JSON.parse(JSON.stringify(this.lexer.josiList));
90
90
  }
91
91
  /** モジュール(名前空間)の一覧を取得する */
92
92
  getModList() {
@@ -159,9 +159,10 @@ export class NakoCompiler {
159
159
  // 関数一覧を設定
160
160
  this.lexer.setFuncList(this.funclist)
161
161
  this.lexer.setModuleExport(this.moduleExport)
162
+
162
163
  // link for plysin_system::予約語一覧取得/助詞一覧取得
163
- this.reservedWords = this.lexer.reservedWords
164
- this.josiList = this.lexer.josiList
164
+ this.reservedWords = JSON.parse(JSON.stringify(this.lexer.reservedWords)) // 外部公開用のデータなので複製して保持する
165
+ this.josiList = JSON.parse(JSON.stringify(this.lexer.josiList))
165
166
  }
166
167
 
167
168
  /** モジュール(名前空間)の一覧を取得する */
@@ -1,8 +1,8 @@
1
1
  // 実際のバージョン定義 (自動生成されるので以下を編集しない)
2
2
  const coreVersion = {
3
- version: '3.6.3',
3
+ version: '3.6.9',
4
4
  major: 3,
5
5
  minor: 6,
6
- patch: 3
6
+ patch: 9
7
7
  };
8
8
  export default coreVersion;
@@ -11,9 +11,9 @@ export interface NakoCoreVersion {
11
11
  }
12
12
  // 実際のバージョン定義 (自動生成されるので以下を編集しない)
13
13
  const coreVersion: NakoCoreVersion = {
14
- version: '3.6.3',
14
+ version: '3.6.9',
15
15
  major: 3,
16
16
  minor: 6,
17
- patch: 3
17
+ patch: 9
18
18
  }
19
19
  export default coreVersion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nadesiko3",
3
- "version": "3.6.8",
3
+ "version": "3.6.9",
4
4
  "description": "Japanese Programming Language",
5
5
  "type": "module",
6
6
  "main": "src/index.mjs",
package/release/_hash.txt CHANGED
@@ -84,17 +84,17 @@ version.js:
84
84
  sha256(base64): Q7iWMzjAsyPLlmEJxtzb112R+2ghvBYLMEynLvkCpFY=
85
85
  sha512(base64): Xy8RMyAkohHiIXAKfISKFZTnAAHK1dLZWOV2kU15Hx/r6fpZOtHt7j4okKPgKOZoGs/BLozy8YS5nIU/Sfk/2g==
86
86
  version_main.js:
87
- md5(hex): 0b5800427622cfbe9a7b14218c53de3f
88
- sha256(hex): 94953247bb3055565da2cec4ccb0bd27dd8946b767bcc9c33959a0cdf1a4e686
89
- sha256(base64): lJUyR7swVVZdos7EzLC9J92JRrdnvMnDOVmgzfGk5oY=
90
- sha512(base64): q0wi+XyxHGSjIBnSXNdp1dPc3yfovZMk75hF6STUiDds72sEaCXdId2FYQSKoFm7CHrSos2iW11FcpTg7oyV4Q==
87
+ md5(hex): aa9ff0a804dcd29812959dfcd1b56e46
88
+ sha256(hex): 72778f675b30b035d9c7adaf173567ba759f0f4068a0640a3991aa2581b170fe
89
+ sha256(base64): cnePZ1swsDXZx62vFzVnunWfD0BooGQKOZGqJYGxcP4=
90
+ sha512(base64): GBZbCqacmFhttCJKlGIelRRunW1X/KJj2J49MCqgLwJPXrCG4A7XV+lMxnfJfTelxK2mVPaxPWEZXwpYbVTe7g==
91
91
  wnako3.js:
92
- md5(hex): e019148e884113fef97336b73d0db3a4
93
- sha256(hex): d2b8960fe09a91f312626fa186dd80fb03ea6d2a16e9d57d93118f915fb6bf65
94
- sha256(base64): 0riWD+CakfMSYm+hht2A+wPqbSoW6dV9kxGPkV+2v2U=
95
- sha512(base64): AfiOp7pt1h/Ggkgd0DeqltaO9sGIX0k82JK3h4GDykibmW8el+7Ea49HYNOML8voje8XCOTAUJXWniYe997w4Q==
92
+ md5(hex): a9760502e2de9976a8c3730013c7a67c
93
+ sha256(hex): ab28236d512bd639acedaf1ed611cacc849d3d4f57c415e09094222104944050
94
+ sha256(base64): qygjbVEr1jms7a8e1hHKzISdPU9XxBXgkJQiIQSUQFA=
95
+ sha512(base64): oTGn4LbcVyEMxQRiQLrQGcUt22xH3fcoj8fFlISPH7gbjkDWUC4M3QsSrj11GKwBQPN4focGhl4miKUn5wgL9A==
96
96
  wnako3webworker.js:
97
- md5(hex): 76255e8803474d7c4d5e8e3374c2ce79
98
- sha256(hex): 210dcfb7adea3e1a84e9e06bf3264e8106d65f0eb7ae053f1449d0d9bbfc29ac
99
- sha256(base64): IQ3Pt63qPhqE6eBr8yZOgQbWXw63rgU/FEnQ2bv8Kaw=
100
- sha512(base64): nRIXa4FOBlRuxzTidwJ6hfXPn7v/KuZxPvVyD3HAuVAOt2aRYnLxoOoZrkdipCvNOZU6R2ArCd0UpThsn3XNPQ==
97
+ md5(hex): aeef039f9830c81dbd2fbd7003f49f86
98
+ sha256(hex): eab26a501c7163fec72ed2be492c2431a11889adf4c0cfc14f45a2c4ff95f9df
99
+ sha256(base64): 6rJqUBxxY/7HLtK+SSwkMaEYia30wM/BT0WixP+V+d8=
100
+ sha512(base64): G/11XuyLs8/XPhzAdsORCkORBzQrmxjKX84t2zin6N6fKjD4H88dOpTQVGkClRWNqkwGOgR40hQvCNrX+Q4M9w==
@@ -1,20 +1,20 @@
1
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/command.json.js" integrity="sha512-tw3Ekhmb5CbA1OCr2zrzJgckcHHjYKBFH+5AZ2NQExb7yjQ6QXrUxZ0+6kE5MhBRBWPWLAp3OK6s0OpYHLGDhA==" crossorigin="anonymous"></script>
2
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/core_src_nako_josi_list_mjs.js" integrity="sha512-0+LAeEfPy2Lrl+DeJMjbBIUda9Y5ttpLGy3/FW8rjSW8bN3udrALJa5V/bhjxU7mYouumV/QGN2wt3oxMCKy9g==" crossorigin="anonymous"></script>
3
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/core_src_nako_reserved_words_mjs.js" integrity="sha512-UzZigh2tIhgBO3+Sp1wnqKMvAGfhqSRdH2+ffmRy4+8CVNEeepddaDV0oKJ+vyvi28zQLmXeMsjRu+Frj3YlTg==" crossorigin="anonymous"></script>
4
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/edit_main.js" integrity="sha512-nCzb2xG7wJkltOa2M4SPg4k5Xz05Q7G8szUCRbEO5cfzrkrHG+r1Hkvm7+wQ7cQ85seqcAFgnCeRthkoxcXHTw==" crossorigin="anonymous"></script>
5
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/editor.js" integrity="sha512-60RfvbeW58u/tKFDLZxjYlxeMCCqE2vx+zp969gt/Ed9gvyUQnNb2o8jR5ePaW253JI+WlJy2uaC2kpAqfq59A==" crossorigin="anonymous"></script>
6
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/nako_gen_async.js" integrity="sha512-/73lycspxJ921s+NmqaOKF58X9rCsgEZrZT4O4sW1aCe5CSXtQevIasAoGgIoL3a5RmlaghbaIVASwAgmoE3+g==" crossorigin="anonymous"></script>
7
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/plugin_caniuse.js" integrity="sha512-V6nOBHnhxPChu+S/LfB7elCeBk985ukLmBmkCyPk4ai5VfoJZuOIttg72PbZSxWfP5eQTrlLNajsorfwNw/vcA==" crossorigin="anonymous"></script>
8
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/plugin_datetime.js" integrity="sha512-ofb5jVaHjjTRoCAmHnbewc2fS8vr1oEkX/B3WoOCjYpDnZ3nnl3EDz6fdAS8CFFzGvuekCk2RFN5BuM9kX6FAg==" crossorigin="anonymous"></script>
9
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/plugin_kansuji.js" integrity="sha512-N+S8Th1yCiQy3q5jh0TFvlTOtrWNE82a4UJZ9O3ml3BGBYA141bpWlJR5c34dObTe1prbLJZ7v5WvV0vnDnr9A==" crossorigin="anonymous"></script>
10
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/plugin_keigo.js" integrity="sha512-u067+CeBvMb6+oINFY9Wz77GBk4NSxS2+k35GJ3RsFFmphJliwzwmV2ceID0gZ4mbjJ0xJHQX9WIypiyI6yfdA==" crossorigin="anonymous"></script>
11
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/plugin_markup.js" integrity="sha512-XmP8FPW17hFb5Ar0s12bAehE4sD+bbk4SQc08Fp2qjsuL0itHy5VzSsRS+KV3t3ShjCOhnbaMLKnDFGAdYGroA==" crossorigin="anonymous"></script>
12
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/plugin_three.js" integrity="sha512-4loRkhlxZ9A9v5t3sk5VECW7T33axIVbBQgwkNdgcjk03yRqAvxut5OS4n3BBS4jnWWHOE3i0vj9qxOOp4uV3Q==" crossorigin="anonymous"></script>
13
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/plugin_toml.js" integrity="sha512-Z4JmOCY66VuyoD8m4dCzKttEbCTEUfqyuqlmcOhs69m/88skKcPYWXi+4W+Td5LdI3xqezn4BkN32F9ZkPzUpQ==" crossorigin="anonymous"></script>
14
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/plugin_turtle.js" integrity="sha512-ce8etr+HoC+UjUyXSgxJzy3+pOYhsBdt9jDzhks2H/eEPQ1gIz7M8hoeyP0223zLLZHBBzlHiL/a6mmJdoKQ+w==" crossorigin="anonymous"></script>
15
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/plugin_webworker.js" integrity="sha512-6UHX2dgMPRY4BuIxLXaERKaA8Wg5eK2pWy+OysU0/+gt2E15M7K5Vr8+4CQt6hylWnmzmJQJfgObIr+yjW5kPw==" crossorigin="anonymous"></script>
16
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/plugin_weykturtle3d.js" integrity="sha512-ONFdombPCdgdnXs7VMUAHpe8IBvTuLzSgzmERf1jEhHo4l06wDpkpRRCk3/9a1hiXRHQ+le2LZBT7XH4VA27sQ==" crossorigin="anonymous"></script>
17
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/version.js" integrity="sha512-Xy8RMyAkohHiIXAKfISKFZTnAAHK1dLZWOV2kU15Hx/r6fpZOtHt7j4okKPgKOZoGs/BLozy8YS5nIU/Sfk/2g==" crossorigin="anonymous"></script>
18
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/version_main.js" integrity="sha512-q0wi+XyxHGSjIBnSXNdp1dPc3yfovZMk75hF6STUiDds72sEaCXdId2FYQSKoFm7CHrSos2iW11FcpTg7oyV4Q==" crossorigin="anonymous"></script>
19
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/wnako3.js" integrity="sha512-AfiOp7pt1h/Ggkgd0DeqltaO9sGIX0k82JK3h4GDykibmW8el+7Ea49HYNOML8voje8XCOTAUJXWniYe997w4Q==" crossorigin="anonymous"></script>
20
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.8&f=release/wnako3webworker.js" integrity="sha512-nRIXa4FOBlRuxzTidwJ6hfXPn7v/KuZxPvVyD3HAuVAOt2aRYnLxoOoZrkdipCvNOZU6R2ArCd0UpThsn3XNPQ==" crossorigin="anonymous"></script>
1
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/command.json.js" integrity="sha512-tw3Ekhmb5CbA1OCr2zrzJgckcHHjYKBFH+5AZ2NQExb7yjQ6QXrUxZ0+6kE5MhBRBWPWLAp3OK6s0OpYHLGDhA==" crossorigin="anonymous"></script>
2
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/core_src_nako_josi_list_mjs.js" integrity="sha512-0+LAeEfPy2Lrl+DeJMjbBIUda9Y5ttpLGy3/FW8rjSW8bN3udrALJa5V/bhjxU7mYouumV/QGN2wt3oxMCKy9g==" crossorigin="anonymous"></script>
3
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/core_src_nako_reserved_words_mjs.js" integrity="sha512-UzZigh2tIhgBO3+Sp1wnqKMvAGfhqSRdH2+ffmRy4+8CVNEeepddaDV0oKJ+vyvi28zQLmXeMsjRu+Frj3YlTg==" crossorigin="anonymous"></script>
4
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/edit_main.js" integrity="sha512-nCzb2xG7wJkltOa2M4SPg4k5Xz05Q7G8szUCRbEO5cfzrkrHG+r1Hkvm7+wQ7cQ85seqcAFgnCeRthkoxcXHTw==" crossorigin="anonymous"></script>
5
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/editor.js" integrity="sha512-60RfvbeW58u/tKFDLZxjYlxeMCCqE2vx+zp969gt/Ed9gvyUQnNb2o8jR5ePaW253JI+WlJy2uaC2kpAqfq59A==" crossorigin="anonymous"></script>
6
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/nako_gen_async.js" integrity="sha512-/73lycspxJ921s+NmqaOKF58X9rCsgEZrZT4O4sW1aCe5CSXtQevIasAoGgIoL3a5RmlaghbaIVASwAgmoE3+g==" crossorigin="anonymous"></script>
7
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/plugin_caniuse.js" integrity="sha512-V6nOBHnhxPChu+S/LfB7elCeBk985ukLmBmkCyPk4ai5VfoJZuOIttg72PbZSxWfP5eQTrlLNajsorfwNw/vcA==" crossorigin="anonymous"></script>
8
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/plugin_datetime.js" integrity="sha512-ofb5jVaHjjTRoCAmHnbewc2fS8vr1oEkX/B3WoOCjYpDnZ3nnl3EDz6fdAS8CFFzGvuekCk2RFN5BuM9kX6FAg==" crossorigin="anonymous"></script>
9
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/plugin_kansuji.js" integrity="sha512-N+S8Th1yCiQy3q5jh0TFvlTOtrWNE82a4UJZ9O3ml3BGBYA141bpWlJR5c34dObTe1prbLJZ7v5WvV0vnDnr9A==" crossorigin="anonymous"></script>
10
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/plugin_keigo.js" integrity="sha512-u067+CeBvMb6+oINFY9Wz77GBk4NSxS2+k35GJ3RsFFmphJliwzwmV2ceID0gZ4mbjJ0xJHQX9WIypiyI6yfdA==" crossorigin="anonymous"></script>
11
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/plugin_markup.js" integrity="sha512-XmP8FPW17hFb5Ar0s12bAehE4sD+bbk4SQc08Fp2qjsuL0itHy5VzSsRS+KV3t3ShjCOhnbaMLKnDFGAdYGroA==" crossorigin="anonymous"></script>
12
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/plugin_three.js" integrity="sha512-4loRkhlxZ9A9v5t3sk5VECW7T33axIVbBQgwkNdgcjk03yRqAvxut5OS4n3BBS4jnWWHOE3i0vj9qxOOp4uV3Q==" crossorigin="anonymous"></script>
13
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/plugin_toml.js" integrity="sha512-Z4JmOCY66VuyoD8m4dCzKttEbCTEUfqyuqlmcOhs69m/88skKcPYWXi+4W+Td5LdI3xqezn4BkN32F9ZkPzUpQ==" crossorigin="anonymous"></script>
14
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/plugin_turtle.js" integrity="sha512-ce8etr+HoC+UjUyXSgxJzy3+pOYhsBdt9jDzhks2H/eEPQ1gIz7M8hoeyP0223zLLZHBBzlHiL/a6mmJdoKQ+w==" crossorigin="anonymous"></script>
15
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/plugin_webworker.js" integrity="sha512-6UHX2dgMPRY4BuIxLXaERKaA8Wg5eK2pWy+OysU0/+gt2E15M7K5Vr8+4CQt6hylWnmzmJQJfgObIr+yjW5kPw==" crossorigin="anonymous"></script>
16
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/plugin_weykturtle3d.js" integrity="sha512-ONFdombPCdgdnXs7VMUAHpe8IBvTuLzSgzmERf1jEhHo4l06wDpkpRRCk3/9a1hiXRHQ+le2LZBT7XH4VA27sQ==" crossorigin="anonymous"></script>
17
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/version.js" integrity="sha512-Xy8RMyAkohHiIXAKfISKFZTnAAHK1dLZWOV2kU15Hx/r6fpZOtHt7j4okKPgKOZoGs/BLozy8YS5nIU/Sfk/2g==" crossorigin="anonymous"></script>
18
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/version_main.js" integrity="sha512-GBZbCqacmFhttCJKlGIelRRunW1X/KJj2J49MCqgLwJPXrCG4A7XV+lMxnfJfTelxK2mVPaxPWEZXwpYbVTe7g==" crossorigin="anonymous"></script>
19
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/wnako3.js" integrity="sha512-oTGn4LbcVyEMxQRiQLrQGcUt22xH3fcoj8fFlISPH7gbjkDWUC4M3QsSrj11GKwBQPN4focGhl4miKUn5wgL9A==" crossorigin="anonymous"></script>
20
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.9&f=release/wnako3webworker.js" integrity="sha512-G/11XuyLs8/XPhzAdsORCkORBzQrmxjKX84t2zin6N6fKjD4H88dOpTQVGkClRWNqkwGOgR40hQvCNrX+Q4M9w==" crossorigin="anonymous"></script>