codeapp-js 0.1.1 → 0.2.2
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/codeApp/dist/codeapp.js +552 -78
- package/codeApp/dist/power-apps-data.js +2531 -2531
- package/dev files/outlook.js +218 -9
- package/examples/combined demo/dist/codeapp.js +1098 -0
- package/examples/combined demo/dist/index.js +69 -114
- package/examples/combined demo/dist/power-apps-data.js +646 -170
- package/examples/combined demo/power.config.json +42 -42
- package/examples/dataverse Demo/dist/codeapp.js +1085 -0
- package/examples/dataverse Demo/dist/index.html +54 -54
- package/examples/dataverse Demo/dist/index.js +82 -70
- package/examples/dataverse Demo/dist/power-apps-data.js +551 -170
- package/examples/dataverse Demo/power.config.json +34 -34
- package/examples/dataverse Demo/readme.md +79 -79
- package/examples/groups Demo/dist/codeapp.js +1085 -0
- package/examples/groups Demo/dist/index.js +27 -27
- package/examples/groups Demo/dist/power-apps-data.js +551 -170
- package/examples/kanban/dist/dataverse.js +94 -94
- package/examples/kanban/dist/environmentVar.js +55 -55
- package/examples/kanban/dist/office365groups.js +97 -97
- package/examples/kanban/dist/office365users.js +169 -169
- package/examples/kanban/dist/outlook.js +162 -162
- package/examples/kanban/dist/power-apps-data.js +560 -138
- package/examples/kanban/dist/sharepoint.js +339 -339
- package/examples/myProfile/dist/index.html +184 -184
- package/examples/myProfile/dist/index.js +141 -141
- package/examples/myProfile/dist/office365users.js +169 -169
- package/examples/myProfile/dist/power-apps-data.js +560 -138
- package/examples/myProfile/power.config.json +22 -22
- package/examples/myProfile/readme.md +79 -79
- package/examples/outlook Demo/dist/codeapp.js +1085 -0
- package/examples/outlook Demo/dist/index.html +35 -35
- package/examples/outlook Demo/dist/index.js +170 -166
- package/examples/outlook Demo/dist/outlook.js +121 -121
- package/examples/outlook Demo/dist/power-apps-data.js +551 -170
- package/examples/outlook Demo/dist/styles.css +84 -84
- package/examples/outlook Demo/readme.md +82 -82
- package/examples/outlook Demo2/OutlookDemo_1_0_0_1.zip +0 -0
- package/examples/outlook Demo2/agent/decision-log.md +7 -0
- package/examples/outlook Demo2/dist/codeapp.js +1334 -0
- package/examples/outlook Demo2/dist/icon-512.png +0 -0
- package/examples/outlook Demo2/dist/index.html +98 -0
- package/examples/outlook Demo2/dist/index.js +346 -0
- package/examples/outlook Demo2/dist/power-apps-data.js +3007 -0
- package/examples/outlook Demo2/dist/styles.css +639 -0
- package/examples/outlook Demo2/power.config.json +23 -0
- package/examples/outlook Demo2/src/generated/index.ts +14 -0
- package/examples/outlook Demo2/src/generated/models/Office365GroupsModel.ts +363 -0
- package/examples/outlook Demo2/src/generated/models/Office365OutlookModel.ts +2046 -0
- package/examples/outlook Demo2/src/generated/models/Office365UsersModel.ts +254 -0
- package/examples/outlook Demo2/src/generated/services/Office365GroupsService.ts +326 -0
- package/examples/outlook Demo2/src/generated/services/Office365OutlookService.ts +2476 -0
- package/examples/outlook Demo2/src/generated/services/Office365UsersService.ts +358 -0
- package/examples/planning Poker/.vscode/settings.json +4 -4
- package/examples/planning Poker/additional files/customizations (tables).xml +6428 -6428
- package/examples/planning Poker/additional files/dataverse-tables.json +165 -165
- package/examples/planning Poker/additional files/readme.md +122 -122
- package/examples/planning Poker/dist/dataverse.js +78 -78
- package/examples/planning Poker/dist/index.html +198 -198
- package/examples/planning Poker/dist/index.js +954 -954
- package/examples/planning Poker/dist/power-apps-data.js +560 -138
- package/examples/planning Poker/dist/styles.css +815 -815
- package/examples/sharePoint Demo/agent/decision-log.md +5 -5
- package/examples/sharePoint Demo/dist/codeapp.js +1085 -0
- package/examples/sharePoint Demo/dist/index.js +44 -51
- package/examples/sharePoint Demo/dist/power-apps-data.js +551 -170
- package/examples/sharePoint Demo/power.config.json +22 -22
- package/examples/solution explorer/agent/decision-log.md +27 -0
- package/examples/solution explorer/agent/mockup-01-swiss-grid.html +452 -0
- package/examples/solution explorer/agent/mockup-02-dark-glass.html +496 -0
- package/examples/solution explorer/agent/mockup-03-paper-console.html +510 -0
- package/examples/solution explorer/agent/mockup-04-neon-noir.html +546 -0
- package/examples/solution explorer/agent/mockup-05-zen-garden.html +534 -0
- package/examples/solution explorer/dist/codeapp.js +1098 -0
- package/examples/solution explorer/dist/icon-512.png +0 -0
- package/examples/solution explorer/dist/index.html +80 -0
- package/examples/solution explorer/dist/index.js +735 -0
- package/examples/solution explorer/dist/power-apps-data.js +3007 -0
- package/examples/solution explorer/dist/styles.css +571 -0
- package/examples/solution explorer/power.config.json +151 -0
- package/examples/todo/dist/dataverse.js +64 -64
- package/examples/todo/dist/index.html +75 -75
- package/examples/todo/dist/index.js +8 -8
- package/examples/todo/dist/power-apps-data.js +560 -138
- package/examples/todo/dist/renderer.js +375 -375
- package/examples/todo/dist/styles.css +691 -691
- package/examples/todo/power.config.json +34 -34
- package/package.json +1 -8
- package/docs-mockups/atelier/index.html +0 -120
- package/docs-mockups/atelier/script.js +0 -23
- package/docs-mockups/atelier/styles.css +0 -361
- package/docs-mockups/field-guide/index.html +0 -112
- package/docs-mockups/field-guide/script.js +0 -20
- package/docs-mockups/field-guide/styles.css +0 -272
- package/docs-mockups/index.html +0 -80
- package/docs-mockups/maker-hub/index.html +0 -178
- package/docs-mockups/maker-hub/script.js +0 -20
- package/docs-mockups/maker-hub/styles.css +0 -404
- package/docs-mockups/script.js +0 -26
- package/docs-mockups/signal/index.html +0 -146
- package/docs-mockups/signal/script.js +0 -20
- package/docs-mockups/signal/styles.css +0 -314
- package/docs-mockups/styles.css +0 -287
- package/examples/combined demo/dist/dataverse.js +0 -86
- package/examples/combined demo/dist/environmentVar.js +0 -55
- package/examples/combined demo/dist/office365groups.js +0 -97
- package/examples/combined demo/dist/office365users.js +0 -169
- package/examples/combined demo/dist/outlook.js +0 -162
- package/examples/combined demo/dist/sharepoint.js +0 -339
- package/examples/dataverse Demo/dist/dataverse.js +0 -86
- package/examples/groups Demo/dist/dataverse.js +0 -86
- package/examples/groups Demo/dist/environmentVar.js +0 -55
- package/examples/groups Demo/dist/office365groups.js +0 -97
- package/examples/groups Demo/dist/office365users.js +0 -169
- package/examples/groups Demo/dist/outlook.js +0 -162
- package/examples/groups Demo/dist/sharepoint.js +0 -339
- package/examples/sharePoint Demo/dist/dataverse.js +0 -94
- package/examples/sharePoint Demo/dist/environmentVar.js +0 -55
- package/examples/sharePoint Demo/dist/office365groups.js +0 -97
- package/examples/sharePoint Demo/dist/office365users.js +0 -169
- package/examples/sharePoint Demo/dist/outlook.js +0 -162
- package/examples/sharePoint Demo/dist/sharepoint.js +0 -339
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
import { getClient } from "@microsoft/power-apps/data";
|
|
2
|
-
|
|
3
|
-
// ── Initialize SDK & Client ────────────────────────────────────
|
|
4
|
-
function initClient(tableName, primaryKey) {
|
|
5
|
-
const dataSourcesInfo = {
|
|
6
|
-
[tableName]: {
|
|
7
|
-
tableId: "",
|
|
8
|
-
version: "",
|
|
9
|
-
primaryKey,
|
|
10
|
-
dataSourceType: "Dataverse",
|
|
11
|
-
apis: {},
|
|
12
|
-
},
|
|
13
|
-
};
|
|
14
|
-
return getClient(dataSourcesInfo);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// ── Create ─────────────────────────────────────────────────────
|
|
18
|
-
export async function createItem(tableName, primaryKey, record) {
|
|
19
|
-
const client = await initClient(tableName, primaryKey);
|
|
20
|
-
const result = await client.createRecordAsync(tableName, record);
|
|
21
|
-
return result;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// ── Read (single) ──────────────────────────────────────────────
|
|
25
|
-
export async function getItem(tableName, primaryKey, id, select) {
|
|
26
|
-
const client = await initClient(tableName, primaryKey);
|
|
27
|
-
const options = select ? { select } : undefined;
|
|
28
|
-
const result = await client.retrieveRecordAsync(tableName, id, options);
|
|
29
|
-
return result;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// ── List (multiple) ────────────────────────────────────────────
|
|
33
|
-
export async function listItems(tableName, primaryKey, { filter, select, orderBy, top, skip } = {}) {
|
|
34
|
-
const client = await initClient(tableName, primaryKey);
|
|
35
|
-
const result = await client.retrieveMultipleRecordsAsync(tableName, {
|
|
36
|
-
filter,
|
|
37
|
-
select,
|
|
38
|
-
orderBy,
|
|
39
|
-
top,
|
|
40
|
-
skip,
|
|
41
|
-
});
|
|
42
|
-
return result;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// ── Update ─────────────────────────────────────────────────────
|
|
46
|
-
export async function updateItem(tableName, primaryKey, id, changedFields) {
|
|
47
|
-
const client = await initClient(tableName, primaryKey);
|
|
48
|
-
const result = await client.updateRecordAsync(tableName, id, changedFields);
|
|
49
|
-
return result;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// ── Delete ─────────────────────────────────────────────────────
|
|
53
|
-
export async function deleteItem(tableName, primaryKey, id) {
|
|
54
|
-
const client = await initClient(tableName, primaryKey);
|
|
55
|
-
const result = await client.deleteRecordAsync(tableName, id);
|
|
56
|
-
return result;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// ── Unbound Action ─────────────────────────────────────────────
|
|
60
|
-
export async function callUnboundAction(tableName, primaryKey, actionName, params) {
|
|
61
|
-
const client = await initClient(tableName, primaryKey);
|
|
62
|
-
const result = await client.invokeActionAsync(tableName, actionName, params);
|
|
63
|
-
return result;
|
|
64
|
-
}
|
|
1
|
+
import { getClient } from "@microsoft/power-apps/data";
|
|
2
|
+
|
|
3
|
+
// ── Initialize SDK & Client ────────────────────────────────────
|
|
4
|
+
function initClient(tableName, primaryKey) {
|
|
5
|
+
const dataSourcesInfo = {
|
|
6
|
+
[tableName]: {
|
|
7
|
+
tableId: "",
|
|
8
|
+
version: "",
|
|
9
|
+
primaryKey,
|
|
10
|
+
dataSourceType: "Dataverse",
|
|
11
|
+
apis: {},
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
return getClient(dataSourcesInfo);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// ── Create ─────────────────────────────────────────────────────
|
|
18
|
+
export async function createItem(tableName, primaryKey, record) {
|
|
19
|
+
const client = await initClient(tableName, primaryKey);
|
|
20
|
+
const result = await client.createRecordAsync(tableName, record);
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// ── Read (single) ──────────────────────────────────────────────
|
|
25
|
+
export async function getItem(tableName, primaryKey, id, select) {
|
|
26
|
+
const client = await initClient(tableName, primaryKey);
|
|
27
|
+
const options = select ? { select } : undefined;
|
|
28
|
+
const result = await client.retrieveRecordAsync(tableName, id, options);
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// ── List (multiple) ────────────────────────────────────────────
|
|
33
|
+
export async function listItems(tableName, primaryKey, { filter, select, orderBy, top, skip } = {}) {
|
|
34
|
+
const client = await initClient(tableName, primaryKey);
|
|
35
|
+
const result = await client.retrieveMultipleRecordsAsync(tableName, {
|
|
36
|
+
filter,
|
|
37
|
+
select,
|
|
38
|
+
orderBy,
|
|
39
|
+
top,
|
|
40
|
+
skip,
|
|
41
|
+
});
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// ── Update ─────────────────────────────────────────────────────
|
|
46
|
+
export async function updateItem(tableName, primaryKey, id, changedFields) {
|
|
47
|
+
const client = await initClient(tableName, primaryKey);
|
|
48
|
+
const result = await client.updateRecordAsync(tableName, id, changedFields);
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ── Delete ─────────────────────────────────────────────────────
|
|
53
|
+
export async function deleteItem(tableName, primaryKey, id) {
|
|
54
|
+
const client = await initClient(tableName, primaryKey);
|
|
55
|
+
const result = await client.deleteRecordAsync(tableName, id);
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ── Unbound Action ─────────────────────────────────────────────
|
|
60
|
+
export async function callUnboundAction(tableName, primaryKey, actionName, params) {
|
|
61
|
+
const client = await initClient(tableName, primaryKey);
|
|
62
|
+
const result = await client.invokeActionAsync(tableName, actionName, params);
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
|
|
6
|
-
<meta name="mobile-web-app-capable" content="yes" />
|
|
7
|
-
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
8
|
-
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
9
|
-
<title>Power Devbox • Notes</title>
|
|
10
|
-
<link rel="icon" href="icon192.png"/>
|
|
11
|
-
|
|
12
|
-
<script type="importmap">
|
|
13
|
-
{ "imports": { "@microsoft/power-apps/data": "./power-apps-data.js" } }
|
|
14
|
-
</script>
|
|
15
|
-
<link rel="stylesheet" href="./styles.css" />
|
|
16
|
-
<meta name="theme-color" content="#f5f0eb" />
|
|
17
|
-
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
18
|
-
<link rel="apple-touch-icon" href="icon192.png">
|
|
19
|
-
</head>
|
|
20
|
-
<body>
|
|
21
|
-
<header class="app-bar">
|
|
22
|
-
<div class="left">
|
|
23
|
-
<img src="icon192.png" class="app-bar-logo"/>
|
|
24
|
-
<h1>Power DevBox • Notes</h1>
|
|
25
|
-
<span id="sync-status" title="Sync status">Idle</span>
|
|
26
|
-
</div>
|
|
27
|
-
<div class="right">
|
|
28
|
-
<button id="btn-sync" class="tonal">Sync</button>
|
|
29
|
-
</div>
|
|
30
|
-
</header>
|
|
31
|
-
|
|
32
|
-
<main class="container">
|
|
33
|
-
<aside class="sidebar">
|
|
34
|
-
<div class="search">
|
|
35
|
-
<input id="search" type="search" placeholder="Search notes or #tags" />
|
|
36
|
-
<button id="btn-new" title="New Note" aria-label="New Note"></button>
|
|
37
|
-
</div>
|
|
38
|
-
<div class="tags" id="tag-list">
|
|
39
|
-
<!-- dynamic tags -->
|
|
40
|
-
</div>
|
|
41
|
-
<ol id="note-list" class="note-list" aria-label="Notes (drag to reorder)"></ol>
|
|
42
|
-
</aside>
|
|
43
|
-
|
|
44
|
-
<section class="editor">
|
|
45
|
-
<div class="toolbar" role="toolbar" aria-label="Markdown toolbar">
|
|
46
|
-
<button data-md="bold" title="Bold (Ctrl+B)"><b>B</b></button>
|
|
47
|
-
<button data-md="italic" title="Italic (Ctrl+I)"><i>I</i></button>
|
|
48
|
-
<button data-md="h1" title="Heading 1">H1</button>
|
|
49
|
-
<button data-md="h2" title="Heading 2">H2</button>
|
|
50
|
-
<button data-md="ul" title="Bullet list">• List</button>
|
|
51
|
-
<button data-md="ol" title="Numbered list">1. List</button>
|
|
52
|
-
<button data-md="task" title="Task checkbox">[ ]</button>
|
|
53
|
-
<button data-md="code" title="Inline code">{;}</button>
|
|
54
|
-
<button data-md="quote" title="> Quote">“”</button>
|
|
55
|
-
<button data-md="link" title="Link">🔗</button>
|
|
56
|
-
<button data-md="tag" title="Add tag">#</button>
|
|
57
|
-
<span class="spacer"></span>
|
|
58
|
-
<button id="btn-preview" class="tonal" title="Toggle preview">Prev</button>
|
|
59
|
-
</div>
|
|
60
|
-
<input id="title" class="title" placeholder="Title" />
|
|
61
|
-
<textarea id="content" class="content" placeholder="Write in Markdown..."></textarea>
|
|
62
|
-
<article id="preview" class="preview" hidden></article>
|
|
63
|
-
</section>
|
|
64
|
-
</main>
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
<footer class="status-bar">
|
|
69
|
-
<span id="status">Ready</span>
|
|
70
|
-
</footer>
|
|
71
|
-
|
|
72
|
-
<script src="./renderer.js" type="module"></script>
|
|
73
|
-
<script src="./index.js" type="module"></script>
|
|
74
|
-
</body>
|
|
75
|
-
</html>
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
|
|
6
|
+
<meta name="mobile-web-app-capable" content="yes" />
|
|
7
|
+
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
8
|
+
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
9
|
+
<title>Power Devbox • Notes</title>
|
|
10
|
+
<link rel="icon" href="icon192.png"/>
|
|
11
|
+
|
|
12
|
+
<script type="importmap">
|
|
13
|
+
{ "imports": { "@microsoft/power-apps/data": "./power-apps-data.js" } }
|
|
14
|
+
</script>
|
|
15
|
+
<link rel="stylesheet" href="./styles.css" />
|
|
16
|
+
<meta name="theme-color" content="#f5f0eb" />
|
|
17
|
+
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
18
|
+
<link rel="apple-touch-icon" href="icon192.png">
|
|
19
|
+
</head>
|
|
20
|
+
<body>
|
|
21
|
+
<header class="app-bar">
|
|
22
|
+
<div class="left">
|
|
23
|
+
<img src="icon192.png" class="app-bar-logo"/>
|
|
24
|
+
<h1>Power DevBox • Notes</h1>
|
|
25
|
+
<span id="sync-status" title="Sync status">Idle</span>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="right">
|
|
28
|
+
<button id="btn-sync" class="tonal">Sync</button>
|
|
29
|
+
</div>
|
|
30
|
+
</header>
|
|
31
|
+
|
|
32
|
+
<main class="container">
|
|
33
|
+
<aside class="sidebar">
|
|
34
|
+
<div class="search">
|
|
35
|
+
<input id="search" type="search" placeholder="Search notes or #tags" />
|
|
36
|
+
<button id="btn-new" title="New Note" aria-label="New Note"></button>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="tags" id="tag-list">
|
|
39
|
+
<!-- dynamic tags -->
|
|
40
|
+
</div>
|
|
41
|
+
<ol id="note-list" class="note-list" aria-label="Notes (drag to reorder)"></ol>
|
|
42
|
+
</aside>
|
|
43
|
+
|
|
44
|
+
<section class="editor">
|
|
45
|
+
<div class="toolbar" role="toolbar" aria-label="Markdown toolbar">
|
|
46
|
+
<button data-md="bold" title="Bold (Ctrl+B)"><b>B</b></button>
|
|
47
|
+
<button data-md="italic" title="Italic (Ctrl+I)"><i>I</i></button>
|
|
48
|
+
<button data-md="h1" title="Heading 1">H1</button>
|
|
49
|
+
<button data-md="h2" title="Heading 2">H2</button>
|
|
50
|
+
<button data-md="ul" title="Bullet list">• List</button>
|
|
51
|
+
<button data-md="ol" title="Numbered list">1. List</button>
|
|
52
|
+
<button data-md="task" title="Task checkbox">[ ]</button>
|
|
53
|
+
<button data-md="code" title="Inline code">{;}</button>
|
|
54
|
+
<button data-md="quote" title="> Quote">“”</button>
|
|
55
|
+
<button data-md="link" title="Link">🔗</button>
|
|
56
|
+
<button data-md="tag" title="Add tag">#</button>
|
|
57
|
+
<span class="spacer"></span>
|
|
58
|
+
<button id="btn-preview" class="tonal" title="Toggle preview">Prev</button>
|
|
59
|
+
</div>
|
|
60
|
+
<input id="title" class="title" placeholder="Title" />
|
|
61
|
+
<textarea id="content" class="content" placeholder="Write in Markdown..."></textarea>
|
|
62
|
+
<article id="preview" class="preview" hidden></article>
|
|
63
|
+
</section>
|
|
64
|
+
</main>
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
<footer class="status-bar">
|
|
69
|
+
<span id="status">Ready</span>
|
|
70
|
+
</footer>
|
|
71
|
+
|
|
72
|
+
<script src="./renderer.js" type="module"></script>
|
|
73
|
+
<script src="./index.js" type="module"></script>
|
|
74
|
+
</body>
|
|
75
|
+
</html>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { createItem, listItems, updateItem, deleteItem } from "./dataverse.js";
|
|
2
|
-
|
|
3
|
-
async function boot() {
|
|
4
|
-
//on load code
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
// code
|
|
8
|
-
|
|
1
|
+
import { createItem, listItems, updateItem, deleteItem } from "./dataverse.js";
|
|
2
|
+
|
|
3
|
+
async function boot() {
|
|
4
|
+
//on load code
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
// code
|
|
8
|
+
|
|
9
9
|
boot();
|