Soham Waghmare commited on
Commit
afce8a8
·
1 Parent(s): 81dc032

feat: adds a logistic update to backend and init frontend

Browse files
.gitignore CHANGED
@@ -8,3 +8,39 @@ backend/.venv/
8
  backend/.env*
9
 
10
  # Next.js ignore files
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  backend/.env*
9
 
10
  # Next.js ignore files
11
+ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
12
+
13
+ # dependencies
14
+ frontend/node_modules
15
+ frontend/.pnp
16
+ frontend/.pnp.js
17
+ frontend/.yarn/install-state.gz
18
+
19
+ # testing
20
+ frontend/coverage
21
+
22
+ # next.js
23
+ frontend/.next/
24
+ frontend/out/
25
+
26
+ # production
27
+ frontend/build
28
+
29
+ # misc
30
+ frontend/.DS_Store
31
+ frontend/*.pem
32
+
33
+ # debug
34
+ frontend/npm-debug.log*
35
+ frontend/yarn-debug.log*
36
+ frontend/yarn-error.log*
37
+
38
+ # local env files
39
+ frontend/.env*.local
40
+
41
+ # vercel
42
+ frontend/.vercel
43
+
44
+ # typescript
45
+ frontend/*.tsbuildinfo
46
+ frontend/next-env.d.ts
KnowledgeNet.excalidraw ADDED
@@ -0,0 +1,4021 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "type": "excalidraw",
3
+ "version": 2,
4
+ "source": "https://excalidraw.com",
5
+ "elements": [
6
+ {
7
+ "id": "SAhHglhrcedvqQSqe8et1",
8
+ "type": "rectangle",
9
+ "x": 756,
10
+ "y": 276,
11
+ "width": 132,
12
+ "height": 132,
13
+ "angle": 0,
14
+ "strokeColor": "#1e1e1e",
15
+ "backgroundColor": "transparent",
16
+ "fillStyle": "solid",
17
+ "strokeWidth": 2,
18
+ "strokeStyle": "solid",
19
+ "roughness": 1,
20
+ "opacity": 100,
21
+ "groupIds": [],
22
+ "frameId": null,
23
+ "index": "a2",
24
+ "roundness": {
25
+ "type": 3
26
+ },
27
+ "seed": 531650010,
28
+ "version": 134,
29
+ "versionNonce": 2062653658,
30
+ "isDeleted": false,
31
+ "boundElements": [
32
+ {
33
+ "id": "Ni72LRBYzaxLGfiMbuSOP",
34
+ "type": "text"
35
+ }
36
+ ],
37
+ "updated": 1739538321355,
38
+ "link": null,
39
+ "locked": false
40
+ },
41
+ {
42
+ "id": "Ni72LRBYzaxLGfiMbuSOP",
43
+ "type": "text",
44
+ "x": 798.75,
45
+ "y": 329.5,
46
+ "width": 46.5,
47
+ "height": 25,
48
+ "angle": 0,
49
+ "strokeColor": "#1e1e1e",
50
+ "backgroundColor": "transparent",
51
+ "fillStyle": "solid",
52
+ "strokeWidth": 2,
53
+ "strokeStyle": "solid",
54
+ "roughness": 1,
55
+ "opacity": 100,
56
+ "groupIds": [],
57
+ "frameId": null,
58
+ "index": "a3",
59
+ "roundness": null,
60
+ "seed": 362580634,
61
+ "version": 60,
62
+ "versionNonce": 2063710854,
63
+ "isDeleted": false,
64
+ "boundElements": null,
65
+ "updated": 1739538321355,
66
+ "link": null,
67
+ "locked": false,
68
+ "text": "KNet",
69
+ "fontSize": 20,
70
+ "fontFamily": 5,
71
+ "textAlign": "center",
72
+ "verticalAlign": "middle",
73
+ "containerId": "SAhHglhrcedvqQSqe8et1",
74
+ "originalText": "KNet",
75
+ "autoResize": true,
76
+ "lineHeight": 1.25
77
+ },
78
+ {
79
+ "id": "LEKPJmP-Qy9Sg0N6DrdUB",
80
+ "type": "rectangle",
81
+ "x": 961,
82
+ "y": 128,
83
+ "width": 132,
84
+ "height": 132,
85
+ "angle": 0,
86
+ "strokeColor": "#1e1e1e",
87
+ "backgroundColor": "transparent",
88
+ "fillStyle": "solid",
89
+ "strokeWidth": 2,
90
+ "strokeStyle": "solid",
91
+ "roughness": 1,
92
+ "opacity": 100,
93
+ "groupIds": [],
94
+ "frameId": null,
95
+ "index": "a4",
96
+ "roundness": {
97
+ "type": 3
98
+ },
99
+ "seed": 1872425606,
100
+ "version": 167,
101
+ "versionNonce": 1796465882,
102
+ "isDeleted": false,
103
+ "boundElements": [
104
+ {
105
+ "id": "KgSvq6xGdO9NBTpjlJpyW",
106
+ "type": "text"
107
+ }
108
+ ],
109
+ "updated": 1739537550028,
110
+ "link": null,
111
+ "locked": false
112
+ },
113
+ {
114
+ "id": "KgSvq6xGdO9NBTpjlJpyW",
115
+ "type": "text",
116
+ "x": 994.7750015258789,
117
+ "y": 181.5,
118
+ "width": 64.44999694824219,
119
+ "height": 25,
120
+ "angle": 0,
121
+ "strokeColor": "#1e1e1e",
122
+ "backgroundColor": "transparent",
123
+ "fillStyle": "solid",
124
+ "strokeWidth": 2,
125
+ "strokeStyle": "solid",
126
+ "roughness": 1,
127
+ "opacity": 100,
128
+ "groupIds": [],
129
+ "frameId": null,
130
+ "index": "a5",
131
+ "roundness": null,
132
+ "seed": 367440326,
133
+ "version": 101,
134
+ "versionNonce": 1503521498,
135
+ "isDeleted": false,
136
+ "boundElements": null,
137
+ "updated": 1739537553516,
138
+ "link": null,
139
+ "locked": false,
140
+ "text": "Source",
141
+ "fontSize": 20,
142
+ "fontFamily": 5,
143
+ "textAlign": "center",
144
+ "verticalAlign": "middle",
145
+ "containerId": "LEKPJmP-Qy9Sg0N6DrdUB",
146
+ "originalText": "Source",
147
+ "autoResize": true,
148
+ "lineHeight": 1.25
149
+ },
150
+ {
151
+ "id": "HQR3uQSet_JJ6CpxXRL6O",
152
+ "type": "rectangle",
153
+ "x": 959,
154
+ "y": 296,
155
+ "width": 132,
156
+ "height": 132,
157
+ "angle": 0,
158
+ "strokeColor": "#1e1e1e",
159
+ "backgroundColor": "transparent",
160
+ "fillStyle": "solid",
161
+ "strokeWidth": 2,
162
+ "strokeStyle": "solid",
163
+ "roughness": 1,
164
+ "opacity": 100,
165
+ "groupIds": [],
166
+ "frameId": null,
167
+ "index": "a6",
168
+ "roundness": {
169
+ "type": 3
170
+ },
171
+ "seed": 2123356166,
172
+ "version": 121,
173
+ "versionNonce": 657739078,
174
+ "isDeleted": false,
175
+ "boundElements": [
176
+ {
177
+ "id": "-mPhViFYPrI8R7XuDx8i9",
178
+ "type": "text"
179
+ }
180
+ ],
181
+ "updated": 1739537494186,
182
+ "link": null,
183
+ "locked": false
184
+ },
185
+ {
186
+ "id": "-mPhViFYPrI8R7XuDx8i9",
187
+ "type": "text",
188
+ "x": 992.7750015258789,
189
+ "y": 349.5,
190
+ "width": 64.44999694824219,
191
+ "height": 25,
192
+ "angle": 0,
193
+ "strokeColor": "#1e1e1e",
194
+ "backgroundColor": "transparent",
195
+ "fillStyle": "solid",
196
+ "strokeWidth": 2,
197
+ "strokeStyle": "solid",
198
+ "roughness": 1,
199
+ "opacity": 100,
200
+ "groupIds": [],
201
+ "frameId": null,
202
+ "index": "a7",
203
+ "roundness": null,
204
+ "seed": 270722886,
205
+ "version": 56,
206
+ "versionNonce": 960622810,
207
+ "isDeleted": false,
208
+ "boundElements": null,
209
+ "updated": 1739537557092,
210
+ "link": null,
211
+ "locked": false,
212
+ "text": "Source",
213
+ "fontSize": 20,
214
+ "fontFamily": 5,
215
+ "textAlign": "center",
216
+ "verticalAlign": "middle",
217
+ "containerId": "HQR3uQSet_JJ6CpxXRL6O",
218
+ "originalText": "Source",
219
+ "autoResize": true,
220
+ "lineHeight": 1.25
221
+ },
222
+ {
223
+ "id": "DTXppFq8_xRJGf9cXve9Y",
224
+ "type": "rectangle",
225
+ "x": 961,
226
+ "y": 471,
227
+ "width": 132,
228
+ "height": 132,
229
+ "angle": 0,
230
+ "strokeColor": "#1e1e1e",
231
+ "backgroundColor": "transparent",
232
+ "fillStyle": "solid",
233
+ "strokeWidth": 2,
234
+ "strokeStyle": "solid",
235
+ "roughness": 1,
236
+ "opacity": 100,
237
+ "groupIds": [],
238
+ "frameId": null,
239
+ "index": "a8",
240
+ "roundness": {
241
+ "type": 3
242
+ },
243
+ "seed": 218403846,
244
+ "version": 126,
245
+ "versionNonce": 1083138310,
246
+ "isDeleted": false,
247
+ "boundElements": [
248
+ {
249
+ "id": "VBEbijfB7Jl4GUUqey8Ra",
250
+ "type": "text"
251
+ }
252
+ ],
253
+ "updated": 1739537506046,
254
+ "link": null,
255
+ "locked": false
256
+ },
257
+ {
258
+ "id": "VBEbijfB7Jl4GUUqey8Ra",
259
+ "type": "text",
260
+ "x": 994.7750015258789,
261
+ "y": 524.5,
262
+ "width": 64.44999694824219,
263
+ "height": 25,
264
+ "angle": 0,
265
+ "strokeColor": "#1e1e1e",
266
+ "backgroundColor": "transparent",
267
+ "fillStyle": "solid",
268
+ "strokeWidth": 2,
269
+ "strokeStyle": "solid",
270
+ "roughness": 1,
271
+ "opacity": 100,
272
+ "groupIds": [],
273
+ "frameId": null,
274
+ "index": "a9",
275
+ "roundness": null,
276
+ "seed": 1755325254,
277
+ "version": 58,
278
+ "versionNonce": 1342174938,
279
+ "isDeleted": false,
280
+ "boundElements": null,
281
+ "updated": 1739537560333,
282
+ "link": null,
283
+ "locked": false,
284
+ "text": "Source",
285
+ "fontSize": 20,
286
+ "fontFamily": 5,
287
+ "textAlign": "center",
288
+ "verticalAlign": "middle",
289
+ "containerId": "DTXppFq8_xRJGf9cXve9Y",
290
+ "originalText": "Source",
291
+ "autoResize": true,
292
+ "lineHeight": 1.25
293
+ },
294
+ {
295
+ "id": "RG4OJrh5FnFgizXN65oID",
296
+ "type": "rectangle",
297
+ "x": 1150,
298
+ "y": 14,
299
+ "width": 132,
300
+ "height": 132,
301
+ "angle": 0,
302
+ "strokeColor": "#1e1e1e",
303
+ "backgroundColor": "transparent",
304
+ "fillStyle": "solid",
305
+ "strokeWidth": 2,
306
+ "strokeStyle": "solid",
307
+ "roughness": 1,
308
+ "opacity": 100,
309
+ "groupIds": [],
310
+ "frameId": null,
311
+ "index": "aA",
312
+ "roundness": {
313
+ "type": 3
314
+ },
315
+ "seed": 1270763802,
316
+ "version": 226,
317
+ "versionNonce": 2045025862,
318
+ "isDeleted": false,
319
+ "boundElements": [
320
+ {
321
+ "type": "text",
322
+ "id": "dPfZzW_tJtU9rfp7d5Wwc"
323
+ }
324
+ ],
325
+ "updated": 1739537498949,
326
+ "link": null,
327
+ "locked": false
328
+ },
329
+ {
330
+ "id": "dPfZzW_tJtU9rfp7d5Wwc",
331
+ "type": "text",
332
+ "x": 1183.775001525879,
333
+ "y": 67.5,
334
+ "width": 64.44999694824219,
335
+ "height": 25,
336
+ "angle": 0,
337
+ "strokeColor": "#1e1e1e",
338
+ "backgroundColor": "transparent",
339
+ "fillStyle": "solid",
340
+ "strokeWidth": 2,
341
+ "strokeStyle": "solid",
342
+ "roughness": 1,
343
+ "opacity": 100,
344
+ "groupIds": [],
345
+ "frameId": null,
346
+ "index": "aB",
347
+ "roundness": null,
348
+ "seed": 638791450,
349
+ "version": 157,
350
+ "versionNonce": 1805741338,
351
+ "isDeleted": false,
352
+ "boundElements": null,
353
+ "updated": 1739537563288,
354
+ "link": null,
355
+ "locked": false,
356
+ "text": "Source",
357
+ "fontSize": 20,
358
+ "fontFamily": 5,
359
+ "textAlign": "center",
360
+ "verticalAlign": "middle",
361
+ "containerId": "RG4OJrh5FnFgizXN65oID",
362
+ "originalText": "Source",
363
+ "autoResize": true,
364
+ "lineHeight": 1.25
365
+ },
366
+ {
367
+ "id": "9c43n9nvSP9WbTxs0smN9",
368
+ "type": "rectangle",
369
+ "x": 1147,
370
+ "y": 172,
371
+ "width": 132,
372
+ "height": 132,
373
+ "angle": 0,
374
+ "strokeColor": "#1e1e1e",
375
+ "backgroundColor": "transparent",
376
+ "fillStyle": "solid",
377
+ "strokeWidth": 2,
378
+ "strokeStyle": "solid",
379
+ "roughness": 1,
380
+ "opacity": 100,
381
+ "groupIds": [],
382
+ "frameId": null,
383
+ "index": "aC",
384
+ "roundness": {
385
+ "type": 3
386
+ },
387
+ "seed": 1682156422,
388
+ "version": 215,
389
+ "versionNonce": 421020614,
390
+ "isDeleted": false,
391
+ "boundElements": [
392
+ {
393
+ "id": "jAwoRWFQpVDAYFBaFTDaw",
394
+ "type": "text"
395
+ }
396
+ ],
397
+ "updated": 1739537501082,
398
+ "link": null,
399
+ "locked": false
400
+ },
401
+ {
402
+ "id": "jAwoRWFQpVDAYFBaFTDaw",
403
+ "type": "text",
404
+ "x": 1180.775001525879,
405
+ "y": 225.5,
406
+ "width": 64.44999694824219,
407
+ "height": 25,
408
+ "angle": 0,
409
+ "strokeColor": "#1e1e1e",
410
+ "backgroundColor": "transparent",
411
+ "fillStyle": "solid",
412
+ "strokeWidth": 2,
413
+ "strokeStyle": "solid",
414
+ "roughness": 1,
415
+ "opacity": 100,
416
+ "groupIds": [],
417
+ "frameId": null,
418
+ "index": "aD",
419
+ "roundness": null,
420
+ "seed": 1192250054,
421
+ "version": 145,
422
+ "versionNonce": 450080006,
423
+ "isDeleted": false,
424
+ "boundElements": null,
425
+ "updated": 1739537567649,
426
+ "link": null,
427
+ "locked": false,
428
+ "text": "Source",
429
+ "fontSize": 20,
430
+ "fontFamily": 5,
431
+ "textAlign": "center",
432
+ "verticalAlign": "middle",
433
+ "containerId": "9c43n9nvSP9WbTxs0smN9",
434
+ "originalText": "Source",
435
+ "autoResize": true,
436
+ "lineHeight": 1.25
437
+ },
438
+ {
439
+ "id": "IGbFR1fQMRYtroaGZTZWY",
440
+ "type": "rectangle",
441
+ "x": 1141,
442
+ "y": 421,
443
+ "width": 132,
444
+ "height": 132,
445
+ "angle": 0,
446
+ "strokeColor": "#1e1e1e",
447
+ "backgroundColor": "transparent",
448
+ "fillStyle": "solid",
449
+ "strokeWidth": 2,
450
+ "strokeStyle": "solid",
451
+ "roughness": 1,
452
+ "opacity": 100,
453
+ "groupIds": [],
454
+ "frameId": null,
455
+ "index": "aE",
456
+ "roundness": {
457
+ "type": 3
458
+ },
459
+ "seed": 1286866182,
460
+ "version": 180,
461
+ "versionNonce": 1216238086,
462
+ "isDeleted": false,
463
+ "boundElements": [
464
+ {
465
+ "id": "Ot_a07FGBDOazyylT0wbF",
466
+ "type": "text"
467
+ }
468
+ ],
469
+ "updated": 1739537511147,
470
+ "link": null,
471
+ "locked": false
472
+ },
473
+ {
474
+ "id": "Ot_a07FGBDOazyylT0wbF",
475
+ "type": "text",
476
+ "x": 1174.775001525879,
477
+ "y": 474.5,
478
+ "width": 64.44999694824219,
479
+ "height": 25,
480
+ "angle": 0,
481
+ "strokeColor": "#1e1e1e",
482
+ "backgroundColor": "transparent",
483
+ "fillStyle": "solid",
484
+ "strokeWidth": 2,
485
+ "strokeStyle": "solid",
486
+ "roughness": 1,
487
+ "opacity": 100,
488
+ "groupIds": [],
489
+ "frameId": null,
490
+ "index": "aF",
491
+ "roundness": null,
492
+ "seed": 1127838790,
493
+ "version": 107,
494
+ "versionNonce": 571622086,
495
+ "isDeleted": false,
496
+ "boundElements": null,
497
+ "updated": 1739537570841,
498
+ "link": null,
499
+ "locked": false,
500
+ "text": "Source",
501
+ "fontSize": 20,
502
+ "fontFamily": 5,
503
+ "textAlign": "center",
504
+ "verticalAlign": "middle",
505
+ "containerId": "IGbFR1fQMRYtroaGZTZWY",
506
+ "originalText": "Source",
507
+ "autoResize": true,
508
+ "lineHeight": 1.25
509
+ },
510
+ {
511
+ "id": "lPugPB5EEs8MbHhdXsFWx",
512
+ "type": "rectangle",
513
+ "x": 1138,
514
+ "y": 579,
515
+ "width": 132,
516
+ "height": 132,
517
+ "angle": 0,
518
+ "strokeColor": "#1e1e1e",
519
+ "backgroundColor": "transparent",
520
+ "fillStyle": "solid",
521
+ "strokeWidth": 2,
522
+ "strokeStyle": "solid",
523
+ "roughness": 1,
524
+ "opacity": 100,
525
+ "groupIds": [],
526
+ "frameId": null,
527
+ "index": "aG",
528
+ "roundness": {
529
+ "type": 3
530
+ },
531
+ "seed": 1314334726,
532
+ "version": 168,
533
+ "versionNonce": 98396102,
534
+ "isDeleted": false,
535
+ "boundElements": [
536
+ {
537
+ "id": "eaQAohfFeQEabhFZ1huQ6",
538
+ "type": "text"
539
+ }
540
+ ],
541
+ "updated": 1739537507526,
542
+ "link": null,
543
+ "locked": false
544
+ },
545
+ {
546
+ "id": "eaQAohfFeQEabhFZ1huQ6",
547
+ "type": "text",
548
+ "x": 1171.775001525879,
549
+ "y": 632.5,
550
+ "width": 64.44999694824219,
551
+ "height": 25,
552
+ "angle": 0,
553
+ "strokeColor": "#1e1e1e",
554
+ "backgroundColor": "transparent",
555
+ "fillStyle": "solid",
556
+ "strokeWidth": 2,
557
+ "strokeStyle": "solid",
558
+ "roughness": 1,
559
+ "opacity": 100,
560
+ "groupIds": [],
561
+ "frameId": null,
562
+ "index": "aH",
563
+ "roundness": null,
564
+ "seed": 176174918,
565
+ "version": 96,
566
+ "versionNonce": 124498054,
567
+ "isDeleted": false,
568
+ "boundElements": null,
569
+ "updated": 1739537572672,
570
+ "link": null,
571
+ "locked": false,
572
+ "text": "Source",
573
+ "fontSize": 20,
574
+ "fontFamily": 5,
575
+ "textAlign": "center",
576
+ "verticalAlign": "middle",
577
+ "containerId": "lPugPB5EEs8MbHhdXsFWx",
578
+ "originalText": "Source",
579
+ "autoResize": true,
580
+ "lineHeight": 1.25
581
+ },
582
+ {
583
+ "id": "h3lo0CpsTkQS9f8Z2yCjx",
584
+ "type": "rectangle",
585
+ "x": 1301,
586
+ "y": 339,
587
+ "width": 132,
588
+ "height": 132,
589
+ "angle": 0,
590
+ "strokeColor": "#1e1e1e",
591
+ "backgroundColor": "transparent",
592
+ "fillStyle": "solid",
593
+ "strokeWidth": 2,
594
+ "strokeStyle": "solid",
595
+ "roughness": 1,
596
+ "opacity": 100,
597
+ "groupIds": [],
598
+ "frameId": null,
599
+ "index": "aI",
600
+ "roundness": {
601
+ "type": 3
602
+ },
603
+ "seed": 1182595590,
604
+ "version": 228,
605
+ "versionNonce": 821248198,
606
+ "isDeleted": false,
607
+ "boundElements": [
608
+ {
609
+ "id": "em_RSIkcIW2YatIDWlqWO",
610
+ "type": "text"
611
+ }
612
+ ],
613
+ "updated": 1739537510538,
614
+ "link": null,
615
+ "locked": false
616
+ },
617
+ {
618
+ "id": "em_RSIkcIW2YatIDWlqWO",
619
+ "type": "text",
620
+ "x": 1334.775001525879,
621
+ "y": 392.5,
622
+ "width": 64.44999694824219,
623
+ "height": 25,
624
+ "angle": 0,
625
+ "strokeColor": "#1e1e1e",
626
+ "backgroundColor": "transparent",
627
+ "fillStyle": "solid",
628
+ "strokeWidth": 2,
629
+ "strokeStyle": "solid",
630
+ "roughness": 1,
631
+ "opacity": 100,
632
+ "groupIds": [],
633
+ "frameId": null,
634
+ "index": "aJ",
635
+ "roundness": null,
636
+ "seed": 1645988166,
637
+ "version": 157,
638
+ "versionNonce": 1980437510,
639
+ "isDeleted": false,
640
+ "boundElements": null,
641
+ "updated": 1739537575521,
642
+ "link": null,
643
+ "locked": false,
644
+ "text": "Source",
645
+ "fontSize": 20,
646
+ "fontFamily": 5,
647
+ "textAlign": "center",
648
+ "verticalAlign": "middle",
649
+ "containerId": "h3lo0CpsTkQS9f8Z2yCjx",
650
+ "originalText": "Source",
651
+ "autoResize": true,
652
+ "lineHeight": 1.25
653
+ },
654
+ {
655
+ "id": "CdAJYeUs8PsUT468brY9R",
656
+ "type": "rectangle",
657
+ "x": 1303,
658
+ "y": 496,
659
+ "width": 132,
660
+ "height": 132,
661
+ "angle": 0,
662
+ "strokeColor": "#1e1e1e",
663
+ "backgroundColor": "transparent",
664
+ "fillStyle": "solid",
665
+ "strokeWidth": 2,
666
+ "strokeStyle": "solid",
667
+ "roughness": 1,
668
+ "opacity": 100,
669
+ "groupIds": [],
670
+ "frameId": null,
671
+ "index": "aK",
672
+ "roundness": {
673
+ "type": 3
674
+ },
675
+ "seed": 1734724614,
676
+ "version": 222,
677
+ "versionNonce": 812349638,
678
+ "isDeleted": false,
679
+ "boundElements": [
680
+ {
681
+ "id": "vcvmvtSGL0jvX3DV5F-W3",
682
+ "type": "text"
683
+ }
684
+ ],
685
+ "updated": 1739537512480,
686
+ "link": null,
687
+ "locked": false
688
+ },
689
+ {
690
+ "id": "vcvmvtSGL0jvX3DV5F-W3",
691
+ "type": "text",
692
+ "x": 1336.775001525879,
693
+ "y": 549.5,
694
+ "width": 64.44999694824219,
695
+ "height": 25,
696
+ "angle": 0,
697
+ "strokeColor": "#1e1e1e",
698
+ "backgroundColor": "transparent",
699
+ "fillStyle": "solid",
700
+ "strokeWidth": 2,
701
+ "strokeStyle": "solid",
702
+ "roughness": 1,
703
+ "opacity": 100,
704
+ "groupIds": [],
705
+ "frameId": null,
706
+ "index": "aL",
707
+ "roundness": null,
708
+ "seed": 1377459014,
709
+ "version": 150,
710
+ "versionNonce": 1705965126,
711
+ "isDeleted": false,
712
+ "boundElements": null,
713
+ "updated": 1739537574051,
714
+ "link": null,
715
+ "locked": false,
716
+ "text": "Source",
717
+ "fontSize": 20,
718
+ "fontFamily": 5,
719
+ "textAlign": "center",
720
+ "verticalAlign": "middle",
721
+ "containerId": "CdAJYeUs8PsUT468brY9R",
722
+ "originalText": "Source",
723
+ "autoResize": true,
724
+ "lineHeight": 1.25
725
+ },
726
+ {
727
+ "id": "hN5xLYLB2luHlffYyNmFL",
728
+ "type": "line",
729
+ "x": 889,
730
+ "y": 342,
731
+ "width": 73,
732
+ "height": 145,
733
+ "angle": 0,
734
+ "strokeColor": "#1e1e1e",
735
+ "backgroundColor": "transparent",
736
+ "fillStyle": "solid",
737
+ "strokeWidth": 2,
738
+ "strokeStyle": "solid",
739
+ "roughness": 1,
740
+ "opacity": 100,
741
+ "groupIds": [],
742
+ "frameId": null,
743
+ "index": "aM",
744
+ "roundness": {
745
+ "type": 2
746
+ },
747
+ "seed": 1592950810,
748
+ "version": 42,
749
+ "versionNonce": 265632730,
750
+ "isDeleted": false,
751
+ "boundElements": null,
752
+ "updated": 1739537519157,
753
+ "link": null,
754
+ "locked": false,
755
+ "points": [
756
+ [
757
+ 0,
758
+ 0
759
+ ],
760
+ [
761
+ 73,
762
+ -145
763
+ ]
764
+ ],
765
+ "lastCommittedPoint": null,
766
+ "startBinding": null,
767
+ "endBinding": null,
768
+ "startArrowhead": null,
769
+ "endArrowhead": null
770
+ },
771
+ {
772
+ "id": "tJGjN3p2zBSG7EuXF5IDA",
773
+ "type": "line",
774
+ "x": 888,
775
+ "y": 344,
776
+ "width": 72,
777
+ "height": 17,
778
+ "angle": 0,
779
+ "strokeColor": "#1e1e1e",
780
+ "backgroundColor": "transparent",
781
+ "fillStyle": "solid",
782
+ "strokeWidth": 2,
783
+ "strokeStyle": "solid",
784
+ "roughness": 1,
785
+ "opacity": 100,
786
+ "groupIds": [],
787
+ "frameId": null,
788
+ "index": "aN",
789
+ "roundness": {
790
+ "type": 2
791
+ },
792
+ "seed": 1010086042,
793
+ "version": 21,
794
+ "versionNonce": 64949894,
795
+ "isDeleted": false,
796
+ "boundElements": null,
797
+ "updated": 1739537526786,
798
+ "link": null,
799
+ "locked": false,
800
+ "points": [
801
+ [
802
+ 0,
803
+ 0
804
+ ],
805
+ [
806
+ 72,
807
+ 17
808
+ ]
809
+ ],
810
+ "lastCommittedPoint": null,
811
+ "startBinding": null,
812
+ "endBinding": null,
813
+ "startArrowhead": null,
814
+ "endArrowhead": null
815
+ },
816
+ {
817
+ "id": "nVuLYZcUlI2CvdM742gGl",
818
+ "type": "line",
819
+ "x": 891,
820
+ "y": 345,
821
+ "width": 69,
822
+ "height": 195,
823
+ "angle": 0,
824
+ "strokeColor": "#1e1e1e",
825
+ "backgroundColor": "transparent",
826
+ "fillStyle": "solid",
827
+ "strokeWidth": 2,
828
+ "strokeStyle": "solid",
829
+ "roughness": 1,
830
+ "opacity": 100,
831
+ "groupIds": [],
832
+ "frameId": null,
833
+ "index": "aO",
834
+ "roundness": {
835
+ "type": 2
836
+ },
837
+ "seed": 1128746438,
838
+ "version": 34,
839
+ "versionNonce": 2054674694,
840
+ "isDeleted": false,
841
+ "boundElements": null,
842
+ "updated": 1739537529413,
843
+ "link": null,
844
+ "locked": false,
845
+ "points": [
846
+ [
847
+ 0,
848
+ 0
849
+ ],
850
+ [
851
+ 69,
852
+ 195
853
+ ]
854
+ ],
855
+ "lastCommittedPoint": null,
856
+ "startBinding": null,
857
+ "endBinding": null,
858
+ "startArrowhead": null,
859
+ "endArrowhead": null
860
+ },
861
+ {
862
+ "id": "fzuzTTNmWzTfZAgaOf9ND",
863
+ "type": "line",
864
+ "x": 1092,
865
+ "y": 195,
866
+ "width": 58,
867
+ "height": 114,
868
+ "angle": 0,
869
+ "strokeColor": "#1e1e1e",
870
+ "backgroundColor": "transparent",
871
+ "fillStyle": "solid",
872
+ "strokeWidth": 2,
873
+ "strokeStyle": "solid",
874
+ "roughness": 1,
875
+ "opacity": 100,
876
+ "groupIds": [],
877
+ "frameId": null,
878
+ "index": "aP",
879
+ "roundness": {
880
+ "type": 2
881
+ },
882
+ "seed": 828557382,
883
+ "version": 36,
884
+ "versionNonce": 1199350470,
885
+ "isDeleted": false,
886
+ "boundElements": null,
887
+ "updated": 1739537532066,
888
+ "link": null,
889
+ "locked": false,
890
+ "points": [
891
+ [
892
+ 0,
893
+ 0
894
+ ],
895
+ [
896
+ 58,
897
+ -114
898
+ ]
899
+ ],
900
+ "lastCommittedPoint": null,
901
+ "startBinding": null,
902
+ "endBinding": null,
903
+ "startArrowhead": null,
904
+ "endArrowhead": null
905
+ },
906
+ {
907
+ "id": "nXeHMKhghfNphlLlkqXEe",
908
+ "type": "line",
909
+ "x": 1093,
910
+ "y": 192,
911
+ "width": 54,
912
+ "height": 48,
913
+ "angle": 0,
914
+ "strokeColor": "#1e1e1e",
915
+ "backgroundColor": "transparent",
916
+ "fillStyle": "solid",
917
+ "strokeWidth": 2,
918
+ "strokeStyle": "solid",
919
+ "roughness": 1,
920
+ "opacity": 100,
921
+ "groupIds": [],
922
+ "frameId": null,
923
+ "index": "aQ",
924
+ "roundness": {
925
+ "type": 2
926
+ },
927
+ "seed": 514349574,
928
+ "version": 44,
929
+ "versionNonce": 611045766,
930
+ "isDeleted": false,
931
+ "boundElements": null,
932
+ "updated": 1739537534175,
933
+ "link": null,
934
+ "locked": false,
935
+ "points": [
936
+ [
937
+ 0,
938
+ 0
939
+ ],
940
+ [
941
+ 54,
942
+ 48
943
+ ]
944
+ ],
945
+ "lastCommittedPoint": null,
946
+ "startBinding": null,
947
+ "endBinding": null,
948
+ "startArrowhead": null,
949
+ "endArrowhead": null
950
+ },
951
+ {
952
+ "id": "p97y6G1r0ckJlXkB1r6i7",
953
+ "type": "line",
954
+ "x": 1092,
955
+ "y": 535,
956
+ "width": 48,
957
+ "height": 51,
958
+ "angle": 0,
959
+ "strokeColor": "#1e1e1e",
960
+ "backgroundColor": "transparent",
961
+ "fillStyle": "solid",
962
+ "strokeWidth": 2,
963
+ "strokeStyle": "solid",
964
+ "roughness": 1,
965
+ "opacity": 100,
966
+ "groupIds": [],
967
+ "frameId": null,
968
+ "index": "aR",
969
+ "roundness": {
970
+ "type": 2
971
+ },
972
+ "seed": 1531162822,
973
+ "version": 27,
974
+ "versionNonce": 298077274,
975
+ "isDeleted": false,
976
+ "boundElements": null,
977
+ "updated": 1739537537710,
978
+ "link": null,
979
+ "locked": false,
980
+ "points": [
981
+ [
982
+ 0,
983
+ 0
984
+ ],
985
+ [
986
+ 48,
987
+ -51
988
+ ]
989
+ ],
990
+ "lastCommittedPoint": null,
991
+ "startBinding": null,
992
+ "endBinding": null,
993
+ "startArrowhead": null,
994
+ "endArrowhead": null
995
+ },
996
+ {
997
+ "id": "kegZLpskDK3MLbXxhQHOW",
998
+ "type": "line",
999
+ "x": 1091,
1000
+ "y": 536,
1001
+ "width": 46,
1002
+ "height": 108,
1003
+ "angle": 0,
1004
+ "strokeColor": "#1e1e1e",
1005
+ "backgroundColor": "transparent",
1006
+ "fillStyle": "solid",
1007
+ "strokeWidth": 2,
1008
+ "strokeStyle": "solid",
1009
+ "roughness": 1,
1010
+ "opacity": 100,
1011
+ "groupIds": [],
1012
+ "frameId": null,
1013
+ "index": "aS",
1014
+ "roundness": {
1015
+ "type": 2
1016
+ },
1017
+ "seed": 1055764762,
1018
+ "version": 38,
1019
+ "versionNonce": 283073370,
1020
+ "isDeleted": false,
1021
+ "boundElements": null,
1022
+ "updated": 1739537540055,
1023
+ "link": null,
1024
+ "locked": false,
1025
+ "points": [
1026
+ [
1027
+ 0,
1028
+ 0
1029
+ ],
1030
+ [
1031
+ 46,
1032
+ 108
1033
+ ]
1034
+ ],
1035
+ "lastCommittedPoint": null,
1036
+ "startBinding": null,
1037
+ "endBinding": null,
1038
+ "startArrowhead": null,
1039
+ "endArrowhead": null
1040
+ },
1041
+ {
1042
+ "id": "lHpzqWCfodOmAJ36H3ITQ",
1043
+ "type": "line",
1044
+ "x": 1274,
1045
+ "y": 481,
1046
+ "width": 27,
1047
+ "height": 74,
1048
+ "angle": 0,
1049
+ "strokeColor": "#1e1e1e",
1050
+ "backgroundColor": "transparent",
1051
+ "fillStyle": "solid",
1052
+ "strokeWidth": 2,
1053
+ "strokeStyle": "solid",
1054
+ "roughness": 1,
1055
+ "opacity": 100,
1056
+ "groupIds": [],
1057
+ "frameId": null,
1058
+ "index": "aT",
1059
+ "roundness": {
1060
+ "type": 2
1061
+ },
1062
+ "seed": 1708056602,
1063
+ "version": 21,
1064
+ "versionNonce": 317257478,
1065
+ "isDeleted": false,
1066
+ "boundElements": null,
1067
+ "updated": 1739537542564,
1068
+ "link": null,
1069
+ "locked": false,
1070
+ "points": [
1071
+ [
1072
+ 0,
1073
+ 0
1074
+ ],
1075
+ [
1076
+ 27,
1077
+ -74
1078
+ ]
1079
+ ],
1080
+ "lastCommittedPoint": null,
1081
+ "startBinding": null,
1082
+ "endBinding": null,
1083
+ "startArrowhead": null,
1084
+ "endArrowhead": null
1085
+ },
1086
+ {
1087
+ "id": "-IjmaafI52zyKhyXK2RLf",
1088
+ "type": "line",
1089
+ "x": 1273,
1090
+ "y": 497,
1091
+ "width": 31,
1092
+ "height": 70,
1093
+ "angle": 0,
1094
+ "strokeColor": "#1e1e1e",
1095
+ "backgroundColor": "transparent",
1096
+ "fillStyle": "solid",
1097
+ "strokeWidth": 2,
1098
+ "strokeStyle": "solid",
1099
+ "roughness": 1,
1100
+ "opacity": 100,
1101
+ "groupIds": [],
1102
+ "frameId": null,
1103
+ "index": "aU",
1104
+ "roundness": {
1105
+ "type": 2
1106
+ },
1107
+ "seed": 436217414,
1108
+ "version": 38,
1109
+ "versionNonce": 127825926,
1110
+ "isDeleted": false,
1111
+ "boundElements": null,
1112
+ "updated": 1739537546366,
1113
+ "link": null,
1114
+ "locked": false,
1115
+ "points": [
1116
+ [
1117
+ 0,
1118
+ 0
1119
+ ],
1120
+ [
1121
+ 31,
1122
+ 70
1123
+ ]
1124
+ ],
1125
+ "lastCommittedPoint": null,
1126
+ "startBinding": null,
1127
+ "endBinding": null,
1128
+ "startArrowhead": null,
1129
+ "endArrowhead": null
1130
+ },
1131
+ {
1132
+ "id": "EeP2HMErZwYbUy1oEAcNv",
1133
+ "type": "rectangle",
1134
+ "x": 904.4920634920636,
1135
+ "y": 895.1984126984128,
1136
+ "width": 637.7777777777777,
1137
+ "height": 252.22222222222197,
1138
+ "angle": 0,
1139
+ "strokeColor": "#1e1e1e",
1140
+ "backgroundColor": "transparent",
1141
+ "fillStyle": "solid",
1142
+ "strokeWidth": 2,
1143
+ "strokeStyle": "solid",
1144
+ "roughness": 1,
1145
+ "opacity": 100,
1146
+ "groupIds": [],
1147
+ "frameId": null,
1148
+ "index": "aW",
1149
+ "roundness": {
1150
+ "type": 3
1151
+ },
1152
+ "seed": 211549338,
1153
+ "version": 220,
1154
+ "versionNonce": 7422214,
1155
+ "isDeleted": false,
1156
+ "boundElements": [],
1157
+ "updated": 1739537800221,
1158
+ "link": null,
1159
+ "locked": false
1160
+ },
1161
+ {
1162
+ "id": "zkO-hRJn8tCZVyoFNiD02",
1163
+ "type": "text",
1164
+ "x": 1107.6865079365082,
1165
+ "y": -57.23214285714269,
1166
+ "width": 225.93333435058594,
1167
+ "height": 43.75,
1168
+ "angle": 0,
1169
+ "strokeColor": "#1e1e1e",
1170
+ "backgroundColor": "transparent",
1171
+ "fillStyle": "solid",
1172
+ "strokeWidth": 2,
1173
+ "strokeStyle": "solid",
1174
+ "roughness": 1,
1175
+ "opacity": 100,
1176
+ "groupIds": [],
1177
+ "frameId": null,
1178
+ "index": "aY",
1179
+ "roundness": null,
1180
+ "seed": 56483354,
1181
+ "version": 119,
1182
+ "versionNonce": 739599898,
1183
+ "isDeleted": false,
1184
+ "boundElements": null,
1185
+ "updated": 1739538303937,
1186
+ "link": null,
1187
+ "locked": false,
1188
+ "text": "Source Graph",
1189
+ "fontSize": 35,
1190
+ "fontFamily": 5,
1191
+ "textAlign": "left",
1192
+ "verticalAlign": "top",
1193
+ "containerId": null,
1194
+ "originalText": "Source Graph",
1195
+ "autoResize": true,
1196
+ "lineHeight": 1.25
1197
+ },
1198
+ {
1199
+ "id": "AF1ealY4ZosdktlEVdP3W",
1200
+ "type": "text",
1201
+ "x": 1139.2698412698417,
1202
+ "y": 840.684523809524,
1203
+ "width": 173.9166717529297,
1204
+ "height": 36.25,
1205
+ "angle": 0,
1206
+ "strokeColor": "#1e1e1e",
1207
+ "backgroundColor": "transparent",
1208
+ "fillStyle": "solid",
1209
+ "strokeWidth": 2,
1210
+ "strokeStyle": "solid",
1211
+ "roughness": 1,
1212
+ "opacity": 100,
1213
+ "groupIds": [],
1214
+ "frameId": null,
1215
+ "index": "aZ",
1216
+ "roundness": null,
1217
+ "seed": 1198061338,
1218
+ "version": 127,
1219
+ "versionNonce": 1861618694,
1220
+ "isDeleted": false,
1221
+ "boundElements": null,
1222
+ "updated": 1739537782011,
1223
+ "link": null,
1224
+ "locked": false,
1225
+ "text": "Source Node",
1226
+ "fontSize": 29,
1227
+ "fontFamily": 5,
1228
+ "textAlign": "left",
1229
+ "verticalAlign": "top",
1230
+ "containerId": null,
1231
+ "originalText": "Source Node",
1232
+ "autoResize": true,
1233
+ "lineHeight": 1.25
1234
+ },
1235
+ {
1236
+ "id": "_k4V3G8DXvj8Ff5JcqMfR",
1237
+ "type": "text",
1238
+ "x": 934.0924669590681,
1239
+ "y": 921.3095238095241,
1240
+ "width": 579.6825345373455,
1241
+ "height": 214.3055555555553,
1242
+ "angle": 0,
1243
+ "strokeColor": "#1e1e1e",
1244
+ "backgroundColor": "transparent",
1245
+ "fillStyle": "solid",
1246
+ "strokeWidth": 2,
1247
+ "strokeStyle": "solid",
1248
+ "roughness": 1,
1249
+ "opacity": 100,
1250
+ "groupIds": [],
1251
+ "frameId": null,
1252
+ "index": "aa",
1253
+ "roundness": null,
1254
+ "seed": 794782426,
1255
+ "version": 398,
1256
+ "versionNonce": 1443434394,
1257
+ "isDeleted": false,
1258
+ "boundElements": null,
1259
+ "updated": 1739538192561,
1260
+ "link": null,
1261
+ "locked": false,
1262
+ "text": "link: https://. . .\nextract_data()\nfeed_to_llm()\ntake_feedback_from_master_llm()\ndecide_report_generation()",
1263
+ "fontSize": 34.28888888888885,
1264
+ "fontFamily": 5,
1265
+ "textAlign": "left",
1266
+ "verticalAlign": "top",
1267
+ "containerId": null,
1268
+ "originalText": "link: https://. . .\nextract_data()\nfeed_to_llm()\ntake_feedback_from_master_llm()\ndecide_report_generation()",
1269
+ "autoResize": false,
1270
+ "lineHeight": 1.25
1271
+ },
1272
+ {
1273
+ "id": "h9jaW2ZUTx0knQgiMyb5U",
1274
+ "type": "freedraw",
1275
+ "x": 1137.825396825397,
1276
+ "y": 662.9761904761907,
1277
+ "width": 233.33333333333326,
1278
+ "height": 248.8888888888889,
1279
+ "angle": 0,
1280
+ "strokeColor": "#1e1e1e",
1281
+ "backgroundColor": "transparent",
1282
+ "fillStyle": "solid",
1283
+ "strokeWidth": 2,
1284
+ "strokeStyle": "solid",
1285
+ "roughness": 1,
1286
+ "opacity": 100,
1287
+ "groupIds": [],
1288
+ "frameId": null,
1289
+ "index": "ab",
1290
+ "roundness": null,
1291
+ "seed": 409810822,
1292
+ "version": 103,
1293
+ "versionNonce": 1159505434,
1294
+ "isDeleted": false,
1295
+ "boundElements": null,
1296
+ "updated": 1739537819817,
1297
+ "link": null,
1298
+ "locked": false,
1299
+ "points": [
1300
+ [
1301
+ 0,
1302
+ 0
1303
+ ],
1304
+ [
1305
+ 0,
1306
+ 1.1111111111111995
1307
+ ],
1308
+ [
1309
+ 0,
1310
+ 2.2222222222222854
1311
+ ],
1312
+ [
1313
+ 0,
1314
+ 3.3333333333333712
1315
+ ],
1316
+ [
1317
+ 0,
1318
+ 4.444444444444457
1319
+ ],
1320
+ [
1321
+ 0,
1322
+ 5.555555555555543
1323
+ ],
1324
+ [
1325
+ -1.1111111111110858,
1326
+ 6.666666666666629
1327
+ ],
1328
+ [
1329
+ -1.1111111111110858,
1330
+ 8.888888888888914
1331
+ ],
1332
+ [
1333
+ -1.1111111111110858,
1334
+ 10
1335
+ ],
1336
+ [
1337
+ -1.1111111111110858,
1338
+ 11.1111111111112
1339
+ ],
1340
+ [
1341
+ -2.2222222222221717,
1342
+ 13.333333333333371
1343
+ ],
1344
+ [
1345
+ -2.2222222222221717,
1346
+ 14.444444444444457
1347
+ ],
1348
+ [
1349
+ -2.2222222222221717,
1350
+ 15.555555555555543
1351
+ ],
1352
+ [
1353
+ -2.2222222222221717,
1354
+ 16.66666666666663
1355
+ ],
1356
+ [
1357
+ -2.2222222222221717,
1358
+ 17.777777777777715
1359
+ ],
1360
+ [
1361
+ -3.3333333333332575,
1362
+ 20
1363
+ ],
1364
+ [
1365
+ -3.3333333333332575,
1366
+ 21.1111111111112
1367
+ ],
1368
+ [
1369
+ -3.3333333333332575,
1370
+ 22.222222222222285
1371
+ ],
1372
+ [
1373
+ -3.3333333333332575,
1374
+ 23.33333333333337
1375
+ ],
1376
+ [
1377
+ -4.444444444444343,
1378
+ 25.555555555555543
1379
+ ],
1380
+ [
1381
+ -4.444444444444343,
1382
+ 26.66666666666663
1383
+ ],
1384
+ [
1385
+ -5.555555555555429,
1386
+ 28.888888888888914
1387
+ ],
1388
+ [
1389
+ -5.555555555555429,
1390
+ 30
1391
+ ],
1392
+ [
1393
+ -5.555555555555429,
1394
+ 31.1111111111112
1395
+ ],
1396
+ [
1397
+ -5.555555555555429,
1398
+ 32.222222222222285
1399
+ ],
1400
+ [
1401
+ -6.6666666666667425,
1402
+ 33.33333333333337
1403
+ ],
1404
+ [
1405
+ -6.6666666666667425,
1406
+ 35.55555555555554
1407
+ ],
1408
+ [
1409
+ -7.777777777777828,
1410
+ 38.888888888888914
1411
+ ],
1412
+ [
1413
+ -8.888888888888914,
1414
+ 41.1111111111112
1415
+ ],
1416
+ [
1417
+ -10,
1418
+ 43.33333333333337
1419
+ ],
1420
+ [
1421
+ -11.111111111111086,
1422
+ 45.55555555555554
1423
+ ],
1424
+ [
1425
+ -12.222222222222172,
1426
+ 47.777777777777715
1427
+ ],
1428
+ [
1429
+ -13.333333333333258,
1430
+ 50
1431
+ ],
1432
+ [
1433
+ -14.444444444444343,
1434
+ 52.222222222222285
1435
+ ],
1436
+ [
1437
+ -14.444444444444343,
1438
+ 53.33333333333337
1439
+ ],
1440
+ [
1441
+ -16.666666666666742,
1442
+ 55.55555555555554
1443
+ ],
1444
+ [
1445
+ -17.77777777777783,
1446
+ 57.777777777777715
1447
+ ],
1448
+ [
1449
+ -18.888888888888914,
1450
+ 60
1451
+ ],
1452
+ [
1453
+ -20,
1454
+ 61.1111111111112
1455
+ ],
1456
+ [
1457
+ -22.22222222222217,
1458
+ 63.33333333333337
1459
+ ],
1460
+ [
1461
+ -24.444444444444343,
1462
+ 65.55555555555554
1463
+ ],
1464
+ [
1465
+ -26.666666666666742,
1466
+ 68.88888888888891
1467
+ ],
1468
+ [
1469
+ -28.888888888888914,
1470
+ 72.22222222222229
1471
+ ],
1472
+ [
1473
+ -32.22222222222217,
1474
+ 74.44444444444446
1475
+ ],
1476
+ [
1477
+ -34.44444444444434,
1478
+ 76.66666666666663
1479
+ ],
1480
+ [
1481
+ -37.77777777777783,
1482
+ 80
1483
+ ],
1484
+ [
1485
+ -43.33333333333326,
1486
+ 84.44444444444446
1487
+ ],
1488
+ [
1489
+ -47.77777777777783,
1490
+ 87.77777777777771
1491
+ ],
1492
+ [
1493
+ -56.66666666666674,
1494
+ 94.44444444444446
1495
+ ],
1496
+ [
1497
+ -62.22222222222217,
1498
+ 98.88888888888891
1499
+ ],
1500
+ [
1501
+ -67.77777777777783,
1502
+ 102.22222222222229
1503
+ ],
1504
+ [
1505
+ -72.22222222222217,
1506
+ 105.55555555555554
1507
+ ],
1508
+ [
1509
+ -78.88888888888891,
1510
+ 110
1511
+ ],
1512
+ [
1513
+ -82.22222222222217,
1514
+ 112.22222222222229
1515
+ ],
1516
+ [
1517
+ -86.66666666666674,
1518
+ 115.55555555555554
1519
+ ],
1520
+ [
1521
+ -91.11111111111109,
1522
+ 117.77777777777783
1523
+ ],
1524
+ [
1525
+ -96.66666666666674,
1526
+ 121.11111111111109
1527
+ ],
1528
+ [
1529
+ -103.33333333333326,
1530
+ 124.44444444444446
1531
+ ],
1532
+ [
1533
+ -112.22222222222217,
1534
+ 130
1535
+ ],
1536
+ [
1537
+ -122.22222222222217,
1538
+ 136.66666666666663
1539
+ ],
1540
+ [
1541
+ -124.44444444444434,
1542
+ 137.77777777777783
1543
+ ],
1544
+ [
1545
+ -133.33333333333326,
1546
+ 142.22222222222229
1547
+ ],
1548
+ [
1549
+ -135.55555555555543,
1550
+ 143.33333333333337
1551
+ ],
1552
+ [
1553
+ -139.9999999999999,
1554
+ 146.66666666666663
1555
+ ],
1556
+ [
1557
+ -145.55555555555543,
1558
+ 148.8888888888889
1559
+ ],
1560
+ [
1561
+ -151.11111111111097,
1562
+ 152.22222222222229
1563
+ ],
1564
+ [
1565
+ -158.8888888888888,
1566
+ 157.77777777777783
1567
+ ],
1568
+ [
1569
+ -169.9999999999999,
1570
+ 164.44444444444446
1571
+ ],
1572
+ [
1573
+ -178.8888888888888,
1574
+ 171.1111111111111
1575
+ ],
1576
+ [
1577
+ -184.44444444444434,
1578
+ 175.55555555555554
1579
+ ],
1580
+ [
1581
+ -186.66666666666652,
1582
+ 177.77777777777783
1583
+ ],
1584
+ [
1585
+ -188.8888888888888,
1586
+ 180
1587
+ ],
1588
+ [
1589
+ -189.9999999999999,
1590
+ 181.1111111111111
1591
+ ],
1592
+ [
1593
+ -192.22222222222217,
1594
+ 183.33333333333337
1595
+ ],
1596
+ [
1597
+ -195.55555555555543,
1598
+ 186.66666666666663
1599
+ ],
1600
+ [
1601
+ -196.66666666666652,
1602
+ 188.8888888888889
1603
+ ],
1604
+ [
1605
+ -199.9999999999999,
1606
+ 192.22222222222229
1607
+ ],
1608
+ [
1609
+ -203.33333333333326,
1610
+ 195.55555555555554
1611
+ ],
1612
+ [
1613
+ -206.66666666666652,
1614
+ 200
1615
+ ],
1616
+ [
1617
+ -209.9999999999999,
1618
+ 203.33333333333337
1619
+ ],
1620
+ [
1621
+ -212.22222222222217,
1622
+ 205.55555555555554
1623
+ ],
1624
+ [
1625
+ -215.55555555555543,
1626
+ 208.8888888888889
1627
+ ],
1628
+ [
1629
+ -216.66666666666652,
1630
+ 211.1111111111111
1631
+ ],
1632
+ [
1633
+ -218.8888888888888,
1634
+ 214.44444444444446
1635
+ ],
1636
+ [
1637
+ -221.11111111111097,
1638
+ 217.77777777777783
1639
+ ],
1640
+ [
1641
+ -222.22222222222217,
1642
+ 220
1643
+ ],
1644
+ [
1645
+ -223.33333333333326,
1646
+ 221.1111111111111
1647
+ ],
1648
+ [
1649
+ -224.44444444444434,
1650
+ 222.22222222222229
1651
+ ],
1652
+ [
1653
+ -225.55555555555543,
1654
+ 224.44444444444446
1655
+ ],
1656
+ [
1657
+ -226.66666666666652,
1658
+ 226.66666666666663
1659
+ ],
1660
+ [
1661
+ -226.66666666666652,
1662
+ 230
1663
+ ],
1664
+ [
1665
+ -227.77777777777771,
1666
+ 232.22222222222229
1667
+ ],
1668
+ [
1669
+ -228.8888888888888,
1670
+ 234.44444444444446
1671
+ ],
1672
+ [
1673
+ -229.9999999999999,
1674
+ 236.66666666666663
1675
+ ],
1676
+ [
1677
+ -229.9999999999999,
1678
+ 238.8888888888889
1679
+ ],
1680
+ [
1681
+ -231.11111111111097,
1682
+ 240
1683
+ ],
1684
+ [
1685
+ -231.11111111111097,
1686
+ 242.22222222222229
1687
+ ],
1688
+ [
1689
+ -232.22222222222217,
1690
+ 244.44444444444446
1691
+ ],
1692
+ [
1693
+ -232.22222222222217,
1694
+ 245.55555555555554
1695
+ ],
1696
+ [
1697
+ -232.22222222222217,
1698
+ 246.66666666666663
1699
+ ],
1700
+ [
1701
+ -233.33333333333326,
1702
+ 248.8888888888889
1703
+ ],
1704
+ [
1705
+ -233.33333333333326,
1706
+ 248.8888888888889
1707
+ ]
1708
+ ],
1709
+ "pressures": [],
1710
+ "simulatePressure": true,
1711
+ "lastCommittedPoint": [
1712
+ -233.33333333333326,
1713
+ 248.8888888888889
1714
+ ]
1715
+ },
1716
+ {
1717
+ "id": "t4Ew6OmfRjlv-IrXttgwy",
1718
+ "type": "freedraw",
1719
+ "x": 1270.0476190476193,
1720
+ "y": 656.3095238095241,
1721
+ "width": 268.8888888888889,
1722
+ "height": 254.44444444444446,
1723
+ "angle": 0,
1724
+ "strokeColor": "#1e1e1e",
1725
+ "backgroundColor": "transparent",
1726
+ "fillStyle": "solid",
1727
+ "strokeWidth": 2,
1728
+ "strokeStyle": "solid",
1729
+ "roughness": 1,
1730
+ "opacity": 100,
1731
+ "groupIds": [],
1732
+ "frameId": null,
1733
+ "index": "ac",
1734
+ "roundness": null,
1735
+ "seed": 217702342,
1736
+ "version": 155,
1737
+ "versionNonce": 100080986,
1738
+ "isDeleted": false,
1739
+ "boundElements": null,
1740
+ "updated": 1739537824380,
1741
+ "link": null,
1742
+ "locked": false,
1743
+ "points": [
1744
+ [
1745
+ 0,
1746
+ 0
1747
+ ],
1748
+ [
1749
+ 0,
1750
+ 1.1111111111110858
1751
+ ],
1752
+ [
1753
+ 1.1111111111110858,
1754
+ 2.2222222222221717
1755
+ ],
1756
+ [
1757
+ 1.1111111111110858,
1758
+ 3.3333333333332575
1759
+ ],
1760
+ [
1761
+ 1.1111111111110858,
1762
+ 5.555555555555543
1763
+ ],
1764
+ [
1765
+ 1.1111111111110858,
1766
+ 7.777777777777828
1767
+ ],
1768
+ [
1769
+ 2.2222222222221717,
1770
+ 11.111111111111086
1771
+ ],
1772
+ [
1773
+ 2.2222222222221717,
1774
+ 14.444444444444343
1775
+ ],
1776
+ [
1777
+ 2.2222222222221717,
1778
+ 16.66666666666663
1779
+ ],
1780
+ [
1781
+ 3.3333333333332575,
1782
+ 18.888888888888914
1783
+ ],
1784
+ [
1785
+ 3.3333333333332575,
1786
+ 21.111111111111086
1787
+ ],
1788
+ [
1789
+ 4.444444444444571,
1790
+ 24.444444444444343
1791
+ ],
1792
+ [
1793
+ 5.555555555555657,
1794
+ 26.66666666666663
1795
+ ],
1796
+ [
1797
+ 5.555555555555657,
1798
+ 30
1799
+ ],
1800
+ [
1801
+ 6.6666666666667425,
1802
+ 33.33333333333326
1803
+ ],
1804
+ [
1805
+ 7.777777777777828,
1806
+ 34.44444444444434
1807
+ ],
1808
+ [
1809
+ 8.888888888888914,
1810
+ 36.66666666666663
1811
+ ],
1812
+ [
1813
+ 10,
1814
+ 37.77777777777783
1815
+ ],
1816
+ [
1817
+ 11.111111111111086,
1818
+ 40
1819
+ ],
1820
+ [
1821
+ 12.222222222222172,
1822
+ 42.22222222222217
1823
+ ],
1824
+ [
1825
+ 12.222222222222172,
1826
+ 44.44444444444434
1827
+ ],
1828
+ [
1829
+ 13.333333333333258,
1830
+ 45.55555555555554
1831
+ ],
1832
+ [
1833
+ 14.44444444444457,
1834
+ 46.66666666666663
1835
+ ],
1836
+ [
1837
+ 14.44444444444457,
1838
+ 47.77777777777783
1839
+ ],
1840
+ [
1841
+ 15.555555555555657,
1842
+ 48.888888888888914
1843
+ ],
1844
+ [
1845
+ 15.555555555555657,
1846
+ 50
1847
+ ],
1848
+ [
1849
+ 16.666666666666742,
1850
+ 51.111111111111086
1851
+ ],
1852
+ [
1853
+ 17.77777777777783,
1854
+ 52.22222222222217
1855
+ ],
1856
+ [
1857
+ 18.888888888888914,
1858
+ 53.33333333333326
1859
+ ],
1860
+ [
1861
+ 20,
1862
+ 54.44444444444434
1863
+ ],
1864
+ [
1865
+ 21.111111111111086,
1866
+ 54.44444444444434
1867
+ ],
1868
+ [
1869
+ 21.111111111111086,
1870
+ 55.55555555555554
1871
+ ],
1872
+ [
1873
+ 22.22222222222217,
1874
+ 55.55555555555554
1875
+ ],
1876
+ [
1877
+ 23.333333333333258,
1878
+ 56.66666666666663
1879
+ ],
1880
+ [
1881
+ 24.44444444444457,
1882
+ 57.77777777777783
1883
+ ],
1884
+ [
1885
+ 25.555555555555657,
1886
+ 57.77777777777783
1887
+ ],
1888
+ [
1889
+ 26.666666666666742,
1890
+ 58.888888888888914
1891
+ ],
1892
+ [
1893
+ 27.77777777777783,
1894
+ 60
1895
+ ],
1896
+ [
1897
+ 30,
1898
+ 61.111111111111086
1899
+ ],
1900
+ [
1901
+ 31.111111111111086,
1902
+ 62.22222222222217
1903
+ ],
1904
+ [
1905
+ 33.33333333333326,
1906
+ 63.33333333333326
1907
+ ],
1908
+ [
1909
+ 34.44444444444457,
1910
+ 64.44444444444434
1911
+ ],
1912
+ [
1913
+ 36.66666666666674,
1914
+ 65.55555555555554
1915
+ ],
1916
+ [
1917
+ 38.888888888888914,
1918
+ 66.66666666666663
1919
+ ],
1920
+ [
1921
+ 41.111111111111086,
1922
+ 68.88888888888891
1923
+ ],
1924
+ [
1925
+ 43.33333333333326,
1926
+ 68.88888888888891
1927
+ ],
1928
+ [
1929
+ 44.44444444444457,
1930
+ 70
1931
+ ],
1932
+ [
1933
+ 46.66666666666674,
1934
+ 71.11111111111109
1935
+ ],
1936
+ [
1937
+ 47.77777777777783,
1938
+ 72.22222222222217
1939
+ ],
1940
+ [
1941
+ 50,
1942
+ 72.22222222222217
1943
+ ],
1944
+ [
1945
+ 52.22222222222217,
1946
+ 73.33333333333326
1947
+ ],
1948
+ [
1949
+ 55.55555555555566,
1950
+ 75.55555555555554
1951
+ ],
1952
+ [
1953
+ 57.77777777777783,
1954
+ 75.55555555555554
1955
+ ],
1956
+ [
1957
+ 58.888888888888914,
1958
+ 76.66666666666663
1959
+ ],
1960
+ [
1961
+ 61.111111111111086,
1962
+ 76.66666666666663
1963
+ ],
1964
+ [
1965
+ 62.22222222222217,
1966
+ 77.77777777777783
1967
+ ],
1968
+ [
1969
+ 65.55555555555566,
1970
+ 78.88888888888891
1971
+ ],
1972
+ [
1973
+ 67.77777777777783,
1974
+ 78.88888888888891
1975
+ ],
1976
+ [
1977
+ 70,
1978
+ 80
1979
+ ],
1980
+ [
1981
+ 74.44444444444457,
1982
+ 81.11111111111109
1983
+ ],
1984
+ [
1985
+ 77.77777777777783,
1986
+ 83.33333333333326
1987
+ ],
1988
+ [
1989
+ 81.11111111111109,
1990
+ 84.44444444444434
1991
+ ],
1992
+ [
1993
+ 84.44444444444457,
1994
+ 84.44444444444434
1995
+ ],
1996
+ [
1997
+ 86.66666666666674,
1998
+ 85.55555555555554
1999
+ ],
2000
+ [
2001
+ 90,
2002
+ 86.66666666666663
2003
+ ],
2004
+ [
2005
+ 92.22222222222217,
2006
+ 87.77777777777783
2007
+ ],
2008
+ [
2009
+ 95.55555555555566,
2010
+ 88.88888888888891
2011
+ ],
2012
+ [
2013
+ 98.88888888888891,
2014
+ 90
2015
+ ],
2016
+ [
2017
+ 103.33333333333326,
2018
+ 92.22222222222217
2019
+ ],
2020
+ [
2021
+ 106.66666666666674,
2022
+ 93.33333333333326
2023
+ ],
2024
+ [
2025
+ 111.11111111111109,
2026
+ 95.55555555555554
2027
+ ],
2028
+ [
2029
+ 115.55555555555566,
2030
+ 96.66666666666663
2031
+ ],
2032
+ [
2033
+ 118.88888888888891,
2034
+ 97.77777777777783
2035
+ ],
2036
+ [
2037
+ 122.22222222222217,
2038
+ 98.88888888888891
2039
+ ],
2040
+ [
2041
+ 126.66666666666674,
2042
+ 100
2043
+ ],
2044
+ [
2045
+ 130,
2046
+ 102.22222222222217
2047
+ ],
2048
+ [
2049
+ 135.55555555555566,
2050
+ 104.44444444444434
2051
+ ],
2052
+ [
2053
+ 140,
2054
+ 106.66666666666663
2055
+ ],
2056
+ [
2057
+ 145.55555555555566,
2058
+ 108.88888888888891
2059
+ ],
2060
+ [
2061
+ 148.8888888888889,
2062
+ 111.11111111111109
2063
+ ],
2064
+ [
2065
+ 151.1111111111111,
2066
+ 112.22222222222217
2067
+ ],
2068
+ [
2069
+ 154.44444444444457,
2070
+ 113.33333333333326
2071
+ ],
2072
+ [
2073
+ 157.77777777777783,
2074
+ 115.55555555555554
2075
+ ],
2076
+ [
2077
+ 163.33333333333326,
2078
+ 117.77777777777771
2079
+ ],
2080
+ [
2081
+ 167.77777777777783,
2082
+ 120
2083
+ ],
2084
+ [
2085
+ 171.1111111111111,
2086
+ 121.11111111111109
2087
+ ],
2088
+ [
2089
+ 173.33333333333326,
2090
+ 123.33333333333326
2091
+ ],
2092
+ [
2093
+ 176.66666666666674,
2094
+ 124.44444444444446
2095
+ ],
2096
+ [
2097
+ 178.8888888888889,
2098
+ 126.66666666666663
2099
+ ],
2100
+ [
2101
+ 182.22222222222217,
2102
+ 128.8888888888889
2103
+ ],
2104
+ [
2105
+ 186.66666666666674,
2106
+ 132.22222222222217
2107
+ ],
2108
+ [
2109
+ 188.8888888888889,
2110
+ 134.44444444444446
2111
+ ],
2112
+ [
2113
+ 192.22222222222217,
2114
+ 136.66666666666663
2115
+ ],
2116
+ [
2117
+ 194.44444444444457,
2118
+ 137.77777777777771
2119
+ ],
2120
+ [
2121
+ 196.66666666666674,
2122
+ 140
2123
+ ],
2124
+ [
2125
+ 200,
2126
+ 142.22222222222217
2127
+ ],
2128
+ [
2129
+ 203.33333333333326,
2130
+ 145.55555555555554
2131
+ ],
2132
+ [
2133
+ 205.55555555555566,
2134
+ 147.77777777777771
2135
+ ],
2136
+ [
2137
+ 208.8888888888889,
2138
+ 150
2139
+ ],
2140
+ [
2141
+ 211.1111111111111,
2142
+ 152.22222222222217
2143
+ ],
2144
+ [
2145
+ 213.33333333333326,
2146
+ 154.44444444444446
2147
+ ],
2148
+ [
2149
+ 215.55555555555566,
2150
+ 155.55555555555554
2151
+ ],
2152
+ [
2153
+ 217.77777777777783,
2154
+ 157.77777777777771
2155
+ ],
2156
+ [
2157
+ 220,
2158
+ 160
2159
+ ],
2160
+ [
2161
+ 223.33333333333326,
2162
+ 164.44444444444446
2163
+ ],
2164
+ [
2165
+ 225.55555555555566,
2166
+ 166.66666666666663
2167
+ ],
2168
+ [
2169
+ 227.77777777777783,
2170
+ 168.8888888888889
2171
+ ],
2172
+ [
2173
+ 230,
2174
+ 172.22222222222217
2175
+ ],
2176
+ [
2177
+ 232.22222222222217,
2178
+ 174.44444444444446
2179
+ ],
2180
+ [
2181
+ 233.33333333333326,
2182
+ 175.55555555555554
2183
+ ],
2184
+ [
2185
+ 234.44444444444457,
2186
+ 177.77777777777771
2187
+ ],
2188
+ [
2189
+ 235.55555555555566,
2190
+ 180
2191
+ ],
2192
+ [
2193
+ 236.66666666666674,
2194
+ 182.22222222222217
2195
+ ],
2196
+ [
2197
+ 237.77777777777783,
2198
+ 184.44444444444446
2199
+ ],
2200
+ [
2201
+ 238.8888888888889,
2202
+ 187.77777777777771
2203
+ ],
2204
+ [
2205
+ 241.1111111111111,
2206
+ 190
2207
+ ],
2208
+ [
2209
+ 242.22222222222217,
2210
+ 193.33333333333326
2211
+ ],
2212
+ [
2213
+ 244.44444444444457,
2214
+ 196.66666666666663
2215
+ ],
2216
+ [
2217
+ 246.66666666666674,
2218
+ 200
2219
+ ],
2220
+ [
2221
+ 247.77777777777783,
2222
+ 203.33333333333326
2223
+ ],
2224
+ [
2225
+ 248.8888888888889,
2226
+ 205.55555555555554
2227
+ ],
2228
+ [
2229
+ 250,
2230
+ 206.66666666666663
2231
+ ],
2232
+ [
2233
+ 251.1111111111111,
2234
+ 208.8888888888889
2235
+ ],
2236
+ [
2237
+ 254.44444444444457,
2238
+ 212.22222222222217
2239
+ ],
2240
+ [
2241
+ 255.55555555555566,
2242
+ 216.66666666666663
2243
+ ],
2244
+ [
2245
+ 257.7777777777778,
2246
+ 218.8888888888889
2247
+ ],
2248
+ [
2249
+ 260,
2250
+ 222.22222222222217
2251
+ ],
2252
+ [
2253
+ 261.1111111111111,
2254
+ 223.33333333333326
2255
+ ],
2256
+ [
2257
+ 261.1111111111111,
2258
+ 224.44444444444446
2259
+ ],
2260
+ [
2261
+ 262.2222222222222,
2262
+ 225.55555555555554
2263
+ ],
2264
+ [
2265
+ 262.2222222222222,
2266
+ 226.66666666666663
2267
+ ],
2268
+ [
2269
+ 262.2222222222222,
2270
+ 227.77777777777771
2271
+ ],
2272
+ [
2273
+ 263.33333333333326,
2274
+ 228.8888888888889
2275
+ ],
2276
+ [
2277
+ 263.33333333333326,
2278
+ 230
2279
+ ],
2280
+ [
2281
+ 264.44444444444457,
2282
+ 231.1111111111111
2283
+ ],
2284
+ [
2285
+ 264.44444444444457,
2286
+ 233.33333333333326
2287
+ ],
2288
+ [
2289
+ 265.55555555555566,
2290
+ 234.44444444444446
2291
+ ],
2292
+ [
2293
+ 265.55555555555566,
2294
+ 235.55555555555554
2295
+ ],
2296
+ [
2297
+ 266.66666666666674,
2298
+ 237.77777777777771
2299
+ ],
2300
+ [
2301
+ 266.66666666666674,
2302
+ 238.8888888888889
2303
+ ],
2304
+ [
2305
+ 266.66666666666674,
2306
+ 241.1111111111111
2307
+ ],
2308
+ [
2309
+ 267.7777777777778,
2310
+ 242.22222222222217
2311
+ ],
2312
+ [
2313
+ 267.7777777777778,
2314
+ 243.33333333333326
2315
+ ],
2316
+ [
2317
+ 267.7777777777778,
2318
+ 244.44444444444446
2319
+ ],
2320
+ [
2321
+ 267.7777777777778,
2322
+ 245.55555555555554
2323
+ ],
2324
+ [
2325
+ 267.7777777777778,
2326
+ 246.66666666666663
2327
+ ],
2328
+ [
2329
+ 268.8888888888889,
2330
+ 247.77777777777771
2331
+ ],
2332
+ [
2333
+ 268.8888888888889,
2334
+ 248.8888888888889
2335
+ ],
2336
+ [
2337
+ 268.8888888888889,
2338
+ 250
2339
+ ],
2340
+ [
2341
+ 268.8888888888889,
2342
+ 251.1111111111111
2343
+ ],
2344
+ [
2345
+ 268.8888888888889,
2346
+ 252.22222222222217
2347
+ ],
2348
+ [
2349
+ 268.8888888888889,
2350
+ 253.33333333333326
2351
+ ],
2352
+ [
2353
+ 268.8888888888889,
2354
+ 254.44444444444446
2355
+ ],
2356
+ [
2357
+ 268.8888888888889,
2358
+ 254.44444444444446
2359
+ ]
2360
+ ],
2361
+ "pressures": [],
2362
+ "simulatePressure": true,
2363
+ "lastCommittedPoint": [
2364
+ 268.8888888888889,
2365
+ 254.44444444444446
2366
+ ]
2367
+ },
2368
+ {
2369
+ "id": "Gn3iZnPEkbd0IVHe9uadw",
2370
+ "type": "rectangle",
2371
+ "x": 1988.7777777777774,
2372
+ "y": 48.7777777777772,
2373
+ "width": 233.111111111112,
2374
+ "height": 233.111111111112,
2375
+ "angle": 0,
2376
+ "strokeColor": "#1e1e1e",
2377
+ "backgroundColor": "transparent",
2378
+ "fillStyle": "solid",
2379
+ "strokeWidth": 2,
2380
+ "strokeStyle": "solid",
2381
+ "roughness": 1,
2382
+ "opacity": 100,
2383
+ "groupIds": [],
2384
+ "frameId": null,
2385
+ "index": "ad",
2386
+ "roundness": {
2387
+ "type": 3
2388
+ },
2389
+ "seed": 1210335622,
2390
+ "version": 445,
2391
+ "versionNonce": 632049286,
2392
+ "isDeleted": false,
2393
+ "boundElements": [
2394
+ {
2395
+ "id": "-xUnx6iAeFQvwJV6yn2O1",
2396
+ "type": "text"
2397
+ }
2398
+ ],
2399
+ "updated": 1739538353230,
2400
+ "link": null,
2401
+ "locked": false
2402
+ },
2403
+ {
2404
+ "id": "-xUnx6iAeFQvwJV6yn2O1",
2405
+ "type": "text",
2406
+ "x": 2066.966668446859,
2407
+ "y": 144.64123210633926,
2408
+ "width": 76.73332977294922,
2409
+ "height": 41.38420245398787,
2410
+ "angle": 0,
2411
+ "strokeColor": "#1e1e1e",
2412
+ "backgroundColor": "transparent",
2413
+ "fillStyle": "solid",
2414
+ "strokeWidth": 2,
2415
+ "strokeStyle": "solid",
2416
+ "roughness": 1,
2417
+ "opacity": 100,
2418
+ "groupIds": [],
2419
+ "frameId": null,
2420
+ "index": "ae",
2421
+ "roundness": null,
2422
+ "seed": 1315840198,
2423
+ "version": 654,
2424
+ "versionNonce": 1119377434,
2425
+ "isDeleted": false,
2426
+ "boundElements": null,
2427
+ "updated": 1739538353230,
2428
+ "link": null,
2429
+ "locked": false,
2430
+ "text": "KNet",
2431
+ "fontSize": 33.10736196319029,
2432
+ "fontFamily": 5,
2433
+ "textAlign": "center",
2434
+ "verticalAlign": "middle",
2435
+ "containerId": "Gn3iZnPEkbd0IVHe9uadw",
2436
+ "originalText": "KNet",
2437
+ "autoResize": true,
2438
+ "lineHeight": 1.25
2439
+ },
2440
+ {
2441
+ "id": "2g6If5LQzFbSpxYCaIWzQ",
2442
+ "type": "rectangle",
2443
+ "x": 1848.7777777777774,
2444
+ "y": 319.8888888888883,
2445
+ "width": 233.111111111112,
2446
+ "height": 233.111111111112,
2447
+ "angle": 0,
2448
+ "strokeColor": "#1e1e1e",
2449
+ "backgroundColor": "transparent",
2450
+ "fillStyle": "solid",
2451
+ "strokeWidth": 2,
2452
+ "strokeStyle": "solid",
2453
+ "roughness": 1,
2454
+ "opacity": 100,
2455
+ "groupIds": [],
2456
+ "frameId": null,
2457
+ "index": "af",
2458
+ "roundness": {
2459
+ "type": 3
2460
+ },
2461
+ "seed": 1570758534,
2462
+ "version": 503,
2463
+ "versionNonce": 1673433286,
2464
+ "isDeleted": false,
2465
+ "boundElements": [
2466
+ {
2467
+ "id": "ltymeheEBn18SuO7O3sJt",
2468
+ "type": "text"
2469
+ }
2470
+ ],
2471
+ "updated": 1739538359355,
2472
+ "link": null,
2473
+ "locked": false
2474
+ },
2475
+ {
2476
+ "id": "ltymeheEBn18SuO7O3sJt",
2477
+ "type": "text",
2478
+ "x": 1892.5416692097983,
2479
+ "y": 395.0602419904564,
2480
+ "width": 145.5833282470703,
2481
+ "height": 82.76840490797574,
2482
+ "angle": 0,
2483
+ "strokeColor": "#1e1e1e",
2484
+ "backgroundColor": "transparent",
2485
+ "fillStyle": "solid",
2486
+ "strokeWidth": 2,
2487
+ "strokeStyle": "solid",
2488
+ "roughness": 1,
2489
+ "opacity": 100,
2490
+ "groupIds": [],
2491
+ "frameId": null,
2492
+ "index": "ag",
2493
+ "roundness": null,
2494
+ "seed": 784727750,
2495
+ "version": 749,
2496
+ "versionNonce": 1582730566,
2497
+ "isDeleted": false,
2498
+ "boundElements": null,
2499
+ "updated": 1739538451203,
2500
+ "link": null,
2501
+ "locked": false,
2502
+ "text": "Research\nManager",
2503
+ "fontSize": 33.10736196319029,
2504
+ "fontFamily": 5,
2505
+ "textAlign": "center",
2506
+ "verticalAlign": "middle",
2507
+ "containerId": "2g6If5LQzFbSpxYCaIWzQ",
2508
+ "originalText": "Research\nManager",
2509
+ "autoResize": true,
2510
+ "lineHeight": 1.25
2511
+ },
2512
+ {
2513
+ "id": "eJpRE9iqGpSq-vJqEp9fG",
2514
+ "type": "rectangle",
2515
+ "x": 2128.7777777777774,
2516
+ "y": 319.8888888888883,
2517
+ "width": 233.111111111112,
2518
+ "height": 233.111111111112,
2519
+ "angle": 0,
2520
+ "strokeColor": "#1e1e1e",
2521
+ "backgroundColor": "transparent",
2522
+ "fillStyle": "solid",
2523
+ "strokeWidth": 2,
2524
+ "strokeStyle": "solid",
2525
+ "roughness": 1,
2526
+ "opacity": 100,
2527
+ "groupIds": [],
2528
+ "frameId": null,
2529
+ "index": "ah",
2530
+ "roundness": {
2531
+ "type": 3
2532
+ },
2533
+ "seed": 1245528454,
2534
+ "version": 519,
2535
+ "versionNonce": 11829830,
2536
+ "isDeleted": false,
2537
+ "boundElements": [
2538
+ {
2539
+ "id": "70rOcru04Wh0RWwglDSxo",
2540
+ "type": "text"
2541
+ }
2542
+ ],
2543
+ "updated": 1739538355861,
2544
+ "link": null,
2545
+ "locked": false
2546
+ },
2547
+ {
2548
+ "id": "70rOcru04Wh0RWwglDSxo",
2549
+ "type": "text",
2550
+ "x": 2156.8833363850913,
2551
+ "y": 415.75234321745035,
2552
+ "width": 176.89999389648438,
2553
+ "height": 41.38420245398787,
2554
+ "angle": 0,
2555
+ "strokeColor": "#1e1e1e",
2556
+ "backgroundColor": "transparent",
2557
+ "fillStyle": "solid",
2558
+ "strokeWidth": 2,
2559
+ "strokeStyle": "solid",
2560
+ "roughness": 1,
2561
+ "opacity": 100,
2562
+ "groupIds": [],
2563
+ "frameId": null,
2564
+ "index": "ai",
2565
+ "roundness": null,
2566
+ "seed": 627515590,
2567
+ "version": 739,
2568
+ "versionNonce": 113663258,
2569
+ "isDeleted": false,
2570
+ "boundElements": null,
2571
+ "updated": 1739538370330,
2572
+ "link": null,
2573
+ "locked": false,
2574
+ "text": "Researcher",
2575
+ "fontSize": 33.10736196319029,
2576
+ "fontFamily": 5,
2577
+ "textAlign": "center",
2578
+ "verticalAlign": "middle",
2579
+ "containerId": "eJpRE9iqGpSq-vJqEp9fG",
2580
+ "originalText": "Researcher",
2581
+ "autoResize": true,
2582
+ "lineHeight": 1.25
2583
+ },
2584
+ {
2585
+ "id": "_L6djRDCbZbT83NcXJH-9",
2586
+ "type": "line",
2587
+ "x": 2103.2420634920636,
2588
+ "y": 280.5753968253964,
2589
+ "width": 132.22222222222217,
2590
+ "height": 42.222222222222285,
2591
+ "angle": 0,
2592
+ "strokeColor": "#1e1e1e",
2593
+ "backgroundColor": "transparent",
2594
+ "fillStyle": "solid",
2595
+ "strokeWidth": 2,
2596
+ "strokeStyle": "solid",
2597
+ "roughness": 1,
2598
+ "opacity": 100,
2599
+ "groupIds": [],
2600
+ "frameId": null,
2601
+ "index": "aj",
2602
+ "roundness": {
2603
+ "type": 2
2604
+ },
2605
+ "seed": 974943174,
2606
+ "version": 51,
2607
+ "versionNonce": 1706697306,
2608
+ "isDeleted": false,
2609
+ "boundElements": null,
2610
+ "updated": 1739538459844,
2611
+ "link": null,
2612
+ "locked": false,
2613
+ "points": [
2614
+ [
2615
+ 0,
2616
+ 0
2617
+ ],
2618
+ [
2619
+ -132.22222222222217,
2620
+ 42.222222222222285
2621
+ ]
2622
+ ],
2623
+ "lastCommittedPoint": null,
2624
+ "startBinding": null,
2625
+ "endBinding": null,
2626
+ "startArrowhead": null,
2627
+ "endArrowhead": null
2628
+ },
2629
+ {
2630
+ "id": "yjDQm3PdPGEq20OALTBbc",
2631
+ "type": "line",
2632
+ "x": 2103.2420634920636,
2633
+ "y": 281.6865079365075,
2634
+ "width": 147.77777777777783,
2635
+ "height": 38.888888888888914,
2636
+ "angle": 0,
2637
+ "strokeColor": "#1e1e1e",
2638
+ "backgroundColor": "transparent",
2639
+ "fillStyle": "solid",
2640
+ "strokeWidth": 2,
2641
+ "strokeStyle": "solid",
2642
+ "roughness": 1,
2643
+ "opacity": 100,
2644
+ "groupIds": [],
2645
+ "frameId": null,
2646
+ "index": "ak",
2647
+ "roundness": {
2648
+ "type": 2
2649
+ },
2650
+ "seed": 28886810,
2651
+ "version": 50,
2652
+ "versionNonce": 9692634,
2653
+ "isDeleted": false,
2654
+ "boundElements": null,
2655
+ "updated": 1739538463792,
2656
+ "link": null,
2657
+ "locked": false,
2658
+ "points": [
2659
+ [
2660
+ 0,
2661
+ 0
2662
+ ],
2663
+ [
2664
+ 147.77777777777783,
2665
+ 38.888888888888914
2666
+ ]
2667
+ ],
2668
+ "lastCommittedPoint": null,
2669
+ "startBinding": null,
2670
+ "endBinding": null,
2671
+ "startArrowhead": null,
2672
+ "endArrowhead": null
2673
+ },
2674
+ {
2675
+ "id": "I6mhzWyAkaL5SK0kIwyAW",
2676
+ "type": "rectangle",
2677
+ "x": 502.56349206349273,
2678
+ "y": -77.70238095238142,
2679
+ "width": 141.42857142857156,
2680
+ "height": 1210,
2681
+ "angle": 0,
2682
+ "strokeColor": "#1e1e1e",
2683
+ "backgroundColor": "transparent",
2684
+ "fillStyle": "solid",
2685
+ "strokeWidth": 2,
2686
+ "strokeStyle": "solid",
2687
+ "roughness": 1,
2688
+ "opacity": 100,
2689
+ "groupIds": [],
2690
+ "frameId": null,
2691
+ "index": "al",
2692
+ "roundness": {
2693
+ "type": 3
2694
+ },
2695
+ "seed": 360003034,
2696
+ "version": 247,
2697
+ "versionNonce": 891090694,
2698
+ "isDeleted": false,
2699
+ "boundElements": [
2700
+ {
2701
+ "id": "3bTNSAo_ljRJFtjKx3f2k",
2702
+ "type": "arrow"
2703
+ },
2704
+ {
2705
+ "id": "lYfgJTLRD9XeilnRoTnvk",
2706
+ "type": "arrow"
2707
+ }
2708
+ ],
2709
+ "updated": 1739538696790,
2710
+ "link": null,
2711
+ "locked": false
2712
+ },
2713
+ {
2714
+ "id": "TP8MDCAHKuUm7y8gI0pqN",
2715
+ "type": "text",
2716
+ "x": 543.0027784920643,
2717
+ "y": -40.35714295238145,
2718
+ "width": 60.54999923706055,
2719
+ "height": 53.75,
2720
+ "angle": 0,
2721
+ "strokeColor": "#1e1e1e",
2722
+ "backgroundColor": "transparent",
2723
+ "fillStyle": "solid",
2724
+ "strokeWidth": 2,
2725
+ "strokeStyle": "solid",
2726
+ "roughness": 1,
2727
+ "opacity": 100,
2728
+ "groupIds": [],
2729
+ "frameId": null,
2730
+ "index": "an",
2731
+ "roundness": null,
2732
+ "seed": 1024721498,
2733
+ "version": 49,
2734
+ "versionNonce": 229489818,
2735
+ "isDeleted": false,
2736
+ "boundElements": null,
2737
+ "updated": 1739538592520,
2738
+ "link": null,
2739
+ "locked": false,
2740
+ "text": "WS",
2741
+ "fontSize": 43,
2742
+ "fontFamily": 5,
2743
+ "textAlign": "left",
2744
+ "verticalAlign": "top",
2745
+ "containerId": null,
2746
+ "originalText": "WS",
2747
+ "autoResize": true,
2748
+ "lineHeight": 1.25
2749
+ },
2750
+ {
2751
+ "id": "pHgJMHYOyw0MT_VTpj8zt",
2752
+ "type": "rectangle",
2753
+ "x": 33.67781863492115,
2754
+ "y": -77.70238095238146,
2755
+ "width": 152.85714285714312,
2756
+ "height": 1210,
2757
+ "angle": 0,
2758
+ "strokeColor": "#1e1e1e",
2759
+ "backgroundColor": "transparent",
2760
+ "fillStyle": "solid",
2761
+ "strokeWidth": 2,
2762
+ "strokeStyle": "solid",
2763
+ "roughness": 1,
2764
+ "opacity": 100,
2765
+ "groupIds": [],
2766
+ "frameId": null,
2767
+ "index": "ao",
2768
+ "roundness": {
2769
+ "type": 3
2770
+ },
2771
+ "seed": 1869594010,
2772
+ "version": 442,
2773
+ "versionNonce": 304311686,
2774
+ "isDeleted": false,
2775
+ "boundElements": [
2776
+ {
2777
+ "id": "3bTNSAo_ljRJFtjKx3f2k",
2778
+ "type": "arrow"
2779
+ },
2780
+ {
2781
+ "id": "lYfgJTLRD9XeilnRoTnvk",
2782
+ "type": "arrow"
2783
+ }
2784
+ ],
2785
+ "updated": 1739538696790,
2786
+ "link": null,
2787
+ "locked": false
2788
+ },
2789
+ {
2790
+ "id": "51fwPUvTtmxvLdx3Orjsi",
2791
+ "type": "line",
2792
+ "x": 643.9920634920644,
2793
+ "y": 343.7261904761902,
2794
+ "width": 111.42857142857133,
2795
+ "height": 0,
2796
+ "angle": 0,
2797
+ "strokeColor": "#1e1e1e",
2798
+ "backgroundColor": "transparent",
2799
+ "fillStyle": "solid",
2800
+ "strokeWidth": 2,
2801
+ "strokeStyle": "solid",
2802
+ "roughness": 1,
2803
+ "opacity": 100,
2804
+ "groupIds": [],
2805
+ "frameId": null,
2806
+ "index": "ap",
2807
+ "roundness": {
2808
+ "type": 2
2809
+ },
2810
+ "seed": 1893264730,
2811
+ "version": 41,
2812
+ "versionNonce": 1349422662,
2813
+ "isDeleted": false,
2814
+ "boundElements": null,
2815
+ "updated": 1739538533192,
2816
+ "link": null,
2817
+ "locked": false,
2818
+ "points": [
2819
+ [
2820
+ 0,
2821
+ 0
2822
+ ],
2823
+ [
2824
+ 111.42857142857133,
2825
+ 0
2826
+ ]
2827
+ ],
2828
+ "lastCommittedPoint": null,
2829
+ "startBinding": null,
2830
+ "endBinding": null,
2831
+ "startArrowhead": null,
2832
+ "endArrowhead": null
2833
+ },
2834
+ {
2835
+ "id": "GPp6HqjsKmwCQJ1SMOa6M",
2836
+ "type": "text",
2837
+ "x": 52.7849214920643,
2838
+ "y": -37.702380952381446,
2839
+ "width": 116.69999694824219,
2840
+ "height": 53.75,
2841
+ "angle": 0,
2842
+ "strokeColor": "#1e1e1e",
2843
+ "backgroundColor": "transparent",
2844
+ "fillStyle": "solid",
2845
+ "strokeWidth": 2,
2846
+ "strokeStyle": "solid",
2847
+ "roughness": 1,
2848
+ "opacity": 100,
2849
+ "groupIds": [],
2850
+ "frameId": null,
2851
+ "index": "ar",
2852
+ "roundness": null,
2853
+ "seed": 1477003078,
2854
+ "version": 95,
2855
+ "versionNonce": 1720426138,
2856
+ "isDeleted": false,
2857
+ "boundElements": null,
2858
+ "updated": 1739538551535,
2859
+ "link": null,
2860
+ "locked": false,
2861
+ "text": "Client",
2862
+ "fontSize": 43,
2863
+ "fontFamily": 5,
2864
+ "textAlign": "left",
2865
+ "verticalAlign": "top",
2866
+ "containerId": null,
2867
+ "originalText": "Client",
2868
+ "autoResize": true,
2869
+ "lineHeight": 1.25
2870
+ },
2871
+ {
2872
+ "id": "3bTNSAo_ljRJFtjKx3f2k",
2873
+ "type": "arrow",
2874
+ "x": 187.96353320635006,
2875
+ "y": 88.01190476190467,
2876
+ "width": 313.59995885714267,
2877
+ "height": 1.8474111129762605e-13,
2878
+ "angle": 0,
2879
+ "strokeColor": "#1e1e1e",
2880
+ "backgroundColor": "transparent",
2881
+ "fillStyle": "solid",
2882
+ "strokeWidth": 2,
2883
+ "strokeStyle": "solid",
2884
+ "roughness": 1,
2885
+ "opacity": 100,
2886
+ "groupIds": [],
2887
+ "frameId": null,
2888
+ "index": "as",
2889
+ "roundness": {
2890
+ "type": 2
2891
+ },
2892
+ "seed": 1398030362,
2893
+ "version": 161,
2894
+ "versionNonce": 1569062022,
2895
+ "isDeleted": false,
2896
+ "boundElements": [
2897
+ {
2898
+ "type": "text",
2899
+ "id": "se3VYVJ8WUGBUWU4mXNFL"
2900
+ }
2901
+ ],
2902
+ "updated": 1739538637861,
2903
+ "link": null,
2904
+ "locked": false,
2905
+ "points": [
2906
+ [
2907
+ 0,
2908
+ 0
2909
+ ],
2910
+ [
2911
+ 313.59995885714267,
2912
+ -1.8474111129762605e-13
2913
+ ]
2914
+ ],
2915
+ "lastCommittedPoint": null,
2916
+ "startBinding": {
2917
+ "elementId": "pHgJMHYOyw0MT_VTpj8zt",
2918
+ "focus": -0.7260920897284526,
2919
+ "gap": 1.4285717142857948,
2920
+ "fixedPoint": null
2921
+ },
2922
+ "endBinding": {
2923
+ "elementId": "I6mhzWyAkaL5SK0kIwyAW",
2924
+ "focus": 0.7260920897284531,
2925
+ "gap": 1,
2926
+ "fixedPoint": null
2927
+ },
2928
+ "startArrowhead": null,
2929
+ "endArrowhead": "arrow",
2930
+ "elbowed": false
2931
+ },
2932
+ {
2933
+ "id": "se3VYVJ8WUGBUWU4mXNFL",
2934
+ "type": "text",
2935
+ "x": 270.3051767584566,
2936
+ "y": 61.13690476190456,
2937
+ "width": 148.9166717529297,
2938
+ "height": 53.75,
2939
+ "angle": 0,
2940
+ "strokeColor": "#1e1e1e",
2941
+ "backgroundColor": "transparent",
2942
+ "fillStyle": "solid",
2943
+ "strokeWidth": 2,
2944
+ "strokeStyle": "solid",
2945
+ "roughness": 1,
2946
+ "opacity": 100,
2947
+ "groupIds": [],
2948
+ "frameId": null,
2949
+ "index": "at",
2950
+ "roundness": null,
2951
+ "seed": 628624090,
2952
+ "version": 8,
2953
+ "versionNonce": 1895567578,
2954
+ "isDeleted": false,
2955
+ "boundElements": null,
2956
+ "updated": 1739538600442,
2957
+ "link": null,
2958
+ "locked": false,
2959
+ "text": "Prompt",
2960
+ "fontSize": 43,
2961
+ "fontFamily": 5,
2962
+ "textAlign": "center",
2963
+ "verticalAlign": "middle",
2964
+ "containerId": "3bTNSAo_ljRJFtjKx3f2k",
2965
+ "originalText": "Prompt",
2966
+ "autoResize": true,
2967
+ "lineHeight": 1.25
2968
+ },
2969
+ {
2970
+ "id": "0O29Gmltdu_fT82SY_kUU",
2971
+ "type": "arrow",
2972
+ "x": 499.70634920634996,
2973
+ "y": 226.58333333333303,
2974
+ "width": 311.42857142857133,
2975
+ "height": 0,
2976
+ "angle": 0,
2977
+ "strokeColor": "#1971c2",
2978
+ "backgroundColor": "transparent",
2979
+ "fillStyle": "solid",
2980
+ "strokeWidth": 2,
2981
+ "strokeStyle": "solid",
2982
+ "roughness": 1,
2983
+ "opacity": 100,
2984
+ "groupIds": [],
2985
+ "frameId": null,
2986
+ "index": "au",
2987
+ "roundness": {
2988
+ "type": 2
2989
+ },
2990
+ "seed": 1110769926,
2991
+ "version": 73,
2992
+ "versionNonce": 1422407514,
2993
+ "isDeleted": false,
2994
+ "boundElements": [
2995
+ {
2996
+ "id": "jX5VJgiJlMLJYhPloxq1H",
2997
+ "type": "text"
2998
+ }
2999
+ ],
3000
+ "updated": 1739538670195,
3001
+ "link": null,
3002
+ "locked": false,
3003
+ "points": [
3004
+ [
3005
+ 0,
3006
+ 0
3007
+ ],
3008
+ [
3009
+ -311.42857142857133,
3010
+ 0
3011
+ ]
3012
+ ],
3013
+ "lastCommittedPoint": null,
3014
+ "startBinding": {
3015
+ "elementId": "I6mhzWyAkaL5SK0kIwyAW",
3016
+ "focus": 0.49704840613931495,
3017
+ "gap": 2.857142857142776,
3018
+ "fixedPoint": null
3019
+ },
3020
+ "endBinding": {
3021
+ "elementId": "pHgJMHYOyw0MT_VTpj8zt",
3022
+ "focus": -0.49704840613931495,
3023
+ "gap": 1.7428162857143548,
3024
+ "fixedPoint": null
3025
+ },
3026
+ "startArrowhead": null,
3027
+ "endArrowhead": "arrow",
3028
+ "elbowed": false
3029
+ },
3030
+ {
3031
+ "id": "jX5VJgiJlMLJYhPloxq1H",
3032
+ "type": "text",
3033
+ "x": 300.58373066735726,
3034
+ "y": 199.70833333333303,
3035
+ "width": 86.81666564941406,
3036
+ "height": 53.75,
3037
+ "angle": 0,
3038
+ "strokeColor": "#1971c2",
3039
+ "backgroundColor": "transparent",
3040
+ "fillStyle": "solid",
3041
+ "strokeWidth": 2,
3042
+ "strokeStyle": "solid",
3043
+ "roughness": 1,
3044
+ "opacity": 100,
3045
+ "groupIds": [],
3046
+ "frameId": null,
3047
+ "index": "av",
3048
+ "roundness": null,
3049
+ "seed": 1463480390,
3050
+ "version": 22,
3051
+ "versionNonce": 2129460422,
3052
+ "isDeleted": false,
3053
+ "boundElements": null,
3054
+ "updated": 1739538667001,
3055
+ "link": null,
3056
+ "locked": false,
3057
+ "text": "10%",
3058
+ "fontSize": 43,
3059
+ "fontFamily": 5,
3060
+ "textAlign": "center",
3061
+ "verticalAlign": "middle",
3062
+ "containerId": "0O29Gmltdu_fT82SY_kUU",
3063
+ "originalText": "10%",
3064
+ "autoResize": true,
3065
+ "lineHeight": 1.25
3066
+ },
3067
+ {
3068
+ "id": "VckszNyFGF78Khl7ad5Wi",
3069
+ "type": "arrow",
3070
+ "x": 498.2777777777784,
3071
+ "y": 290.86904761904736,
3072
+ "width": 310.7428162857141,
3073
+ "height": 0,
3074
+ "angle": 0,
3075
+ "strokeColor": "#1971c2",
3076
+ "backgroundColor": "transparent",
3077
+ "fillStyle": "solid",
3078
+ "strokeWidth": 2,
3079
+ "strokeStyle": "solid",
3080
+ "roughness": 1,
3081
+ "opacity": 100,
3082
+ "groupIds": [],
3083
+ "frameId": null,
3084
+ "index": "aw",
3085
+ "roundness": {
3086
+ "type": 2
3087
+ },
3088
+ "seed": 39821082,
3089
+ "version": 142,
3090
+ "versionNonce": 1821854106,
3091
+ "isDeleted": false,
3092
+ "boundElements": [
3093
+ {
3094
+ "id": "HP6Uwb7Rx8SL1XcnRSNqM",
3095
+ "type": "text"
3096
+ }
3097
+ ],
3098
+ "updated": 1739538657292,
3099
+ "link": null,
3100
+ "locked": false,
3101
+ "points": [
3102
+ [
3103
+ 0,
3104
+ 0
3105
+ ],
3106
+ [
3107
+ -310.7428162857141,
3108
+ 0
3109
+ ]
3110
+ ],
3111
+ "lastCommittedPoint": null,
3112
+ "startBinding": {
3113
+ "elementId": "I6mhzWyAkaL5SK0kIwyAW",
3114
+ "focus": 0.3907910271546632,
3115
+ "gap": 4.285714285714334,
3116
+ "fixedPoint": null
3117
+ },
3118
+ "endBinding": {
3119
+ "elementId": "pHgJMHYOyw0MT_VTpj8zt",
3120
+ "focus": -0.39079102715466313,
3121
+ "gap": 1,
3122
+ "fixedPoint": null
3123
+ },
3124
+ "startArrowhead": null,
3125
+ "endArrowhead": "arrow",
3126
+ "elbowed": false
3127
+ },
3128
+ {
3129
+ "id": "HP6Uwb7Rx8SL1XcnRSNqM",
3130
+ "type": "text",
3131
+ "x": 250.54682183644195,
3132
+ "y": 263.99404761904736,
3133
+ "width": 184.03334045410156,
3134
+ "height": 53.75,
3135
+ "angle": 0,
3136
+ "strokeColor": "#1971c2",
3137
+ "backgroundColor": "transparent",
3138
+ "fillStyle": "solid",
3139
+ "strokeWidth": 2,
3140
+ "strokeStyle": "solid",
3141
+ "roughness": 1,
3142
+ "opacity": 100,
3143
+ "groupIds": [],
3144
+ "frameId": null,
3145
+ "index": "ax",
3146
+ "roundness": null,
3147
+ "seed": 235973594,
3148
+ "version": 21,
3149
+ "versionNonce": 893675162,
3150
+ "isDeleted": false,
3151
+ "boundElements": null,
3152
+ "updated": 1739538657292,
3153
+ "link": null,
3154
+ "locked": false,
3155
+ "text": "Progress",
3156
+ "fontSize": 43,
3157
+ "fontFamily": 5,
3158
+ "textAlign": "center",
3159
+ "verticalAlign": "middle",
3160
+ "containerId": "VckszNyFGF78Khl7ad5Wi",
3161
+ "originalText": "Progress",
3162
+ "autoResize": true,
3163
+ "lineHeight": 1.25
3164
+ },
3165
+ {
3166
+ "id": "6eiujE3uEtkP3tzBnU5gA",
3167
+ "type": "arrow",
3168
+ "x": 499.7302277777784,
3169
+ "y": 361.9999996190474,
3170
+ "width": 310.7428162857141,
3171
+ "height": 0,
3172
+ "angle": 0,
3173
+ "strokeColor": "#1971c2",
3174
+ "backgroundColor": "transparent",
3175
+ "fillStyle": "solid",
3176
+ "strokeWidth": 2,
3177
+ "strokeStyle": "solid",
3178
+ "roughness": 1,
3179
+ "opacity": 100,
3180
+ "groupIds": [],
3181
+ "frameId": null,
3182
+ "index": "ay",
3183
+ "roundness": {
3184
+ "type": 2
3185
+ },
3186
+ "seed": 428086982,
3187
+ "version": 192,
3188
+ "versionNonce": 2078458822,
3189
+ "isDeleted": false,
3190
+ "boundElements": [
3191
+ {
3192
+ "id": "eowJ4J--kgFAPlFFsrlyQ",
3193
+ "type": "text"
3194
+ }
3195
+ ],
3196
+ "updated": 1739538676630,
3197
+ "link": null,
3198
+ "locked": false,
3199
+ "points": [
3200
+ [
3201
+ 0,
3202
+ 0
3203
+ ],
3204
+ [
3205
+ -310.7428162857141,
3206
+ 0
3207
+ ]
3208
+ ],
3209
+ "lastCommittedPoint": null,
3210
+ "startBinding": null,
3211
+ "endBinding": null,
3212
+ "startArrowhead": null,
3213
+ "endArrowhead": "arrow",
3214
+ "elbowed": false
3215
+ },
3216
+ {
3217
+ "id": "eowJ4J--kgFAPlFFsrlyQ",
3218
+ "type": "text",
3219
+ "x": 295.08381810904245,
3220
+ "y": 335.1249996190474,
3221
+ "width": 98.55000305175781,
3222
+ "height": 53.75,
3223
+ "angle": 0,
3224
+ "strokeColor": "#1971c2",
3225
+ "backgroundColor": "transparent",
3226
+ "fillStyle": "solid",
3227
+ "strokeWidth": 2,
3228
+ "strokeStyle": "solid",
3229
+ "roughness": 1,
3230
+ "opacity": 100,
3231
+ "groupIds": [],
3232
+ "frameId": null,
3233
+ "index": "az",
3234
+ "roundness": null,
3235
+ "seed": 664882694,
3236
+ "version": 30,
3237
+ "versionNonce": 998965786,
3238
+ "isDeleted": false,
3239
+ "boundElements": null,
3240
+ "updated": 1739538673593,
3241
+ "link": null,
3242
+ "locked": false,
3243
+ "text": "20%",
3244
+ "fontSize": 43,
3245
+ "fontFamily": 5,
3246
+ "textAlign": "center",
3247
+ "verticalAlign": "middle",
3248
+ "containerId": "6eiujE3uEtkP3tzBnU5gA",
3249
+ "originalText": "20%",
3250
+ "autoResize": true,
3251
+ "lineHeight": 1.25
3252
+ },
3253
+ {
3254
+ "id": "rONB_vx73CN3JLCHnvG3G",
3255
+ "type": "arrow",
3256
+ "x": 499.7302277777784,
3257
+ "y": 427.9999996190474,
3258
+ "width": 310.7428162857141,
3259
+ "height": 0,
3260
+ "angle": 0,
3261
+ "strokeColor": "#1971c2",
3262
+ "backgroundColor": "transparent",
3263
+ "fillStyle": "solid",
3264
+ "strokeWidth": 2,
3265
+ "strokeStyle": "solid",
3266
+ "roughness": 1,
3267
+ "opacity": 100,
3268
+ "groupIds": [],
3269
+ "frameId": null,
3270
+ "index": "b00",
3271
+ "roundness": {
3272
+ "type": 2
3273
+ },
3274
+ "seed": 409402714,
3275
+ "version": 228,
3276
+ "versionNonce": 1492059738,
3277
+ "isDeleted": false,
3278
+ "boundElements": [
3279
+ {
3280
+ "id": "h1EUmL5NvqtjtbvujqINI",
3281
+ "type": "text"
3282
+ }
3283
+ ],
3284
+ "updated": 1739538657292,
3285
+ "link": null,
3286
+ "locked": false,
3287
+ "points": [
3288
+ [
3289
+ 0,
3290
+ 0
3291
+ ],
3292
+ [
3293
+ -310.7428162857141,
3294
+ 0
3295
+ ]
3296
+ ],
3297
+ "lastCommittedPoint": null,
3298
+ "startBinding": null,
3299
+ "endBinding": null,
3300
+ "startArrowhead": null,
3301
+ "endArrowhead": "arrow",
3302
+ "elbowed": false
3303
+ },
3304
+ {
3305
+ "id": "h1EUmL5NvqtjtbvujqINI",
3306
+ "type": "text",
3307
+ "x": 250.54682183644195,
3308
+ "y": 263.99404761904736,
3309
+ "width": 184.03334045410156,
3310
+ "height": 53.75,
3311
+ "angle": 0,
3312
+ "strokeColor": "#1971c2",
3313
+ "backgroundColor": "transparent",
3314
+ "fillStyle": "solid",
3315
+ "strokeWidth": 2,
3316
+ "strokeStyle": "solid",
3317
+ "roughness": 1,
3318
+ "opacity": 100,
3319
+ "groupIds": [],
3320
+ "frameId": null,
3321
+ "index": "b01",
3322
+ "roundness": null,
3323
+ "seed": 538067482,
3324
+ "version": 22,
3325
+ "versionNonce": 1350240282,
3326
+ "isDeleted": false,
3327
+ "boundElements": null,
3328
+ "updated": 1739538657292,
3329
+ "link": null,
3330
+ "locked": false,
3331
+ "text": "Progress",
3332
+ "fontSize": 43,
3333
+ "fontFamily": 5,
3334
+ "textAlign": "center",
3335
+ "verticalAlign": "middle",
3336
+ "containerId": "rONB_vx73CN3JLCHnvG3G",
3337
+ "originalText": "Progress",
3338
+ "autoResize": true,
3339
+ "lineHeight": 1.25
3340
+ },
3341
+ {
3342
+ "id": "QJ3wZquQ4GU5CPr-q_IXS",
3343
+ "type": "arrow",
3344
+ "x": 499.70573320635,
3345
+ "y": 489.22669933333304,
3346
+ "width": 311.42857142857133,
3347
+ "height": 0,
3348
+ "angle": 0,
3349
+ "strokeColor": "#1971c2",
3350
+ "backgroundColor": "transparent",
3351
+ "fillStyle": "solid",
3352
+ "strokeWidth": 2,
3353
+ "strokeStyle": "solid",
3354
+ "roughness": 1,
3355
+ "opacity": 100,
3356
+ "groupIds": [],
3357
+ "frameId": null,
3358
+ "index": "b02",
3359
+ "roundness": {
3360
+ "type": 2
3361
+ },
3362
+ "seed": 1175911898,
3363
+ "version": 128,
3364
+ "versionNonce": 1463011354,
3365
+ "isDeleted": false,
3366
+ "boundElements": [
3367
+ {
3368
+ "id": "fA3oBUeg2R6ItmSE4jvND",
3369
+ "type": "text"
3370
+ }
3371
+ ],
3372
+ "updated": 1739538679859,
3373
+ "link": null,
3374
+ "locked": false,
3375
+ "points": [
3376
+ [
3377
+ 0,
3378
+ 0
3379
+ ],
3380
+ [
3381
+ -311.42857142857133,
3382
+ 0
3383
+ ]
3384
+ ],
3385
+ "lastCommittedPoint": null,
3386
+ "startBinding": null,
3387
+ "endBinding": null,
3388
+ "startArrowhead": null,
3389
+ "endArrowhead": "arrow",
3390
+ "elbowed": false
3391
+ },
3392
+ {
3393
+ "id": "fA3oBUeg2R6ItmSE4jvND",
3394
+ "type": "text",
3395
+ "x": 296.4831123785389,
3396
+ "y": 462.35169933333304,
3397
+ "width": 95.01667022705078,
3398
+ "height": 53.75,
3399
+ "angle": 0,
3400
+ "strokeColor": "#1971c2",
3401
+ "backgroundColor": "transparent",
3402
+ "fillStyle": "solid",
3403
+ "strokeWidth": 2,
3404
+ "strokeStyle": "solid",
3405
+ "roughness": 1,
3406
+ "opacity": 100,
3407
+ "groupIds": [],
3408
+ "frameId": null,
3409
+ "index": "b03",
3410
+ "roundness": null,
3411
+ "seed": 149828250,
3412
+ "version": 23,
3413
+ "versionNonce": 579971078,
3414
+ "isDeleted": false,
3415
+ "boundElements": null,
3416
+ "updated": 1739538678699,
3417
+ "link": null,
3418
+ "locked": false,
3419
+ "text": "50%",
3420
+ "fontSize": 43,
3421
+ "fontFamily": 5,
3422
+ "textAlign": "center",
3423
+ "verticalAlign": "middle",
3424
+ "containerId": "QJ3wZquQ4GU5CPr-q_IXS",
3425
+ "originalText": "50%",
3426
+ "autoResize": true,
3427
+ "lineHeight": 1.25
3428
+ },
3429
+ {
3430
+ "id": "RiURnNgdnfhPr2gadx1G0",
3431
+ "type": "arrow",
3432
+ "x": 498.2771617777784,
3433
+ "y": 553.5124136190474,
3434
+ "width": 310.7428162857141,
3435
+ "height": 0,
3436
+ "angle": 0,
3437
+ "strokeColor": "#1971c2",
3438
+ "backgroundColor": "transparent",
3439
+ "fillStyle": "solid",
3440
+ "strokeWidth": 2,
3441
+ "strokeStyle": "solid",
3442
+ "roughness": 1,
3443
+ "opacity": 100,
3444
+ "groupIds": [],
3445
+ "frameId": null,
3446
+ "index": "b04",
3447
+ "roundness": {
3448
+ "type": 2
3449
+ },
3450
+ "seed": 987269510,
3451
+ "version": 194,
3452
+ "versionNonce": 450648582,
3453
+ "isDeleted": false,
3454
+ "boundElements": [
3455
+ {
3456
+ "id": "0BT8FZjKr4vzgyarAd1FA",
3457
+ "type": "text"
3458
+ }
3459
+ ],
3460
+ "updated": 1739538661617,
3461
+ "link": null,
3462
+ "locked": false,
3463
+ "points": [
3464
+ [
3465
+ 0,
3466
+ 0
3467
+ ],
3468
+ [
3469
+ -310.7428162857141,
3470
+ 0
3471
+ ]
3472
+ ],
3473
+ "lastCommittedPoint": null,
3474
+ "startBinding": null,
3475
+ "endBinding": null,
3476
+ "startArrowhead": null,
3477
+ "endArrowhead": "arrow",
3478
+ "elbowed": false
3479
+ },
3480
+ {
3481
+ "id": "0BT8FZjKr4vzgyarAd1FA",
3482
+ "type": "text",
3483
+ "x": 250.54682183644195,
3484
+ "y": 263.99404761904736,
3485
+ "width": 184.03334045410156,
3486
+ "height": 53.75,
3487
+ "angle": 0,
3488
+ "strokeColor": "#1971c2",
3489
+ "backgroundColor": "transparent",
3490
+ "fillStyle": "solid",
3491
+ "strokeWidth": 2,
3492
+ "strokeStyle": "solid",
3493
+ "roughness": 1,
3494
+ "opacity": 100,
3495
+ "groupIds": [],
3496
+ "frameId": null,
3497
+ "index": "b05",
3498
+ "roundness": null,
3499
+ "seed": 1935239366,
3500
+ "version": 21,
3501
+ "versionNonce": 388498330,
3502
+ "isDeleted": false,
3503
+ "boundElements": null,
3504
+ "updated": 1739538657291,
3505
+ "link": null,
3506
+ "locked": false,
3507
+ "text": "Progress",
3508
+ "fontSize": 43,
3509
+ "fontFamily": 5,
3510
+ "textAlign": "center",
3511
+ "verticalAlign": "middle",
3512
+ "containerId": "RiURnNgdnfhPr2gadx1G0",
3513
+ "originalText": "Progress",
3514
+ "autoResize": true,
3515
+ "lineHeight": 1.25
3516
+ },
3517
+ {
3518
+ "id": "uYgLRDyEt3AHrwiSRlJTd",
3519
+ "type": "arrow",
3520
+ "x": 499.7296117777784,
3521
+ "y": 624.6433656190475,
3522
+ "width": 310.7428162857141,
3523
+ "height": 0,
3524
+ "angle": 0,
3525
+ "strokeColor": "#1971c2",
3526
+ "backgroundColor": "transparent",
3527
+ "fillStyle": "solid",
3528
+ "strokeWidth": 2,
3529
+ "strokeStyle": "solid",
3530
+ "roughness": 1,
3531
+ "opacity": 100,
3532
+ "groupIds": [],
3533
+ "frameId": null,
3534
+ "index": "b06",
3535
+ "roundness": {
3536
+ "type": 2
3537
+ },
3538
+ "seed": 585151834,
3539
+ "version": 246,
3540
+ "versionNonce": 503628294,
3541
+ "isDeleted": false,
3542
+ "boundElements": [
3543
+ {
3544
+ "id": "rZLS5kSP1NB2jGUtZiGaS",
3545
+ "type": "text"
3546
+ }
3547
+ ],
3548
+ "updated": 1739538683930,
3549
+ "link": null,
3550
+ "locked": false,
3551
+ "points": [
3552
+ [
3553
+ 0,
3554
+ 0
3555
+ ],
3556
+ [
3557
+ -310.7428162857141,
3558
+ 0
3559
+ ]
3560
+ ],
3561
+ "lastCommittedPoint": null,
3562
+ "startBinding": null,
3563
+ "endBinding": null,
3564
+ "startArrowhead": null,
3565
+ "endArrowhead": "arrow",
3566
+ "elbowed": false
3567
+ },
3568
+ {
3569
+ "id": "rZLS5kSP1NB2jGUtZiGaS",
3570
+ "type": "text",
3571
+ "x": 296.4582021090424,
3572
+ "y": 597.7683656190475,
3573
+ "width": 95.80000305175781,
3574
+ "height": 53.75,
3575
+ "angle": 0,
3576
+ "strokeColor": "#1971c2",
3577
+ "backgroundColor": "transparent",
3578
+ "fillStyle": "solid",
3579
+ "strokeWidth": 2,
3580
+ "strokeStyle": "solid",
3581
+ "roughness": 1,
3582
+ "opacity": 100,
3583
+ "groupIds": [],
3584
+ "frameId": null,
3585
+ "index": "b07",
3586
+ "roundness": null,
3587
+ "seed": 580188698,
3588
+ "version": 26,
3589
+ "versionNonce": 1636923354,
3590
+ "isDeleted": false,
3591
+ "boundElements": null,
3592
+ "updated": 1739538682931,
3593
+ "link": null,
3594
+ "locked": false,
3595
+ "text": "80%",
3596
+ "fontSize": 43,
3597
+ "fontFamily": 5,
3598
+ "textAlign": "center",
3599
+ "verticalAlign": "middle",
3600
+ "containerId": "uYgLRDyEt3AHrwiSRlJTd",
3601
+ "originalText": "80%",
3602
+ "autoResize": true,
3603
+ "lineHeight": 1.25
3604
+ },
3605
+ {
3606
+ "id": "eDsqBulbFcLrNhwPyIxqz",
3607
+ "type": "arrow",
3608
+ "x": 499.7296117777784,
3609
+ "y": 690.6433656190475,
3610
+ "width": 310.7428162857141,
3611
+ "height": 0,
3612
+ "angle": 0,
3613
+ "strokeColor": "#1971c2",
3614
+ "backgroundColor": "transparent",
3615
+ "fillStyle": "solid",
3616
+ "strokeWidth": 2,
3617
+ "strokeStyle": "solid",
3618
+ "roughness": 1,
3619
+ "opacity": 100,
3620
+ "groupIds": [],
3621
+ "frameId": null,
3622
+ "index": "b08",
3623
+ "roundness": {
3624
+ "type": 2
3625
+ },
3626
+ "seed": 1427883802,
3627
+ "version": 282,
3628
+ "versionNonce": 850178074,
3629
+ "isDeleted": false,
3630
+ "boundElements": [
3631
+ {
3632
+ "type": "text",
3633
+ "id": "cMYFXOC4EBwxU84qzI4Ra"
3634
+ }
3635
+ ],
3636
+ "updated": 1739538660230,
3637
+ "link": null,
3638
+ "locked": false,
3639
+ "points": [
3640
+ [
3641
+ 0,
3642
+ 0
3643
+ ],
3644
+ [
3645
+ -310.7428162857141,
3646
+ 0
3647
+ ]
3648
+ ],
3649
+ "lastCommittedPoint": null,
3650
+ "startBinding": null,
3651
+ "endBinding": null,
3652
+ "startArrowhead": null,
3653
+ "endArrowhead": "arrow",
3654
+ "elbowed": false
3655
+ },
3656
+ {
3657
+ "id": "cMYFXOC4EBwxU84qzI4Ra",
3658
+ "type": "text",
3659
+ "x": 250.54682183644195,
3660
+ "y": 263.99404761904736,
3661
+ "width": 184.03334045410156,
3662
+ "height": 53.75,
3663
+ "angle": 0,
3664
+ "strokeColor": "#1971c2",
3665
+ "backgroundColor": "transparent",
3666
+ "fillStyle": "solid",
3667
+ "strokeWidth": 2,
3668
+ "strokeStyle": "solid",
3669
+ "roughness": 1,
3670
+ "opacity": 100,
3671
+ "groupIds": [],
3672
+ "frameId": null,
3673
+ "index": "b09",
3674
+ "roundness": null,
3675
+ "seed": 1821999642,
3676
+ "version": 22,
3677
+ "versionNonce": 970679578,
3678
+ "isDeleted": false,
3679
+ "boundElements": null,
3680
+ "updated": 1739538657291,
3681
+ "link": null,
3682
+ "locked": false,
3683
+ "text": "Progress",
3684
+ "fontSize": 43,
3685
+ "fontFamily": 5,
3686
+ "textAlign": "center",
3687
+ "verticalAlign": "middle",
3688
+ "containerId": "eDsqBulbFcLrNhwPyIxqz",
3689
+ "originalText": "Progress",
3690
+ "autoResize": true,
3691
+ "lineHeight": 1.25
3692
+ },
3693
+ {
3694
+ "id": "lYfgJTLRD9XeilnRoTnvk",
3695
+ "type": "arrow",
3696
+ "x": 498.2777777777786,
3697
+ "y": 823.7261904761901,
3698
+ "width": 308.57142857142856,
3699
+ "height": 2.2737367544323206e-13,
3700
+ "angle": 0,
3701
+ "strokeColor": "#1e1e1e",
3702
+ "backgroundColor": "transparent",
3703
+ "fillStyle": "solid",
3704
+ "strokeWidth": 2,
3705
+ "strokeStyle": "solid",
3706
+ "roughness": 1,
3707
+ "opacity": 100,
3708
+ "groupIds": [],
3709
+ "frameId": null,
3710
+ "index": "b0A",
3711
+ "roundness": {
3712
+ "type": 2
3713
+ },
3714
+ "seed": 1228312090,
3715
+ "version": 77,
3716
+ "versionNonce": 729234246,
3717
+ "isDeleted": false,
3718
+ "boundElements": [
3719
+ {
3720
+ "type": "text",
3721
+ "id": "0fboygsHa8RH_OGVLzoY8"
3722
+ }
3723
+ ],
3724
+ "updated": 1739538718870,
3725
+ "link": null,
3726
+ "locked": false,
3727
+ "points": [
3728
+ [
3729
+ 0,
3730
+ 0
3731
+ ],
3732
+ [
3733
+ -308.57142857142856,
3734
+ -2.2737367544323206e-13
3735
+ ]
3736
+ ],
3737
+ "lastCommittedPoint": null,
3738
+ "startBinding": {
3739
+ "elementId": "I6mhzWyAkaL5SK0kIwyAW",
3740
+ "focus": -0.4899645808736722,
3741
+ "gap": 4.285714285714107,
3742
+ "fixedPoint": null
3743
+ },
3744
+ "endBinding": {
3745
+ "elementId": "pHgJMHYOyw0MT_VTpj8zt",
3746
+ "focus": 0.4899645808736715,
3747
+ "gap": 3.1713877142857996,
3748
+ "fixedPoint": null
3749
+ },
3750
+ "startArrowhead": null,
3751
+ "endArrowhead": "arrow",
3752
+ "elbowed": false
3753
+ },
3754
+ {
3755
+ "id": "0fboygsHa8RH_OGVLzoY8",
3756
+ "type": "text",
3757
+ "x": 249.14206501794325,
3758
+ "y": 796.85119047619,
3759
+ "width": 189.6999969482422,
3760
+ "height": 53.75,
3761
+ "angle": 0,
3762
+ "strokeColor": "#1e1e1e",
3763
+ "backgroundColor": "transparent",
3764
+ "fillStyle": "solid",
3765
+ "strokeWidth": 2,
3766
+ "strokeStyle": "solid",
3767
+ "roughness": 1,
3768
+ "opacity": 100,
3769
+ "groupIds": [],
3770
+ "frameId": null,
3771
+ "index": "b0B",
3772
+ "roundness": null,
3773
+ "seed": 387706202,
3774
+ "version": 23,
3775
+ "versionNonce": 236577434,
3776
+ "isDeleted": false,
3777
+ "boundElements": null,
3778
+ "updated": 1739538715248,
3779
+ "link": null,
3780
+ "locked": false,
3781
+ "text": "Research",
3782
+ "fontSize": 43,
3783
+ "fontFamily": 5,
3784
+ "textAlign": "center",
3785
+ "verticalAlign": "middle",
3786
+ "containerId": "lYfgJTLRD9XeilnRoTnvk",
3787
+ "originalText": "Research",
3788
+ "autoResize": true,
3789
+ "lineHeight": 1.25
3790
+ },
3791
+ {
3792
+ "id": "bzKqFwCUG31YaqAl1sc0r",
3793
+ "type": "text",
3794
+ "x": 513.9920634920642,
3795
+ "y": 19.619047619047308,
3796
+ "width": 117.19999694824219,
3797
+ "height": 36.25,
3798
+ "angle": 0,
3799
+ "strokeColor": "#1e1e1e",
3800
+ "backgroundColor": "transparent",
3801
+ "fillStyle": "solid",
3802
+ "strokeWidth": 2,
3803
+ "strokeStyle": "solid",
3804
+ "roughness": 1,
3805
+ "opacity": 100,
3806
+ "groupIds": [],
3807
+ "frameId": null,
3808
+ "index": "b0C",
3809
+ "roundness": null,
3810
+ "seed": 2104074694,
3811
+ "version": 81,
3812
+ "versionNonce": 379945370,
3813
+ "isDeleted": false,
3814
+ "boundElements": null,
3815
+ "updated": 1739538738880,
3816
+ "link": null,
3817
+ "locked": false,
3818
+ "text": "Backend",
3819
+ "fontSize": 29,
3820
+ "fontFamily": 5,
3821
+ "textAlign": "left",
3822
+ "verticalAlign": "top",
3823
+ "containerId": null,
3824
+ "originalText": "Backend",
3825
+ "autoResize": true,
3826
+ "lineHeight": 1.25
3827
+ },
3828
+ {
3829
+ "id": "37WuryqJ6CtCLr7kgguKO",
3830
+ "type": "text",
3831
+ "x": 61.134920634921514,
3832
+ "y": 1080.8690476190473,
3833
+ "width": 99.98332977294922,
3834
+ "height": 36.25,
3835
+ "angle": 0,
3836
+ "strokeColor": "#1e1e1e",
3837
+ "backgroundColor": "transparent",
3838
+ "fillStyle": "solid",
3839
+ "strokeWidth": 2,
3840
+ "strokeStyle": "solid",
3841
+ "roughness": 1,
3842
+ "opacity": 100,
3843
+ "groupIds": [],
3844
+ "frameId": null,
3845
+ "index": "b0D",
3846
+ "roundness": null,
3847
+ "seed": 1667887066,
3848
+ "version": 26,
3849
+ "versionNonce": 635381574,
3850
+ "isDeleted": false,
3851
+ "boundElements": null,
3852
+ "updated": 1739538757687,
3853
+ "link": null,
3854
+ "locked": false,
3855
+ "text": "Next.js",
3856
+ "fontSize": 29,
3857
+ "fontFamily": 5,
3858
+ "textAlign": "left",
3859
+ "verticalAlign": "top",
3860
+ "containerId": null,
3861
+ "originalText": "Next.js",
3862
+ "autoResize": true,
3863
+ "lineHeight": 1.25
3864
+ },
3865
+ {
3866
+ "id": "o6E3Sz3IUeDANri0kiCoG",
3867
+ "type": "text",
3868
+ "x": 538.2777777777789,
3869
+ "y": 1080.869047619047,
3870
+ "width": 73.58333587646484,
3871
+ "height": 36.25,
3872
+ "angle": 0,
3873
+ "strokeColor": "#1e1e1e",
3874
+ "backgroundColor": "transparent",
3875
+ "fillStyle": "solid",
3876
+ "strokeWidth": 2,
3877
+ "strokeStyle": "solid",
3878
+ "roughness": 1,
3879
+ "opacity": 100,
3880
+ "groupIds": [],
3881
+ "frameId": null,
3882
+ "index": "b0E",
3883
+ "roundness": null,
3884
+ "seed": 1476827546,
3885
+ "version": 29,
3886
+ "versionNonce": 843222854,
3887
+ "isDeleted": false,
3888
+ "boundElements": null,
3889
+ "updated": 1739538763503,
3890
+ "link": null,
3891
+ "locked": false,
3892
+ "text": "Flask",
3893
+ "fontSize": 29,
3894
+ "fontFamily": 5,
3895
+ "textAlign": "left",
3896
+ "verticalAlign": "top",
3897
+ "containerId": null,
3898
+ "originalText": "Flask",
3899
+ "autoResize": true,
3900
+ "lineHeight": 1.25
3901
+ },
3902
+ {
3903
+ "id": "ltFDnjFsckJBnlLfiuE5q",
3904
+ "type": "text",
3905
+ "x": 1859.5666706349214,
3906
+ "y": 584.8750004761902,
3907
+ "width": 491.5333251953125,
3908
+ "height": 36.25,
3909
+ "angle": 0,
3910
+ "strokeColor": "#1971c2",
3911
+ "backgroundColor": "transparent",
3912
+ "fillStyle": "solid",
3913
+ "strokeWidth": 2,
3914
+ "strokeStyle": "solid",
3915
+ "roughness": 1,
3916
+ "opacity": 100,
3917
+ "groupIds": [],
3918
+ "frameId": null,
3919
+ "index": "b0F",
3920
+ "roundness": null,
3921
+ "seed": 62475526,
3922
+ "version": 72,
3923
+ "versionNonce": 2104305498,
3924
+ "isDeleted": false,
3925
+ "boundElements": null,
3926
+ "updated": 1739538838299,
3927
+ "link": null,
3928
+ "locked": false,
3929
+ "text": "gemini-2.0-flash-lite-preview-02-05",
3930
+ "fontSize": 29,
3931
+ "fontFamily": 5,
3932
+ "textAlign": "left",
3933
+ "verticalAlign": "top",
3934
+ "containerId": null,
3935
+ "originalText": "gemini-2.0-flash-lite-preview-02-05",
3936
+ "autoResize": true,
3937
+ "lineHeight": 1.25
3938
+ },
3939
+ {
3940
+ "id": "Zo2prMV96Au6_0TszGKer",
3941
+ "type": "text",
3942
+ "x": 918.2777777777786,
3943
+ "y": 1226.5833333333335,
3944
+ "width": 384.45001220703125,
3945
+ "height": 145,
3946
+ "angle": 0,
3947
+ "strokeColor": "#1e1e1e",
3948
+ "backgroundColor": "transparent",
3949
+ "fillStyle": "solid",
3950
+ "strokeWidth": 2,
3951
+ "strokeStyle": "solid",
3952
+ "roughness": 1,
3953
+ "opacity": 100,
3954
+ "groupIds": [],
3955
+ "frameId": null,
3956
+ "index": "b0G",
3957
+ "roundness": null,
3958
+ "seed": 600264474,
3959
+ "version": 77,
3960
+ "versionNonce": 71886874,
3961
+ "isDeleted": false,
3962
+ "boundElements": null,
3963
+ "updated": 1739538926145,
3964
+ "link": null,
3965
+ "locked": false,
3966
+ "text": "Data Extraction\n- Manual + BeautifulSoup\n- Crawl4AI + BeautifulSoup\n",
3967
+ "fontSize": 29,
3968
+ "fontFamily": 5,
3969
+ "textAlign": "left",
3970
+ "verticalAlign": "top",
3971
+ "containerId": null,
3972
+ "originalText": "Data Extraction\n- Manual + BeautifulSoup\n- Crawl4AI + BeautifulSoup\n",
3973
+ "autoResize": true,
3974
+ "lineHeight": 1.25
3975
+ },
3976
+ {
3977
+ "id": "QwQpbmMZYUJCdK5IFIkvr",
3978
+ "type": "text",
3979
+ "x": 642.7474993968266,
3980
+ "y": -357.5833329999999,
3981
+ "width": 1091.949951171875,
3982
+ "height": 105,
3983
+ "angle": 0,
3984
+ "strokeColor": "#1e1e1e",
3985
+ "backgroundColor": "transparent",
3986
+ "fillStyle": "solid",
3987
+ "strokeWidth": 2,
3988
+ "strokeStyle": "solid",
3989
+ "roughness": 1,
3990
+ "opacity": 100,
3991
+ "groupIds": [],
3992
+ "frameId": null,
3993
+ "index": "b0H",
3994
+ "roundness": null,
3995
+ "seed": 925609498,
3996
+ "version": 90,
3997
+ "versionNonce": 1148974406,
3998
+ "isDeleted": false,
3999
+ "boundElements": null,
4000
+ "updated": 1739538963603,
4001
+ "link": null,
4002
+ "locked": false,
4003
+ "text": "KnowledgeNet Architecture",
4004
+ "fontSize": 84,
4005
+ "fontFamily": 5,
4006
+ "textAlign": "left",
4007
+ "verticalAlign": "top",
4008
+ "containerId": null,
4009
+ "originalText": "KnowledgeNet Architecture",
4010
+ "autoResize": true,
4011
+ "lineHeight": 1.25
4012
+ }
4013
+ ],
4014
+ "appState": {
4015
+ "gridSize": 20,
4016
+ "gridStep": 5,
4017
+ "gridModeEnabled": false,
4018
+ "viewBackgroundColor": "#ffffff"
4019
+ },
4020
+ "files": {}
4021
+ }
backend/app.py CHANGED
@@ -1,9 +1,9 @@
1
  # pip install flask[async] flask-socketio flask-cors
2
  # pip install google-genai beautifulsoup4 selenium newspaper3k lxml_html_clean eventlet
3
- from flask import Flask, request, jsonify
4
  from flask_cors import CORS
5
  from flask_socketio import SocketIO, emit
6
- import os, json, logging
7
  from knet import KNet
8
  from dotenv import load_dotenv
9
 
 
1
  # pip install flask[async] flask-socketio flask-cors
2
  # pip install google-genai beautifulsoup4 selenium newspaper3k lxml_html_clean eventlet
3
+ from flask import Flask, request
4
  from flask_cors import CORS
5
  from flask_socketio import SocketIO, emit
6
+ import json, logging
7
  from knet import KNet
8
  from dotenv import load_dotenv
9
 
backend/crawl_ai.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import asyncio
2
+ from crawl4ai import AsyncWebCrawler, CacheMode, BrowserConfig
3
+ import json, sys
4
+ # from base64 import b64decode
5
+
6
+ async def main():
7
+ base_browser = BrowserConfig(
8
+ browser_type="chromium",
9
+ headless=True,
10
+ viewport_width=1920,
11
+ viewport_height=1080,
12
+ accept_downloads=True,
13
+ )
14
+
15
+ # Create an instance of AsyncWebCrawler
16
+ async with AsyncWebCrawler(config=base_browser) as crawler:
17
+ # Run the crawler on a URL
18
+ result = await crawler.arun(url=sys.argv[1], screenshot=False, cache_mode=CacheMode.BYPASS, wait_for="js:() => window.loaded === true")
19
+ # Print the extracted content
20
+ hr = lambda: print(("-" * 80) * 2)
21
+ print(result.markdown)
22
+ hr()
23
+ print(json.dumps(result.media, indent=2))
24
+ hr()
25
+ print(json.dumps(result.links, indent=2))
26
+ hr()
27
+ print(json.dumps(result.downloaded_files, indent=2))
28
+
29
+ # if result.success:
30
+ # # Save screenshot
31
+ # if result.screenshot:
32
+ # with open("screenshot.png", "wb") as f:
33
+ # f.write(b64decode(result.screenshot))
34
+ #
35
+ # # Save PDF
36
+ # if result.pdf:
37
+ # with open("download.pdf", "wb") as f:
38
+ # f.write(result.pdf)
39
+ #
40
+ # print("[OK] PDF & screenshot captured.")
41
+ # else:
42
+ # print("[ERROR]", result.error_message)
43
+
44
+ if __name__ == "__main__":
45
+ asyncio.run(main())
backend/knet.py CHANGED
@@ -28,8 +28,7 @@ class ResearchProgress:
28
  class KNet:
29
  def __init__(self, api_key: Optional[str] = None):
30
  self.api_key = api_key or os.getenv("GOOGLE_API_KEY")
31
- if not self.api_key:
32
- raise ValueError("Google API key is required")
33
 
34
  # Initialize Google GenAI
35
  genai.configure(api_key=self.api_key)
@@ -49,6 +48,7 @@ class KNet:
49
  self.scraper = WebScraper()
50
  self.logger = logging.getLogger(__name__)
51
  self.max_depth = 3
 
52
  self.min_importance_score = 0.6
53
 
54
  self.search_prompt = """Generate 3-5 specific search queries to research the following topic: {topic}
@@ -74,7 +74,7 @@ class KNet:
74
  3. Depth vs breadth tradeoff
75
  4. Information saturation
76
 
77
- Return only: {"decision": true/false}"""
78
 
79
  # Simplified decision schema for branching
80
  self.branch_schema = {
@@ -156,7 +156,7 @@ class KNet:
156
  root_node = ResearchNode(topic)
157
  to_explore = deque([(root_node, 0)]) # (node, depth) pairs
158
  explored_queries = set()
159
- max_branches = self.max_depth * 3
160
 
161
  progress.update(10, "Starting research...")
162
 
@@ -167,10 +167,7 @@ class KNet:
167
  continue
168
 
169
  self.logger.info(f"Exploring: {current_node.query} (Depth: {current_depth})")
170
- progress.update(
171
- 30 + (len(explored_queries) * 50 / max_branches),
172
- f"Exploring: {current_node.query}",
173
- )
174
 
175
  # Search and scrape
176
  current_node.data = self.scraper.search_and_scrape(current_node.query)
@@ -182,9 +179,7 @@ class KNet:
182
  new_branches = self._analyze_and_branch(current_node)
183
  for branch in new_branches:
184
  to_explore.append((branch, current_depth + 1))
185
- self.logger.info(
186
- f"Added {len(new_branches)} new branches at depth {current_depth + 1}"
187
- )
188
 
189
  # Generate final report
190
  progress.update(80, "Generating comprehensive report...")
@@ -334,9 +329,8 @@ Part 2: Detailed Analysis and References
334
  "media": media_content,
335
  "research_tree": build_tree_structure(root_node),
336
  "metadata": {
337
- "total_sources": len(all_research_data),
338
- "max_depth_reached": root_node.depth,
339
- "total_branches": len(root_node.children),
340
  "total_tokens": self.token_count,
341
  },
342
  }
 
28
  class KNet:
29
  def __init__(self, api_key: Optional[str] = None):
30
  self.api_key = api_key or os.getenv("GOOGLE_API_KEY")
31
+ assert self.api_key, "Google API key is required"
 
32
 
33
  # Initialize Google GenAI
34
  genai.configure(api_key=self.api_key)
 
48
  self.scraper = WebScraper()
49
  self.logger = logging.getLogger(__name__)
50
  self.max_depth = 3
51
+ self.max_breadth = 3
52
  self.min_importance_score = 0.6
53
 
54
  self.search_prompt = """Generate 3-5 specific search queries to research the following topic: {topic}
 
74
  3. Depth vs breadth tradeoff
75
  4. Information saturation
76
 
77
+ Return only: decision: true/false"""
78
 
79
  # Simplified decision schema for branching
80
  self.branch_schema = {
 
156
  root_node = ResearchNode(topic)
157
  to_explore = deque([(root_node, 0)]) # (node, depth) pairs
158
  explored_queries = set()
159
+ max_branches = self.max_breadth
160
 
161
  progress.update(10, "Starting research...")
162
 
 
167
  continue
168
 
169
  self.logger.info(f"Exploring: {current_node.query} (Depth: {current_depth})")
170
+ progress.update(30 + int(len(explored_queries) * 50 / max_branches), f"Exploring: {current_node.query}")
 
 
 
171
 
172
  # Search and scrape
173
  current_node.data = self.scraper.search_and_scrape(current_node.query)
 
179
  new_branches = self._analyze_and_branch(current_node)
180
  for branch in new_branches:
181
  to_explore.append((branch, current_depth + 1))
182
+ self.logger.info(f"Added {len(new_branches)} new branches at depth {current_depth + 1}")
 
 
183
 
184
  # Generate final report
185
  progress.update(80, "Generating comprehensive report...")
 
329
  "media": media_content,
330
  "research_tree": build_tree_structure(root_node),
331
  "metadata": {
332
+ "total_sources": root_node.total_children(),
333
+ "max_depth_reached": root_node.max_depth(),
 
334
  "total_tokens": self.token_count,
335
  },
336
  }
backend/output.json ADDED
@@ -0,0 +1,278 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "topic": "What is CUDA programming. How do student's learn it?",
3
+ "timestamp": "2025-02-19T01:42:00.397613",
4
+ "content": "# Research Report: What is CUDA programming. How do student's learn it?
5
+
6
+ Part 1: Overview and Key Findings
7
+ --------------------------------
8
+ ## Part 1: Overview and Key Findings - CUDA Programming and Student Learning
9
+
10
+ **1. Executive Summary**
11
+
12
+ This research report investigates CUDA (Compute Unified Device Architecture) programming, a parallel computing platform and programming model developed by NVIDIA, and explores how students learn this complex technology. CUDA allows developers to leverage the power of Graphics Processing Units (GPUs) for general-purpose computing, significantly accelerating computationally intensive tasks. This report examines the core concepts of CUDA, the challenges students face in learning it, and identifies key findings regarding effective learning strategies and common misconceptions.
13
+
14
+ **2. Key Findings**
15
+
16
+ * **Steep Learning Curve:** Students consistently report a steep learning curve associated with CUDA programming. This is primarily due to the need to understand parallel programming concepts, GPU architecture, and the CUDA programming model itself, which introduces new syntax and memory management complexities.
17
+ * **Conceptual Understanding is Crucial:** A strong foundation in parallel computing principles, including threads, blocks, grids, and memory hierarchies, is essential for successful CUDA programming. Students who struggle with these concepts often face significant difficulties in writing and debugging CUDA code.
18
+ * **Practical Application is Key:** Hands-on experience and practical application are critical for mastering CUDA. Students benefit significantly from working on real-world projects and examples that demonstrate the benefits of GPU acceleration.
19
+ * **Debugging is a Major Challenge:** Debugging CUDA code is often more challenging than debugging traditional CPU code. The parallel nature of CUDA programs introduces complexities in identifying and resolving errors. Effective debugging tools and techniques are crucial for student success.
20
+ * **Resource Availability Matters:** The availability of high-quality learning resources, including tutorials, documentation, example code, and online communities, significantly impacts student learning. Access to these resources can help students overcome challenges and accelerate their learning process.
21
+
22
+
23
+ Part 2: Detailed Analysis and References
24
+ --------------------------------------
25
+ ## Part 2: Detailed Analysis
26
+
27
+ **1. Detailed Analysis (Expanding on Key Findings)**
28
+
29
+ This section delves deeper into the key findings outlined in Part 1, providing a more nuanced understanding of the challenges and opportunities associated with CUDA programming and student learning.
30
+
31
+ * **Steep Learning Curve: Deconstructing the Complexity:** The perceived steep learning curve isn't solely attributable to the novelty of CUDA; it's a confluence of several factors. Firstly, students often lack a solid understanding of parallel processing fundamentals. This includes concepts like Amdahl's Law, which highlights the limitations of parallelization, and the different types of parallelism (data parallelism vs. task parallelism). Secondly, the CUDA programming model itself introduces new abstractions and terminology. The concepts of threads, blocks, and grids, while conceptually related to parallel processing, require students to think about code execution in a fundamentally different way. Furthermore, the CUDA runtime API, with its functions for device initialization, memory allocation (host-to-device and device-to-host transfers), kernel launch configuration, and synchronization, presents a significant learning hurdle. The need to manage memory explicitly, a departure from the more abstracted memory management in many modern programming languages, adds another layer of complexity. Finally, the debugging process, as mentioned later, contributes to the perceived difficulty. Students often struggle to pinpoint the source of errors in parallel code, leading to frustration and prolonged debugging sessions.
32
+
33
+ * **Conceptual Understanding is Crucial: Bridging the Theory-Practice Gap:** While practical application is essential (as discussed below), a robust understanding of the underlying concepts is paramount. Students who grasp the principles of thread synchronization (e.g., using `__syncthreads()`), memory access patterns (e.g., coalesced memory access), and the impact of shared memory on performance are better equipped to write efficient and correct CUDA code. Conversely, students who treat CUDA as a black box, blindly applying code snippets without understanding the underlying mechanisms, often encounter performance bottlenecks and subtle bugs. Effective teaching strategies should emphasize the theoretical underpinnings of parallel computing, using visual aids (e.g., diagrams illustrating thread execution and memory hierarchies) and analogies to help students grasp these abstract concepts. Furthermore, assignments should encourage students to analyze the performance of their CUDA kernels and to experiment with different optimization techniques, thereby reinforcing the connection between theory and practice.
34
+
35
+ * **Practical Application is Key: Beyond Toy Examples:** The importance of hands-on experience cannot be overstated. However, the nature of these practical applications is crucial. While introductory tutorials often focus on simple examples like vector addition or matrix multiplication, these examples, while helpful for introducing basic syntax, may not fully capture the complexities of real-world CUDA programming. Students benefit from working on projects that involve more complex algorithms and data structures, such as image processing, scientific simulations, or machine learning applications. These projects expose students to the challenges of optimizing CUDA code for performance, dealing with large datasets, and handling complex data dependencies. Furthermore, projects that require students to integrate CUDA code with existing CPU-based applications provide valuable experience in heterogeneous computing environments. The use of profiling tools (e.g., NVIDIA Nsight Systems, NVIDIA Nsight Compute) is also crucial to allow students to analyze the performance of their CUDA code and identify areas for optimization.
36
+
37
+ * **Debugging is a Major Challenge: Tools and Techniques for Parallel Code:** Debugging CUDA code is inherently more complex than debugging sequential code. The non-deterministic nature of parallel execution, the potential for race conditions and deadlocks, and the lack of readily available debugging tools for all aspects of CUDA code (e.g., kernel execution) contribute to this difficulty. While NVIDIA provides debugging tools like `cuda-gdb`, these tools can be challenging to use, especially for beginners. Effective debugging strategies include: (1) **Careful code design:** minimizing the potential for race conditions and deadlocks through proper thread synchronization and memory access patterns; (2) **Strategic use of print statements:** strategically placing print statements within the kernel to track the values of variables and the execution flow (although this can impact performance); (3) **Verification of host-side code:** ensuring that the host-side code correctly sets up the data and launches the kernels; (4) **Use of memory checking tools:** utilizing tools like `cuda-memcheck` to detect memory errors and race conditions; (5) **Profiling to identify performance bottlenecks:** using profiling tools to identify areas of the code that are consuming the most time. Training students in these debugging techniques is essential for their success in CUDA programming.
38
+
39
+ * **Resource Availability Matters: Curating a Learning Ecosystem:** The availability of high-quality learning resources is critical for student success. Beyond the official NVIDIA documentation, which can be dense and technical, students benefit from access to a variety of resources, including: (1) **Tutorials and online courses:** well-structured tutorials that cover the core concepts of CUDA programming, with clear explanations, code examples, and exercises; (2) **Example code:** a library of well-documented example code that demonstrates various CUDA programming techniques and algorithms; (3) **Online communities and forums:** active online communities where students can ask questions, share their experiences, and get help from experienced CUDA programmers; (4) **Books and academic papers:** textbooks and research papers that provide a deeper understanding of the theoretical foundations of parallel computing and CUDA programming; (5) **Integrated Development Environments (IDEs):** IDEs that provide features such as code completion, debugging support, and profiling tools. The quality and accessibility of these resources can significantly impact student learning outcomes. Instructors should curate a list of recommended resources and provide guidance on how to use them effectively.
40
+
41
+ **2. Related Topics and Branches**
42
+
43
+ CUDA programming is intricately linked to several related topics and branches of computer science, including:
44
+
45
+ * **Parallel Computing Fundamentals:** This encompasses the core principles of parallel processing, including Amdahl's Law, Gustafson's Law, Flynn's Taxonomy, and the different models of parallel computation (e.g., shared-memory, distributed-memory). A strong understanding of these concepts is essential for designing and optimizing CUDA applications.
46
+ * **GPU Architecture and Organization:** Understanding the architecture of GPUs, including the organization of streaming multiprocessors (SMs), CUDA cores, memory hierarchies (global, shared, local, registers), and the memory access patterns, is crucial for writing efficient CUDA code. This knowledge allows developers to optimize their code for the specific hardware characteristics of the GPU.
47
+ * **Computer Architecture:** CUDA programming benefits from a foundational understanding of computer architecture, including topics like memory organization, cache coherence, and instruction-level parallelism. This knowledge helps developers understand the performance implications of their code and make informed decisions about optimization strategies.
48
+ * **High-Performance Computing (HPC):** CUDA is a key technology in HPC, enabling the acceleration of computationally intensive tasks in scientific simulations, data analysis, and other domains. Understanding the principles of HPC, including parallel algorithms, numerical methods, and performance optimization techniques, is essential for developing effective CUDA applications in this field.
49
+ * **Machine Learning and Deep Learning:** GPUs, and CUDA in particular, have revolutionized the field of machine learning and deep learning. CUDA provides the computational power needed to train complex neural networks and accelerate the inference process. Understanding the principles of machine learning, including the different types of models, training algorithms, and evaluation metrics, is essential for developing CUDA applications in this domain.
50
+ * **Computer Graphics:** GPUs were originally designed for computer graphics, and CUDA can be used to accelerate various graphics-related tasks, such as ray tracing, rendering, and image processing. Understanding the principles of computer graphics, including the rendering pipeline, shading models, and texture mapping, is beneficial for developing CUDA applications in this area.
51
+ * **Heterogeneous Computing:** CUDA is a key technology for heterogeneous computing, which involves using a combination of CPUs and GPUs to accelerate applications. Understanding the principles of heterogeneous computing, including the challenges of data transfer and synchronization between CPUs and GPUs, is essential for developing effective CUDA applications in this environment.
52
+
53
+ **3. Sources and References**
54
+
55
+ This section lists the sources and references used in this report. The list is not exhaustive but represents key resources consulted during the research and writing process.
56
+
57
+ * **NVIDIA CUDA Documentation:**
58
+ * NVIDIA. *CUDA C Programming Guide*. [https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html](https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html) (Accessed October 26, 2023).
59
+ * NVIDIA. *CUDA Toolkit Documentation*. [https://docs.nvidia.com/cuda/index.html](https://docs.nvidia.com/cuda/index.html) (Accessed October 26, 2023).
60
+ * **Books:**
61
+ * Farber, R. (2013). *CUDA Application Design and Development*. Morgan Kaufmann.
62
+ * Sanders, J., & Kandrot, E. (2010). *CUDA by Example: An Introduction to General-Purpose GPU Programming*. Addison-Wesley Professional.
63
+ * Kirk, D. B., & Hwu, W. W. (2010). *Programming Massively Parallel Processors: A Hands-on Approach*. Morgan Kaufmann.
64
+ * **Academic Papers and Research Articles:**
65
+ * (Example: Insert relevant academic papers here. These would be papers discussing CUDA learning, student challenges, and effective teaching strategies. These would need to be found through a literature search.)
66
+ * **Online Resources:**
67
+ * Stack Overflow (search for CUDA-related questions and answers)
68
+ * NVIDIA Developer Forums
69
+ * Online CUDA tutorials and courses (e.g., Coursera, Udacity, edX)
70
+ * **Industry Reports:**
71
+ * (Example: Insert relevant industry reports here, if any, discussing GPU adoption, market trends, etc.)
72
+
73
+ **(Note: The list of academic papers and industry reports is intentionally left incomplete. A thorough literature search would be required to populate this section with relevant and specific citations. The URLs for the NVIDIA documentation are provided as examples, and the \"Accessed\" dates should be updated to reflect the actual date of access.)**
74
+ ",
75
+ "media": {
76
+ "images": [
77
+ "https://media.geeksforgeeks.org/auth-dashboard-uploads/gfgFooterLogo.png",
78
+ "https://media.geeksforgeeks.org/wp-content/cdn-uploads/gfg_200x200-min.png",
79
+ "https://media.geeksforgeeks.org/wp-content/uploads/20241228104807135343/GATE-CSE--2027-live-online-classes.webp",
80
+ "https://media.geeksforgeeks.org/wp-content/uploads/20250201111442430181/GATE-Rank-Booster-with-Expert-Curated-Questions.webp",
81
+ "https://media.geeksforgeeks.org/auth-dashboard-uploads/Google-news.svg",
82
+ "https://media.geeksforgeeks.org/auth-dashboard-uploads/googleplay.png",
83
+ "https://media.geeksforgeeks.org/auth-dashboard-uploads/appstore.png",
84
+ "https://media.geeksforgeeks.org/gfg-gg-logo.svg",
85
+ "https://media.geeksforgeeks.org/wp-content/uploads/20241228104806995039/GATE-CSE--2028-live-online-classes.webp",
86
+ "https://media.geeksforgeeks.org/auth-dashboard-uploads/createImprovementIcon.png",
87
+ "https://media.geeksforgeeks.org/auth-dashboard-uploads/suggestChangeIcon.png",
88
+ "https://media.geeksforgeeks.org/wp-content/uploads/20211007112954/UntitledDiagram1.jpg",
89
+ "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",
90
+ "https://towardsai.net/wp-content/uploads/2019/05/towards-ai-square-circle-png.png",
91
+ "https://i3.wp.com/miro.medium.com/v2/resize:fit:700/0*EIxT7LfrnnlQbQa5?w=1920&resize=1920,288&ssl=1",
92
+ "https://i0.wp.com/miro.medium.com/v2/resize:fit:682/1*ledApf88iT1bk1Y6CZeajg.png?w=1920&resize=1920,806&ssl=1",
93
+ "https://i3.wp.com/miro.medium.com/v2/resize:fit:1250/0*oGHOmf5_PamKuVJw?w=1223&resize=1223,1920&ssl=1",
94
+ "https://i1.wp.com/cdn-images-1.medium.com/max/2600/1*vM2WjCbYbeEhYqD5PjV2Vg.png?w=1920&resize=1920,1080&ssl=1",
95
+ "https://i0.wp.com/cdn-images-1.medium.com/max/2600/1*qQCeR3V1fpQGuvH0Fygd5A.png?w=1673&resize=1673,941&ssl=1",
96
+ "https://towardsai.net/wp-content/uploads/2024/09/towards-ai-og-graph.jpg",
97
+ "https://i2.wp.com/miro.medium.com/v2/resize:fit:700/0*GpJQB8koIj4uLM38?w=1920&resize=1920,1920&ssl=1",
98
+ "https://i2.wp.com/miro.medium.com/v2/resize:fit:700/0*wbfcIdx8cbH4cgsP?ssl=1",
99
+ "https://i0.wp.com/miro.medium.com/v2/resize:fit:700/1*_sr-c9hmjRC_SkTBLAeWjQ.jpeg?w=1920&resize=1920,1920&ssl=1",
100
+ "https://i1.wp.com/miro.medium.com/v2/resize:fit:640/1*g1cCN-3HEJfOVmR6801ENw.jpeg?w=1920&resize=1920,1075&ssl=1",
101
+ "https://i0.wp.com/miro.medium.com/v2/resize:fit:875/1*5uCB8jmlo6bNSDgEdxwJOQ.png?w=875&resize=875,583&ssl=1",
102
+ "https://i2.wp.com/miro.medium.com/v2/resize:fit:5200/0*NJhMhgcPYGzOtVgR?w=1920&resize=1920,1440&ssl=1",
103
+ "https://i0.wp.com/cdn-images-1.medium.com/max/2600/1*ws7LHHpu_G0esoNWqhaNQA.jpeg?w=1440&resize=1440,811&ssl=1",
104
+ "https://i0.wp.com/miro.medium.com/v2/resize:fit:700/0*iM9J5VZxrORpmjtZ?w=1920&resize=1920,1267&ssl=1",
105
+ "https://i0.wp.com/cdn-images-1.medium.com/max/1024/1*93TEhFK2gkvw366c3t-p_g.jpeg?w=1024&resize=1024,576&ssl=1",
106
+ "https://towardsai.net/wp-content/uploads/2019/05/towards-ai-horizontal-min.png",
107
+ "https://i3.wp.com/miro.medium.com/v2/resize:fit:700/1*7Xon3nLkfGmxZGdagoVIKg.jpeg?w=1920&resize=1920,1036&ssl=1",
108
+ "https://i3.wp.com/miro.medium.com/v2/resize:fit:571/1*3JnZNmpehaZrpP660pN52g.png?w=1920&resize=1920,1171&ssl=1",
109
+ "https://i2.wp.com/miro.medium.com/v2/resize:fit:700/0*wbfcIdx8cbH4cgsP?w=700&resize=700,394&ssl=1",
110
+ "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",
111
+ "https://i0.wp.com/cdn-images-1.medium.com/max/2600/1*uslR7oo6jjIr1xCD2I3ktg.png?w=1920&resize=1920,1079&ssl=1",
112
+ "https://developer-blogs.nvidia.com/wp-content/uploads/2017/01/CUDA-Blog-Image-1000x600-1.jpg",
113
+ "https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/epilog-operations-matrix-multiplication-featured-1.png",
114
+ "https://developer-blogs.nvidia.com/wp-content/uploads/2024/06/doca.png",
115
+ "https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1.jpg",
116
+ "https://developer.nvidia.com/blog/parallelforall/wp-content/uploads/2017/01/cuda_ai_cube-300x300.jpg",
117
+ "https://developer.nvidia.com/blog/parallelforall/wp-content/uploads/2017/01/cuda_indexing.png",
118
+ "https://developer-blogs.nvidia.com/wp-content/uploads/2020/05/cuda-blocks-scalability.png",
119
+ "https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/cuda-graphic.jpg",
120
+ "https://developer-blogs.nvidia.com/wp-content/uploads/2012/12/cuda_fortran_simple.gif",
121
+ "https://secure.gravatar.com/avatar/0cc5e1ce6bfacc40a08e21f106d5f8b4?s=131&d=retro&r=g",
122
+ "https://developer-blogs.nvidia.com/wp-content/uploads/2020/10/dli-class-cmulti.png",
123
+ "https://developer-blogs.nvidia.com/wp-content/uploads/2012/10/CUDA_Cube_1K.jpg",
124
+ "https://developer-blogs.nvidia.com/wp-content/uploads/2024/04/computational-graph-with-three-nodes.png",
125
+ "https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/images/nvidia-logo_28b633c7.svg",
126
+ "https://developer-blogs.nvidia.com/wp-content/uploads/2022/03/NVIDIA-HPC-SDK-featured_16x9_2.png",
127
+ "https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/cuda-abstract-graphic.jpg",
128
+ "https://pmc.ncbi.nlm.nih.gov/static/img/us_flag.svg",
129
+ "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0eiIvPjwvc3ZnPg==",
130
+ "https://pmc.ncbi.nlm.nih.gov/static/img/icon-dot-gov.svg",
131
+ "https://pmc.ncbi.nlm.nih.gov/static/img/usa-icons-bg/search--white.svg",
132
+ "https://pmc.ncbi.nlm.nih.gov/static/img/usa-icons/close.svg",
133
+ "https://pmc.ncbi.nlm.nih.gov/static/img/icon-https.svg",
134
+ "https://cdn.ncbi.nlm.nih.gov/pmc/cms/images/pmc-card-share.jpg?_=0",
135
+ "https://cdn.ncbi.nlm.nih.gov/pmc/banners/logo-pheelsevier.png",
136
+ "https://cdn.ncbi.nlm.nih.gov/pmc/blobs/1a0e/9761899/c8c457beb2bb/gr1_lrg.jpg",
137
+ "https://pmc.ncbi.nlm.nih.gov/static/img/ncbi-logos/nih-nlm-ncbi--white.svg",
138
+ "https://moldstud.com/uploads/images/top-questions-and-trends-cuda-developers-are-discussing-in-forums.webp?w=544&h=408",
139
+ "https://moldstud.com/uploads/images/marketing-strategies-to-promote-your-mobile-ice-cream-truck-service-app.webp?w=544&h=408",
140
+ "https://moldstud.com/uploads/images/the-role-of-alt-text-in-image-optimization-for-seo-and-accessibility.webp?w=544&h=408",
141
+ "https://moldstud.com/uploads/images/building-a-robust-financial-model-with-cuda-acceleration-enhance-perfo.webp?w=544&h=408",
142
+ "https://moldstud.com/images/logo.svg",
143
+ "https://moldstud.com/uploads/images/how-to-create-a-mobile-development-roadmap-for-beginners.webp?w=544&h=408",
144
+ "https://moldstud.com/favicons/favicon.ico",
145
+ "https://moldstud.com/uploads/images/optimizing-your-first-cuda-code-best-practices-for-new-developers.webp?w=544&h=408",
146
+ "https://moldstud.com/uploads/images/the-benefits-of-pursuing-a-degree-in-php-development.webp?w=544&h=408",
147
+ "https://moldstud.com/images/more-arrow.svg",
148
+ "https://moldstud.com/uploads/images/how-engaging-software-solutions-can-drive-behavioral-change.webp?w=544&h=408",
149
+ "https://moldstud.com/uploads/images/top-questions-and-trends-cuda-developers-are-discussing-in-forums.webp?w=544&h=408",
150
+ "https://moldstud.com/uploads/images/the-role-of-alt-text-in-image-optimization-for-seo-and-accessibility.webp?w=544&h=408",
151
+ "https://moldstud.com/uploads/images/building-a-robust-financial-model-with-cuda-acceleration-enhance-perfo.webp?w=544&h=408",
152
+ "https://moldstud.com/images/logo.svg",
153
+ "https://moldstud.com/uploads/images/how-to-create-a-mobile-development-roadmap-for-beginners.webp?w=544&h=408",
154
+ "https://moldstud.com/favicons/favicon.ico",
155
+ "https://moldstud.com/uploads/images/optimizing-your-first-cuda-code-best-practices-for-new-developers.webp?w=544&h=408",
156
+ "https://moldstud.com/uploads/images/the-benefits-of-pursuing-a-degree-in-php-development.webp?w=544&h=408",
157
+ "https://moldstud.com/images/more-arrow.svg",
158
+ "https://moldstud.com/uploads/images/top-questions-and-trends-cuda-developers-are-discussing-in-forums.webp?w=544&h=408",
159
+ "https://moldstud.com/uploads/images/the-role-of-alt-text-in-image-optimization-for-seo-and-accessibility.webp?w=544&h=408",
160
+ "https://moldstud.com/uploads/images/building-a-robust-financial-model-with-cuda-acceleration-enhance-perfo.webp?w=544&h=408",
161
+ "https://moldstud.com/images/logo.svg",
162
+ "https://moldstud.com/uploads/images/how-to-create-a-mobile-development-roadmap-for-beginners.webp?w=544&h=408",
163
+ "https://moldstud.com/favicons/favicon.ico",
164
+ "https://moldstud.com/uploads/images/the-impact-of-software-development-practices-on-product-engineering.webp?w=544&h=408",
165
+ "https://moldstud.com/uploads/images/optimizing-your-first-cuda-code-best-practices-for-new-developers.webp?w=544&h=408",
166
+ "https://moldstud.com/uploads/images/the-benefits-of-pursuing-a-degree-in-php-development.webp?w=544&h=408",
167
+ "https://moldstud.com/images/more-arrow.svg"
168
+ ],
169
+ "videos": [],
170
+ "links": [
171
+ {
172
+ "url": "https://www.geeksforgeeks.org/introduction-to-cuda-programming/",
173
+ "title": "Introduction to CUDA Programming",
174
+ "summary": ""
175
+ },
176
+ {
177
+ "url": "https://towardsai.net/p/machine-learning/a-beginners-guide-to-cuda-programming",
178
+ "title": "A Beginner’s Guide to CUDA Programming",
179
+ "summary": ""
180
+ },
181
+ {
182
+ "url": "https://developer.nvidia.com/blog/even-easier-introduction-cuda/",
183
+ "title": "An Even Easier Introduction to CUDA",
184
+ "summary": ""
185
+ },
186
+ {
187
+ "url": "https://pmc.ncbi.nlm.nih.gov/articles/PMC9761899/",
188
+ "title": "Online teaching and learning in higher education: Lessons learned in crisis situations",
189
+ "summary": ""
190
+ },
191
+ {
192
+ "url": "https://moldstud.com/articles/p-solving-common-challenges-in-cuda-programming-a-troubleshooting-guide",
193
+ "title": "Solving Common Challenges in CUDA Programming A Troubleshooting Guide",
194
+ "summary": ""
195
+ },
196
+ {
197
+ "url": "https://moldstud.com/articles/p-navigating-the-challenges-of-cuda-development-a-guide-for-novice-programmers",
198
+ "title": "Navigating the Challenges of CUDA Development A Guide for Novice Programmers",
199
+ "summary": ""
200
+ },
201
+ {
202
+ "url": "https://moldstud.com/articles/p-what-are-some-common-challenges-faced-by-cuda-developers",
203
+ "title": "What are some common challenges faced by CUDA developers?",
204
+ "summary": ""
205
+ }
206
+ ],
207
+ "references": []
208
+ },
209
+ "research_tree": {
210
+ "query": "What is CUDA programming. How do student's learn it?",
211
+ "importance": 0,
212
+ "depth": 0,
213
+ "children": [
214
+ {
215
+ "query": "How do different educational approaches (e.g., online courses, university curricula, hands-on projects) impact student learning outcomes in CUDA programming, considering factors like prior programming experience and access to hardware?",
216
+ "importance": 0.9,
217
+ "depth": 1,
218
+ "children": [
219
+ {
220
+ "query": "How does the effectiveness of online CUDA programming courses, as compared to traditional university curricula, vary based on students' prior programming experience and access to high-performance computing hardware, considering the specific challenges and opportunities presented by the shift to online learning during and after crisis situations (e.g., the COVID-19 pandemic)?",
221
+ "importance": 0.9,
222
+ "depth": 2,
223
+ "children": []
224
+ },
225
+ {
226
+ "query": "What are the optimal pedagogical strategies for integrating hands-on CUDA programming projects into both online and in-person learning environments, and how do these strategies impact student engagement, knowledge retention, and the development of practical skills, particularly in contexts with varying levels of hardware accessibility?",
227
+ "importance": 0.8,
228
+ "depth": 2,
229
+ "children": []
230
+ },
231
+ {
232
+ "query": "How can adaptive learning technologies and personalized feedback mechanisms be leveraged to improve the learning outcomes of students with diverse backgrounds and prior programming experience in online CUDA programming courses, and what is the impact of these technologies on student motivation and self-efficacy?",
233
+ "importance": 0.7,
234
+ "depth": 2,
235
+ "children": []
236
+ }
237
+ ]
238
+ },
239
+ {
240
+ "query": "What are the common challenges faced by students when learning CUDA programming, and how can these be addressed through improved teaching methodologies, tools, or resources?",
241
+ "importance": 0.8,
242
+ "depth": 1,
243
+ "children": [
244
+ {
245
+ "query": "Investigate the effectiveness of different debugging and profiling tools in addressing common CUDA programming challenges, comparing their usability and impact on student learning outcomes.",
246
+ "importance": 0.9,
247
+ "depth": 2,
248
+ "children": []
249
+ },
250
+ {
251
+ "query": "Develop and evaluate novel teaching methodologies, such as interactive tutorials or gamified learning experiences, to improve novice programmers' understanding of CUDA concepts and reduce common challenges.",
252
+ "importance": 0.8,
253
+ "depth": 2,
254
+ "children": []
255
+ },
256
+ {
257
+ "query": "Analyze the specific performance tuning challenges faced by students in CUDA programming and propose automated or semi-automated tools to assist in optimizing code for different hardware architectures.",
258
+ "importance": 0.7,
259
+ "depth": 2,
260
+ "children": []
261
+ }
262
+ ]
263
+ },
264
+ {
265
+ "query": "How does the evolution of CUDA (e.g., new versions, features) affect the learning process for students, and what are the implications for curriculum design and educational materials?",
266
+ "importance": 0.7,
267
+ "depth": 1,
268
+ "children": []
269
+ }
270
+ ]
271
+ },
272
+ "metadata": {
273
+ "total_sources": 7,
274
+ "max_depth_reached": 0,
275
+ "total_branches": 3,
276
+ "total_tokens": 4899
277
+ }
278
+ }
backend/research_node.py CHANGED
@@ -24,3 +24,13 @@ class ResearchNode:
24
  current = current.parent
25
  path.append(current.query)
26
  return list(reversed(path))
 
 
 
 
 
 
 
 
 
 
 
24
  current = current.parent
25
  path.append(current.query)
26
  return list(reversed(path))
27
+
28
+ def max_depth(self) -> int:
29
+ if not self.children:
30
+ return self.depth
31
+ return max([child.max_depth() for child in self.children])
32
+
33
+ def total_children(self) -> int:
34
+ if not self.children:
35
+ return 0
36
+ return len(self.children) + sum([child.total_children() for child in self.children])
backend/scraper.py CHANGED
@@ -27,9 +27,7 @@ class WebScraper:
27
  def cleanup(self):
28
  pass
29
 
30
- def search_and_scrape(
31
- self, query: str, num_sites: int = 3
32
- ) -> List[Dict[str, Any]]:
33
  self.logger.info(f"Starting search for: {query}")
34
  search_results = self._google_search(query, num_sites)
35
  self.logger.info(f"Found {len(search_results)} search results")
@@ -120,9 +118,7 @@ class WebScraper:
120
  self.logger.error(f"Scraping error for {url}: {str(e)}")
121
  return None
122
 
123
- def _merge_extraction_results(
124
- self, news_data: Dict, selenium_data: Dict
125
- ) -> Dict[str, Any]:
126
  merged = selenium_data.copy()
127
 
128
  if news_data:
 
27
  def cleanup(self):
28
  pass
29
 
30
+ def search_and_scrape(self, query: str, num_sites: int = 3) -> List[Dict[str, Any]]:
 
 
31
  self.logger.info(f"Starting search for: {query}")
32
  search_results = self._google_search(query, num_sites)
33
  self.logger.info(f"Found {len(search_results)} search results")
 
118
  self.logger.error(f"Scraping error for {url}: {str(e)}")
119
  return None
120
 
121
+ def _merge_extraction_results(self, news_data: Dict, selenium_data: Dict) -> Dict[str, Any]:
 
 
122
  merged = selenium_data.copy()
123
 
124
  if news_data:
frontend/README.md ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
2
+
3
+ ## Getting Started
4
+
5
+ First, run the development server:
6
+
7
+ ```bash
8
+ npm run dev
9
+ # or
10
+ yarn dev
11
+ # or
12
+ pnpm dev
13
+ # or
14
+ bun dev
15
+ ```
16
+
17
+ Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
18
+
19
+ You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
20
+
21
+ This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
22
+
23
+ ## Learn More
24
+
25
+ To learn more about Next.js, take a look at the following resources:
26
+
27
+ - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
28
+ - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
29
+
30
+ You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
31
+
32
+ ## Deploy on Vercel
33
+
34
+ The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
35
+
36
+ Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
frontend/bun.lock ADDED
@@ -0,0 +1,314 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "lockfileVersion": 1,
3
+ "workspaces": {
4
+ "": {
5
+ "name": "knowledge_net",
6
+ "dependencies": {
7
+ "next": "14.2.24",
8
+ "react": "^18",
9
+ "react-dom": "^18",
10
+ },
11
+ "devDependencies": {
12
+ "@types/node": "^20",
13
+ "@types/react": "^18",
14
+ "@types/react-dom": "^18",
15
+ "postcss": "^8",
16
+ "tailwindcss": "^3.4.1",
17
+ "typescript": "^5",
18
+ },
19
+ },
20
+ },
21
+ "packages": {
22
+ "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="],
23
+
24
+ "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="],
25
+
26
+ "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.8", "", { "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA=="],
27
+
28
+ "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
29
+
30
+ "@jridgewell/set-array": ["@jridgewell/set-array@1.2.1", "", {}, "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="],
31
+
32
+ "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="],
33
+
34
+ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="],
35
+
36
+ "@next/env": ["@next/env@14.2.24", "", {}, "sha512-LAm0Is2KHTNT6IT16lxT+suD0u+VVfYNQqM+EJTKuFRRuY2z+zj01kueWXPCxbMBDt0B5vONYzabHGUNbZYAhA=="],
37
+
38
+ "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@14.2.24", "", { "os": "darwin", "cpu": "arm64" }, "sha512-7Tdi13aojnAZGpapVU6meVSpNzgrFwZ8joDcNS8cJVNuP3zqqrLqeory9Xec5TJZR/stsGJdfwo8KeyloT3+rQ=="],
39
+
40
+ "@next/swc-darwin-x64": ["@next/swc-darwin-x64@14.2.24", "", { "os": "darwin", "cpu": "x64" }, "sha512-lXR2WQqUtu69l5JMdTwSvQUkdqAhEWOqJEYUQ21QczQsAlNOW2kWZCucA6b3EXmPbcvmHB1kSZDua/713d52xg=="],
41
+
42
+ "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@14.2.24", "", { "os": "linux", "cpu": "arm64" }, "sha512-nxvJgWOpSNmzidYvvGDfXwxkijb6hL9+cjZx1PVG6urr2h2jUqBALkKjT7kpfurRWicK6hFOvarmaWsINT1hnA=="],
43
+
44
+ "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@14.2.24", "", { "os": "linux", "cpu": "arm64" }, "sha512-PaBgOPhqa4Abxa3y/P92F3kklNPsiFjcjldQGT7kFmiY5nuFn8ClBEoX8GIpqU1ODP2y8P6hio6vTomx2Vy0UQ=="],
45
+
46
+ "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@14.2.24", "", { "os": "linux", "cpu": "x64" }, "sha512-vEbyadiRI7GOr94hd2AB15LFVgcJZQWu7Cdi9cWjCMeCiUsHWA0U5BkGPuoYRnTxTn0HacuMb9NeAmStfBCLoQ=="],
47
+
48
+ "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@14.2.24", "", { "os": "linux", "cpu": "x64" }, "sha512-df0FC9ptaYsd8nQCINCzFtDWtko8PNRTAU0/+d7hy47E0oC17tI54U/0NdGk7l/76jz1J377dvRjmt6IUdkpzQ=="],
49
+
50
+ "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@14.2.24", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZEntbLjeYAJ286eAqbxpZHhDFYpYjArotQ+/TW9j7UROh0DUmX7wYDGtsTPpfCV8V+UoqHBPU7q9D4nDNH014Q=="],
51
+
52
+ "@next/swc-win32-ia32-msvc": ["@next/swc-win32-ia32-msvc@14.2.24", "", { "os": "win32", "cpu": "ia32" }, "sha512-9KuS+XUXM3T6v7leeWU0erpJ6NsFIwiTFD5nzNg8J5uo/DMIPvCp3L1Ao5HjbHX0gkWPB1VrKoo/Il4F0cGK2Q=="],
53
+
54
+ "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@14.2.24", "", { "os": "win32", "cpu": "x64" }, "sha512-cXcJ2+x0fXQ2CntaE00d7uUH+u1Bfp/E0HsNQH79YiLaZE5Rbm7dZzyAYccn3uICM7mw+DxoMqEfGXZtF4Fgaw=="],
55
+
56
+ "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
57
+
58
+ "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
59
+
60
+ "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="],
61
+
62
+ "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="],
63
+
64
+ "@swc/counter": ["@swc/counter@0.1.3", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="],
65
+
66
+ "@swc/helpers": ["@swc/helpers@0.5.5", "", { "dependencies": { "@swc/counter": "^0.1.3", "tslib": "^2.4.0" } }, "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A=="],
67
+
68
+ "@types/node": ["@types/node@20.17.19", "", { "dependencies": { "undici-types": "~6.19.2" } }, "sha512-LEwC7o1ifqg/6r2gn9Dns0f1rhK+fPFDoMiceTJ6kWmVk6bgXBI/9IOWfVan4WiAavK9pIVWdX0/e3J+eEUh5A=="],
69
+
70
+ "@types/prop-types": ["@types/prop-types@15.7.14", "", {}, "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ=="],
71
+
72
+ "@types/react": ["@types/react@18.3.18", "", { "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" } }, "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ=="],
73
+
74
+ "@types/react-dom": ["@types/react-dom@18.3.5", "", { "peerDependencies": { "@types/react": "^18.0.0" } }, "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q=="],
75
+
76
+ "ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
77
+
78
+ "ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="],
79
+
80
+ "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="],
81
+
82
+ "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="],
83
+
84
+ "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="],
85
+
86
+ "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
87
+
88
+ "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="],
89
+
90
+ "brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="],
91
+
92
+ "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
93
+
94
+ "busboy": ["busboy@1.6.0", "", { "dependencies": { "streamsearch": "^1.1.0" } }, "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA=="],
95
+
96
+ "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="],
97
+
98
+ "caniuse-lite": ["caniuse-lite@1.0.30001700", "", {}, "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ=="],
99
+
100
+ "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="],
101
+
102
+ "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="],
103
+
104
+ "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
105
+
106
+ "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
107
+
108
+ "commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="],
109
+
110
+ "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
111
+
112
+ "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="],
113
+
114
+ "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="],
115
+
116
+ "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="],
117
+
118
+ "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="],
119
+
120
+ "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="],
121
+
122
+ "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="],
123
+
124
+ "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="],
125
+
126
+ "fastq": ["fastq@1.19.0", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA=="],
127
+
128
+ "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
129
+
130
+ "foreground-child": ["foreground-child@3.3.0", "", { "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" } }, "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg=="],
131
+
132
+ "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
133
+
134
+ "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
135
+
136
+ "glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="],
137
+
138
+ "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
139
+
140
+ "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
141
+
142
+ "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
143
+
144
+ "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="],
145
+
146
+ "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="],
147
+
148
+ "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
149
+
150
+ "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
151
+
152
+ "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
153
+
154
+ "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
155
+
156
+ "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
157
+
158
+ "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="],
159
+
160
+ "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="],
161
+
162
+ "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
163
+
164
+ "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="],
165
+
166
+ "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="],
167
+
168
+ "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="],
169
+
170
+ "lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
171
+
172
+ "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="],
173
+
174
+ "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
175
+
176
+ "minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
177
+
178
+ "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="],
179
+
180
+ "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="],
181
+
182
+ "nanoid": ["nanoid@3.3.8", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="],
183
+
184
+ "next": ["next@14.2.24", "", { "dependencies": { "@next/env": "14.2.24", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "graceful-fs": "^4.2.11", "postcss": "8.4.31", "styled-jsx": "5.1.1" }, "optionalDependencies": { "@next/swc-darwin-arm64": "14.2.24", "@next/swc-darwin-x64": "14.2.24", "@next/swc-linux-arm64-gnu": "14.2.24", "@next/swc-linux-arm64-musl": "14.2.24", "@next/swc-linux-x64-gnu": "14.2.24", "@next/swc-linux-x64-musl": "14.2.24", "@next/swc-win32-arm64-msvc": "14.2.24", "@next/swc-win32-ia32-msvc": "14.2.24", "@next/swc-win32-x64-msvc": "14.2.24" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-En8VEexSJ0Py2FfVnRRh8gtERwDRaJGNvsvad47ShkC2Yi8AXQPXEA2vKoDJlGFSj5WE5SyF21zNi4M5gyi+SQ=="],
185
+
186
+ "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="],
187
+
188
+ "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
189
+
190
+ "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="],
191
+
192
+ "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="],
193
+
194
+ "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
195
+
196
+ "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="],
197
+
198
+ "path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="],
199
+
200
+ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
201
+
202
+ "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
203
+
204
+ "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="],
205
+
206
+ "pirates": ["pirates@4.0.6", "", {}, "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg=="],
207
+
208
+ "postcss": ["postcss@8.5.2", "", { "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA=="],
209
+
210
+ "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="],
211
+
212
+ "postcss-js": ["postcss-js@4.0.1", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw=="],
213
+
214
+ "postcss-load-config": ["postcss-load-config@4.0.2", "", { "dependencies": { "lilconfig": "^3.0.0", "yaml": "^2.3.4" }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" }, "optionalPeers": ["postcss", "ts-node"] }, "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ=="],
215
+
216
+ "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="],
217
+
218
+ "postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="],
219
+
220
+ "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="],
221
+
222
+ "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],
223
+
224
+ "react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="],
225
+
226
+ "react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="],
227
+
228
+ "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="],
229
+
230
+ "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="],
231
+
232
+ "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="],
233
+
234
+ "reusify": ["reusify@1.0.4", "", {}, "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="],
235
+
236
+ "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
237
+
238
+ "scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="],
239
+
240
+ "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
241
+
242
+ "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
243
+
244
+ "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
245
+
246
+ "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
247
+
248
+ "streamsearch": ["streamsearch@1.1.0", "", {}, "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="],
249
+
250
+ "string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="],
251
+
252
+ "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
253
+
254
+ "strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
255
+
256
+ "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
257
+
258
+ "styled-jsx": ["styled-jsx@5.1.1", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" } }, "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw=="],
259
+
260
+ "sucrase": ["sucrase@3.35.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA=="],
261
+
262
+ "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="],
263
+
264
+ "tailwindcss": ["tailwindcss@3.4.17", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.6", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og=="],
265
+
266
+ "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="],
267
+
268
+ "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="],
269
+
270
+ "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
271
+
272
+ "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="],
273
+
274
+ "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
275
+
276
+ "typescript": ["typescript@5.7.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw=="],
277
+
278
+ "undici-types": ["undici-types@6.19.8", "", {}, "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="],
279
+
280
+ "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
281
+
282
+ "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
283
+
284
+ "wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="],
285
+
286
+ "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
287
+
288
+ "yaml": ["yaml@2.7.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA=="],
289
+
290
+ "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
291
+
292
+ "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
293
+
294
+ "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="],
295
+
296
+ "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
297
+
298
+ "string-width-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
299
+
300
+ "strip-ansi-cjs/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
301
+
302
+ "wrap-ansi-cjs/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
303
+
304
+ "wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
305
+
306
+ "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
307
+
308
+ "string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
309
+
310
+ "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
311
+
312
+ "wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
313
+ }
314
+ }
frontend/next.config.mjs ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {};
3
+
4
+ export default nextConfig;
frontend/package.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "knowledge_net",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "dev": "next dev",
7
+ "build": "next build",
8
+ "start": "next start",
9
+ "lint": "next lint"
10
+ },
11
+ "dependencies": {
12
+ "react": "^18",
13
+ "react-dom": "^18",
14
+ "next": "14.2.24"
15
+ },
16
+ "devDependencies": {
17
+ "typescript": "^5",
18
+ "@types/node": "^20",
19
+ "@types/react": "^18",
20
+ "@types/react-dom": "^18",
21
+ "postcss": "^8",
22
+ "tailwindcss": "^3.4.1"
23
+ }
24
+ }
frontend/postcss.config.mjs ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ /** @type {import('postcss-load-config').Config} */
2
+ const config = {
3
+ plugins: {
4
+ tailwindcss: {},
5
+ },
6
+ };
7
+
8
+ export default config;
frontend/src/app/favicon.ico ADDED
frontend/src/app/fonts/GeistMonoVF.woff ADDED
Binary file (67.9 kB). View file
 
frontend/src/app/fonts/GeistVF.woff ADDED
Binary file (66.3 kB). View file
 
frontend/src/app/globals.css ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ :root {
6
+ --background: #ffffff;
7
+ --foreground: #171717;
8
+ }
9
+
10
+ @media (prefers-color-scheme: dark) {
11
+ :root {
12
+ --background: #0a0a0a;
13
+ --foreground: #ededed;
14
+ }
15
+ }
16
+
17
+ body {
18
+ color: var(--foreground);
19
+ background: var(--background);
20
+ font-family: Arial, Helvetica, sans-serif;
21
+ }
22
+
23
+ @layer utilities {
24
+ .text-balance {
25
+ text-wrap: balance;
26
+ }
27
+ }
frontend/src/app/layout.tsx ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import type { Metadata } from "next";
2
+ import localFont from "next/font/local";
3
+ import "./globals.css";
4
+
5
+ const geistSans = localFont({
6
+ src: "./fonts/GeistVF.woff",
7
+ variable: "--font-geist-sans",
8
+ weight: "100 900",
9
+ });
10
+ const geistMono = localFont({
11
+ src: "./fonts/GeistMonoVF.woff",
12
+ variable: "--font-geist-mono",
13
+ weight: "100 900",
14
+ });
15
+
16
+ export const metadata: Metadata = {
17
+ title: "Create Next App",
18
+ description: "Generated by create next app",
19
+ };
20
+
21
+ export default function RootLayout({
22
+ children,
23
+ }: Readonly<{
24
+ children: React.ReactNode;
25
+ }>) {
26
+ return (
27
+ <html lang="en">
28
+ <body
29
+ className={`${geistSans.variable} ${geistMono.variable} antialiased`}
30
+ >
31
+ {children}
32
+ </body>
33
+ </html>
34
+ );
35
+ }
frontend/src/app/page.tsx ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import Image from "next/image";
2
+
3
+ export default function Home() {
4
+ return (
5
+ <div className="grid grid-rows-[20px_1fr_20px] items-center justify-items-center min-h-screen p-8 pb-20 gap-16 sm:p-20 font-[family-name:var(--font-geist-sans)]">
6
+ <main className="flex flex-col gap-8 row-start-2 items-center sm:items-start">
7
+ <Image
8
+ className="dark:invert"
9
+ src="https://nextjs.org/icons/next.svg"
10
+ alt="Next.js logo"
11
+ width={180}
12
+ height={38}
13
+ priority
14
+ />
15
+ <ol className="list-inside list-decimal text-sm text-center sm:text-left font-[family-name:var(--font-geist-mono)]">
16
+ <li className="mb-2">
17
+ Get started by editing{" "}
18
+ <code className="bg-black/[.05] dark:bg-white/[.06] px-1 py-0.5 rounded font-semibold">
19
+ src/app/page.tsx
20
+ </code>
21
+ .
22
+ </li>
23
+ <li>Save and see your changes instantly.</li>
24
+ </ol>
25
+
26
+ <div className="flex gap-4 items-center flex-col sm:flex-row">
27
+ <a
28
+ className="rounded-full border border-solid border-transparent transition-colors flex items-center justify-center bg-foreground text-background gap-2 hover:bg-[#383838] dark:hover:bg-[#ccc] text-sm sm:text-base h-10 sm:h-12 px-4 sm:px-5"
29
+ href="https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
30
+ target="_blank"
31
+ rel="noopener noreferrer"
32
+ >
33
+ <Image
34
+ className="dark:invert"
35
+ src="https://nextjs.org/icons/vercel.svg"
36
+ alt="Vercel logomark"
37
+ width={20}
38
+ height={20}
39
+ />
40
+ Deploy now
41
+ </a>
42
+ <a
43
+ className="rounded-full border border-solid border-black/[.08] dark:border-white/[.145] transition-colors flex items-center justify-center hover:bg-[#f2f2f2] dark:hover:bg-[#1a1a1a] hover:border-transparent text-sm sm:text-base h-10 sm:h-12 px-4 sm:px-5 sm:min-w-44"
44
+ href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
45
+ target="_blank"
46
+ rel="noopener noreferrer"
47
+ >
48
+ Read our docs
49
+ </a>
50
+ </div>
51
+ </main>
52
+ <footer className="row-start-3 flex gap-6 flex-wrap items-center justify-center">
53
+ <a
54
+ className="flex items-center gap-2 hover:underline hover:underline-offset-4"
55
+ href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
56
+ target="_blank"
57
+ rel="noopener noreferrer"
58
+ >
59
+ <Image
60
+ aria-hidden
61
+ src="https://nextjs.org/icons/file.svg"
62
+ alt="File icon"
63
+ width={16}
64
+ height={16}
65
+ />
66
+ Learn
67
+ </a>
68
+ <a
69
+ className="flex items-center gap-2 hover:underline hover:underline-offset-4"
70
+ href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
71
+ target="_blank"
72
+ rel="noopener noreferrer"
73
+ >
74
+ <Image
75
+ aria-hidden
76
+ src="https://nextjs.org/icons/window.svg"
77
+ alt="Window icon"
78
+ width={16}
79
+ height={16}
80
+ />
81
+ Examples
82
+ </a>
83
+ <a
84
+ className="flex items-center gap-2 hover:underline hover:underline-offset-4"
85
+ href="https://nextjs.org?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
86
+ target="_blank"
87
+ rel="noopener noreferrer"
88
+ >
89
+ <Image
90
+ aria-hidden
91
+ src="https://nextjs.org/icons/globe.svg"
92
+ alt="Globe icon"
93
+ width={16}
94
+ height={16}
95
+ />
96
+ Go to nextjs.org →
97
+ </a>
98
+ </footer>
99
+ </div>
100
+ );
101
+ }
frontend/tailwind.config.ts ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import type { Config } from "tailwindcss";
2
+
3
+ const config: Config = {
4
+ content: [
5
+ "./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
6
+ "./src/components/**/*.{js,ts,jsx,tsx,mdx}",
7
+ "./src/app/**/*.{js,ts,jsx,tsx,mdx}",
8
+ ],
9
+ theme: {
10
+ extend: {
11
+ colors: {
12
+ background: "var(--background)",
13
+ foreground: "var(--foreground)",
14
+ },
15
+ },
16
+ },
17
+ plugins: [],
18
+ };
19
+ export default config;
frontend/tsconfig.json ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "compilerOptions": {
3
+ "lib": ["dom", "dom.iterable", "esnext"],
4
+ "allowJs": true,
5
+ "skipLibCheck": true,
6
+ "strict": true,
7
+ "noEmit": true,
8
+ "esModuleInterop": true,
9
+ "module": "esnext",
10
+ "moduleResolution": "bundler",
11
+ "resolveJsonModule": true,
12
+ "isolatedModules": true,
13
+ "jsx": "preserve",
14
+ "incremental": true,
15
+ "plugins": [
16
+ {
17
+ "name": "next"
18
+ }
19
+ ],
20
+ "paths": {
21
+ "@/*": ["./src/*"]
22
+ }
23
+ },
24
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
25
+ "exclude": ["node_modules"]
26
+ }