Compare commits

..

1020 Commits

Author SHA1 Message Date
arc
145a871d1d vault backup: 2025-06-06 14:43:51 2025-06-06 14:43:51 -06:00
arc
b018456d64 vault backup: 2025-06-04 18:29:17 2025-06-04 18:29:17 -06:00
arc
6a8712dc7c vault backup: 2025-06-03 11:45:18 2025-06-03 11:45:18 -06:00
arc
892f40f37e vault backup: 2025-06-03 11:30:16 2025-06-03 11:30:16 -06:00
arc
83ceb7a5d0 vault backup: 2025-05-31 13:22:00 2025-05-31 13:22:00 -06:00
arc
3395a32204 vault backup: 2025-05-31 11:20:48 2025-05-31 11:20:48 -06:00
arc
4f1ea82d06 vault backup: 2025-05-30 16:10:23 2025-05-30 16:10:23 -06:00
arc
2857e5ea84 vault backup: 2025-05-30 16:05:23 2025-05-30 16:05:23 -06:00
arc
142ab93d04 vault backup: 2025-05-21 17:39:42 2025-05-21 17:39:42 -06:00
arc
90c9111a08 vault backup: 2025-05-09 13:07:48 2025-05-09 13:07:48 -06:00
arc
053eea8b11 vault backup: 2025-05-09 12:37:48 2025-05-09 12:37:48 -06:00
arc
9efb23dc3d vault backup: 2025-05-09 12:32:48 2025-05-09 12:32:48 -06:00
arc
e5d60bfb94 vault backup: 2025-05-09 12:27:48 2025-05-09 12:27:48 -06:00
arc
cbe5d6cde7 vault backup: 2025-05-09 12:22:48 2025-05-09 12:22:48 -06:00
arc
c80bacb2fc vault backup: 2025-05-09 12:17:48 2025-05-09 12:17:48 -06:00
arc
bff7640d0a vault backup: 2025-05-09 12:12:48 2025-05-09 12:12:48 -06:00
arc
27b25ff6dd vault backup: 2025-05-09 12:07:48 2025-05-09 12:07:48 -06:00
1052e71a6d vault backup: 2025-05-08 12:00:07 2025-05-08 12:00:07 -06:00
arc
0a0d3c833e vault backup: 2025-05-08 11:39:23 2025-05-08 11:39:24 -06:00
1fb125825d vault backup: 2025-05-08 11:30:07 2025-05-08 11:30:07 -06:00
arc
00010e0ec8 vault backup: 2025-05-08 11:14:23 2025-05-08 11:14:24 -06:00
5941f9907f vault backup: 2025-05-08 11:08:07 2025-05-08 11:08:07 -06:00
arc
c59d6f536d vault backup: 2025-05-08 11:04:23 2025-05-08 11:04:24 -06:00
f763dac3b2 vault backup: 2025-05-06 21:20:10 2025-05-06 21:20:10 -06:00
40a8bdfbe4 vault backup: 2025-05-06 21:15:10 2025-05-06 21:15:10 -06:00
a75a02e406 vault backup: 2025-05-06 21:10:10 2025-05-06 21:10:10 -06:00
316d29ad4f vault backup: 2025-05-06 21:05:10 2025-05-06 21:05:10 -06:00
cfbfc6aeee vault backup: 2025-05-06 21:00:10 2025-05-06 21:00:10 -06:00
a1caa119cc vault backup: 2025-05-06 20:55:10 2025-05-06 20:55:10 -06:00
824806137c vault backup: 2025-05-06 20:50:10 2025-05-06 20:50:10 -06:00
892f17fdff vault backup: 2025-05-06 20:45:10 2025-05-06 20:45:10 -06:00
3693a5d628 vault backup: 2025-05-06 13:11:40 2025-05-06 13:11:40 -06:00
c33fcf8639 vault backup: 2025-05-06 13:06:40 2025-05-06 13:06:40 -06:00
29ab0c850c vault backup: 2025-05-06 13:01:40 2025-05-06 13:01:40 -06:00
6548157af2 vault backup: 2025-05-06 12:56:40 2025-05-06 12:56:40 -06:00
81dfab2213 vault backup: 2025-05-06 12:51:40 2025-05-06 12:51:40 -06:00
1e752aa5a5 vault backup: 2025-05-06 12:46:40 2025-05-06 12:46:40 -06:00
4524d8d85d vault backup: 2025-05-06 12:41:40 2025-05-06 12:41:40 -06:00
3a2c94fc29 vault backup: 2025-05-06 12:36:40 2025-05-06 12:36:40 -06:00
d241cd84a2 vault backup: 2025-05-06 12:31:39 2025-05-06 12:31:40 -06:00
21b1eb4641 vault backup: 2025-05-06 12:26:39 2025-05-06 12:26:40 -06:00
f2a5d9fde3 vault backup: 2025-05-06 12:21:39 2025-05-06 12:21:40 -06:00
1e9eb77e4b vault backup: 2025-05-06 12:16:39 2025-05-06 12:16:40 -06:00
d426182082 vault backup: 2025-05-06 12:11:39 2025-05-06 12:11:40 -06:00
0cc087eded vault backup: 2025-05-06 12:06:39 2025-05-06 12:06:39 -06:00
7dbff08408 vault backup: 2025-05-06 12:01:39 2025-05-06 12:01:39 -06:00
9ccd3322e8 vault backup: 2025-05-06 11:56:39 2025-05-06 11:56:39 -06:00
19255083a7 Merge remote-tracking branch 'origin/main' 2025-05-06 11:51:43 -06:00
0213e7e5bd vault backup: 2025-05-06 11:51:39 2025-05-06 11:51:39 -06:00
a29a161a9e vault backup: 2025-05-06 11:46:39 2025-05-06 11:46:39 -06:00
arc
584cebafdb vault backup: 2025-04-21 18:27:57 2025-04-21 18:27:57 -06:00
arc
66cd4f22ea vault backup: 2025-04-21 09:45:37 2025-04-21 09:45:37 -06:00
arc
74bae7ec01 vault backup: 2025-04-20 07:40:15 2025-04-20 07:40:15 -06:00
arc
0b2c3357e5 vault backup: 2025-04-20 07:35:17 2025-04-20 07:35:17 -06:00
arc
e113020180 vault backup: 2025-04-18 10:46:02 2025-04-18 10:46:02 -06:00
arc
11a8fcc9ae vault backup: 2025-04-18 10:14:15 2025-04-18 10:14:15 -06:00
arc
dff0d3a1cb vault backup: 2025-04-17 10:15:42 2025-04-17 10:15:42 -06:00
arc
a1b0787683 vault backup: 2025-04-17 10:10:42 2025-04-17 10:10:42 -06:00
arc
da9c8fdcff vault backup: 2025-04-17 10:00:42 2025-04-17 10:00:42 -06:00
arc
a3ae6fea9e vault backup: 2025-04-17 09:55:42 2025-04-17 09:55:42 -06:00
arc
4687efb9a7 vault backup: 2025-04-17 09:35:42 2025-04-17 09:35:42 -06:00
arc
f8803724a6 vault backup: 2025-04-17 09:30:41 2025-04-17 09:30:41 -06:00
arc
adcf1012eb vault backup: 2025-04-17 09:25:41 2025-04-17 09:25:41 -06:00
arc
52dbf70512 vault backup: 2025-04-17 09:20:40 2025-04-17 09:20:41 -06:00
arc
0d57ad37c7 vault backup: 2025-04-17 09:15:40 2025-04-17 09:15:41 -06:00
arc
d012cd70aa vault backup: 2025-04-17 09:10:40 2025-04-17 09:10:41 -06:00
arc
26457a8a0a vault backup: 2025-04-17 09:05:41 2025-04-17 09:05:41 -06:00
arc
bb8461842f vault backup: 2025-04-15 10:06:58 2025-04-15 10:06:58 -06:00
arc
1867f4356d vault backup: 2025-04-15 10:01:58 2025-04-15 10:01:58 -06:00
arc
95f378fa05 vault backup: 2025-04-15 09:56:58 2025-04-15 09:56:58 -06:00
arc
92ae200794 vault backup: 2025-04-15 09:51:58 2025-04-15 09:51:58 -06:00
arc
f014927f13 vault backup: 2025-04-15 09:46:58 2025-04-15 09:46:58 -06:00
arc
8810f2f9cf vault backup: 2025-04-15 09:41:58 2025-04-15 09:41:58 -06:00
arc
79a4ccc0a8 vault backup: 2025-04-15 09:36:58 2025-04-15 09:36:58 -06:00
arc
6d430c98fa vault backup: 2025-04-15 09:31:58 2025-04-15 09:31:58 -06:00
arc
f3afa31f45 vault backup: 2025-04-15 09:26:58 2025-04-15 09:26:58 -06:00
arc
c0418af94c vault backup: 2025-04-15 09:21:58 2025-04-15 09:21:58 -06:00
arc
a8fbf79e77 vault backup: 2025-04-15 09:16:58 2025-04-15 09:16:58 -06:00
arc
dfac621f17 vault backup: 2025-04-15 09:11:58 2025-04-15 09:11:58 -06:00
arc
a5a0698807 vault backup: 2025-04-15 09:06:58 2025-04-15 09:06:58 -06:00
arc
aa2d926f25 vault backup: 2025-04-14 17:41:27 2025-04-14 17:41:27 -06:00
arc
2a14d625db vault backup: 2025-04-14 10:01:14 2025-04-14 10:01:14 -06:00
arc
657edfba3d vault backup: 2025-04-13 19:53:16 2025-04-13 19:53:16 -06:00
arc
a2a0db9752 vault backup: 2025-04-13 19:47:15 2025-04-13 19:47:15 -06:00
arc
f4505a6d72 vault backup: 2025-04-13 17:26:02 2025-04-13 17:26:02 -06:00
arc
f2b9fb6cc2 vault backup: 2025-04-06 12:23:45 2025-04-06 12:23:45 -06:00
arc
dc700de66e vault backup: 2025-04-06 12:18:45 2025-04-06 12:18:45 -06:00
arc
75151ab5d4 vault backup: 2025-04-01 10:13:23 2025-04-01 10:13:23 -06:00
arc
5463d89d1c vault backup: 2025-04-01 10:08:23 2025-04-01 10:08:23 -06:00
arc
43420ff85a vault backup: 2025-04-01 10:03:23 2025-04-01 10:03:23 -06:00
arc
155b7dc6af vault backup: 2025-04-01 09:58:23 2025-04-01 09:58:23 -06:00
arc
56f0fa193b vault backup: 2025-04-01 09:53:23 2025-04-01 09:53:23 -06:00
arc
7d7562e27c vault backup: 2025-04-01 09:43:23 2025-04-01 09:43:23 -06:00
arc
f2449b07e7 vault backup: 2025-03-28 10:24:28 2025-03-28 10:24:28 -06:00
arc
6e882be276 vault backup: 2025-03-27 09:56:27 2025-03-27 09:56:27 -06:00
arc
6776d3e417 vault backup: 2025-03-27 09:51:27 2025-03-27 09:51:27 -06:00
arc
d78c1ecd7a vault backup: 2025-03-27 09:46:27 2025-03-27 09:46:27 -06:00
arc
3ce3b8a446 vault backup: 2025-03-27 09:41:27 2025-03-27 09:41:27 -06:00
arc
6998ab3013 vault backup: 2025-03-27 09:36:27 2025-03-27 09:36:27 -06:00
arc
1143c122d8 vault backup: 2025-03-27 09:31:27 2025-03-27 09:31:27 -06:00
arc
49918dcd5d vault backup: 2025-03-27 09:26:27 2025-03-27 09:26:27 -06:00
arc
acc8e5d1cb vault backup: 2025-03-25 21:57:22 2025-03-25 21:57:22 -06:00
arc
52261239bc vault backup: 2025-03-25 20:15:31 2025-03-25 20:15:31 -06:00
arc
5e76ded241 vault backup: 2025-03-25 10:11:37 2025-03-25 10:11:37 -06:00
arc
a5b1f72da7 vault backup: 2025-03-25 09:51:37 2025-03-25 09:51:37 -06:00
arc
7aed5aa03d vault backup: 2025-03-25 09:46:37 2025-03-25 09:46:37 -06:00
arc
647d705823 vault backup: 2025-03-25 09:41:37 2025-03-25 09:41:37 -06:00
arc
05f59e4460 vault backup: 2025-03-25 09:36:37 2025-03-25 09:36:37 -06:00
arc
5b7e97aa06 vault backup: 2025-03-25 09:31:37 2025-03-25 09:31:37 -06:00
arc
54de0a53c6 vault backup: 2025-03-25 09:16:37 2025-03-25 09:16:37 -06:00
arc
8ae196ae3d vault backup: 2025-03-25 09:11:37 2025-03-25 09:11:37 -06:00
arc
45126e1fc6 vault backup: 2025-03-25 09:06:37 2025-03-25 09:06:37 -06:00
arc
da3b2b680e vault backup: 2025-03-24 09:38:01 2025-03-24 09:38:01 -06:00
arc
ca57497106 vault backup: 2025-03-21 11:09:14 2025-03-21 11:09:14 -06:00
arc
5646d57982 vault backup: 2025-03-20 12:17:12 2025-03-20 12:17:12 -06:00
arc
6921fa15f6 vault backup: 2025-03-20 12:12:12 2025-03-20 12:12:12 -06:00
arc
693a196db5 vault backup: 2025-03-20 11:41:15 2025-03-20 11:41:15 -06:00
arc
4976da28c2 vault backup: 2025-03-20 11:36:17 2025-03-20 11:36:17 -06:00
arc
7b9909b585 vault backup: 2025-03-20 11:27:46 2025-03-20 11:27:46 -06:00
arc
91f31077a5 vault backup: 2025-03-20 11:22:46 2025-03-20 11:22:46 -06:00
arc
f764ece987 vault backup: 2025-03-20 11:17:46 2025-03-20 11:17:46 -06:00
arc
6fb86a79b2 vault backup: 2025-03-20 11:12:46 2025-03-20 11:12:46 -06:00
arc
a187b1974a vault backup: 2025-03-20 11:07:47 2025-03-20 11:07:47 -06:00
arc
404ad78373 vault backup: 2025-03-20 11:02:09 2025-03-20 11:02:09 -06:00
arc
ed2587b382 vault backup: 2025-03-20 10:57:09 2025-03-20 10:57:09 -06:00
arc
51b176a5aa vault backup: 2025-03-20 10:52:09 2025-03-20 10:52:09 -06:00
arc
129950256e vault backup: 2025-03-20 10:47:09 2025-03-20 10:47:09 -06:00
arc
1422cf8006 vault backup: 2025-03-17 17:34:15 2025-03-17 17:34:15 -06:00
arc
f2de9b050c vault backup: 2025-03-17 10:39:18 2025-03-17 10:39:18 -06:00
arc
75970e44ad vault backup: 2025-03-17 10:29:18 2025-03-17 10:29:18 -06:00
arc
0fa73dc599 vault backup: 2025-03-17 10:19:18 2025-03-17 10:19:18 -06:00
arc
32e3900037 vault backup: 2025-03-17 10:14:18 2025-03-17 10:14:18 -06:00
arc
1f5c9bc33a vault backup: 2025-03-17 10:04:18 2025-03-17 10:04:18 -06:00
arc
9509ccdced vault backup: 2025-03-17 09:59:18 2025-03-17 09:59:18 -06:00
arc
9a5e78f4c0 Merge remote-tracking branch 'origin/main' 2025-03-17 09:54:19 -06:00
arc
6567569e66 vault backup: 2025-03-17 09:54:19 2025-03-17 09:54:19 -06:00
arc
2b6f1878d2 vault backup: 2025-03-17 09:48:18 2025-03-17 09:48:18 -06:00
arc
514a50618d vault backup: 2025-03-09 20:20:41 2025-03-09 20:20:41 -06:00
arc
e31518946e vault backup: 2025-03-07 10:41:20 2025-03-07 10:41:20 -07:00
arc
d76d1b2347 vault backup: 2025-03-06 09:59:22 2025-03-06 09:59:22 -07:00
arc
e3db5505f7 vault backup: 2025-03-06 09:54:22 2025-03-06 09:54:22 -07:00
arc
2fb3e9cea0 vault backup: 2025-03-06 09:49:22 2025-03-06 09:49:22 -07:00
arc
da92f848f3 vault backup: 2025-03-06 09:44:22 2025-03-06 09:44:22 -07:00
arc
cfda79dc6a vault backup: 2025-03-06 09:39:22 2025-03-06 09:39:22 -07:00
arc
f7be56d581 vault backup: 2025-03-06 09:34:22 2025-03-06 09:34:22 -07:00
arc
2b60691895 vault backup: 2025-03-06 09:24:22 2025-03-06 09:24:22 -07:00
arc
550b6f910b vault backup: 2025-03-06 09:19:22 2025-03-06 09:19:22 -07:00
arc
773e850873 vault backup: 2025-03-06 09:14:22 2025-03-06 09:14:22 -07:00
arc
705bab4b9d vault backup: 2025-03-06 09:09:22 2025-03-06 09:09:22 -07:00
arc
60991c5513 vault backup: 2025-03-04 11:55:39 2025-03-04 11:55:39 -07:00
arc
32b8448b8f vault backup: 2025-03-03 10:16:16 2025-03-03 10:16:16 -07:00
arc
6a11102473 vault backup: 2025-03-03 10:11:16 2025-03-03 10:11:16 -07:00
arc
cdf0b4971f vault backup: 2025-03-03 10:06:16 2025-03-03 10:06:16 -07:00
arc
372eff1ac8 vault backup: 2025-03-03 10:01:16 2025-03-03 10:01:16 -07:00
arc
68007bd0f2 vault backup: 2025-03-03 09:56:16 2025-03-03 09:56:16 -07:00
arc
8468365679 vault backup: 2025-03-03 09:41:40 2025-03-03 09:41:40 -07:00
arc
fa0cc5f15a vault backup: 2025-02-28 10:55:10 2025-02-28 10:55:10 -07:00
arc
5ec17dfa3b vault backup: 2025-02-26 10:20:05 2025-02-26 10:20:05 -07:00
arc
df3ec63a1f vault backup: 2025-02-26 09:35:44 2025-02-26 09:35:44 -07:00
arc
c43334c316 vault backup: 2025-02-26 09:30:45 2025-02-26 09:30:45 -07:00
arc
f9584a80eb vault backup: 2025-02-25 10:03:29 2025-02-25 10:03:29 -07:00
arc
64e7e1e12a vault backup: 2025-02-25 09:58:29 2025-02-25 09:58:29 -07:00
arc
b4328de95a vault backup: 2025-02-25 09:53:29 2025-02-25 09:53:29 -07:00
arc
d6ade03ca4 vault backup: 2025-02-25 09:48:29 2025-02-25 09:48:29 -07:00
arc
02f5d455cc vault backup: 2025-02-25 09:33:29 2025-02-25 09:33:29 -07:00
arc
ad77170cfd vault backup: 2025-02-25 09:23:29 2025-02-25 09:23:29 -07:00
arc
8d466ecaef vault backup: 2025-02-25 09:18:29 2025-02-25 09:18:29 -07:00
arc
792db06e18 vault backup: 2025-02-25 09:13:29 2025-02-25 09:13:29 -07:00
arc
d6afb5c4bc vault backup: 2025-02-25 09:08:29 2025-02-25 09:08:29 -07:00
arc
851635004e vault backup: 2025-02-24 11:13:29 2025-02-24 11:13:29 -07:00
arc
8772c232a3 vault backup: 2025-02-24 11:08:29 2025-02-24 11:08:29 -07:00
arc
e35525f967 vault backup: 2025-02-24 11:03:29 2025-02-24 11:03:29 -07:00
arc
08d94b9a5a vault backup: 2025-02-24 10:58:29 2025-02-24 10:58:29 -07:00
arc
c4dc28019f vault backup: 2025-02-24 10:53:29 2025-02-24 10:53:29 -07:00
arc
e94fbe54f4 vault backup: 2025-02-24 10:48:29 2025-02-24 10:48:29 -07:00
arc
866a945172 vault backup: 2025-02-24 10:42:45 2025-02-24 10:42:45 -07:00
arc
9c237df32b vault backup: 2025-02-24 10:37:45 2025-02-24 10:37:45 -07:00
arc
0510f11ded vault backup: 2025-02-23 20:11:29 2025-02-23 20:11:30 -07:00
arc
9986e43af8 vault backup: 2025-02-22 22:24:40 2025-02-22 22:24:40 -07:00
arc
e97a227a71 vault backup: 2025-02-21 10:59:11 2025-02-21 10:59:11 -07:00
arc
e8e891f685 vault backup: 2025-02-21 10:34:12 2025-02-21 10:34:12 -07:00
arc
40d5dbdcb3 vault backup: 2025-02-20 12:57:28 2025-02-20 12:57:28 -07:00
35cd8c438a vault backup: 2025-02-19 22:40:09 2025-02-19 22:40:09 -07:00
arc
894532c620 vault backup: 2025-02-18 12:39:28 2025-02-18 12:39:28 -07:00
arc
f4c9265e07 vault backup: 2025-02-18 10:11:11 2025-02-18 10:11:11 -07:00
arc
f6bf13f9e0 vault backup: 2025-02-18 10:06:11 2025-02-18 10:06:11 -07:00
arc
cc5fbfb289 vault backup: 2025-02-18 10:01:11 2025-02-18 10:01:11 -07:00
arc
38e1b487ec vault backup: 2025-02-18 09:56:11 2025-02-18 09:56:11 -07:00
arc
0eeea19351 vault backup: 2025-02-18 09:51:11 2025-02-18 09:51:11 -07:00
arc
0e758ef864 vault backup: 2025-02-18 09:36:10 2025-02-18 09:36:10 -07:00
arc
c63861e8f4 vault backup: 2025-02-18 09:24:00 2025-02-18 09:24:00 -07:00
arc
6c861607be vault backup: 2025-02-16 22:41:14 2025-02-16 22:41:14 -07:00
arc
755d9acced vault backup: 2025-02-16 22:11:14 2025-02-16 22:11:14 -07:00
arc
9c15c4fbf7 vault backup: 2025-02-16 20:27:21 2025-02-16 20:27:21 -07:00
arc
44f55bca9c vault backup: 2025-02-16 20:12:21 2025-02-16 20:12:21 -07:00
arc
3a356d3f0a vault backup: 2025-02-16 20:07:21 2025-02-16 20:07:21 -07:00
arc
f5a2d9f90e vault backup: 2025-02-16 19:37:21 2025-02-16 19:37:21 -07:00
arc
d2ffd42b20 vault backup: 2025-02-16 19:32:21 2025-02-16 19:32:21 -07:00
arc
c21c741225 vault backup: 2025-02-16 19:02:21 2025-02-16 19:02:21 -07:00
arc
763c9022ca vault backup: 2025-02-16 18:52:21 2025-02-16 18:52:21 -07:00
arc
c2d96ec2e5 vault backup: 2025-02-16 18:47:21 2025-02-16 18:47:21 -07:00
arc
acf45de160 vault backup: 2025-02-16 18:42:21 2025-02-16 18:42:21 -07:00
arc
5b61041480 vault backup: 2025-02-16 18:37:21 2025-02-16 18:37:21 -07:00
arc
341c388d37 vault backup: 2025-02-16 18:32:21 2025-02-16 18:32:21 -07:00
arc
83569114c2 vault backup: 2025-02-16 18:27:21 2025-02-16 18:27:21 -07:00
arc
cc823e3f16 vault backup: 2025-02-14 10:57:22 2025-02-14 10:57:23 -07:00
arc
fc5fcc1524 vault backup: 2025-02-09 18:11:32 2025-02-09 18:11:32 -07:00
arc
7b3485d87e vault backup: 2025-02-09 17:25:44 2025-02-09 17:25:44 -07:00
arc
c246b05221 vault backup: 2025-02-09 16:40:33 2025-02-09 16:40:33 -07:00
arc
ba5e4a326f vault backup: 2025-02-09 16:35:33 2025-02-09 16:35:33 -07:00
arc
50e775cf43 vault backup: 2025-02-09 16:30:33 2025-02-09 16:30:33 -07:00
arc
5039193ffd vault backup: 2025-02-07 16:49:27 2025-02-07 16:49:27 -07:00
arc
26dca6629d vault backup: 2025-02-07 11:40:01 2025-02-07 11:40:01 -07:00
arc
6dbef2ee8c vault backup: 2025-02-07 11:05:01 2025-02-07 11:05:01 -07:00
arc
ec0d878c9f vault backup: 2025-02-07 10:35:01 2025-02-07 10:35:01 -07:00
arc
1824b0fbaf vault backup: 2025-02-06 13:13:47 2025-02-06 13:13:47 -07:00
arc
e5f05a16e3 vault backup: 2025-02-06 13:08:47 2025-02-06 13:08:47 -07:00
arc
3987acce9b vault backup: 2025-02-06 13:03:51 2025-02-06 13:03:51 -07:00
arc
3353f92aa4 vault backup: 2025-02-06 12:58:51 2025-02-06 12:58:51 -07:00
arc
7e27d75c5c vault backup: 2025-02-03 17:43:27 2025-02-03 17:43:27 -07:00
arc
ee35a75bb0 vault backup: 2025-02-03 17:38:27 2025-02-03 17:38:27 -07:00
arc
ff4330471b vault backup: 2025-02-03 17:23:28 2025-02-03 17:23:29 -07:00
arc
08065a130b vault backup: 2025-02-03 13:23:54 2025-02-03 13:23:54 -07:00
arc
9c785ecdb9 vault backup: 2025-02-03 13:18:54 2025-02-03 13:18:54 -07:00
arc
b81328a442 vault backup: 2025-02-03 13:13:54 2025-02-03 13:13:54 -07:00
arc
0154999092 vault backup: 2025-02-03 13:08:54 2025-02-03 13:08:54 -07:00
arc
df32788c07 vault backup: 2025-02-03 13:03:55 2025-02-03 13:03:55 -07:00
arc
e985b57ae4 vault backup: 2025-02-03 11:59:23 2025-02-03 11:59:23 -07:00
arc
3b4bb73264 vault backup: 2025-02-03 11:44:23 2025-02-03 11:44:23 -07:00
arc
b4c30e79ef vault backup: 2025-02-03 11:39:23 2025-02-03 11:39:23 -07:00
arc
2456b82189 vault backup: 2025-02-03 11:34:23 2025-02-03 11:34:23 -07:00
arc
1e688a3614 vault backup: 2025-02-03 11:29:24 2025-02-03 11:29:24 -07:00
arc
70f2be9fcb vault backup: 2025-02-03 11:24:08 2025-02-03 11:24:08 -07:00
arc
32186127e2 vault backup: 2025-02-03 11:19:08 2025-02-03 11:19:08 -07:00
arc
116ab612fc vault backup: 2025-02-03 11:14:08 2025-02-03 11:14:08 -07:00
arc
ba1c7d92b6 vault backup: 2025-02-03 11:09:09 2025-02-03 11:09:09 -07:00
arc
8d046bb2a6 vault backup: 2025-02-03 10:19:24 2025-02-03 10:19:24 -07:00
arc
dd8478dd48 vault backup: 2025-02-03 10:14:24 2025-02-03 10:14:24 -07:00
arc
0295402131 vault backup: 2025-02-03 10:09:19 2025-02-03 10:09:19 -07:00
arc
400c362f17 vault backup: 2025-02-03 10:04:19 2025-02-03 10:04:19 -07:00
arc
d54cecc801 vault backup: 2025-02-03 09:59:19 2025-02-03 09:59:19 -07:00
arc
d697cba7ba vault backup: 2025-02-03 09:54:19 2025-02-03 09:54:19 -07:00
arc
ab2da117b9 vault backup: 2025-02-02 18:15:30 2025-02-02 18:15:30 -07:00
arc
4aec1d9883 vault backup: 2025-02-02 17:55:30 2025-02-02 17:55:30 -07:00
arc
ec2dec1d5e vault backup: 2025-02-02 17:50:30 2025-02-02 17:50:30 -07:00
arc
d66a6f21a8 vault backup: 2025-02-02 16:19:27 2025-02-02 16:19:27 -07:00
arc
26c966e0bd vault backup: 2025-02-02 16:14:27 2025-02-02 16:14:27 -07:00
arc
3e31d38873 vault backup: 2025-02-02 16:09:27 2025-02-02 16:09:27 -07:00
arc
d1713efdab vault backup: 2025-01-31 10:12:43 2025-01-31 10:12:43 -07:00
arc
8dae88fc8c vault backup: 2025-01-30 10:03:44 2025-01-30 10:03:44 -07:00
arc
92c8f5f38a vault backup: 2025-01-30 09:58:44 2025-01-30 09:58:44 -07:00
arc
4dd7ed010b vault backup: 2025-01-30 09:53:44 2025-01-30 09:53:44 -07:00
arc
1544af34a4 vault backup: 2025-01-30 09:48:44 2025-01-30 09:48:44 -07:00
arc
0830d6e8e1 vault backup: 2025-01-30 09:43:44 2025-01-30 09:43:44 -07:00
arc
cd2a396d3a vault backup: 2025-01-30 09:38:44 2025-01-30 09:38:44 -07:00
arc
1bf9047fff vault backup: 2025-01-30 09:33:44 2025-01-30 09:33:44 -07:00
arc
31440675b8 vault backup: 2025-01-30 09:28:44 2025-01-30 09:28:44 -07:00
arc
e021897d1e vault backup: 2025-01-30 09:23:43 2025-01-30 09:23:43 -07:00
arc
2711f7e1cd vault backup: 2025-01-30 09:18:43 2025-01-30 09:18:43 -07:00
arc
492926f89e vault backup: 2025-01-30 09:13:43 2025-01-30 09:13:43 -07:00
arc
f441527eb2 vault backup: 2025-01-30 09:08:43 2025-01-30 09:08:43 -07:00
arc
cfd20d5851 vault backup: 2025-01-30 09:03:43 2025-01-30 09:03:43 -07:00
arc
7d7efe3d55 vault backup: 2025-01-30 08:58:43 2025-01-30 08:58:43 -07:00
arc
5898de24cb vault backup: 2025-01-29 10:37:25 2025-01-29 10:37:26 -07:00
arc
2b64aa4f40 vault backup: 2025-01-29 10:18:44 2025-01-29 10:18:44 -07:00
arc
42dcc22972 vault backup: 2025-01-29 10:13:44 2025-01-29 10:13:44 -07:00
arc
ad505f4e04 vault backup: 2025-01-29 10:08:44 2025-01-29 10:08:44 -07:00
arc
7eb094c9f9 vault backup: 2025-01-28 11:24:36 2025-01-28 11:24:36 -07:00
arc
f5dfcf27ed vault backup: 2025-01-28 11:19:36 2025-01-28 11:19:36 -07:00
arc
2f31717a23 vault backup: 2025-01-28 11:14:37 2025-01-28 11:14:37 -07:00
arc
5bff410579 vault backup: 2025-01-27 18:48:20 2025-01-27 18:48:20 -07:00
arc
5a86cf372a vault backup: 2025-01-27 17:42:39 2025-01-27 17:42:39 -07:00
arc
951d27ba85 vault backup: 2025-01-27 11:24:37 2025-01-27 11:24:37 -07:00
arc
085f5bf4a7 vault backup: 2025-01-27 11:19:37 2025-01-27 11:19:37 -07:00
arc
46f7a2c9b5 vault backup: 2025-01-27 10:47:59 2025-01-27 10:47:59 -07:00
arc
0acfe2ddd3 vault backup: 2025-01-27 10:42:59 2025-01-27 10:42:59 -07:00
arc
defef3e3b1 vault backup: 2025-01-27 10:37:59 2025-01-27 10:37:59 -07:00
arc
24c0a5639d vault backup: 2025-01-27 10:27:06 2025-01-27 10:27:06 -07:00
arc
8c346a674b vault backup: 2025-01-26 18:55:09 2025-01-26 18:55:09 -07:00
arc
232b5f2709 vault backup: 2025-01-26 17:57:19 2025-01-26 17:57:19 -07:00
arc
89a56a9d16 vault backup: 2025-01-26 17:52:19 2025-01-26 17:52:19 -07:00
arc
c5584123d2 vault backup: 2025-01-26 17:47:19 2025-01-26 17:47:19 -07:00
arc
e8b4376546 vault backup: 2025-01-26 17:42:19 2025-01-26 17:42:19 -07:00
arc
b2aacf61ff vault backup: 2025-01-26 17:37:19 2025-01-26 17:37:19 -07:00
arc
032efeb055 vault backup: 2025-01-26 17:32:19 2025-01-26 17:32:19 -07:00
arc
f0f52ceacd vault backup: 2025-01-26 17:21:04 2025-01-26 17:21:04 -07:00
arc
20650f2916 vault backup: 2025-01-21 13:00:48 2025-01-21 13:00:48 -07:00
arc
a5661f686d vault backup: 2025-01-21 12:55:49 2025-01-21 12:55:49 -07:00
arc
51bfc78a36 vault backup: 2025-01-21 12:49:38 2025-01-21 12:49:38 -07:00
arc
37fb816baa vault backup: 2025-01-21 12:44:38 2025-01-21 12:44:38 -07:00
arc
8e3bb33d7c vault backup: 2025-01-21 12:39:38 2025-01-21 12:39:38 -07:00
arc
d0f0166fb5 vault backup: 2025-01-21 12:34:38 2025-01-21 12:34:38 -07:00
arc
ddb268ef39 vault backup: 2025-01-21 12:29:38 2025-01-21 12:29:38 -07:00
arc
4b7a25496e vault backup: 2025-01-21 12:24:38 2025-01-21 12:24:38 -07:00
arc
d963b081d9 vault backup: 2025-01-21 12:19:38 2025-01-21 12:19:38 -07:00
arc
d8e7b06c2c vault backup: 2025-01-21 12:14:38 2025-01-21 12:14:38 -07:00
arc
debaf2bace vault backup: 2025-01-21 12:09:38 2025-01-21 12:09:38 -07:00
arc
b6bb60e548 vault backup: 2025-01-21 12:04:38 2025-01-21 12:04:38 -07:00
arc
08dcd5104e vault backup: 2025-01-17 16:06:27 2025-01-17 16:06:27 -07:00
arc
0784d7df66 vault backup: 2025-01-17 16:01:27 2025-01-17 16:01:27 -07:00
arc
589b03582b vault backup: 2025-01-17 15:56:27 2025-01-17 15:56:27 -07:00
arc
77ec466cd0 vault backup: 2025-01-17 15:51:27 2025-01-17 15:51:27 -07:00
arc
64764837b3 vault backup: 2025-01-17 15:03:02 2025-01-17 15:03:02 -07:00
arc
b30345915f vault backup: 2025-01-17 14:58:02 2025-01-17 14:58:02 -07:00
arc
47ba2bb11d vault backup: 2025-01-14 18:32:16 2025-01-14 18:32:16 -07:00
arc
3873085ccd vault backup: 2025-01-13 13:29:26 2025-01-13 13:29:26 -07:00
arc
fcf0fcc1fb vault backup: 2025-01-13 13:24:26 2025-01-13 13:24:26 -07:00
arc
b51fce6bac vault backup: 2025-01-13 13:19:26 2025-01-13 13:19:26 -07:00
arc
dd0a77e726 vault backup: 2025-01-13 13:14:26 2025-01-13 13:14:26 -07:00
arc
518bd4620f vault backup: 2025-01-13 13:09:26 2025-01-13 13:09:26 -07:00
arc
b2e6171f7b vault backup: 2025-01-13 12:45:49 2025-01-13 12:45:49 -07:00
arc
c0ca143aa1 vault backup: 2025-01-13 12:40:49 2025-01-13 12:40:49 -07:00
arc
8009812a1f vault backup: 2025-01-13 12:35:49 2025-01-13 12:35:49 -07:00
arc
e16bde1c2c vault backup: 2025-01-13 12:30:49 2025-01-13 12:30:49 -07:00
arc
6b4861debf vault backup: 2025-01-13 12:25:49 2025-01-13 12:25:49 -07:00
arc
1deb209d3a vault backup: 2025-01-13 12:20:31 2025-01-13 12:20:31 -07:00
arc
f7e08f0cbe vault backup: 2025-01-13 12:15:31 2025-01-13 12:15:31 -07:00
arc
ff39338ae3 vault backup: 2025-01-13 09:47:25 2025-01-13 09:47:25 -07:00
arc
e65ad8f817 vault backup: 2025-01-13 09:42:25 2025-01-13 09:42:25 -07:00
arc
46e32cbea1 vault backup: 2025-01-13 09:37:25 2025-01-13 09:37:25 -07:00
arc
bd133a2216 vault backup: 2025-01-13 09:32:25 2025-01-13 09:32:25 -07:00
arc
1531a0727d vault backup: 2025-01-12 18:10:21 2025-01-12 18:10:21 -07:00
arc
1e4b6518c8 vault backup: 2025-01-12 17:35:21 2025-01-12 17:35:21 -07:00
arc
03fefacc45 vault backup: 2025-01-12 17:30:22 2025-01-12 17:30:22 -07:00
arc
3807a75b5b vault backup: 2025-01-10 10:46:30 2025-01-10 10:46:30 -07:00
arc
dcc08d7492 vault backup: 2025-01-10 10:02:03 2025-01-10 10:02:03 -07:00
arc
f602401dc8 vault backup: 2025-01-10 09:57:03 2025-01-10 09:57:03 -07:00
arc
61103fb0d4 vault backup: 2025-01-10 09:52:03 2025-01-10 09:52:03 -07:00
arc
132af086cb vault backup: 2025-01-10 09:42:02 2025-01-10 09:42:03 -07:00
arc
905e49b4d7 vault backup: 2025-01-10 09:37:02 2025-01-10 09:37:02 -07:00
arc
c0fd3b66ab vault backup: 2025-01-10 09:32:02 2025-01-10 09:32:02 -07:00
arc
c5cfc463c8 vault backup: 2025-01-10 09:27:02 2025-01-10 09:27:02 -07:00
arc
081bff2367 vault backup: 2025-01-10 09:22:02 2025-01-10 09:22:02 -07:00
arc
40e6e9b8b5 vault backup: 2025-01-10 09:17:02 2025-01-10 09:17:02 -07:00
arc
876b6b73aa vault backup: 2025-01-09 14:12:03 2025-01-09 14:12:03 -07:00
arc
2e2ae5fd4e vault backup: 2025-01-09 14:07:03 2025-01-09 14:07:03 -07:00
arc
2170f4a264 vault backup: 2025-01-09 13:47:04 2025-01-09 13:47:04 -07:00
arc
d743d8ca93 vault backup: 2025-01-09 13:21:59 2025-01-09 13:21:59 -07:00
arc
7e6d46d699 vault backup: 2025-01-09 13:16:59 2025-01-09 13:16:59 -07:00
arc
0fc3adb514 vault backup: 2025-01-09 13:11:59 2025-01-09 13:11:59 -07:00
arc
57a37356cc vault backup: 2025-01-09 13:06:59 2025-01-09 13:06:59 -07:00
arc
c3016ca483 vault backup: 2025-01-09 11:25:52 2025-01-09 11:25:52 -07:00
arc
b8b1ac748d vault backup: 2025-01-09 11:00:52 2025-01-09 11:00:52 -07:00
arc
6234484ffe vault backup: 2025-01-08 12:18:17 2025-01-08 12:18:17 -07:00
arc
b8eb7ce640 vault backup: 2025-01-08 12:13:17 2025-01-08 12:13:17 -07:00
arc
562b783463 vault backup: 2025-01-08 12:08:17 2025-01-08 12:08:17 -07:00
arc
00b837abaf vault backup: 2025-01-08 12:03:17 2025-01-08 12:03:17 -07:00
arc
6a8bda4f8b vault backup: 2025-01-08 11:58:17 2025-01-08 11:58:17 -07:00
arc
d9aeb6320a vault backup: 2025-01-07 18:34:44 2025-01-07 18:34:44 -07:00
arc
236165cdd2 vault backup: 2025-01-07 18:29:44 2025-01-07 18:29:44 -07:00
arc
f5c776708a vault backup: 2025-01-07 18:24:44 2025-01-07 18:24:44 -07:00
arc
b34904f895 vault backup: 2025-01-07 18:19:44 2025-01-07 18:19:44 -07:00
arc
c99ca523f4 vault backup: 2025-01-07 18:14:44 2025-01-07 18:14:44 -07:00
arc
544cfb24fc vault backup: 2025-01-07 18:09:44 2025-01-07 18:09:44 -07:00
arc
e93c22f928 vault backup: 2024-12-23 12:47:11 2024-12-23 12:47:11 -07:00
arc
6150508f04 vault backup: 2024-12-20 14:11:41 2024-12-20 14:11:41 -07:00
arc
54a644d8e4 vault backup: 2024-12-20 13:36:41 2024-12-20 13:36:41 -07:00
arc
552f7226d4 vault backup: 2024-12-20 13:30:15 2024-12-20 13:30:15 -07:00
arc
53fae86447 vault backup: 2024-12-20 13:00:15 2024-12-20 13:00:15 -07:00
arc
d99bc67e12 vault backup: 2024-12-17 12:40:57 2024-12-17 12:40:57 -07:00
arc
1d3289c0f5 vault backup: 2024-12-16 16:17:49 2024-12-16 16:17:49 -07:00
arc
7304a3eaf2 vault backup: 2024-12-10 09:24:37 2024-12-10 09:24:37 -07:00
arc
14fb33389f vault backup: 2024-12-08 18:54:15 2024-12-08 18:54:15 -07:00
arc
05583a43ee vault backup: 2024-12-05 20:05:17 2024-12-05 20:05:17 -07:00
arc
5b981260aa vault backup: 2024-12-05 20:00:17 2024-12-05 20:00:17 -07:00
arc
561b65dcba vault backup: 2024-12-05 10:34:01 2024-12-05 10:34:01 -07:00
arc
8b843bde9c vault backup: 2024-12-05 09:59:29 2024-12-05 09:59:29 -07:00
arc
3445037dbd vault backup: 2024-12-05 08:50:05 2024-12-05 08:50:05 -07:00
arc
54f5138921 vault backup: 2024-12-04 15:43:49 2024-12-04 15:43:49 -07:00
arc
0b4f0774cb vault backup: 2024-12-04 11:03:03 2024-12-04 11:03:03 -07:00
arc
2d797bd20e vault backup: 2024-12-04 10:01:27 2024-12-04 10:01:27 -07:00
arc
27f5e2bdef vault backup: 2024-12-04 09:56:27 2024-12-04 09:56:27 -07:00
arc
ccce9cd4bf vault backup: 2024-12-03 16:28:30 2024-12-03 16:28:30 -07:00
arc
6373eecb70 vault backup: 2024-12-03 16:23:30 2024-12-03 16:23:30 -07:00
arc
c49a89b19e vault backup: 2024-12-03 13:01:09 2024-12-03 13:01:09 -07:00
arc
2a79b50cd3 vault backup: 2024-12-03 12:56:09 2024-12-03 12:56:09 -07:00
arc
35f029178a vault backup: 2024-12-03 12:51:09 2024-12-03 12:51:09 -07:00
arc
7b2836e81c vault backup: 2024-12-03 12:46:09 2024-12-03 12:46:09 -07:00
arc
d3fc0c4951 vault backup: 2024-12-03 12:41:09 2024-12-03 12:41:09 -07:00
arc
b53776eabe vault backup: 2024-12-03 12:36:09 2024-12-03 12:36:09 -07:00
arc
ff72fd447e vault backup: 2024-12-03 12:31:09 2024-12-03 12:31:09 -07:00
arc
cbb77a9283 vault backup: 2024-12-03 12:26:09 2024-12-03 12:26:09 -07:00
arc
716569071b vault backup: 2024-12-03 12:21:09 2024-12-03 12:21:09 -07:00
arc
d8a5a79e51 vault backup: 2024-12-03 12:16:09 2024-12-03 12:16:09 -07:00
arc
939d0f9684 vault backup: 2024-12-03 12:11:09 2024-12-03 12:11:09 -07:00
arc
20ea35ac14 vault backup: 2024-12-02 11:42:53 2024-12-02 11:42:53 -07:00
arc
c01734fb7a vault backup: 2024-12-02 10:18:13 2024-12-02 10:18:13 -07:00
arc
0356193ef6 vault backup: 2024-12-02 10:13:13 2024-12-02 10:13:13 -07:00
arc
1bd382f85c vault backup: 2024-12-02 10:08:13 2024-12-02 10:08:13 -07:00
arc
e56a34a41c vault backup: 2024-12-02 09:48:12 2024-12-02 09:48:12 -07:00
arc
1749c6225e vault backup: 2024-11-28 16:12:59 2024-11-28 16:12:59 -07:00
arc
8a19d78dfc vault backup: 2024-11-25 13:08:35 2024-11-25 13:08:35 -07:00
arc
2650229bce vault backup: 2024-11-25 10:26:36 2024-11-25 10:26:36 -07:00
arc
65ac315a29 vault backup: 2024-11-25 10:16:37 2024-11-25 10:16:37 -07:00
arc
f91a30aa5b vault backup: 2024-11-25 10:11:37 2024-11-25 10:11:37 -07:00
arc
1cba982320 vault backup: 2024-11-25 10:06:37 2024-11-25 10:06:37 -07:00
arc
bae0e45d21 vault backup: 2024-11-25 10:01:37 2024-11-25 10:01:37 -07:00
arc
e5ba16e8a1 vault backup: 2024-11-25 09:56:37 2024-11-25 09:56:37 -07:00
arc
2f1d3f2f72 vault backup: 2024-11-25 09:51:37 2024-11-25 09:51:37 -07:00
arc
33fe846675 vault backup: 2024-11-25 09:46:37 2024-11-25 09:46:37 -07:00
arc
e24bb9e78c sync 2024-11-25 09:43:43 -07:00
eaef75538b vault backup: 2024-11-22 18:22:25 2024-11-22 18:22:25 -07:00
8fdb1c61bf vault backup: 2024-11-20 11:08:57 2024-11-20 11:08:57 -07:00
d4325eb528 vault backup: 2024-11-20 11:03:57 2024-11-20 11:03:57 -07:00
3777c8a9fb vault backup: 2024-11-20 10:58:57 2024-11-20 10:58:57 -07:00
bd95038b9c vault backup: 2024-11-20 10:53:57 2024-11-20 10:53:57 -07:00
1911f9cfef vault backup: 2024-11-19 22:10:22 2024-11-19 22:10:22 -07:00
56b77cc8ff vault backup: 2024-11-19 22:05:20 2024-11-19 22:05:20 -07:00
a406845641 vault backup: 2024-11-19 22:00:20 2024-11-19 22:00:20 -07:00
9225582340 vault backup: 2024-11-19 21:54:36 2024-11-19 21:54:36 -07:00
b677e73bbe vault backup: 2024-11-19 21:49:36 2024-11-19 21:49:36 -07:00
7661f4b835 vault backup: 2024-11-19 21:44:36 2024-11-19 21:44:36 -07:00
59395f8e1c vault backup: 2024-11-19 21:31:02 2024-11-19 21:31:02 -07:00
a5ad33523f vault backup: 2024-11-19 21:26:03 2024-11-19 21:26:03 -07:00
35c54292c8 vault backup: 2024-11-19 21:02:30 2024-11-19 21:02:30 -07:00
743e1a320d vault backup: 2024-11-19 20:57:20 2024-11-19 20:57:20 -07:00
d5d9a922db vault backup: 2024-11-19 14:25:06 2024-11-19 14:25:06 -07:00
a036bfb790 vault backup: 2024-11-19 14:20:06 2024-11-19 14:20:06 -07:00
5484db6823 vault backup: 2024-11-19 14:15:06 2024-11-19 14:15:06 -07:00
c4e36ab804 vault backup: 2024-11-19 14:10:06 2024-11-19 14:10:06 -07:00
8ffad97607 vault backup: 2024-11-19 14:05:06 2024-11-19 14:05:06 -07:00
eecd4ba098 vault backup: 2024-11-19 13:55:06 2024-11-19 13:55:06 -07:00
d35fb4f304 vault backup: 2024-11-19 13:24:02 2024-11-19 13:24:02 -07:00
21a0279348 vault backup: 2024-11-19 13:07:21 2024-11-19 13:07:21 -07:00
67562c24a2 vault backup: 2024-11-19 13:02:21 2024-11-19 13:02:21 -07:00
f0e5fbd5cc vault backup: 2024-11-19 12:57:21 2024-11-19 12:57:21 -07:00
99e8593199 vault backup: 2024-11-19 12:52:21 2024-11-19 12:52:21 -07:00
3329ef62f5 vault backup: 2024-11-19 12:47:21 2024-11-19 12:47:21 -07:00
e69b5e9365 vault backup: 2024-11-19 12:42:21 2024-11-19 12:42:21 -07:00
c15919b524 vault backup: 2024-11-19 12:37:21 2024-11-19 12:37:21 -07:00
fb9dd21b96 vault backup: 2024-11-19 12:32:21 2024-11-19 12:32:21 -07:00
b4645c291f vault backup: 2024-11-19 12:27:21 2024-11-19 12:27:21 -07:00
3c8bba0d8f vault backup: 2024-11-19 12:22:21 2024-11-19 12:22:21 -07:00
450f6c4228 vault backup: 2024-11-19 12:12:21 2024-11-19 12:12:21 -07:00
1e91beb631 vault backup: 2024-11-18 11:05:09 2024-11-18 11:05:09 -07:00
4e8b44c0b1 vault backup: 2024-11-18 11:00:09 2024-11-18 11:00:09 -07:00
bccb5776d1 vault backup: 2024-11-16 20:33:44 2024-11-16 20:33:44 -07:00
af8092a3e9 vault backup: 2024-11-15 23:23:12 2024-11-15 23:23:12 -07:00
f6133e4011 vault backup: 2024-11-15 18:36:06 2024-11-15 18:36:06 -07:00
d92830fb1c vault backup: 2024-11-15 14:28:32 2024-11-15 14:28:32 -07:00
489b010ab5 vault backup: 2024-11-15 14:18:25 2024-11-15 14:18:25 -07:00
23a2998a46 vault backup: 2024-11-15 14:13:25 2024-11-15 14:13:25 -07:00
0ce9c71a39 vault backup: 2024-11-15 14:08:25 2024-11-15 14:08:25 -07:00
0ba62cee12 vault backup: 2024-11-15 14:03:25 2024-11-15 14:03:25 -07:00
6dc499f253 vault backup: 2024-11-15 13:58:25 2024-11-15 13:58:25 -07:00
f307123921 vault backup: 2024-11-15 13:53:25 2024-11-15 13:53:25 -07:00
6572205b37 vault backup: 2024-11-15 13:48:25 2024-11-15 13:48:25 -07:00
be3194801f vault backup: 2024-11-14 09:11:40 2024-11-14 09:11:40 -07:00
1503169e99 vault backup: 2024-11-14 09:06:40 2024-11-14 09:06:40 -07:00
e174520f8e vault backup: 2024-11-14 09:01:40 2024-11-14 09:01:40 -07:00
055f5d5f4f vault backup: 2024-11-14 08:51:40 2024-11-14 08:51:40 -07:00
4e837f3389 vault backup: 2024-11-14 08:41:40 2024-11-14 08:41:40 -07:00
dc84d2706e vault backup: 2024-11-14 08:31:40 2024-11-14 08:31:40 -07:00
0b58a2c232 vault backup: 2024-11-14 08:26:40 2024-11-14 08:26:40 -07:00
8e5907493c vault backup: 2024-11-14 08:21:40 2024-11-14 08:21:40 -07:00
df744f6624 vault backup: 2024-11-14 08:16:40 2024-11-14 08:16:40 -07:00
a81d45d0c3 vault backup: 2024-11-14 08:11:40 2024-11-14 08:11:40 -07:00
449bcdd287 vault backup: 2024-11-14 08:06:40 2024-11-14 08:06:40 -07:00
1bf8873a0e vault backup: 2024-11-14 08:01:30 2024-11-14 08:01:30 -07:00
172db6b481 vault backup: 2024-11-14 07:56:30 2024-11-14 07:56:30 -07:00
e73027234b vault backup: 2024-11-14 07:51:30 2024-11-14 07:51:30 -07:00
be7d2ba90a vault backup: 2024-11-14 07:46:30 2024-11-14 07:46:30 -07:00
3e17b9c0f7 vault backup: 2024-11-14 07:41:30 2024-11-14 07:41:30 -07:00
22b8250525 vault backup: 2024-11-14 07:36:30 2024-11-14 07:36:30 -07:00
6f59428472 vault backup: 2024-11-14 07:31:30 2024-11-14 07:31:30 -07:00
07e4d325b8 vault backup: 2024-11-14 07:26:30 2024-11-14 07:26:30 -07:00
9fdee9481f vault backup: 2024-11-14 07:21:30 2024-11-14 07:21:30 -07:00
053e749c50 vault backup: 2024-11-14 07:16:30 2024-11-14 07:16:30 -07:00
8ba8dc5a19 vault backup: 2024-11-14 07:11:01 2024-11-14 07:11:01 -07:00
1b01b359cf vault backup: 2024-11-14 07:06:01 2024-11-14 07:06:01 -07:00
95e8231a61 vault backup: 2024-11-14 07:01:01 2024-11-14 07:01:01 -07:00
b222200373 vault backup: 2024-11-13 23:55:50 2024-11-13 23:55:50 -07:00
505cf89f71 vault backup: 2024-11-13 23:50:50 2024-11-13 23:50:50 -07:00
1a89180a38 vault backup: 2024-11-13 23:45:50 2024-11-13 23:45:50 -07:00
90c66a4b22 vault backup: 2024-11-13 23:40:50 2024-11-13 23:40:50 -07:00
e92632bfcc vault backup: 2024-11-13 23:35:50 2024-11-13 23:35:50 -07:00
6b2010fc36 vault backup: 2024-11-13 23:30:50 2024-11-13 23:30:50 -07:00
5f25b7571e vault backup: 2024-11-12 13:27:51 2024-11-12 13:27:51 -07:00
8494819529 vault backup: 2024-11-12 13:05:01 2024-11-12 13:05:01 -07:00
3249a4962f vault backup: 2024-11-12 12:59:01 2024-11-12 12:59:01 -07:00
2b6daad095 vault backup: 2024-11-12 12:53:50 2024-11-12 12:53:50 -07:00
e228e51a47 vault backup: 2024-11-12 12:48:48 2024-11-12 12:48:48 -07:00
de40f0ef64 vault backup: 2024-11-12 12:43:48 2024-11-12 12:43:48 -07:00
90cf76f26b vault backup: 2024-11-12 12:38:49 2024-11-12 12:38:49 -07:00
4dcb55ab6c vault backup: 2024-11-11 21:48:16 2024-11-11 21:48:16 -07:00
3cb8e2c541 vault backup: 2024-11-11 21:43:16 2024-11-11 21:43:16 -07:00
8dba7a9dc1 vault backup: 2024-11-11 21:38:16 2024-11-11 21:38:16 -07:00
01a3e6ed52 vault backup: 2024-11-11 21:33:17 2024-11-11 21:33:17 -07:00
86f9630806 vault backup: 2024-11-11 21:28:15 2024-11-11 21:28:15 -07:00
6a21810c79 vault backup: 2024-11-10 22:11:06 2024-11-10 22:11:06 -07:00
d1232122ff vault backup: 2024-11-10 21:56:06 2024-11-10 21:56:06 -07:00
a1a7261269 vault backup: 2024-11-10 21:51:06 2024-11-10 21:51:06 -07:00
54375bff52 vault backup: 2024-11-10 21:46:06 2024-11-10 21:46:06 -07:00
71e73a9ef1 vault backup: 2024-11-10 21:41:06 2024-11-10 21:41:06 -07:00
d6f47d0f95 vault backup: 2024-11-10 21:36:06 2024-11-10 21:36:06 -07:00
a722cdd3b7 vault backup: 2024-11-10 21:31:06 2024-11-10 21:31:06 -07:00
a720c5d1f7 vault backup: 2024-11-10 21:26:06 2024-11-10 21:26:06 -07:00
b502602382 vault backup: 2024-11-10 21:21:06 2024-11-10 21:21:06 -07:00
5fee60ba7b vault backup: 2024-11-10 21:01:06 2024-11-10 21:01:06 -07:00
081dfe7116 vault backup: 2024-11-10 20:56:06 2024-11-10 20:56:06 -07:00
86ecc96c92 vault backup: 2024-11-10 20:51:05 2024-11-10 20:51:05 -07:00
2799f844b4 vault backup: 2024-11-10 20:46:05 2024-11-10 20:46:06 -07:00
21f55263c0 vault backup: 2024-11-10 20:41:05 2024-11-10 20:41:05 -07:00
6fc73295ae vault backup: 2024-11-10 20:36:05 2024-11-10 20:36:05 -07:00
669658b79e vault backup: 2024-11-10 20:31:05 2024-11-10 20:31:05 -07:00
2fdeda7c0a vault backup: 2024-11-10 20:21:05 2024-11-10 20:21:05 -07:00
33e56653a6 vault backup: 2024-11-07 13:13:12 2024-11-07 13:13:12 -07:00
4175313852 vault backup: 2024-11-07 13:08:13 2024-11-07 13:08:13 -07:00
580c08eecb vault backup: 2024-11-07 09:22:40 2024-11-07 09:22:40 -07:00
5d7e7e7f30 vault backup: 2024-11-07 09:17:40 2024-11-07 09:17:40 -07:00
c411cc2ee7 vault backup: 2024-11-07 09:12:40 2024-11-07 09:12:40 -07:00
c80df1b114 vault backup: 2024-11-07 09:07:40 2024-11-07 09:07:40 -07:00
908a3dce9d vault backup: 2024-11-07 09:02:40 2024-11-07 09:02:40 -07:00
7935e9d8a8 vault backup: 2024-11-07 08:47:40 2024-11-07 08:47:40 -07:00
1aea8df372 vault backup: 2024-11-07 08:42:40 2024-11-07 08:42:40 -07:00
af925265e8 vault backup: 2024-11-07 08:37:36 2024-11-07 08:37:36 -07:00
59bfa717b9 vault backup: 2024-11-07 08:32:36 2024-11-07 08:32:36 -07:00
c652257eae vault backup: 2024-11-07 08:27:36 2024-11-07 08:27:36 -07:00
00c5149d7d vault backup: 2024-11-07 08:01:10 2024-11-07 08:01:10 -07:00
6884a69188 vault backup: 2024-11-07 07:56:09 2024-11-07 07:56:09 -07:00
0ebe13465e vault backup: 2024-11-07 07:46:04 2024-11-07 07:46:04 -07:00
7308d94e02 vault backup: 2024-11-07 07:40:37 2024-11-07 07:40:37 -07:00
151a88c14e vault backup: 2024-11-06 11:30:08 2024-11-06 11:30:08 -07:00
0940db21c8 vault backup: 2024-11-05 11:43:30 2024-11-05 11:43:30 -07:00
5c37c59fa8 vault backup: 2024-11-05 11:38:30 2024-11-05 11:38:30 -07:00
a8819068c3 vault backup: 2024-11-05 11:33:13 2024-11-05 11:33:13 -07:00
73e3013160 vault backup: 2024-11-05 11:28:09 2024-11-05 11:28:09 -07:00
086b771d9e vault backup: 2024-11-05 11:23:09 2024-11-05 11:23:09 -07:00
b2145afe2d vault backup: 2024-11-04 11:55:02 2024-11-04 11:55:02 -07:00
456283d25b vault backup: 2024-11-04 11:25:50 2024-11-04 11:25:50 -07:00
470d0422e2 vault backup: 2024-11-03 17:01:24 2024-11-03 17:01:24 -07:00
0decb67b08 vault backup: 2024-11-03 15:14:05 2024-11-03 15:14:05 -07:00
06fd14c57c vault backup: 2024-11-03 14:35:04 2024-11-03 14:35:04 -07:00
b434383ae8 vault backup: 2024-11-03 14:30:04 2024-11-03 14:30:04 -07:00
7e83d70c8f vault backup: 2024-11-03 14:25:04 2024-11-03 14:25:04 -07:00
0e2586459f vault backup: 2024-11-03 14:20:04 2024-11-03 14:20:04 -07:00
a46466ade3 vault backup: 2024-11-03 14:15:04 2024-11-03 14:15:04 -07:00
6a77276898 vault backup: 2024-11-03 14:10:04 2024-11-03 14:10:04 -07:00
fa3005c373 vault backup: 2024-11-03 14:05:04 2024-11-03 14:05:04 -07:00
b802ac20e6 vault backup: 2024-11-03 13:58:19 2024-11-03 13:58:19 -07:00
d899794e1f vault backup: 2024-11-03 13:03:05 2024-11-03 13:03:05 -07:00
9e7cadbd57 vault backup: 2024-11-01 19:57:35 2024-11-01 19:57:35 -06:00
4578ffcfc1 vault backup: 2024-11-01 19:27:35 2024-11-01 19:27:35 -06:00
80e55a2cdc vault backup: 2024-11-01 18:51:35 2024-11-01 18:51:35 -06:00
95c2879094 vault backup: 2024-11-01 18:46:35 2024-11-01 18:46:35 -06:00
345189f5c0 vault backup: 2024-11-01 18:41:33 2024-11-01 18:41:33 -06:00
90b7ac60e4 vault backup: 2024-11-01 18:36:34 2024-11-01 18:36:34 -06:00
22f9efc089 vault backup: 2024-11-01 18:31:34 2024-11-01 18:31:34 -06:00
361c6777dc vault backup: 2024-11-01 18:26:34 2024-11-01 18:26:34 -06:00
f33146900e vault backup: 2024-11-01 18:21:34 2024-11-01 18:21:34 -06:00
8ddf50bbff vault backup: 2024-11-01 18:16:34 2024-11-01 18:16:34 -06:00
c3b0044e1d vault backup: 2024-11-01 18:11:33 2024-11-01 18:11:34 -06:00
d159fb2f00 vault backup: 2024-11-01 17:38:05 2024-11-01 17:38:05 -06:00
01dea96c49 vault backup: 2024-11-01 17:33:05 2024-11-01 17:33:05 -06:00
697cb152ee vault backup: 2024-11-01 17:15:03 2024-11-01 17:15:03 -06:00
e623a7afc6 vault backup: 2024-11-01 17:10:02 2024-11-01 17:10:02 -06:00
e65d971cfb vault backup: 2024-11-01 16:36:53 2024-11-01 16:36:54 -06:00
f25d8a00b5 vault backup: 2024-11-01 16:09:27 2024-11-01 16:09:27 -06:00
ff27a1fdb6 vault backup: 2024-11-01 16:04:27 2024-11-01 16:04:27 -06:00
a30384d1d3 vault backup: 2024-11-01 15:59:27 2024-11-01 15:59:27 -06:00
00325e56bd vault backup: 2024-11-01 15:54:27 2024-11-01 15:54:27 -06:00
02483df21c vault backup: 2024-11-01 15:49:27 2024-11-01 15:49:27 -06:00
580fb230a9 vault backup: 2024-11-01 15:44:27 2024-11-01 15:44:27 -06:00
8c39085ce3 vault backup: 2024-11-01 15:39:27 2024-11-01 15:39:27 -06:00
0870e5ab2b vault backup: 2024-11-01 13:28:59 2024-11-01 13:28:59 -06:00
0cbe502348 vault backup: 2024-11-01 13:23:59 2024-11-01 13:23:59 -06:00
2e3053784b vault backup: 2024-11-01 13:18:59 2024-11-01 13:18:59 -06:00
77e7cdf760 vault backup: 2024-10-28 11:20:14 2024-10-28 11:20:14 -06:00
21dd78dedc vault backup: 2024-10-28 11:15:14 2024-10-28 11:15:14 -06:00
c7e04c17fb vault backup: 2024-10-28 11:10:14 2024-10-28 11:10:14 -06:00
5325bb45e2 vault backup: 2024-10-28 11:05:14 2024-10-28 11:05:14 -06:00
a18e3fa00d vault backup: 2024-10-28 11:00:14 2024-10-28 11:00:14 -06:00
6bb610f896 vault backup: 2024-10-28 10:55:14 2024-10-28 10:55:14 -06:00
75074fe98d vault backup: 2024-10-28 10:50:14 2024-10-28 10:50:14 -06:00
56a41f58c6 vault backup: 2024-10-28 10:45:14 2024-10-28 10:45:14 -06:00
cae09887da vault backup: 2024-10-28 10:30:15 2024-10-28 10:30:15 -06:00
7d58412a45 vault backup: 2024-10-28 09:31:30 2024-10-28 09:31:30 -06:00
dc9a5d0289 vault backup: 2024-10-28 09:26:30 2024-10-28 09:26:30 -06:00
d430c4fff9 vault backup: 2024-10-28 09:21:30 2024-10-28 09:21:30 -06:00
c3c3962b4b vault backup: 2024-10-26 19:38:26 2024-10-26 19:38:26 -06:00
eba8eb715d vault backup: 2024-10-26 19:33:26 2024-10-26 19:33:26 -06:00
fa81186df9 vault backup: 2024-10-26 19:28:26 2024-10-26 19:28:26 -06:00
a9bc338a6e vault backup: 2024-10-26 19:23:26 2024-10-26 19:23:26 -06:00
b88d3b4c02 vault backup: 2024-10-25 14:32:38 2024-10-25 14:32:38 -06:00
9269af0cdd vault backup: 2024-10-25 14:06:54 2024-10-25 14:06:54 -06:00
f5c0b5f1bf vault backup: 2024-10-25 14:01:54 2024-10-25 14:01:54 -06:00
87121bd4a2 vault backup: 2024-10-25 13:56:54 2024-10-25 13:56:54 -06:00
22548282c3 vault backup: 2024-10-25 13:51:54 2024-10-25 13:51:54 -06:00
c597a67b41 vault backup: 2024-10-25 13:46:54 2024-10-25 13:46:54 -06:00
4e834b5ebb vault backup: 2024-10-24 10:23:18 2024-10-24 10:23:18 -06:00
d5b3c54761 vault backup: 2024-10-22 20:46:27 2024-10-22 20:46:27 -06:00
eb2fca5f2d vault backup: 2024-10-22 20:41:27 2024-10-22 20:41:27 -06:00
da93ab2c5a vault backup: 2024-10-22 17:36:38 2024-10-22 17:36:38 -06:00
8cc26e7959 vault backup: 2024-10-22 13:26:47 2024-10-22 13:26:47 -06:00
e5472a7b24 vault backup: 2024-10-22 13:09:00 2024-10-22 13:09:00 -06:00
764563a5bf vault backup: 2024-10-22 13:04:00 2024-10-22 13:04:00 -06:00
293adc2ee2 vault backup: 2024-10-22 12:59:00 2024-10-22 12:59:00 -06:00
248b8d8de9 vault backup: 2024-10-22 12:54:00 2024-10-22 12:54:00 -06:00
070367f6be vault backup: 2024-10-22 12:49:00 2024-10-22 12:49:00 -06:00
7b0824a620 vault backup: 2024-10-22 12:44:00 2024-10-22 12:44:00 -06:00
a384a14e5d vault backup: 2024-10-22 12:39:00 2024-10-22 12:39:00 -06:00
081f25169a vault backup: 2024-10-22 12:34:00 2024-10-22 12:34:00 -06:00
9aefc75085 vault backup: 2024-10-22 12:29:00 2024-10-22 12:29:00 -06:00
8def4dbc8e vault backup: 2024-10-22 11:20:29 2024-10-22 11:20:29 -06:00
35b709d7ff vault backup: 2024-10-21 14:55:31 2024-10-21 14:55:31 -06:00
523f968027 vault backup: 2024-10-21 14:31:46 2024-10-21 14:31:46 -06:00
9c98139af9 vault backup: 2024-10-21 10:00:25 2024-10-21 10:00:25 -06:00
e617329f6c vault backup: 2024-10-21 09:53:49 2024-10-21 09:53:49 -06:00
29456aebb0 vault backup: 2024-10-21 09:48:49 2024-10-21 09:48:49 -06:00
0b5764724d vault backup: 2024-10-21 09:43:49 2024-10-21 09:43:49 -06:00
9395076558 vault backup: 2024-10-21 09:38:49 2024-10-21 09:38:49 -06:00
4d56d80666 vault backup: 2024-10-20 15:46:26 2024-10-20 15:46:26 -06:00
187699f144 vault backup: 2024-10-16 11:23:24 2024-10-16 11:23:24 -06:00
4dfc708a72 vault backup: 2024-10-16 10:18:30 2024-10-16 10:18:30 -06:00
fdec43ed1e vault backup: 2024-10-16 10:07:57 2024-10-16 10:07:57 -06:00
927e3d0bde vault backup: 2024-10-15 20:42:02 2024-10-15 20:42:02 -06:00
bf6755c28c vault backup: 2024-10-15 20:37:02 2024-10-15 20:37:02 -06:00
42c9acef99 vault backup: 2024-10-15 20:32:02 2024-10-15 20:32:02 -06:00
5e72d7bfef vault backup: 2024-10-15 20:27:02 2024-10-15 20:27:02 -06:00
1d132f8316 vault backup: 2024-10-15 20:22:02 2024-10-15 20:22:02 -06:00
df71fccae1 vault backup: 2024-10-15 13:28:11 2024-10-15 13:28:11 -06:00
c53729feb4 vault backup: 2024-10-15 13:12:53 2024-10-15 13:12:53 -06:00
39e66d507c vault backup: 2024-10-15 13:02:53 2024-10-15 13:02:53 -06:00
2a9ca1d79f vault backup: 2024-10-15 12:57:53 2024-10-15 12:57:53 -06:00
88a9f725d0 vault backup: 2024-10-15 12:52:53 2024-10-15 12:52:53 -06:00
6a7f3be7e1 vault backup: 2024-10-15 12:47:53 2024-10-15 12:47:53 -06:00
2a048e17bb vault backup: 2024-10-15 12:42:53 2024-10-15 12:42:53 -06:00
266eba545d vault backup: 2024-10-15 12:37:53 2024-10-15 12:37:53 -06:00
bdd0029fd4 vault backup: 2024-10-15 12:32:53 2024-10-15 12:32:53 -06:00
98cb97ed30 vault backup: 2024-10-15 12:27:53 2024-10-15 12:27:53 -06:00
1404a57929 vault backup: 2024-10-12 21:02:02 2024-10-12 21:02:02 -06:00
11026292fd vault backup: 2024-10-12 20:57:02 2024-10-12 20:57:02 -06:00
bee5599cc3 vault backup: 2024-10-12 20:52:02 2024-10-12 20:52:02 -06:00
84bf3689e5 vault backup: 2024-10-12 20:47:02 2024-10-12 20:47:02 -06:00
94dd9d5d74 vault backup: 2024-10-12 20:42:02 2024-10-12 20:42:02 -06:00
effce4a641 vault backup: 2024-10-12 20:37:02 2024-10-12 20:37:02 -06:00
bc8c7c5fa9 vault backup: 2024-10-12 19:45:00 2024-10-12 19:45:00 -06:00
2b79d01319 vault backup: 2024-10-11 14:53:08 2024-10-11 14:53:08 -06:00
964812105f vault backup: 2024-10-11 14:48:08 2024-10-11 14:48:08 -06:00
f5551fc788 vault backup: 2024-10-11 14:43:08 2024-10-11 14:43:08 -06:00
fb56b3e3c0 vault backup: 2024-10-11 14:38:08 2024-10-11 14:38:08 -06:00
cd8e8fb80a vault backup: 2024-10-11 14:33:08 2024-10-11 14:33:08 -06:00
e0ebc4c69a vault backup: 2024-10-10 10:11:23 2024-10-10 10:11:23 -06:00
d0e64e06ad vault backup: 2024-10-10 10:06:23 2024-10-10 10:06:23 -06:00
d4f722c390 vault backup: 2024-10-10 10:01:23 2024-10-10 10:01:23 -06:00
a439087e25 vault backup: 2024-10-09 11:23:49 2024-10-09 11:23:49 -06:00
ee6e4835ed vault backup: 2024-10-09 11:18:40 2024-10-09 11:18:40 -06:00
d3a719d84a vault backup: 2024-10-09 11:12:34 2024-10-09 11:12:34 -06:00
44deaf0901 vault backup: 2024-10-09 11:06:40 2024-10-09 11:06:40 -06:00
2188e666bd vault backup: 2024-10-09 11:01:40 2024-10-09 11:01:40 -06:00
ac830eb57f vault backup: 2024-10-09 10:56:12 2024-10-09 10:56:12 -06:00
41cc143387 vault backup: 2024-10-09 10:51:12 2024-10-09 10:51:12 -06:00
eb0a5d9264 vault backup: 2024-10-08 22:11:53 2024-10-08 22:11:53 -06:00
4b75ea7a74 vault backup: 2024-10-08 22:06:51 2024-10-08 22:06:51 -06:00
9994e1407c vault backup: 2024-10-08 22:01:51 2024-10-08 22:01:51 -06:00
47e79e370d vault backup: 2024-10-08 21:46:22 2024-10-08 21:46:22 -06:00
0281a32394 vault backup: 2024-10-08 21:41:21 2024-10-08 21:41:22 -06:00
3a62a38f44 vault backup: 2024-10-08 21:36:22 2024-10-08 21:36:22 -06:00
df16aedfcd vault backup: 2024-10-08 21:30:42 2024-10-08 21:30:42 -06:00
59fefb4ae7 vault backup: 2024-10-08 21:25:18 2024-10-08 21:25:18 -06:00
1622311f8f vault backup: 2024-10-08 21:20:19 2024-10-08 21:20:19 -06:00
75f65b24bb vault backup: 2024-10-08 21:05:01 2024-10-08 21:05:01 -06:00
20c06eb3ed vault backup: 2024-10-08 21:00:01 2024-10-08 21:00:01 -06:00
d3deb01e86 vault backup: 2024-10-08 20:55:00 2024-10-08 20:55:00 -06:00
86345fe676 vault backup: 2024-10-08 20:48:52 2024-10-08 20:48:52 -06:00
7f1a463b11 vault backup: 2024-10-08 20:43:52 2024-10-08 20:43:52 -06:00
2a0b41bad2 vault backup: 2024-10-08 13:46:07 2024-10-08 13:46:07 -06:00
bc996ec8af vault backup: 2024-10-08 13:07:15 2024-10-08 13:07:15 -06:00
5016c247ee vault backup: 2024-10-08 13:02:15 2024-10-08 13:02:15 -06:00
bbd2c89e60 vault backup: 2024-10-08 12:57:15 2024-10-08 12:57:15 -06:00
a322016ef4 vault backup: 2024-10-08 12:52:15 2024-10-08 12:52:15 -06:00
1157f951b5 vault backup: 2024-10-08 12:47:15 2024-10-08 12:47:15 -06:00
9428dcc5d4 vault backup: 2024-10-08 12:42:15 2024-10-08 12:42:15 -06:00
2dee2be1b3 vault backup: 2024-10-08 12:37:15 2024-10-08 12:37:15 -06:00
120064e3a6 vault backup: 2024-10-08 12:32:15 2024-10-08 12:32:15 -06:00
4096a29ab0 vault backup: 2024-10-08 12:27:15 2024-10-08 12:27:15 -06:00
3d6aea9e8e vault backup: 2024-10-08 12:22:15 2024-10-08 12:22:15 -06:00
632e7438cb vault backup: 2024-10-08 11:57:15 2024-10-08 11:57:15 -06:00
25a4ce2cf4 vault backup: 2024-10-08 11:39:13 2024-10-08 11:39:13 -06:00
e2c3bb0292 vault backup: 2024-10-08 11:34:13 2024-10-08 11:34:13 -06:00
b0a32d6017 vault backup: 2024-10-08 11:29:13 2024-10-08 11:29:13 -06:00
37580d6c00 vault backup: 2024-10-08 11:24:13 2024-10-08 11:24:13 -06:00
5bf191f0de vault backup: 2024-10-07 15:34:03 2024-10-07 15:34:03 -06:00
115de31ebb vault backup: 2024-10-07 15:18:40 2024-10-07 15:18:40 -06:00
eccc9a9f6d vault backup: 2024-10-07 15:13:40 2024-10-07 15:13:40 -06:00
2c92915be7 vault backup: 2024-10-07 15:08:40 2024-10-07 15:08:40 -06:00
bd9f9bc956 vault backup: 2024-10-07 14:58:40 2024-10-07 14:58:40 -06:00
f9f0da665f vault backup: 2024-10-07 14:53:40 2024-10-07 14:53:40 -06:00
2fd51d50eb vault backup: 2024-10-07 14:48:40 2024-10-07 14:48:40 -06:00
287a95e479 vault backup: 2024-10-07 14:43:40 2024-10-07 14:43:40 -06:00
5c6fb3911e vault backup: 2024-10-07 14:19:03 2024-10-07 14:19:03 -06:00
27cf99c23a vault backup: 2024-10-07 14:13:48 2024-10-07 14:13:48 -06:00
ef0ac61db5 vault backup: 2024-10-07 13:53:48 2024-10-07 13:53:49 -06:00
e5f56ff162 vault backup: 2024-10-07 13:48:48 2024-10-07 13:48:49 -06:00
43704f156b vault backup: 2024-10-07 13:43:48 2024-10-07 13:43:48 -06:00
1aa6a152f3 vault backup: 2024-10-07 13:38:48 2024-10-07 13:38:48 -06:00
e5ebfb287d vault backup: 2024-10-07 13:28:48 2024-10-07 13:28:48 -06:00
b458dcec4a vault backup: 2024-10-07 13:23:48 2024-10-07 13:23:48 -06:00
308a92bc23 vault backup: 2024-10-07 13:18:48 2024-10-07 13:18:48 -06:00
93efdc9032 vault backup: 2024-10-07 13:08:48 2024-10-07 13:08:48 -06:00
876558ae41 vault backup: 2024-10-06 12:27:59 2024-10-06 12:27:59 -06:00
6a9c9fa9d1 vault backup: 2024-10-02 11:37:51 2024-10-02 11:37:51 -06:00
6641088b40 vault backup: 2024-10-02 11:32:50 2024-10-02 11:32:50 -06:00
286e7991a5 vault backup: 2024-10-02 11:27:50 2024-10-02 11:27:50 -06:00
d2b99ff284 vault backup: 2024-10-02 11:22:50 2024-10-02 11:22:50 -06:00
2a4495a114 vault backup: 2024-10-02 11:17:49 2024-10-02 11:17:50 -06:00
dc7ab62522 vault backup: 2024-10-02 11:07:50 2024-10-02 11:07:50 -06:00
7dd0fea950 vault backup: 2024-10-02 11:02:50 2024-10-02 11:02:50 -06:00
af8d80bf60 vault backup: 2024-10-02 10:57:49 2024-10-02 10:57:50 -06:00
7808dbd460 vault backup: 2024-10-02 10:52:50 2024-10-02 10:52:50 -06:00
86df859e88 vault backup: 2024-10-02 10:47:50 2024-10-02 10:47:50 -06:00
3eb08e7d9e vault backup: 2024-10-01 22:43:41 2024-10-01 22:43:41 -06:00
777cd5d52d vault backup: 2024-10-01 22:33:41 2024-10-01 22:33:41 -06:00
f1b07dbadc vault backup: 2024-10-01 22:18:41 2024-10-01 22:18:41 -06:00
1a4a8c62b4 vault backup: 2024-10-01 21:26:24 2024-10-01 21:26:24 -06:00
78c946967f vault backup: 2024-10-01 21:16:24 2024-10-01 21:16:24 -06:00
f2d6dd8bd7 vault backup: 2024-10-01 21:06:24 2024-10-01 21:06:24 -06:00
37759daba4 vault backup: 2024-10-01 21:01:24 2024-10-01 21:01:24 -06:00
a8b53fdccb vault backup: 2024-10-01 20:56:24 2024-10-01 20:56:24 -06:00
4b90cf2c2d vault backup: 2024-10-01 20:51:24 2024-10-01 20:51:24 -06:00
b12b0f9262 vault backup: 2024-10-01 14:50:40 2024-10-01 14:50:40 -06:00
d21fdc6f04 vault backup: 2024-10-01 13:10:47 2024-10-01 13:10:47 -06:00
866a3dbb68 vault backup: 2024-10-01 13:05:46 2024-10-01 13:05:46 -06:00
63be7c1525 vault backup: 2024-10-01 13:00:46 2024-10-01 13:00:46 -06:00
fd72153c44 vault backup: 2024-10-01 12:55:46 2024-10-01 12:55:46 -06:00
42cbf7aabb vault backup: 2024-10-01 12:50:46 2024-10-01 12:50:46 -06:00
54a1ee8caa vault backup: 2024-10-01 12:45:46 2024-10-01 12:45:46 -06:00
e77b419e35 vault backup: 2024-10-01 12:40:46 2024-10-01 12:40:46 -06:00
7920274d4a vault backup: 2024-10-01 12:35:46 2024-10-01 12:35:46 -06:00
a274082314 vault backup: 2024-10-01 12:30:46 2024-10-01 12:30:46 -06:00
b83bff7048 vault backup: 2024-10-01 12:25:46 2024-10-01 12:25:46 -06:00
21008b249c vault backup: 2024-10-01 12:22:01 2024-10-01 12:22:01 -06:00
b080671aa7 vault backup: 2024-09-30 15:18:49 2024-09-30 15:18:49 -06:00
8f8ea61710 vault backup: 2024-09-30 15:13:49 2024-09-30 15:13:49 -06:00
a9357af2eb vault backup: 2024-09-30 15:08:49 2024-09-30 15:08:49 -06:00
107002055b vault backup: 2024-09-30 15:03:49 2024-09-30 15:03:49 -06:00
b4cc677609 vault backup: 2024-09-30 14:58:49 2024-09-30 14:58:49 -06:00
948cbb3bce vault backup: 2024-09-30 14:53:49 2024-09-30 14:53:49 -06:00
0d914027e6 vault backup: 2024-09-30 11:38:24 2024-09-30 11:38:24 -06:00
8160525052 vault backup: 2024-09-30 11:33:24 2024-09-30 11:33:24 -06:00
5a3c1486fb vault backup: 2024-09-30 11:28:24 2024-09-30 11:28:24 -06:00
701bcf87aa vault backup: 2024-09-30 11:23:24 2024-09-30 11:23:24 -06:00
950f46655b vault backup: 2024-09-30 11:18:24 2024-09-30 11:18:24 -06:00
8dd761c084 vault backup: 2024-09-30 11:13:24 2024-09-30 11:13:24 -06:00
1d7b844ce7 vault backup: 2024-09-30 11:08:24 2024-09-30 11:08:24 -06:00
6be1bb929c vault backup: 2024-09-30 11:03:24 2024-09-30 11:03:24 -06:00
4e04256dd7 vault backup: 2024-09-30 10:58:24 2024-09-30 10:58:24 -06:00
a79c744389 vault backup: 2024-09-30 10:53:24 2024-09-30 10:53:24 -06:00
d5caf1e0b5 vault backup: 2024-09-30 10:48:24 2024-09-30 10:48:24 -06:00
61f76cba3a vault backup: 2024-09-26 09:13:33 2024-09-26 09:13:33 -06:00
bb92946542 vault backup: 2024-09-26 08:48:33 2024-09-26 08:48:33 -06:00
37ba8cbf7c vault backup: 2024-09-26 08:43:33 2024-09-26 08:43:33 -06:00
9e90349f90 vault backup: 2024-09-26 08:38:33 2024-09-26 08:38:33 -06:00
106f28b104 vault backup: 2024-09-26 08:33:33 2024-09-26 08:33:33 -06:00
f7bc59d91e vault backup: 2024-09-26 08:27:06 2024-09-26 08:27:06 -06:00
f240cfb9dc vault backup: 2024-09-25 15:06:35 2024-09-25 15:06:35 -06:00
ad57aa169e vault backup: 2024-09-25 15:01:35 2024-09-25 15:01:35 -06:00
4ba8c15525 vault backup: 2024-09-25 14:56:34 2024-09-25 14:56:34 -06:00
bbd4af3e97 vault backup: 2024-09-25 14:52:48 2024-09-25 14:52:48 -06:00
e8787230fe vault backup: 2024-09-24 22:11:16 2024-09-24 22:11:16 -06:00
28b7389515 vault backup: 2024-09-24 22:06:16 2024-09-24 22:06:16 -06:00
b5cfe462a3 vault backup: 2024-09-24 22:01:16 2024-09-24 22:01:16 -06:00
43c58e6145 vault backup: 2024-09-24 21:56:16 2024-09-24 21:56:16 -06:00
700f36f2ef vault backup: 2024-09-24 21:52:31 2024-09-24 21:52:31 -06:00
a28da01021 vault backup: 2024-09-24 21:39:37 2024-09-24 21:39:37 -06:00
d3bbe32413 vault backup: 2024-09-24 21:29:37 2024-09-24 21:29:37 -06:00
323089b58d vault backup: 2024-09-24 21:24:37 2024-09-24 21:24:37 -06:00
66ed1bfbc2 vault backup: 2024-09-24 21:19:37 2024-09-24 21:19:37 -06:00
b1f3198520 vault backup: 2024-09-24 21:14:37 2024-09-24 21:14:37 -06:00
979768af32 vault backup: 2024-09-24 13:06:23 2024-09-24 13:06:23 -06:00
1999c779ea vault backup: 2024-09-24 13:01:23 2024-09-24 13:01:23 -06:00
dbbdff8513 vault backup: 2024-09-24 12:56:23 2024-09-24 12:56:23 -06:00
8c82f29474 vault backup: 2024-09-24 12:51:23 2024-09-24 12:51:23 -06:00
a01b6d61f9 vault backup: 2024-09-24 12:41:23 2024-09-24 12:41:23 -06:00
dcf20e1cb5 vault backup: 2024-09-24 12:36:23 2024-09-24 12:36:23 -06:00
6aee69f9c1 vault backup: 2024-09-23 12:55:44 2024-09-23 12:55:44 -06:00
a96b3ccb25 vault backup: 2024-09-23 12:01:18 2024-09-23 12:01:19 -06:00
716bb343b1 vault backup: 2024-09-23 11:51:45 2024-09-23 11:51:45 -06:00
67454454ac vault backup: 2024-09-23 11:46:45 2024-09-23 11:46:45 -06:00
26114a6527 vault backup: 2024-09-23 11:41:45 2024-09-23 11:41:45 -06:00
b54005308c vault backup: 2024-09-23 11:36:45 2024-09-23 11:36:45 -06:00
487b115a15 vault backup: 2024-09-23 11:30:52 2024-09-23 11:30:52 -06:00
481b58fe54 vault backup: 2024-09-23 11:25:52 2024-09-23 11:25:52 -06:00
4bea0ad374 vault backup: 2024-09-23 11:20:52 2024-09-23 11:20:52 -06:00
38b0420144 vault backup: 2024-09-22 15:35:20 2024-09-22 15:35:20 -06:00
69af5ccf54 vault backup: 2024-09-22 15:27:20 2024-09-22 15:27:20 -06:00
569c773de6 vault backup: 2024-09-22 13:08:05 2024-09-22 13:08:05 -06:00
f3d2b8abf4 vault backup: 2024-09-18 12:27:12 2024-09-18 12:27:12 -06:00
c3e9661688 vault backup: 2024-09-18 12:22:12 2024-09-18 12:22:12 -06:00
45f0eedb03 vault backup: 2024-09-18 12:17:12 2024-09-18 12:17:12 -06:00
6e475df77a vault backup: 2024-09-18 12:12:12 2024-09-18 12:12:12 -06:00
867c6b849f vault backup: 2024-09-18 12:07:12 2024-09-18 12:07:12 -06:00
ae2df8eb0e vault backup: 2024-09-18 12:02:12 2024-09-18 12:02:12 -06:00
27b91d5928 vault backup: 2024-09-18 11:57:12 2024-09-18 11:57:12 -06:00
26c475fff5 vault backup: 2024-09-18 11:52:12 2024-09-18 11:52:12 -06:00
5dfd3085bb vault backup: 2024-09-18 11:47:12 2024-09-18 11:47:12 -06:00
0ac24032c0 vault backup: 2024-09-18 11:42:12 2024-09-18 11:42:12 -06:00
e1d0e5756f vault backup: 2024-09-18 11:37:12 2024-09-18 11:37:12 -06:00
e31c8eaaae vault backup: 2024-09-18 11:32:12 2024-09-18 11:32:12 -06:00
2f350ffaac vault backup: 2024-09-18 11:27:12 2024-09-18 11:27:12 -06:00
d79f745691 vault backup: 2024-09-18 11:22:12 2024-09-18 11:22:12 -06:00
b4d32d0ddf vault backup: 2024-09-18 11:17:12 2024-09-18 11:17:12 -06:00
ef0012eb8a vault backup: 2024-09-18 11:12:12 2024-09-18 11:12:12 -06:00
bf024cc4e6 vault backup: 2024-09-18 10:57:12 2024-09-18 10:57:12 -06:00
4fb2194464 vault backup: 2024-09-18 10:52:12 2024-09-18 10:52:12 -06:00
8c46d14203 vault backup: 2024-09-17 14:19:53 2024-09-17 14:19:53 -06:00
ef1e987d99 vault backup: 2024-09-17 14:14:53 2024-09-17 14:14:53 -06:00
9a1f0096ec vault backup: 2024-09-17 14:09:53 2024-09-17 14:09:53 -06:00
d610d1cfff vault backup: 2024-09-16 13:04:14 2024-09-16 13:04:14 -06:00
609de9ea90 vault backup: 2024-09-16 12:52:58 2024-09-16 12:52:58 -06:00
9c1690ce6f vault backup: 2024-09-15 20:28:02 2024-09-15 20:28:02 -06:00
e7c058fc3e vault backup: 2024-09-15 20:22:36 2024-09-15 20:22:36 -06:00
30e8e27543 vault backup: 2024-09-15 20:17:36 2024-09-15 20:17:36 -06:00
751878a202 vault backup: 2024-09-15 20:12:36 2024-09-15 20:12:36 -06:00
d783c457e9 vault backup: 2024-09-15 20:07:36 2024-09-15 20:07:36 -06:00
8c760ccfde vault backup: 2024-09-15 20:02:36 2024-09-15 20:02:36 -06:00
31a83dbcf3 vault backup: 2024-09-15 19:57:37 2024-09-15 19:57:37 -06:00
ec8087fc73 vault backup: 2024-09-15 19:47:35 2024-09-15 19:47:35 -06:00
b9d4435869 vault backup: 2024-09-15 19:39:27 2024-09-15 19:39:27 -06:00
990860fcdb vault backup: 2024-09-15 19:34:27 2024-09-15 19:34:27 -06:00
4dc32659fe vault backup: 2024-09-15 19:29:16 2024-09-15 19:29:16 -06:00
b409bb0a3d vault backup: 2024-09-15 19:24:16 2024-09-15 19:24:16 -06:00
428feda62d vault backup: 2024-09-15 19:17:54 2024-09-15 19:17:54 -06:00
f57fc786fc vault backup: 2024-09-15 19:12:54 2024-09-15 19:12:54 -06:00
0dce5c62f8 vault backup: 2024-09-15 18:57:54 2024-09-15 18:57:54 -06:00
b5e6561167 vault backup: 2024-09-15 18:49:50 2024-09-15 18:49:50 -06:00
178e5ceacf vault backup: 2024-09-13 16:28:55 2024-09-13 16:28:55 -06:00
d5fbb8d908 vault backup: 2024-09-13 16:23:00 2024-09-13 16:23:00 -06:00
3b4787f4c4 vault backup: 2024-09-13 16:18:00 2024-09-13 16:18:00 -06:00
a2f205b2b7 vault backup: 2024-09-13 16:12:59 2024-09-13 16:12:59 -06:00
e575329bd9 vault backup: 2024-09-13 16:07:59 2024-09-13 16:07:59 -06:00
3f18d285ee vault backup: 2024-09-13 15:54:22 2024-09-13 15:54:22 -06:00
2369a37fdb vault backup: 2024-09-11 15:20:49 2024-09-11 15:20:49 -06:00
6235b9c390 vault backup: 2024-09-11 15:15:49 2024-09-11 15:15:49 -06:00
c8d567367d vault backup: 2024-09-11 14:45:49 2024-09-11 14:45:49 -06:00
918232ba9f vault backup: 2024-09-11 14:40:50 2024-09-11 14:40:50 -06:00
25600790b4 vault backup: 2024-09-11 14:35:48 2024-09-11 14:35:48 -06:00
ac027314a2 vault backup: 2024-09-11 14:25:47 2024-09-11 14:25:47 -06:00
e52cf7811f vault backup: 2024-09-11 13:26:05 2024-09-11 13:26:06 -06:00
5d24bb9ed2 vault backup: 2024-09-11 13:21:04 2024-09-11 13:21:04 -06:00
25a05adcd5 vault backup: 2024-09-11 13:16:04 2024-09-11 13:16:04 -06:00
bcd1dec834 vault backup: 2024-09-11 13:01:34 2024-09-11 13:01:34 -06:00
d4dc637e10 vault backup: 2024-09-11 12:56:34 2024-09-11 12:56:34 -06:00
21cd091466 vault backup: 2024-09-11 12:51:34 2024-09-11 12:51:34 -06:00
b460a6eabf vault backup: 2024-09-11 12:46:34 2024-09-11 12:46:34 -06:00
b33cd35a44 vault backup: 2024-09-11 12:41:34 2024-09-11 12:41:34 -06:00
5306277700 vault backup: 2024-09-11 12:36:34 2024-09-11 12:36:34 -06:00
3aeeb9dac8 vault backup: 2024-09-11 12:31:34 2024-09-11 12:31:34 -06:00
46132a5bcd vault backup: 2024-09-11 12:26:34 2024-09-11 12:26:34 -06:00
1aab5e8e9c vault backup: 2024-09-11 12:21:34 2024-09-11 12:21:34 -06:00
4519740ea7 vault backup: 2024-09-11 12:16:34 2024-09-11 12:16:34 -06:00
2a86cc053b vault backup: 2024-09-11 12:11:34 2024-09-11 12:11:34 -06:00
deb2dead0d vault backup: 2024-09-11 12:06:34 2024-09-11 12:06:34 -06:00
608ec4b01b vault backup: 2024-09-11 12:01:34 2024-09-11 12:01:34 -06:00
29e0e7fb62 vault backup: 2024-09-11 11:56:34 2024-09-11 11:56:34 -06:00
f777d59e16 vault backup: 2024-09-11 11:51:34 2024-09-11 11:51:34 -06:00
c9ac3974db vault backup: 2024-09-11 11:30:59 2024-09-11 11:30:59 -06:00
75d6eae5c5 vault backup: 2024-09-11 10:53:18 2024-09-11 10:53:18 -06:00
27a39311cd vault backup: 2024-09-11 10:48:18 2024-09-11 10:48:19 -06:00
8fe10c3bd2 vault backup: 2024-09-10 20:41:36 2024-09-10 20:41:36 -06:00
b771016fc6 vault backup: 2024-09-10 20:36:36 2024-09-10 20:36:36 -06:00
12baef1659 vault backup: 2024-09-10 20:31:36 2024-09-10 20:31:36 -06:00
5d18df5236 vault backup: 2024-09-09 10:42:51 2024-09-09 10:42:51 -06:00
3f63703ba2 vault backup: 2024-09-09 10:37:51 2024-09-09 10:37:51 -06:00
63f842bb8e vault backup: 2024-09-09 10:32:51 2024-09-09 10:32:51 -06:00
81e68a8afd vault backup: 2024-09-07 13:20:57 2024-09-07 13:20:57 -06:00
81e99af77d vault backup: 2024-09-07 13:15:57 2024-09-07 13:15:57 -06:00
ddbde32405 vault backup: 2024-09-07 13:12:12 2024-09-07 13:12:12 -06:00
1f7274c462 vault backup: 2024-09-05 14:52:17 2024-09-05 14:52:17 -06:00
be151f2c1d vault backup: 2024-09-05 14:47:17 2024-09-05 14:47:17 -06:00
1647009465 vault backup: 2024-09-05 14:42:17 2024-09-05 14:42:17 -06:00
31410114db vault backup: 2024-09-05 14:37:17 2024-09-05 14:37:17 -06:00
4f5b950e2f vault backup: 2024-09-04 15:18:36 2024-09-04 15:18:36 -06:00
3c07ffefe2 vault backup: 2024-09-04 15:13:35 2024-09-04 15:13:35 -06:00
1ae7a3a20e vault backup: 2024-09-04 15:08:35 2024-09-04 15:08:35 -06:00
7b69c6a210 vault backup: 2024-09-04 15:03:35 2024-09-04 15:03:35 -06:00
a0c7ab62c0 vault backup: 2024-09-04 14:58:35 2024-09-04 14:58:35 -06:00
79373ed944 vault backup: 2024-09-04 13:30:28 2024-09-04 13:30:28 -06:00
29ad09946c vault backup: 2024-09-04 13:25:28 2024-09-04 13:25:28 -06:00
aeb183ed95 vault backup: 2024-09-04 13:20:28 2024-09-04 13:20:28 -06:00
fa72b8d9e4 vault backup: 2024-09-04 12:15:32 2024-09-04 12:15:32 -06:00
1c45dd0563 vault backup: 2024-09-04 12:10:32 2024-09-04 12:10:32 -06:00
55de7f3916 vault backup: 2024-09-04 11:26:13 2024-09-04 11:26:13 -06:00
02ab195123 vault backup: 2024-09-04 11:21:13 2024-09-04 11:21:13 -06:00
f467474701 vault backup: 2024-09-04 10:54:42 2024-09-04 10:54:42 -06:00
8906ccdc1d vault backup: 2024-09-04 10:49:41 2024-09-04 10:49:41 -06:00
9e3da64671 vault backup: 2024-09-04 10:43:39 2024-09-04 10:43:39 -06:00
db98ded607 vault backup: 2024-09-04 10:38:39 2024-09-04 10:38:39 -06:00
bce1f72ff3 vault backup: 2024-09-04 10:33:39 2024-09-04 10:33:39 -06:00
7ce0a42856 vault backup: 2024-09-04 10:28:39 2024-09-04 10:28:39 -06:00
f515cd6ebc vault backup: 2024-09-04 10:15:35 2024-09-04 10:15:35 -06:00
1e3287ec1a vault backup: 2024-09-04 09:51:59 2024-09-04 09:51:59 -06:00
edd0bf0e23 vault backup: 2024-09-01 13:57:42 2024-09-01 13:57:42 -06:00
8d89323aed vault backup: 2024-09-01 13:52:42 2024-09-01 13:52:42 -06:00
88b12e7d79 vault backup: 2024-09-01 13:47:42 2024-09-01 13:47:42 -06:00
69804b1e64 vault backup: 2024-09-01 13:42:42 2024-09-01 13:42:42 -06:00
98825e377f vault backup: 2024-09-01 13:37:42 2024-09-01 13:37:42 -06:00
897e916e82 vault backup: 2024-09-01 13:32:42 2024-09-01 13:32:42 -06:00
fbe12955c4 vault backup: 2024-09-01 13:27:42 2024-09-01 13:27:42 -06:00
eafb2881c6 vault backup: 2024-09-01 13:22:42 2024-09-01 13:22:42 -06:00
039b1fc979 vault backup: 2024-09-01 13:17:42 2024-09-01 13:17:42 -06:00
d2758c80c8 vault backup: 2024-09-01 13:12:42 2024-09-01 13:12:42 -06:00
a736e0809a vault backup: 2024-09-01 13:07:42 2024-09-01 13:07:42 -06:00
33e398a165 vault backup: 2024-09-01 13:02:42 2024-09-01 13:02:42 -06:00
97a0f4a1dd vault backup: 2024-09-01 12:57:42 2024-09-01 12:57:42 -06:00
3f43855598 vault backup: 2024-09-01 12:47:42 2024-09-01 12:47:42 -06:00
e979778161 vault backup: 2024-09-01 12:42:42 2024-09-01 12:42:42 -06:00
204cfc7ecd vault backup: 2024-09-01 12:37:42 2024-09-01 12:37:42 -06:00
e7774da978 vault backup: 2024-09-01 12:32:42 2024-09-01 12:32:42 -06:00
1a6c12d9ab vault backup: 2024-09-01 12:27:42 2024-09-01 12:27:42 -06:00
f39f71c7cf vault backup: 2024-09-01 12:22:42 2024-09-01 12:22:42 -06:00
a52fc16bc3 vault backup: 2024-09-01 12:17:42 2024-09-01 12:17:42 -06:00
9d284449dd vault backup: 2024-08-31 14:55:24 2024-08-31 14:55:24 -06:00
a3e58cda87 vault backup: 2024-08-31 14:49:50 2024-08-31 14:49:50 -06:00
e5ae89b884 vault backup: 2024-08-31 14:39:50 2024-08-31 14:39:50 -06:00
99b48aa5d5 vault backup: 2024-08-31 14:34:50 2024-08-31 14:34:50 -06:00
e891618556 vault backup: 2024-08-31 14:29:50 2024-08-31 14:29:50 -06:00
18005358d8 vault backup: 2024-08-31 14:24:50 2024-08-31 14:24:50 -06:00
c0b547767d vault backup: 2024-08-31 14:19:50 2024-08-31 14:19:50 -06:00
b8be194f0a vault backup: 2024-08-31 14:14:50 2024-08-31 14:14:50 -06:00
22fdfdff3e vault backup: 2024-08-31 14:09:50 2024-08-31 14:09:50 -06:00
e68f048afb vault backup: 2024-08-31 14:04:50 2024-08-31 14:04:50 -06:00
55007bf97f vault backup: 2024-08-31 13:59:50 2024-08-31 13:59:50 -06:00
f274fb468f vault backup: 2024-08-31 13:54:50 2024-08-31 13:54:50 -06:00
3c42400e0b vault backup: 2024-08-31 13:49:50 2024-08-31 13:49:50 -06:00
e380881844 vault backup: 2024-08-31 13:44:50 2024-08-31 13:44:50 -06:00
39ad418c22 vault backup: 2024-08-31 13:39:50 2024-08-31 13:39:50 -06:00
07c786f3ec vault backup: 2024-08-31 13:13:51 2024-08-31 13:13:51 -06:00
e171698cb9 vault backup: 2024-08-31 13:03:52 2024-08-31 13:03:52 -06:00
10cea2d197 vault backup: 2024-08-31 12:58:50 2024-08-31 12:58:50 -06:00
91c0643176 vault backup: 2024-08-31 12:43:50 2024-08-31 12:43:50 -06:00
fd87f2a05b vault backup: 2024-08-31 12:38:50 2024-08-31 12:38:50 -06:00
eb6e6f8356 vault backup: 2024-08-31 12:33:50 2024-08-31 12:33:50 -06:00
6481fe48b3 vault backup: 2024-08-31 12:28:50 2024-08-31 12:28:50 -06:00
72a1d8fb5b vault backup: 2024-08-31 12:23:50 2024-08-31 12:23:50 -06:00
a74c2e9648 vault backup: 2024-08-31 12:18:50 2024-08-31 12:18:50 -06:00
3f9ee1dae1 vault backup: 2024-08-31 12:13:50 2024-08-31 12:13:50 -06:00
4fc5f70c7f vault backup: 2024-08-31 12:08:50 2024-08-31 12:08:50 -06:00
f27b44b15b vault backup: 2024-08-31 12:03:50 2024-08-31 12:03:50 -06:00
655e2af4e7 vault backup: 2024-08-31 11:58:50 2024-08-31 11:58:50 -06:00
21465af5f6 vault backup: 2024-08-28 11:21:18 2024-08-28 11:21:18 -06:00
a14db42aed vault backup: 2024-08-28 11:16:18 2024-08-28 11:16:18 -06:00
55a7ba19ca vault backup: 2024-08-28 11:04:34 2024-08-28 11:04:34 -06:00
7ca78331cd vault backup: 2024-08-28 10:59:34 2024-08-28 10:59:34 -06:00
2e851968f0 vault backup: 2024-08-28 10:54:34 2024-08-28 10:54:34 -06:00
e222a4ceb7 vault backup: 2024-08-28 10:49:34 2024-08-28 10:49:34 -06:00
8467f7a6d6 vault backup: 2024-08-28 10:44:34 2024-08-28 10:44:34 -06:00
a1f975e901 vault backup: 2024-08-28 10:39:34 2024-08-28 10:39:34 -06:00
5260fd9338 vault backup: 2024-08-27 14:24:34 2024-08-27 14:24:34 -06:00
80abee9bb5 vault backup: 2024-08-27 14:19:34 2024-08-27 14:19:34 -06:00
8278a43dbe vault backup: 2024-08-19 11:35:29 2024-08-19 11:35:29 -06:00
f53ec50cf0 vault backup: 2024-08-01 16:13:11 2024-08-01 16:13:11 -06:00
473102f9bf vault backup: 2024-08-01 16:07:07 2024-08-01 16:07:07 -06:00
2b7e90fbc7 vault backup: 2024-08-01 16:02:07 2024-08-01 16:02:07 -06:00
017bee65bf vault backup: 2024-08-01 15:57:07 2024-08-01 15:57:07 -06:00
f79e7d72fa vault backup: 2024-08-01 15:51:21 2024-08-01 15:51:21 -06:00
f6b5c45237 vault backup: 2024-08-01 15:46:21 2024-08-01 15:46:21 -06:00
92fd6c325e vault backup: 2024-08-01 15:41:21 2024-08-01 15:41:21 -06:00
198bf3d194 vault backup: 2024-08-01 15:36:21 2024-08-01 15:36:21 -06:00
4f4c6d13fe vault backup: 2024-08-01 15:31:21 2024-08-01 15:31:21 -06:00
151df7b2d0 vault backup: 2024-08-01 14:57:36 2024-08-01 14:57:36 -06:00
8181385fe5 vault backup: 2024-07-31 16:33:11 2024-07-31 16:33:11 -06:00
d4b80bc02a vault backup: 2024-07-31 16:27:12 2024-07-31 16:27:12 -06:00
20df808971 vault backup: 2024-07-31 16:22:12 2024-07-31 16:22:12 -06:00
0041942847 vault backup: 2024-07-31 16:16:13 2024-07-31 16:16:13 -06:00
989e698374 vault backup: 2024-07-31 16:11:13 2024-07-31 16:11:13 -06:00
f6913064e2 vault backup: 2024-07-31 16:06:13 2024-07-31 16:06:13 -06:00
e2b2f717c4 vault backup: 2024-07-31 16:01:14 2024-07-31 16:01:14 -06:00
a10c49fa05 vault backup: 2024-07-31 15:56:12 2024-07-31 15:56:12 -06:00
80e7a61f40 vault backup: 2024-07-31 12:27:17 2024-07-31 12:27:17 -06:00
1a325a45c2 vault backup: 2024-07-31 12:22:18 2024-07-31 12:22:18 -06:00
151cc3655b vault backup: 2024-07-31 12:17:17 2024-07-31 12:17:17 -06:00
c3ef730637 vault backup: 2024-07-26 10:59:31 2024-07-26 10:59:31 -06:00
f2f0d53603 vault backup: 2024-07-26 10:29:31 2024-07-26 10:29:31 -06:00
09bb4bf2d1 vault backup: 2024-07-26 10:24:31 2024-07-26 10:24:31 -06:00
57abbee0b8 vault backup: 2024-07-26 10:19:31 2024-07-26 10:19:31 -06:00
617429715e vault backup: 2024-07-26 10:14:31 2024-07-26 10:14:31 -06:00
6ae4d334eb vault backup: 2024-07-22 16:03:01 2024-07-22 16:03:01 -06:00
215b1af5fc vault backup: 2024-07-22 15:58:01 2024-07-22 15:58:01 -06:00
1251446c2f vault backup: 2024-07-22 15:52:30 2024-07-22 15:52:30 -06:00
56cc38e61c vault backup: 2024-07-22 15:48:27 2024-07-22 15:48:27 -06:00
82f9b870ca vault backup: 2024-07-18 16:16:15 2024-07-18 16:16:15 -06:00
37132483f2 vault backup: 2024-07-18 15:36:15 2024-07-18 15:36:15 -06:00
32f13f70c9 vault backup: 2024-07-18 15:31:15 2024-07-18 15:31:15 -06:00
65e4218995 vault backup: 2024-07-18 14:23:24 2024-07-18 14:23:24 -06:00
2476bfe290 vault backup: 2024-07-18 14:18:24 2024-07-18 14:18:24 -06:00
5e583cad45 vault backup: 2024-07-18 14:13:24 2024-07-18 14:13:24 -06:00
dec44150a9 vault backup: 2024-07-18 14:08:24 2024-07-18 14:08:24 -06:00
fd1263a67f vault backup: 2024-07-18 13:28:24 2024-07-18 13:28:24 -06:00
100087233e vault backup: 2024-07-18 13:23:24 2024-07-18 13:23:24 -06:00
68fbc4db5e vault backup: 2024-07-18 13:13:32 2024-07-18 13:13:32 -06:00
2243995e1a vault backup: 2024-07-18 13:08:32 2024-07-18 13:08:32 -06:00
d7b8fcd4e5 vault backup: 2024-07-18 13:03:32 2024-07-18 13:03:32 -06:00
1d8a387de8 vault backup: 2024-07-18 12:58:32 2024-07-18 12:58:32 -06:00
f3677bc3e0 vault backup: 2024-07-18 12:53:32 2024-07-18 12:53:32 -06:00
da1a6b00e5 vault backup: 2024-07-18 12:48:32 2024-07-18 12:48:32 -06:00
d01cf6a07a vault backup: 2024-07-18 12:43:32 2024-07-18 12:43:32 -06:00
b08ba89f25 vault backup: 2024-07-18 12:38:32 2024-07-18 12:38:32 -06:00
b4b903ec98 vault backup: 2024-07-18 12:33:32 2024-07-18 12:33:32 -06:00
7e4cc69f11 vault backup: 2024-07-18 12:26:26 2024-07-18 12:26:26 -06:00
99b9c4703a vault backup: 2024-07-18 12:21:26 2024-07-18 12:21:26 -06:00
cc30bdfe6d vault backup: 2024-07-17 16:59:20 2024-07-17 16:59:20 -06:00
ed8b65aa2b vault backup: 2024-07-17 16:54:20 2024-07-17 16:54:20 -06:00
80454265ac vault backup: 2024-07-17 16:44:20 2024-07-17 16:44:20 -06:00
7e52ef4931 vault backup: 2024-07-17 16:24:20 2024-07-17 16:24:20 -06:00
9905c661c8 vault backup: 2024-07-17 15:59:20 2024-07-17 15:59:20 -06:00
a86898764f vault backup: 2024-07-17 15:49:20 2024-07-17 15:49:20 -06:00
7c51854974 vault backup: 2024-07-17 15:44:20 2024-07-17 15:44:20 -06:00
3879ed2ea8 vault backup: 2024-07-17 15:34:20 2024-07-17 15:34:20 -06:00
7e12f8faeb vault backup: 2024-07-17 15:29:20 2024-07-17 15:29:20 -06:00
0ec82ffcf4 vault backup: 2024-07-17 15:24:20 2024-07-17 15:24:20 -06:00
7668b001cc vault backup: 2024-07-17 15:19:20 2024-07-17 15:19:20 -06:00
6b6c236b23 vault backup: 2024-07-17 15:14:20 2024-07-17 15:14:20 -06:00
22afdcabb3 vault backup: 2024-07-17 13:54:20 2024-07-17 13:54:20 -06:00
ca62f4534e vault backup: 2024-07-17 13:49:20 2024-07-17 13:49:20 -06:00
d3af9b5fbf vault backup: 2024-07-17 13:44:20 2024-07-17 13:44:20 -06:00
513202e082 vault backup: 2024-07-17 10:37:00 2024-07-17 10:37:00 -06:00
9d943b3493 vault backup: 2024-07-17 10:23:50 2024-07-17 10:23:50 -06:00
e979a6add7 vault backup: 2024-07-17 10:18:50 2024-07-17 10:18:50 -06:00
d53058e329 vault backup: 2024-07-17 10:13:48 2024-07-17 10:13:48 -06:00
147 changed files with 41686 additions and 525 deletions

4
.obsidian/app.json vendored
View File

@ -2,11 +2,13 @@
"vimMode": true,
"promptDelete": false,
"pdfExportSettings": {
"includeName": false,
"pageSize": "Letter",
"landscape": false,
"margin": "0",
"downscalePercent": 100
},
"spellcheck": true,
"focusNewTab": false
"focusNewTab": false,
"alwaysUpdateLinks": true
}

View File

@ -1,3 +1,7 @@
[
"obsidian-git"
"obsidian-git",
"d2-obsidian",
"execute-code",
"better-export-pdf",
"obsidian-excalidraw-plugin"
]

View File

@ -1,18 +1,32 @@
[
"file-explorer",
"global-search",
"switcher",
"graph",
"backlink",
"canvas",
"tag-pane",
"properties",
"page-preview",
"note-composer",
"command-palette",
"editor-status",
"bookmarks",
"markdown-importer",
"word-count",
"file-recovery"
]
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"outgoing-link": false,
"tag-pane": true,
"page-preview": true,
"daily-notes": false,
"templates": false,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"starred": false,
"markdown-importer": true,
"zk-prefixer": false,
"random-note": false,
"outline": false,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": false,
"canvas": true,
"bookmarks": true,
"properties": true,
"webviewer": false
}

4
.obsidian/file-recovery.json vendored Normal file
View File

@ -0,0 +1,4 @@
{
"intervalMinutes": 5,
"keepDays": 7
}

View File

@ -0,0 +1,29 @@
{
"showTitle": true,
"maxLevel": "6",
"displayHeader": true,
"displayFooter": true,
"headerTemplate": "<div style=\"width: 100vw;font-size:10px;text-align:center;\"><span class=\"title\"></span></div>",
"footerTemplate": "<div style=\"width: 100vw;font-size:10px;text-align:center;\"><span class=\"pageNumber\"></span> / <span class=\"totalPages\"></span></div>",
"printBackground": false,
"generateTaggedPDF": false,
"displayMetadata": false,
"debug": false,
"isTimestamp": false,
"enabledCss": false,
"prevConfig": {
"pageSize": "A4",
"marginType": "1",
"showTitle": false,
"open": true,
"scale": 100,
"landscape": false,
"marginTop": "10",
"marginBottom": "10",
"marginLeft": "10",
"marginRight": "10",
"displayHeader": true,
"displayFooter": true,
"cssSnippet": "0"
}
}

21223
.obsidian/plugins/better-export-pdf/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,11 @@
{
"id": "better-export-pdf",
"name": "Better Export PDF",
"version": "1.9.2",
"minAppVersion": "0.15.0",
"description": "Export your notes to PDF, support export preview, add bookmarks outline and header/footer.",
"author": "l1xnan",
"authorUrl": "https://github.com/l1xnan",
"fundingUrl": "https://www.buymeacoffee.com/l1xnan",
"isDesktopOnly": true
}

View File

@ -0,0 +1,52 @@
#better-export-pdf {
display: flex;
flex-direction: row;
height: 75vh;
}
#better-export-pdf .pdf-preview {
flex: auto;
position: relative;
display: flex;
flex-direction: column;
overflow-x: hidden;
overflow-y: scroll;
align-content: flex-start;
}
#better-export-pdf .pdf-preview .webview-wrapper {
position: relative;
height: 100%;
width: 100%;
}
#better-export-pdf .pdf-preview .print-size {
position: absolute;
right: 8px;
top: 8px;
z-index: 99;
font-size: 0.6rem;
white-space: pre-wrap;
text-align: right;
visibility: hidden;
}
#better-export-pdf .pdf-preview > div {
flex: 1;
height: 100%;
width: 100%;
}
#better-export-pdf .pdf-preview .filename {
font-size: 0.75rem;
color: var(--color-base-60);
}
#better-export-pdf .pdf-preview .filename:not(:first-child) {
padding-top: calc(var(--p-spacing));
}
#better-export-pdf webview {
flex: 1;
height: 100%;
width: 100%;
}

533
.obsidian/plugins/d2-obsidian/main.js vendored Normal file
View File

@ -0,0 +1,533 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin: https://github.com/terrastruct/d2-obsidian
*/
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// node_modules/lodash.debounce/index.js
var require_lodash = __commonJS({
"node_modules/lodash.debounce/index.js"(exports, module2) {
var FUNC_ERROR_TEXT = "Expected a function";
var NAN = 0 / 0;
var symbolTag = "[object Symbol]";
var reTrim = /^\s+|\s+$/g;
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
var reIsBinary = /^0b[01]+$/i;
var reIsOctal = /^0o[0-7]+$/i;
var freeParseInt = parseInt;
var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
var root = freeGlobal || freeSelf || Function("return this")();
var objectProto = Object.prototype;
var objectToString = objectProto.toString;
var nativeMax = Math.max;
var nativeMin = Math.min;
var now = function() {
return root.Date.now();
};
function debounce2(func, wait, options) {
var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
if (typeof func != "function") {
throw new TypeError(FUNC_ERROR_TEXT);
}
wait = toNumber(wait) || 0;
if (isObject(options)) {
leading = !!options.leading;
maxing = "maxWait" in options;
maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
trailing = "trailing" in options ? !!options.trailing : trailing;
}
function invokeFunc(time) {
var args = lastArgs, thisArg = lastThis;
lastArgs = lastThis = void 0;
lastInvokeTime = time;
result = func.apply(thisArg, args);
return result;
}
function leadingEdge(time) {
lastInvokeTime = time;
timerId = setTimeout(timerExpired, wait);
return leading ? invokeFunc(time) : result;
}
function remainingWait(time) {
var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, result2 = wait - timeSinceLastCall;
return maxing ? nativeMin(result2, maxWait - timeSinceLastInvoke) : result2;
}
function shouldInvoke(time) {
var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
}
function timerExpired() {
var time = now();
if (shouldInvoke(time)) {
return trailingEdge(time);
}
timerId = setTimeout(timerExpired, remainingWait(time));
}
function trailingEdge(time) {
timerId = void 0;
if (trailing && lastArgs) {
return invokeFunc(time);
}
lastArgs = lastThis = void 0;
return result;
}
function cancel() {
if (timerId !== void 0) {
clearTimeout(timerId);
}
lastInvokeTime = 0;
lastArgs = lastCallTime = lastThis = timerId = void 0;
}
function flush() {
return timerId === void 0 ? result : trailingEdge(now());
}
function debounced() {
var time = now(), isInvoking = shouldInvoke(time);
lastArgs = arguments;
lastThis = this;
lastCallTime = time;
if (isInvoking) {
if (timerId === void 0) {
return leadingEdge(lastCallTime);
}
if (maxing) {
timerId = setTimeout(timerExpired, wait);
return invokeFunc(lastCallTime);
}
}
if (timerId === void 0) {
timerId = setTimeout(timerExpired, wait);
}
return result;
}
debounced.cancel = cancel;
debounced.flush = flush;
return debounced;
}
function isObject(value) {
var type = typeof value;
return !!value && (type == "object" || type == "function");
}
function isObjectLike(value) {
return !!value && typeof value == "object";
}
function isSymbol(value) {
return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag;
}
function toNumber(value) {
if (typeof value == "number") {
return value;
}
if (isSymbol(value)) {
return NAN;
}
if (isObject(value)) {
var other = typeof value.valueOf == "function" ? value.valueOf() : value;
value = isObject(other) ? other + "" : other;
}
if (typeof value != "string") {
return value === 0 ? value : +value;
}
value = value.replace(reTrim, "");
var isBinary = reIsBinary.test(value);
return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
}
module2.exports = debounce2;
}
});
// src/main.ts
var main_exports = {};
__export(main_exports, {
default: () => D2Plugin
});
module.exports = __toCommonJS(main_exports);
var import_obsidian3 = require("obsidian");
// src/settings.ts
var import_obsidian = require("obsidian");
// src/constants.ts
var LAYOUT_ENGINES = {
DAGRE: {
value: "dagre",
label: "dagre"
},
ELK: {
value: "elk",
label: "ELK"
},
TALA: {
value: "tala",
label: "TALA"
}
};
var RecompileIcon = `
<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.33325 83.3334V58.3334H33.3333" stroke="#2E3346" stroke-width="8.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M91.6667 16.6666V41.6666H66.6667" stroke="#2E3346" stroke-width="8.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.6249 37.5004C16.7381 31.5287 20.3296 26.1896 25.0644 21.9813C29.7991 17.773 35.5227 14.8328 41.7011 13.4348C47.8795 12.0369 54.3114 12.2268 60.3965 13.987C66.4817 15.7471 72.0218 19.02 76.4999 23.5004C80.978 27.9808 91.6666 41.667 91.6666 41.667M8.33325 58.3337C8.33325 58.3337 19.0218 72.02 23.4999 76.5004C27.978 80.9808 33.5181 84.2537 39.6033 86.0138C45.6884 87.774 52.1203 87.9639 58.2987 86.566C64.4771 85.168 70.2007 82.2277 74.9355 78.0195C79.6702 73.8112 83.2617 68.4721 85.3749 62.5004" stroke="#2E3346" stroke-width="8.33333" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`;
// src/settings.ts
var DEFAULT_SETTINGS = {
layoutEngine: "dagre",
debounce: 500,
theme: 0,
apiToken: "",
d2Path: "",
pad: 100,
sketch: false,
containerHeight: 800
};
var D2SettingsTab = class extends import_obsidian.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
addTALASettings() {
const talaSettings = this.containerEl.createEl("div");
talaSettings.createEl("h3", {
text: "TALA settings"
});
new import_obsidian.Setting(talaSettings).setName("API token").setDesc('To use TALA, copy your API token here or in ~/.local/state/tstruct/auth.json under the field "api_token"').addText((text) => text.setPlaceholder("tstruct_...").setValue(this.plugin.settings.apiToken).setDisabled(this.plugin.settings.layoutEngine !== LAYOUT_ENGINES.TALA.value).onChange(async (value) => {
if (value && !value.startsWith("tstruct_")) {
new import_obsidian.Notice("Invalid API token");
} else {
this.plugin.settings.apiToken = value;
await this.plugin.saveSettings();
}
}));
this.talaSettings = talaSettings;
}
display() {
const { containerEl } = this;
containerEl.empty();
containerEl.createEl("h1", { text: "D2 plugin settings" });
new import_obsidian.Setting(containerEl).setName("Layout engine").setDesc('Available layout engines include "dagre", "ELK", and "TALA" (TALA must be installed separately from D2)').addDropdown((dropdown) => {
dropdown.addOption(LAYOUT_ENGINES.DAGRE.value, LAYOUT_ENGINES.DAGRE.label).addOption(LAYOUT_ENGINES.ELK.value, LAYOUT_ENGINES.ELK.label).addOption(LAYOUT_ENGINES.TALA.value, LAYOUT_ENGINES.TALA.label).setValue(this.plugin.settings.layoutEngine).onChange(async (value) => {
var _a;
this.plugin.settings.layoutEngine = value;
await this.plugin.saveSettings();
if (value === LAYOUT_ENGINES.TALA.value) {
this.addTALASettings();
} else {
(_a = this.talaSettings) == null ? void 0 : _a.remove();
}
});
});
new import_obsidian.Setting(containerEl).setName("Theme ID").setDesc("Available themes are located at https://github.com/terrastruct/d2/tree/master/d2themes").addText((text) => text.setPlaceholder("Enter a theme ID").setValue(String(this.plugin.settings.theme)).onChange(async (value) => {
if (!isNaN(Number(value)) || value === "") {
this.plugin.settings.theme = Number(value || DEFAULT_SETTINGS.theme);
await this.plugin.saveSettings();
} else {
new import_obsidian.Notice("Please specify a valid number");
}
}));
new import_obsidian.Setting(containerEl).setName("Pad").setDesc("Pixels padded around the rendered diagram").addText((text) => text.setPlaceholder(String(DEFAULT_SETTINGS.pad)).setValue(String(this.plugin.settings.pad)).onChange(async (value) => {
if (isNaN(Number(value))) {
new import_obsidian.Notice("Please specify a valid number");
this.plugin.settings.pad = Number(DEFAULT_SETTINGS.pad);
} else if (value === "") {
this.plugin.settings.pad = Number(DEFAULT_SETTINGS.pad);
} else {
this.plugin.settings.pad = Number(value);
}
await this.plugin.saveSettings();
}));
new import_obsidian.Setting(containerEl).setName("Sketch mode").setDesc("Render the diagram to look like it was sketched by hand").addToggle((toggle) => toggle.setValue(this.plugin.settings.sketch).onChange(async (value) => {
this.plugin.settings.sketch = value;
await this.plugin.saveSettings();
}));
new import_obsidian.Setting(containerEl).setName("Container height").setDesc("Diagram max render height in pixels (Requires d2 v0.2.2 and up)").addText((text) => text.setPlaceholder(String(DEFAULT_SETTINGS.containerHeight)).setValue(String(this.plugin.settings.containerHeight)).onChange(async (value) => {
if (isNaN(Number(value))) {
new import_obsidian.Notice("Please specify a valid number");
this.plugin.settings.containerHeight = Number(DEFAULT_SETTINGS.containerHeight);
} else if (value === "") {
this.plugin.settings.containerHeight = Number(DEFAULT_SETTINGS.containerHeight);
} else {
this.plugin.settings.containerHeight = Number(value);
}
await this.plugin.saveSettings();
}));
new import_obsidian.Setting(containerEl).setName("Debounce").setDesc("How often should the diagram refresh in milliseconds (min 100)").addText((text) => text.setPlaceholder(String(DEFAULT_SETTINGS.debounce)).setValue(String(this.plugin.settings.debounce)).onChange(async (value) => {
if (isNaN(Number(value))) {
new import_obsidian.Notice("Please specify a valid number");
this.plugin.settings.debounce = Number(DEFAULT_SETTINGS.debounce);
} else if (value === "") {
this.plugin.settings.debounce = Number(DEFAULT_SETTINGS.debounce);
} else if (Number(value) < 100) {
new import_obsidian.Notice("The value must be greater than 100");
this.plugin.settings.debounce = Number(DEFAULT_SETTINGS.debounce);
} else {
this.plugin.settings.debounce = Number(value);
}
await this.plugin.saveSettings();
}));
new import_obsidian.Setting(containerEl).setName("Path (optional)").setDesc("Customize the local path to the directory `d2` is installed in (ex. if d2 is located at `/usr/local/bin/d2`, then the path is `/usr/local/bin`). This is only necessary if `d2` is not found automatically by the plugin (but is installed).").addText((text) => {
text.setPlaceholder("/usr/local/Cellar").setValue(this.plugin.settings.d2Path).onChange(async (value) => {
this.plugin.settings.d2Path = value;
await this.plugin.saveSettings();
});
});
if (this.plugin.settings.layoutEngine === LAYOUT_ENGINES.TALA.value) {
this.addTALASettings();
}
}
};
// src/processor.ts
var import_obsidian2 = require("obsidian");
var import_child_process = require("child_process");
var import_path = require("path");
var import_lodash = __toESM(require_lodash());
var import_os = __toESM(require("os"));
var D2Processor = class {
constructor(plugin) {
this.attemptExport = async (source, el, ctx) => {
var _a;
el.createEl("h6", {
text: "Generating D2 diagram...",
cls: "D2__Loading"
});
const pageContainer = ctx.containerEl;
let pageID = pageContainer.dataset.pageID;
if (!pageID) {
pageID = Math.floor(Math.random() * Date.now()).toString();
pageContainer.dataset.pageID = pageID;
}
let debouncedFunc = this.debouncedMap.get(pageID);
if (!debouncedFunc) {
await this.export(source, el, ctx);
debouncedFunc = (0, import_lodash.default)(this.export, this.plugin.settings.debounce, {
leading: true
});
this.debouncedMap.set(pageID, debouncedFunc);
return;
}
(_a = this.abortControllerMap.get(pageID)) == null ? void 0 : _a.abort();
const newAbortController = new AbortController();
this.abortControllerMap.set(pageID, newAbortController);
await debouncedFunc(source, el, ctx, newAbortController.signal);
};
this.isValidUrl = (urlString) => {
let url;
try {
url = new URL(urlString);
} catch (e) {
return false;
}
return url.protocol === "http:" || url.protocol === "https:";
};
this.formatLinks = (svgEl) => {
const links = svgEl.querySelectorAll("a");
links.forEach((link) => {
var _a;
const href = (_a = link.getAttribute("href")) != null ? _a : "";
if (!this.isValidUrl(href)) {
link.classList.add("internal-link");
link.setAttribute("data-href", href);
link.setAttribute("target", "_blank");
link.setAttribute("rel", "noopener");
}
});
};
this.sanitizeSVGIDs = (svgEl, docID) => {
const overrides = svgEl.querySelectorAll("marker, mask, filter");
const overrideIDs = [];
overrides.forEach((override) => {
const id = override.getAttribute("id");
if (id) {
overrideIDs.push(id);
}
});
return overrideIDs.reduce((svgHTML, overrideID) => {
return svgHTML.replaceAll(overrideID, [overrideID, docID].join("-"));
}, svgEl.outerHTML);
};
this.export = async (source, el, ctx, signal) => {
try {
const image = await this.generatePreview(source, signal);
if (image) {
el.empty();
this.prevImage = image;
this.insertImage(image, el, ctx);
const button = new import_obsidian2.ButtonComponent(el).setClass("Preview__Recompile").setIcon("recompile").onClick((e) => {
e.preventDefault();
e.stopPropagation();
el.empty();
this.attemptExport(source, el, ctx);
});
button.buttonEl.createEl("span", {
text: "Recompile"
});
}
} catch (err) {
el.empty();
const errorEl = el.createEl("pre", {
cls: "markdown-rendered pre Preview__Error"
});
errorEl.createEl("code", {
text: "D2 Compilation Error:",
cls: "Preview__Error--Title"
});
errorEl.createEl("code", {
text: err.message
});
if (this.prevImage) {
this.insertImage(this.prevImage, el, ctx);
}
} finally {
const pageContainer = ctx.containerEl;
this.abortControllerMap.delete(pageContainer.dataset.id);
}
};
this.plugin = plugin;
this.debouncedMap = /* @__PURE__ */ new Map();
this.abortControllerMap = /* @__PURE__ */ new Map();
}
insertImage(image, el, ctx) {
const parser = new DOMParser();
const svg = parser.parseFromString(image, "image/svg+xml");
const containerEl = el.createDiv();
const svgEl = svg.documentElement;
svgEl.style.maxHeight = `${this.plugin.settings.containerHeight}px`;
svgEl.style.maxWidth = "100%";
svgEl.style.height = "fit-content";
svgEl.style.width = "fit-content";
this.formatLinks(svgEl);
containerEl.innerHTML = this.sanitizeSVGIDs(svgEl, ctx.docId);
}
async generatePreview(source, signal) {
var _a, _b;
const pathArray = [process.env.PATH, "/opt/homebrew/bin", "/usr/local/bin"];
if (import_os.default.platform() === "win32") {
pathArray.push(`C:Program FilesD2`);
} else {
pathArray.push(`${process.env.HOME}/.local/bin`);
}
let GOPATH = "";
try {
GOPATH = (0, import_child_process.execSync)("go env GOPATH", {
env: {
...process.env,
PATH: pathArray.join(import_path.delimiter)
}
}).toString();
} catch (error) {
}
if (GOPATH) {
pathArray.push(`${GOPATH.replace("\n", "")}/bin`);
}
if (this.plugin.settings.d2Path) {
pathArray.push(this.plugin.settings.d2Path);
}
const options = {
...process.env,
env: {
PATH: pathArray.join(import_path.delimiter)
},
signal
};
if (this.plugin.settings.apiToken) {
options.env.TSTRUCT_TOKEN = this.plugin.settings.apiToken;
}
let args = [
`d2`,
"-",
`--theme=${this.plugin.settings.theme}`,
`--layout=${this.plugin.settings.layoutEngine}`,
`--pad=${this.plugin.settings.pad}`,
`--sketch=${this.plugin.settings.sketch}`,
"--bundle=false",
"--scale=1"
];
const cmd = args.join(" ");
const child = (0, import_child_process.exec)(cmd, options);
(_a = child.stdin) == null ? void 0 : _a.write(source);
(_b = child.stdin) == null ? void 0 : _b.end();
let stdout;
let stderr;
if (child.stdout) {
child.stdout.on("data", (data) => {
if (stdout === void 0) {
stdout = data;
} else {
stdout += data;
}
});
}
if (child.stderr) {
child.stderr.on("data", (data) => {
if (stderr === void 0) {
stderr = data;
} else {
stderr += data;
}
});
}
return new Promise((resolve, reject) => {
child.on("error", reject);
child.on("close", (code) => {
if (code === 0) {
resolve(stdout);
return;
} else if (stderr) {
console.error(stderr);
reject(new Error(stderr));
} else if (stdout) {
console.error(stdout);
reject(new Error(stdout));
}
});
});
}
};
// src/main.ts
var D2Plugin = class extends import_obsidian3.Plugin {
async onload() {
(0, import_obsidian3.addIcon)("recompile", RecompileIcon);
await this.loadSettings();
this.addSettingTab(new D2SettingsTab(this.app, this));
const processor = new D2Processor(this);
this.registerMarkdownCodeBlockProcessor("d2", processor.attemptExport);
this.processor = processor;
}
onunload() {
const abortControllers = this.processor.abortControllerMap.values();
Array.from(abortControllers).forEach((controller) => {
controller.abort();
});
}
async loadSettings() {
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
}
async saveSettings() {
await this.saveData(this.settings);
}
};

View File

@ -0,0 +1,10 @@
{
"id": "d2-obsidian",
"name": "D2",
"version": "1.1.4",
"minAppVersion": "0.15.0",
"description": "The official D2 plugin for Obsidian. D2 is a modern diagram scripting language that turns text to diagrams.",
"author": "Terrastruct",
"authorUrl": "https://d2lang.com",
"isDesktopOnly": true
}

View File

@ -0,0 +1,49 @@
.D2__Loading {
font-style: italic;
}
.Preview__Error--Title {
color: #be0b41 !important;
}
.Preview__Error {
display: flex;
flex-direction: column;
white-space: pre;
white-space: pre-wrap;
}
.Preview__Recompile {
position: absolute;
top: 4px;
left: 4px;
height: 24px;
padding: 6px;
background-color: white !important;
color: #2e3346;
display: flex;
gap: 4px;
box-shadow: none !important;
border: 1px solid #dee1eb;
filter: drop-shadow(1px 1px 4px rgba(31, 36, 58, 0.08));
}
.Preview__Recompile:hover {
filter: drop-shadow(2px 2px 16px rgba(31, 36, 58, 0.12));
cursor: pointer;
}
.Preview__Recompile > .svg-icon {
height: 12px !important;
width: 12px !important;
}
.block-language-d2 {
position: relative;
}
@media print {
.Preview__Recompile {
display: none;
}
}

169
.obsidian/plugins/execute-code/data.json vendored Normal file
View File

@ -0,0 +1,169 @@
{
"lastOpenLanguageTab": "c",
"timeout": 10000,
"allowInput": true,
"wslMode": false,
"shellWSLMode": false,
"onlyCurrentBlock": false,
"nodePath": "node",
"nodeArgs": "",
"jsFileExtension": "js",
"jsInject": "",
"tsPath": "ts-node",
"tsArgs": "",
"tsInject": "",
"leanPath": "lean",
"leanArgs": "",
"leanInject": "",
"luaPath": "lua",
"luaArgs": "",
"luaFileExtension": "lua",
"luaInject": "",
"dartPath": "dart",
"dartArgs": "",
"dartFileExtension": "dart",
"dartInject": "",
"csPath": "dotnet-script",
"csArgs": "",
"csFileExtension": "csx",
"csInject": "",
"pythonPath": "python",
"pythonArgs": "",
"pythonEmbedPlots": true,
"pythonFileExtension": "py",
"pythonInject": "",
"shellPath": "bash",
"shellArgs": "",
"shellFileExtension": "sh",
"shellInject": "",
"batchPath": "call",
"batchArgs": "",
"batchFileExtension": "bat",
"batchInject": "",
"groovyPath": "groovy",
"groovyArgs": "",
"groovyFileExtension": "groovy",
"groovyInject": "",
"golangPath": "go",
"golangArgs": "run",
"golangFileExtension": "go",
"goInject": "",
"javaPath": "java",
"javaArgs": "-ea",
"javaFileExtension": "java",
"javaInject": "",
"maxPrologAnswers": 15,
"prologInject": "",
"powershellPath": "powershell",
"powershellArgs": "-file",
"powershellFileExtension": "ps1",
"powershellInject": "$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding",
"powershellEncoding": "latin1",
"cargoPath": "cargo",
"cargoEvalArgs": "",
"rustInject": "",
"cppRunner": "cling",
"cppFileExtension": "cpp",
"cppInject": "",
"cppArgs": "",
"cppUseMain": false,
"clingPath": "gcc",
"clingArgs": "",
"clingStd": "c++17",
"rustFileExtension": "rs",
"RPath": "Rscript",
"RArgs": "",
"REmbedPlots": true,
"RFileExtension": "R",
"rInject": "",
"kotlinPath": "kotlinc",
"kotlinArgs": "-script",
"kotlinFileExtension": "kts",
"kotlinInject": "",
"swiftPath": "swift",
"swiftArgs": "",
"swiftFileExtension": "swift",
"swiftInject": "",
"runghcPath": "runghc",
"ghcPath": "ghc",
"ghciPath": "ghci",
"useGhci": false,
"haskellInject": "",
"mathematicaPath": "wolframscript",
"mathematicaArgs": "-file",
"mathematicaFileExtension": "wls",
"mathematicaInject": "",
"scalaPath": "scala",
"scalaArgs": "",
"scalaFileExtension": "scala",
"scalaInject": "",
"racketPath": "racket",
"racketArgs": "",
"racketFileExtension": "rkt",
"racketInject": "#lang racket",
"fsharpPath": "dotnet",
"fsharpArgs": "",
"fsharpInject": "",
"fsharpFileExtension": "fsx",
"cArgs": "",
"cUseMain": true,
"cInject": "",
"rubyPath": "ruby",
"rubyArgs": "",
"rubyFileExtension": "rb",
"rubyInject": "",
"sqlPath": "psql",
"sqlArgs": "-d <database> -U <user> -f",
"sqlInject": "",
"octavePath": "octave",
"octaveArgs": "-q",
"octaveFileExtension": "m",
"octaveInject": "figure('visible','off') # Necessary to embed plots",
"maximaPath": "maxima",
"maximaArgs": "-qb",
"maximaFileExtension": "mx",
"maximaInject": "",
"applescriptPath": "osascript",
"applescriptArgs": "",
"applescriptFileExtension": "scpt",
"applescriptInject": "",
"zigPath": "zig",
"zigArgs": "run",
"zigInject": "",
"ocamlPath": "ocaml",
"ocamlArgs": "",
"ocamlInject": "",
"jsInteractive": true,
"tsInteractive": false,
"csInteractive": false,
"leanInteractive": false,
"luaInteractive": false,
"dartInteractive": false,
"pythonInteractive": true,
"cppInteractive": false,
"prologInteractive": false,
"shellInteractive": false,
"batchInteractive": false,
"bashInteractive": false,
"groovyInteractive": false,
"rInteractive": false,
"goInteractive": false,
"rustInteractive": false,
"javaInteractive": false,
"powershellInteractive": false,
"kotlinInteractive": false,
"swiftInteractive": false,
"mathematicaInteractive": false,
"haskellInteractive": false,
"scalaInteractive": false,
"fsharpInteractive": false,
"cInteractive": false,
"racketInteractive": false,
"rubyInteractive": false,
"sqlInteractive": false,
"octaveInteractive": false,
"maximaInteractive": false,
"applescriptInteractive": false,
"zigInteractive": false,
"ocamlInteractive": false
}

13328
.obsidian/plugins/execute-code/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,10 @@
{
"id": "execute-code",
"name": "Execute Code",
"version": "1.12.0",
"minAppVersion": "1.2.8",
"description": "Allows to execute code snippets within a note. Supported programming languages: C, CPP, Dart, Golang, Groovy, Kotlin, Java, JavaScript, TypeScript, Lean, Lua, CSharp, Prolog, Rust, Python, R, Ruby, Wolfram Mathematica, Haskell, Scala, Racket, F#, Batch, Shell & Powershell.",
"author": "twibiral",
"authorUrl": "https://www.github.com/twibiral",
"isDesktopOnly": true
}

View File

@ -0,0 +1,218 @@
/* @settings
name: Execute Code Settings
id: obsidian-execute-code
settings:
-
id: color-section-title
title: Color Settings
type: heading
level: 3
-
id: use-custom-output-color
title: Custom Code Output Color
description: Use a custom color for the output of code blocks
type: class-toggle
default: false
-
id: code-output-text-color
title: Output Text Color
type: variable-color
format: hex
opacity: false
default: '#FFFFFF'
-
id: use-custom-error-color
title: Custom Code Error Color
description: Use a custom color for the error output of code blocks
type: class-toggle
default: false
-
id: code-error-text-color
title: Error Text Color
type: variable-color
format: hex
opacity: false
default: '#FF0000'
*/
button.run-code-button {
display: none;
color: var(--text-muted);
position: absolute;
bottom: 0;
right: 0;
margin: 5px;
padding: 5px 20px 5px 20px;
z-index: 100;
}
button.clear-button {
display: none;
color: var(--text-muted);
position: absolute;
bottom: 0;
left: 0;
margin: 5px;
padding: 5px 20px 5px 20px;
z-index: 100;
}
pre:hover .run-code-button, pre:hover .clear-button {
display: block;
}
pre:hover .run-button-disabled, pre:hover .clear-button-disabled {
display: none;
}
.run-button-disabled, .clear-button-disabled {
display: none;
}
pre:hover code.language-output {
margin-bottom: 28px;
}
:not(.use-custom-output-color) code.language-output span.stdout {
color: var(--text-muted) !important;
}
.use-custom-output-color code.language-output span.stdout {
color: var(--code-output-text-color) !important;
}
:not(.use-custom-error-color) code.language-output span.stderr {
color: red !important;
}
.use-custom-error-color code.language-output span.stderr {
color: var(--code-error-text-color) !important;
}
code.language-output hr {
margin: 0 0 1em;
}
.settings-code-input-box textarea, .settings-code-input-box input {
min-width: 400px;
min-height: 100px;
font-family: monospace;
resize: vertical;
}
input.interactive-stdin {
font: inherit;
}
.manage-executors-view h3 {
margin: 1em;
}
.manage-executors-view ul {
margin: 1em;
padding: 0;
list-style-type: none;
}
.manage-executors-view ul li {
padding: 0.5em;
background: var(--background-primary-alt);
border-radius: 4px;
display: grid;
flex-direction: column;
margin-bottom: 0.5em;
}
.manage-executors-view small {
text-transform: uppercase;
font-weight: bold;
letter-spacing: 0.1ch;
grid-row: 1;
}
.manage-executors-view .filename {
grid-row: 2;
}
.manage-executors-view li button {
grid-column: 2;
grid-row: 1 / 3;
margin: 0;
padding: 0.25em;
display: flex;
align-items: center;
justify-content: center;
color: var(--text-muted);
background: none;
}
.manage-executors-view li button:hover {
background: var(--background-tertiary);
color: var(--icon-color-hover);
}
.manage-executors-view > div {
position: relative;
}
.manage-executors-view .empty-state {
color: var(--text-muted);
padding: 0.5em;
}
.has-run-code-button {
position: relative;
}
.has-run-code-button pre {
z-index: 1;
}
.load-state-indicator {
position: absolute;
top: 0.1em;
left: -2em;
width: 2em;
height: 2em;
background: var(--background-primary-alt);
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
color: var(--tx1);
transform: translateX(2em);
transition: transform 0.25s, opacity 0.25s;
opacity: 0;
pointer-events: none;
cursor: pointer;
}
.load-state-indicator svg {
width: 1.5em;
height: 1.5em;
margin: 0.25em;
}
.load-state-indicator.visible {
transform: translateX(0);
transform: translateX(var(--folding-offset, 0));
opacity: 1;
pointer-events: all;
}
.load-state-indicator::before {
content: "";
box-shadow: -1em 0 1em -0.75em inset var(--background-modifier-box-shadow);
position: absolute;
display: block;
width: 100%;
height: 100%;
transform: translateX(-2em);
opacity: 0;
transition: transform 0.25s, opacity 0.25s;
pointer-events: none;
}
.load-state-indicator.visible::before {
transform: translateX(0);
opacity: 1;
}

View File

@ -0,0 +1,799 @@
{
"folder": "Excalidraw",
"cropFolder": "",
"annotateFolder": "",
"embedUseExcalidrawFolder": false,
"templateFilePath": "Excalidraw/Template.excalidraw",
"scriptFolderPath": "Excalidraw/Scripts",
"fontAssetsPath": "Excalidraw/CJK Fonts",
"loadChineseFonts": false,
"loadJapaneseFonts": false,
"loadKoreanFonts": false,
"compress": true,
"decompressForMDView": false,
"onceOffCompressFlagReset": true,
"onceOffGPTVersionReset": true,
"autosave": true,
"autosaveIntervalDesktop": 60000,
"autosaveIntervalMobile": 30000,
"drawingFilenamePrefix": "Drawing ",
"drawingEmbedPrefixWithFilename": true,
"drawingFilnameEmbedPostfix": " ",
"drawingFilenameDateTime": "YYYY-MM-DD HH.mm.ss",
"useExcalidrawExtension": true,
"cropPrefix": "cropped_",
"annotatePrefix": "annotated_",
"annotatePreserveSize": false,
"previewImageType": "SVGIMG",
"renderingConcurrency": 3,
"allowImageCache": true,
"allowImageCacheInScene": true,
"displayExportedImageIfAvailable": false,
"previewMatchObsidianTheme": false,
"width": "400",
"height": "",
"overrideObsidianFontSize": false,
"dynamicStyling": "colorful",
"isLeftHanded": false,
"iframeMatchExcalidrawTheme": true,
"matchTheme": false,
"matchThemeAlways": false,
"matchThemeTrigger": false,
"defaultMode": "normal",
"defaultPenMode": "never",
"penModeDoubleTapEraser": true,
"penModeSingleFingerPanning": true,
"penModeCrosshairVisible": true,
"renderImageInMarkdownReadingMode": false,
"renderImageInHoverPreviewForMDNotes": false,
"renderImageInMarkdownToPDF": false,
"allowPinchZoom": false,
"allowWheelZoom": false,
"zoomToFitOnOpen": true,
"zoomToFitOnResize": true,
"zoomToFitMaxLevel": 2,
"linkPrefix": "📍",
"urlPrefix": "🌐",
"parseTODO": false,
"todo": "☐",
"done": "🗹",
"hoverPreviewWithoutCTRL": false,
"linkOpacity": 1,
"openInAdjacentPane": true,
"showSecondOrderLinks": true,
"focusOnFileTab": true,
"openInMainWorkspace": true,
"showLinkBrackets": true,
"allowCtrlClick": true,
"forceWrap": false,
"pageTransclusionCharLimit": 200,
"wordWrappingDefault": 0,
"removeTransclusionQuoteSigns": true,
"iframelyAllowed": true,
"pngExportScale": 1,
"exportWithTheme": true,
"exportWithBackground": true,
"exportPaddingSVG": 10,
"exportEmbedScene": false,
"keepInSync": false,
"autoexportSVG": false,
"autoexportPNG": false,
"autoExportLightAndDark": false,
"autoexportExcalidraw": false,
"embedType": "excalidraw",
"embedMarkdownCommentLinks": true,
"embedWikiLink": true,
"syncExcalidraw": false,
"experimentalFileType": false,
"experimentalFileTag": "✏️",
"experimentalLivePreview": true,
"fadeOutExcalidrawMarkup": false,
"loadPropertySuggestions": true,
"experimentalEnableFourthFont": false,
"experimantalFourthFont": "Virgil",
"addDummyTextElement": false,
"zoteroCompatibility": false,
"fieldSuggester": true,
"compatibilityMode": false,
"drawingOpenCount": 0,
"library": "deprecated",
"library2": {
"type": "excalidrawlib",
"version": 2,
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.8.3",
"libraryItems": []
},
"imageElementNotice": true,
"mdSVGwidth": 500,
"mdSVGmaxHeight": 800,
"mdFont": "Virgil",
"mdFontColor": "Black",
"mdBorderColor": "Black",
"mdCSS": "",
"scriptEngineSettings": {},
"defaultTrayMode": true,
"previousRelease": "2.8.3",
"showReleaseNotes": true,
"showNewVersionNotification": true,
"latexBoilerplate": "\\color{blue}",
"latexPreambleLocation": "preamble.sty",
"taskboneEnabled": false,
"taskboneAPIkey": "",
"pinnedScripts": [],
"customPens": [
{
"type": "default",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 0.6,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "easeOutSine",
"start": {
"cap": true,
"taper": 0,
"easing": "linear"
},
"end": {
"cap": true,
"taper": 0,
"easing": "linear"
}
}
}
},
{
"type": "highlighter",
"freedrawOnly": true,
"strokeColor": "#FFC47C",
"backgroundColor": "#FFC47C",
"fillStyle": "solid",
"strokeWidth": 2,
"roughness": null,
"penOptions": {
"highlighter": true,
"constantPressure": true,
"hasOutline": true,
"outlineWidth": 4,
"options": {
"thinning": 1,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "linear",
"start": {
"taper": 0,
"cap": true,
"easing": "linear"
},
"end": {
"taper": 0,
"cap": true,
"easing": "linear"
}
}
}
},
{
"type": "finetip",
"freedrawOnly": false,
"strokeColor": "#3E6F8D",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0.5,
"roughness": 0,
"penOptions": {
"highlighter": false,
"hasOutline": false,
"outlineWidth": 1,
"constantPressure": true,
"options": {
"smoothing": 0.4,
"thinning": -0.5,
"streamline": 0.4,
"easing": "linear",
"start": {
"taper": 5,
"cap": false,
"easing": "linear"
},
"end": {
"taper": 5,
"cap": false,
"easing": "linear"
}
}
}
},
{
"type": "fountain",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 2,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"smoothing": 0.2,
"thinning": 0.6,
"streamline": 0.2,
"easing": "easeInOutSine",
"start": {
"taper": 150,
"cap": true,
"easing": "linear"
},
"end": {
"taper": 1,
"cap": true,
"easing": "linear"
}
}
}
},
{
"type": "marker",
"freedrawOnly": true,
"strokeColor": "#B83E3E",
"backgroundColor": "#FF7C7C",
"fillStyle": "dashed",
"strokeWidth": 2,
"roughness": 3,
"penOptions": {
"highlighter": false,
"constantPressure": true,
"hasOutline": true,
"outlineWidth": 4,
"options": {
"thinning": 1,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "linear",
"start": {
"taper": 0,
"cap": true,
"easing": "linear"
},
"end": {
"taper": 0,
"cap": true,
"easing": "linear"
}
}
}
},
{
"type": "thick-thin",
"freedrawOnly": true,
"strokeColor": "#CECDCC",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": null,
"penOptions": {
"highlighter": true,
"constantPressure": true,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 1,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "linear",
"start": {
"taper": 0,
"cap": true,
"easing": "linear"
},
"end": {
"cap": true,
"taper": true,
"easing": "linear"
}
}
}
},
{
"type": "thin-thick-thin",
"freedrawOnly": true,
"strokeColor": "#CECDCC",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": null,
"penOptions": {
"highlighter": true,
"constantPressure": true,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 1,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "linear",
"start": {
"cap": true,
"taper": true,
"easing": "linear"
},
"end": {
"cap": true,
"taper": true,
"easing": "linear"
}
}
}
},
{
"type": "default",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 0.6,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "easeOutSine",
"start": {
"cap": true,
"taper": 0,
"easing": "linear"
},
"end": {
"cap": true,
"taper": 0,
"easing": "linear"
}
}
}
},
{
"type": "default",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 0.6,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "easeOutSine",
"start": {
"cap": true,
"taper": 0,
"easing": "linear"
},
"end": {
"cap": true,
"taper": 0,
"easing": "linear"
}
}
}
},
{
"type": "default",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 0.6,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "easeOutSine",
"start": {
"cap": true,
"taper": 0,
"easing": "linear"
},
"end": {
"cap": true,
"taper": 0,
"easing": "linear"
}
}
}
}
],
"numberOfCustomPens": 0,
"pdfScale": 4,
"pdfBorderBox": true,
"pdfFrame": false,
"pdfGapSize": 20,
"pdfGroupPages": false,
"pdfLockAfterImport": true,
"pdfNumColumns": 1,
"pdfNumRows": 1,
"pdfDirection": "right",
"pdfImportScale": 0.3,
"gridSettings": {
"DYNAMIC_COLOR": true,
"COLOR": "#000000",
"OPACITY": 50
},
"laserSettings": {
"DECAY_LENGTH": 50,
"DECAY_TIME": 1000,
"COLOR": "#ff0000"
},
"embeddableMarkdownDefaults": {
"useObsidianDefaults": false,
"backgroundMatchCanvas": false,
"backgroundMatchElement": true,
"backgroundColor": "#fff",
"backgroundOpacity": 60,
"borderMatchElement": true,
"borderColor": "#fff",
"borderOpacity": 0,
"filenameVisible": false
},
"markdownNodeOneClickEditing": false,
"canvasImmersiveEmbed": true,
"startupScriptPath": "",
"openAIAPIToken": "",
"openAIDefaultTextModel": "gpt-3.5-turbo-1106",
"openAIDefaultVisionModel": "gpt-4o",
"openAIDefaultImageGenerationModel": "dall-e-3",
"openAIURL": "https://api.openai.com/v1/chat/completions",
"openAIImageGenerationURL": "https://api.openai.com/v1/images/generations",
"openAIImageEditsURL": "https://api.openai.com/v1/images/edits",
"openAIImageVariationURL": "https://api.openai.com/v1/images/variations",
"modifierKeyConfig": {
"Mac": {
"LocalFileDragAction": {
"defaultAction": "image-import",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-import"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": true,
"meta_ctrl": false,
"result": "link"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-url"
},
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": true,
"meta_ctrl": false,
"result": "embeddable"
}
]
},
"WebBrowserDragAction": {
"defaultAction": "image-url",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-url"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": true,
"meta_ctrl": false,
"result": "link"
},
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": true,
"meta_ctrl": false,
"result": "embeddable"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-import"
}
]
},
"InternalDragAction": {
"defaultAction": "link",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "link"
},
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": true,
"result": "embeddable"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": true,
"result": "image-fullsize"
}
]
},
"LinkClickAction": {
"defaultAction": "new-tab",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "active-pane"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "new-tab"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "new-pane"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "popout-window"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": true,
"result": "md-properties"
}
]
}
},
"Win": {
"LocalFileDragAction": {
"defaultAction": "image-import",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-import"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "link"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-url"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "embeddable"
}
]
},
"WebBrowserDragAction": {
"defaultAction": "image-url",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-url"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "link"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "embeddable"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-import"
}
]
},
"InternalDragAction": {
"defaultAction": "link",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "link"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "embeddable"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "image-fullsize"
}
]
},
"LinkClickAction": {
"defaultAction": "new-tab",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "active-pane"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "new-tab"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "new-pane"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "popout-window"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": true,
"result": "md-properties"
}
]
}
}
},
"slidingPanesSupport": false,
"areaZoomLimit": 1,
"longPressDesktop": 500,
"longPressMobile": 500,
"doubleClickLinkOpenViewMode": true,
"isDebugMode": false,
"rank": "Bronze",
"modifierKeyOverrides": [
{
"modifiers": [
"Mod"
],
"key": "Enter"
},
{
"modifiers": [
"Mod"
],
"key": "k"
},
{
"modifiers": [
"Mod"
],
"key": "G"
}
],
"showSplashscreen": true,
"pdfSettings": {
"pageSize": "A4",
"pageOrientation": "portrait",
"fitToPage": 1,
"paperColor": "white",
"customPaperColor": "#ffffff",
"alignment": "center",
"margin": "normal"
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,12 @@
{
"id": "obsidian-excalidraw-plugin",
"name": "Excalidraw",
"version": "2.8.3",
"minAppVersion": "1.1.6",
"description": "An Obsidian plugin to edit and view Excalidraw drawings",
"author": "Zsolt Viczian",
"authorUrl": "https://www.zsolt.blog",
"fundingUrl": "https://ko-fi.com/zsolt",
"helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme",
"isDesktopOnly": false
}

File diff suppressed because one or more lines are too long

View File

@ -5,7 +5,7 @@
"autoSaveInterval": 5,
"autoPushInterval": 0,
"autoPullInterval": 5,
"autoPullOnBoot": true,
"autoPullOnBoot": false,
"disablePush": false,
"pullBeforePush": true,
"disablePopups": false,

27
.obsidian/types.json vendored Normal file
View File

@ -0,0 +1,27 @@
{
"types": {
"aliases": "aliases",
"cssclasses": "multitext",
"tags": "tags",
"excalidraw-plugin": "text",
"excalidraw-export-transparent": "checkbox",
"excalidraw-mask": "checkbox",
"excalidraw-export-dark": "checkbox",
"excalidraw-export-padding": "number",
"excalidraw-export-pngscale": "number",
"excalidraw-export-embed-scene": "checkbox",
"excalidraw-link-prefix": "text",
"excalidraw-url-prefix": "text",
"excalidraw-link-brackets": "checkbox",
"excalidraw-onload-script": "text",
"excalidraw-linkbutton-opacity": "number",
"excalidraw-default-mode": "text",
"excalidraw-font": "text",
"excalidraw-font-color": "text",
"excalidraw-border-color": "text",
"excalidraw-css": "text",
"excalidraw-autoexport": "text",
"excalidraw-embeddable-theme": "text",
"excalidraw-open-md": "checkbox"
}
}

84
IT/Hashicorp Nomad.md Normal file
View File

@ -0,0 +1,84 @@
# Terminology
## Cluster Terms
| Phrase | Definition |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| agent | A process running in server or client mode. |
| client/node | A Nomad client is responsible for running tasks assigned to it. A client registers itself with servers and watches for work to be assigned. When running the agent, the client may be referred to as a *node*. |
| server | A Nomad server manages all jobs and clients, monitors tasks, and controls which tasks get placed on which nodes. |
| dev_agent | The development agent is an agent configuration that provides useful defaults for running a single node cluster of nomad. |
## Work terms
| Phrase | Definition |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| task | The smallest unit of work in Nomad. Tasks are executed by task drivers like `docker` or `exec`, which allows Nomad to be flexible in the types of tasks it supports. Tasks specify their required task driver, configuration for the driver, constraints, and resources required. |
| task driver | Task drivers are used by nomad clients to execute a task and provide resource isolation. |
| group | A series of tasks that run on the same Nomad client. |
| job | The core unit of *control* for Nomad and defines the application and its configuration. It can contain one or many tasks |
| service job | A long lived service that runs until explicitly stopped |
| batch job | Short lived jobs that run until they exit successfully |
| job_specification/jobspec | A job specification, also known as a jobspec defines the schema for nomad jobs. This describes the type of the job, the tasks and resources necessary for the job to run, job information like which clients it can run on, or more. |
| allocation | An allocation is a mapping between a task group in a job and a client node. When a job is run, Nomad will chose a client capable of running it and allocates resources on the machine for the ask(s) in the task group defined for the job. |
| workload artifact | The runnable blob to be scheduled on a task driver. Examples include docker images, raw binaries, java applications, and VMs using QEMU. |
# Typical Workflow
Running a task is generally done by:
1. *Define a job specification for your task(s):* it'll contain info like where the workload artifact is located, ports used by the service, the number of instances desired, and more.
2. *Deploying the job*: The jobspec is submitted to Nomad and it schedules an allocation for the job on one or more clients.
3. Updating and redploying the job.
# Deployment
## Installing the CLI
https://developer.hashicorp.com/nomad/tutorials/get-started/gs-install#install-the-nomad-cli
## Creating a single node cluster
<https://stackoverflow.com/questions/56112422/nomad-configuration-for-single-node-to-act-as-production-server-and-client>
1. Install the `nomad` binary.
2. Create a config file with in `/etc/nomad.d` named `config.hcl`:
```hcl
# https://developer.hashicorp.com/nomad/docs/configuration
# The client block configures the Nomad agent to accept jobs as assigned
# by the server.
# https://developer.hashicorp.com/nomad/docs/configuration/client
client {
enabled = true
}
# https://developer.hashicorp.com/nomad/docs/configuration/server
server {
enabled = true
# The number of server nodes to wait for before bootstrapping.
bootstrap_expect = 1
}
# The local directory where agent state is stored.
data_dir = "/opt/nomad"
name = "YOUR_NOMAD_NAME_HERE"
```
3. Create a Linux service `nomad.service` inside `/etc/systemd/system`:
```systemd
[Unit]
Description=Nomad
Documentation=https://nomadproject.io/docs/
Wants=network-online.target
After=network-online.target
[Service]
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=infinity
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
StartLimitBurst=3
TasksMax=infinity
[Install]
WantedBy=multi-user.target
```
4. Load the service file with `sudo systemctl daemon-reload`, then start the service with `sudo systemctl enable nomad && sudo systemctl start nomad`.
# Resources
- <https://developer.hashicorp.com/nomad/tutorials/get-started/gs-overview>
- <https://developer.hashicorp.com/nomad/docs/drivers>
- https://developer.hashicorp.com/nomad/docs/configuration

View File

@ -0,0 +1,3 @@
- To compose a function is to create a new function from multiple smaller functions.
- They can be solved from the inside out
-

View File

@ -0,0 +1,20 @@
1. Suppose that the following declarations are in effect:....
a. `14`
b. `34`
c. `4`
d. `true`
e. `false`
2. Suppose that `high`, `low`, and `middle` are all pointer variables of the same type, and the `low` and `high` point to elements of an array. Why is the following statement illegal, and how could it be fixed?
```c
middle = (low + high) / 2
```
The above statement is illegal because you can't add an `int *` to an `int *`. The below operation is legal because you can perform pointer subtraction, and because `low` is defined on the left hand side of the equation, then adding a long to a pointer is valid.
```c
middle = low + (high - low) / 2;
```
3. What will be the contents of the `a` array after the following statements are executed?
```c
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
```

View File

@ -0,0 +1,136 @@
# Compilation Steps
1. Preprocessing: The preprocessor obeys commands that begin with #, also known as directives
Commands for the preprocessor are called directives. Directives begin with a pound sign, and they do not end with a semicolon.
Example:
```c
#include <stdio.h>
```
2. Compiling. A compiler translates then translates the program into machine instructions.
3. Linking: The generated objects are combined to create a complete executable.
The preprocessor is typically integrated with the compiler.
# Types
## Strings
A string literal is characters enclosed in double quotation marks.
A newline can be inserted using `\n`.
## Integers
An integer is a way to store a whole number. In C, integers are signed by default.
Values of an integer type are whole numbers.
Integers are divided into two categories, signed, and unsigned.
If the sign bit is zero, it's a positive value, and if it's 1, the value is negative.
They cal be declared using `[short|long] [signed|unsigned] int`, resulting in 6 possible combinations
C99 adds a `long long` int
## Floats
A float is a decimal value. Slower arithmetic and inexact values are both drawbacks of using floats.
## Characters
In C, a `char` denotes a single byte of arbitrary encoding.
## Variables
A variable must be declared before it is assigned.
## Arrays
### Finding the size of an array
```c
int arr[10];
// The size of an array can be found by
// determining the number of bytes allocated total and dividing that by the size of each element in the array.
int arr_size = sizeof(arr) / sizeof(arr[0]);
```
# Pointers
`&` gives you the address of a variable
`*` gives you the value in memory that an address points to.
To update the value a pointer points at, you can dereference on the left hand side of the assignment operator:
```c
// Update the value `p` points at to be 7
*p = 7;
```
Because of how operator precedence works, parentheses should be placed around the dereference operator and the variable
```c
// Increment the value pointed to by `p`
(*p)++;
```
# Formatting specifiers
# Standard library
## Formatting specifiers
| Specifier | Function |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `%d` | Decimal representation: Display a value as a base 10 (hence the decimal) integer. |
| `%f` | Fixed point decimal representation. Specify the number of places to round to by adding a decimal and a number, eg `%.2f` would round to two decimal places. |
| `%e` | Exponential floating point number representation. |
| `%g` | Either fixed point or exponential representation, whichever has a more compact representation. |
For number formatting specifiers, the convention is as follows:
`%-a.bX`
`%`: Start of the formatting specifier
`-`: (optional) If included, justify value left in space. Otherwise, justify right in space
`a`: (optional) If included, the size of the field in characters.
`.`: Separator between `a` and `b`. Optional if `b` is not specified
`b`: The number of decimal places to round to
`X`: The type of format to use, and the end of the specifier. Use `d` for integer base 10 (decimal) representation, `f` for fixed point decimal, and `e` for exponential notation, and `g` to select between fixed point and exponential, whichever is shorter.
## `printf`
Used to write a string to stdout with the ability to format variables into the string.
Write a string to standard output. `f` indicates that it's a formatting string. The string will not include move the cursor to a newline, append `\n` to the end of the string to do so.
Printf accepts a variable number of arguments, the first argument is the formatting string, then following arguments are the arguments to be inserted into the string.
TODO: examples
## `scanf`
Read value(s) from stdin.
`scanf` is to stdin as `printf` is to stdout.
The format of the input is specified using [formatting specifiers](#Formatting%20specifiers), and all following arguments are pointers pointing to variables to update.
### Examples
```c
// Read a float from standard input into the variable `v`.
float v;
// Here, `v` is uninitialized
scanf("%f", &v);
printf("You input: %f", v);
```
### Behavior
The validity of a `scanf` call is not necessarily checked at compile time, and so the number of outputs specified should match the number of inputs.
For each formatting specifier specified in the string, `scanf` will attempt to locate an appropriate value in the input, skipping whitespace and newlines if necessary until the beginning of a number is reached.
When asked to read an integer, `scanf` searches for one of:
- A digit
- A plus or minus sign
It will continue to read until it reaches a nondigit (whitespace is not skipped in this case, and it is counted as a nondigit). If it doesn't encounter a valid digit first, it will return early.
When asked to read a float, `scanf` searches for one of:
- A plus sign or minus sign
- A series of digits (possibly containing a decimal point), followed by an exponent (optional). An exponent consists of the letter `e` or `E`, an optional sign, and one or more digits.
`%e`, `%f`, and `%g` all follow the same rules for recognizing floating point numbers.
If an ordinary character is included in the pattern matching string, it will be matched then discarded before proceeding to the next character.
## `rand`
```c
// `srand` creates a seed to use for rng
srand(time(NULL));
// `rand` generates a random integer between 0 and `RAND_MAX`
// To pick a number between a particular range, you can use the modulo
// operator.
// The below example picks a number between zero and four.
int num = rand() % 4;
```

View File

@ -0,0 +1,30 @@
> 1. If `i` is a variable and `p` points to `i`, which of the following expressions are aliases for `i`?
a. `*p`
g. `*&i`
> 2. If `i` is an `int` variable and `p` and `q` are pointers to `int`, which of the following assignments are legal?
e. `p = *&q;`
f. `p = q;`
i. `*p = *q`
> 3. The following function supposedly computes the sum and average of the numbers in the array `a`, which has length `n`. `avg` and `sum` point to the variables that the function should modify, unfortunately the function contains several errors, find and correct them.
```c
void avg_sum(double a[], int n, double *avg, double *sum)
{
int i;
// This was assigning a pointer to a float,
// the dereference operator was missing
*sum = 0.0;
for (i = 0; i < n; i++)
// This wasn't increasing the value
// `sum` points to, it was modifying the address stored in the pointer
(*sum) += a[i];
// Missing dereference operators
*avg = *sum / n;
}
```

View File

@ -0,0 +1,34 @@
1. Suppose that the following declarations are in effect:....
a. `14`
b. `34`
c. `4`
d. `true`
e. `false`
2. Suppose that `high`, `low`, and `middle` are all pointer variables of the same type, and the `low` and `high` point to elements of an array. Why is the following statement illegal, and how could it be fixed?
```c
middle = (low + high) / 2
```
The above statement is illegal because you can't add an `int *` to an `int *`. The below operation is legal because you can perform pointer subtraction, and because `low` is defined on the left hand side of the equation, then adding a long to a pointer is valid.
```c
middle = low + (high - low) / 2;
```
3. What will be the contents of the `a` array after the following statements are executed?
```c
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
```
5. Suppose that `a` is a one dimensional array and `p` is a pointer variable. assuming that the assignment `p = a` has just been performed, which of the following expressions are illegal because of mismatched types? Of the remaining expressions, which are true (have a nonzero value)?
The following expressions are illegal because of mismatched types:
- (a) `p == a[0]` - Comparison between `int *` and `int`
The rest of the expressions are true.
8. Rewrite the following function to use pointer arithmetic...
```c
void store_zeros(int *a, int n) {
for (int i = 0; i < n; i++) {
*(a + i) = 0;
}
}
```

View File

@ -0,0 +1,70 @@
> **1.** The following function calls supposedly write a single new-line character, but some are incorrect. Identify which calls don't work and explain why.
b. `printf("%c", "\n");` - This is invalid because the double quotes make `\n` a string, but it's being displayed with the `%c`formatting specifier.
c. `printf(%s, '\n');` - This is invalid because it's trying to display a `char` using the string formatting specifier.
e. `printf('\n');` - `printf`'s first argument should be a string, not a `char`.
h. `putchar("\n");` - `putchar`'s first argument should be a `char`, not a string.
i. `puts('\n');` - `puts`'s first argument should be a string, not a `char`.
j. `puts("\n");` - `puts` will write a newline after writing a string, so this will write two newlines.
---
> **2.** Suppose that `p` has been declared as follows:
```c
char *p = "abc";
```
> Which of the following function calls are legal? Show the output produced by each legal call, and explain why all the others are illegal.
```c
// A - Not legal, because putchar accepts a `char`, not a pointer.
putchar(p);
// B - Legal, output: `a`
putchar(*p);
// C - Legal, output: `abc`
puts(p)
// D - Illegal, `puts` accepts a pointer to a null terminated string, not a `char`.
```
---
> **3.** Suppose that we call `scanf` as follows:
```c
scanf("%d%s%d", &i, s, &j);
```
> If the user enters `12abc34` `56def78`, what will be the values of `i`, `s`, and `j` after the call? (Assume that `i` and `j` are `int` variables and `s` is an array of characters.)
- `i`: `12`
- `s`: `"abc34"`
- `j`: `56`
---
> **7.** Suppose that `str` is an array of three characters. Which one of the following statements is not equivalent to the other three?
```c
// A
*str = 0;
// B
str[0] = '\0';
// C
strcpy(str, "");
// D
strcat(str, "");
```
(d) is different because it effectively does nothing (concatenates `"abc"` with an empty string). The rest of them make `str` effectively empty by setting the first character to a null byte.
---
> **9.** What will be the value of the string `s1` after the following statements have been executed?
```c
// Assuming `str` is an empty string with enough space to store everything:
strcpy(str, "tire-bouchon");
// "tire-bouchon"
strcpy(&str[4], "d-or-wi");
// "tired-or-wir"
strcat(str, "red?");
// "tired-or-wired?"
```
Expected output:
```c
"tired-or-wired?"
```

View File

@ -0,0 +1,50 @@
> **12.** Suppose that the macro `M` has been defined as follows:
```c
#define M 10
```
> Which of the following tests will fail?
```c
// C will fail, because `M` is defined.
#ifndef M
// E will fail, because `M` is defined
#if !defined(M)
```
---
> **13.** Show what the following program will look like after preprocessing. You may ignore any lines added to the program as a result of including the `<stdio.h>` header.
```c
#include <stdio.h>
int main(void)
{
f();
}
void f(void) {
printf("N is %d\n", 100);
}
```
---
> **15.** Suppose that a program needs to display messages in either English, French, or Spanish. Using conditional compilation, write a program fragment that displays one of the following three messages, depending on whether or not the specified macro is defined.
```c
#ifdef ENGLISH
#define MESSAGE "Insert Disk 1"
#endif
#ifdef FRENCH
#define MESSAGE "Inserez Le Disque 1"
#endif
#ifdef SPANISH
#define MESSAGE "Inserte El Disco 1"
#endif
printf(MESSAGE);
```

View File

@ -0,0 +1,83 @@
> **1.** Section 15.1 listed several advantages of dividing a program into multiple source files.(a). Describe several other advantages
- Easier to scale horizontally as developers are added to the team
- Reduced cognitive load from less global scope to keep track of
> (b). Describe some disadvantages
- Increased complexity
- Need to maintain/troubleshoot a build system
---
> **2.** Which of the following should *not* be put in a header file? Why not?
b. Function definitions - Functions should only be defined once, and this allows multiple files to share the same function definition
---
> **3.** We saw that writing `#include <file>` instead of `#include "file"` may not work if file is one that we've written. Would there be any problem with writing `$include "file"` instead of `#include <file>` if *file* is a system header?
Yes, `""` is a path relative to the current file, whereas `<>` is a path to the system's standard library headers.
---
> **4.** Assume that `debug.h` is a header file with the following contents...
>(a). What is the output when the program is executed?
```
Output if DEBUG is defined:
Value of i: 1
Value of j: 2
Value of i + j: 3
Value of 2 * i + j - k: 1
```
> (b). What is the output if the `#define` directive is removed from `testdebug.c`?
```
Output if DEBUG is not defined:
```
> (c). Explain why the output is different in parts (a) and (b)
When `DEBUG` is defined, any instances of the `PRINT_DEBUG` token are replaced with a `printf` call during compile time, but when it's not defined, they're replaced with nothing.
> (d). Is it necessary for the `DEBUG` macro to be defined *before* `debug.h` is included in order for `PRINT_DEBUG` to have the desired effect? Justify your answer.
Macro invocations are evaluated sequentially, and so if `DEBUG` was defined after `PRINT_DEBUG`, then any usages of `PRINT_EVALUATION` would be have like `DEBUG` was not defined.
---
> **5.** Suppose that a program consists of three source files - `main.c`, `f1.c`, and `f2.c`- Plus two header files, `f1.h` and `f2.h`. All three source files include `f1.h` but only `f1.c` and `f2.c` include `f2.h`. Write a makefile for this program, assuming that the compiler is `gcc` and that the executable file is to be named `demo`.
```makefile
demo: main.o f1.o f2.o
gcc -o demo main.o f1.o f2.o
main.o: main.c f1.h
gcc -c main.c
f1.o: f1.c f1.h f2.h
gcc -c f1.c
f2.o: f2.c f2.h
gcc -c f2.c
```
---
> **6.** The following questions refer to the program described in Exercise 5.
> (a). Which files need to be compiled when the program is built for the first time?
`f1.c`, `f1.h`, `f2.c`, `f2.h`, `main.c`, `main.h`
> (b). If `f1.c` is changed after the program has been built, which files need to be recompiled?
Just `f1.c`.
> (c). If `f1.h` is changed after the program has been built, which files need to be recompiled?
All source files, because they all include `f1.h`.
> (d). If `f2.h` is changed after the program has been built, which files need to be recompiled?
`f1.c` and `f2.c`.

View File

@ -0,0 +1,21 @@
Yes they are, different structs can have the same field names.
> 2
```c
struct c1 C1 { 0.0, 1.0};
struct c1 C2 { 1.0, 1.0};
```
> 8a
```c
const struct color MAGENTA { 255, 0, 255};
```
>11
20 bytes
UNCOMPLETED

View File

@ -0,0 +1,90 @@
> **4.** Suppose that the following declarations are in effect:
```c
struct point {int x, y; };
struct rectangle { struct point upper_left, lower_right; };
struct rectangle *p;
```
> Assume that we want `p` to point to a rectangle structure whose upper left corner is at $(10, 25)$, and whose lower right corner is at $(20, 15)$. Write a series of statements that allocate such a structure and initialize it as indicated.
```c
struct rectangle rect = { { 10, 25 }, { 20, 15 } };
p = &rect;
```
---
> **5.** Suppose that `f` and `p` are declared as follows:
```c
struct {
union {
char a, b;
int c;
} d;
int e[5];
} f, *p = &f;
```
> Which of the following statements are legal?
(a) `p->b = ' ';`
(b) `p->e[3] = 10;` - **Legal**
(c) `(*p).d.a = '*';` - **Legal**
(d) `p->d->c = 20;`
---
> **7.** The following loop is supposed to delete all nodes from a linked list and release the memory that they occupy. Unfortunately, the loop is incorrect. Explain what's wrong with it and show how to fix the bug.
```c
for (p = first; p != NULL; p = p->next)
free(p);
```
The above loop won't function because it deallocates the entry, then attempts to access the pointer to the next item, *after* it's already been freed.
A functional example might look like this:
```c
struct entry *p = first;
while (p != NULL) {
void *current = p;
p = p->next;
free(p);
}
```
---
> **9.** True or false: If `x` is a structure and `a` is a member of that structure, then `(&x)->a` is the same as `x.a`. Justify your answer.
**True**: The arrow operator is used to access a member of a struct through a pointer. `(&x)` creates a pointer to the `x` struct, therefore the arrow operator can be used to access fields on `x`.
---
> **13.** The following function is supposed to insert a new node into its proper place in an ordered list, returning a pointer to the first node in the modified list. Unfortunately, the function doesn't work correctly in all cases. Explain what's wrong with it and show how to fix it. Assume that the `node` structure is the one defined in Section 17.5.
```c
struct node *insert_into_ordered_list(struct node *list, struct node *new_node) {
struct node *cur = list, *prev = NULL;
while (cur->value <= new_node->value) {
prev = cur;
cur = cur->next;
}
prev->next = new_node;
new_node->next = cur;
return list;
}
```
In the above code, if the new item needs to be inserted at the *end* of the list, it breaks, because `cur` is set to `NULL`, then it attempts to access `cur->value`.
```c
struct node *insert_into_ordered_list(struct node *list, struct node *new_node) {
struct node *cur = list, *prev = NULL;
while (cur->value <= new_node->value) {
prev = cur;
cur = cur->next;
if (cur->next == NULL) {
break;
}
}
prev->next = new_node;
new_node->next = cur;
return list;
}
```

View File

@ -0,0 +1,47 @@
# \#2
Directives:
```c
#include <stdio.h>
```
Statements:
```c
printf("Parkinson's Law: \nWork expands so as to ");
printf("fill the time\n");
printf("available for its completion.\n");
return 0;
```
Output:
```
Parkinson's Law:
Work expands so as to fill the time
available for its completion.
```
# \#5
(A): `100_bottles` is not a legal C identifier because C identifiers cannot start with a number.
# \#6
Double underscores are typically used to denote statements reserved by the compiler, and in C++, double underscores are used in name mangling and so they cannot be used entirely. More subjectively, it can be hard to tell how many underscores are present.
# \#7
(A): `for`
(E): `while`
# \#8
14.
Work:
1. `answer`
2. `=`
3. `(`
4. `3`
5. `*`
6. `q`
7. `-`
8. `p`
9. `*`
10. `p`
11. `)
12. `/`
13. `3`
14. `;`

View File

@ -0,0 +1,37 @@
# 1.
a. `86,1040`
b. `3.02530e+01`
c. `83.1620`
d. `1e-06 `
# 2.
```c
float x = 0.12345;
// a
printf("%-8.1e", x);
// b
printf("%10.6e", x);
// c
printf("%8.3f", x);
// d
printf("%-6.0f", x);
```
# 3.
a. Equivalent
b. Equivalent
c. Equivalent
d. Equivalent
# 4.
`i`: `10`
`x`: `0.3f`
`j`: `5`
# 5.
`x`: `12.3f`
`i`: `45`
`f`: `0.6f`

View File

@ -0,0 +1,26 @@
# 1.
a. `1 2`
b. `0`
c. `1`
d. `0`
# 3.
a. `1`
b. `-1`, `-2`
c. `-1`, `-1`
d. `1`, `2`
# 9.
a. `63 8`
b. `1 2 3`
c. `0 1 3`
d. `0 0 0`
# 11.
a. `0 2`
b. `4 11 6`
c. `0 8 7`
d. `15 4 5 4`
# 15.
a. `i = 2, j = 2`
b. `i = 1`, `j = 2`
c. `i = 1`, `j = 2`
d. `i = 1`, `j = 3`

View File

@ -0,0 +1,103 @@
> 2. The following program fragments illustrate the logical operators. Show the output produced by each, assuming that `i`, `j`, and `k` are `int` variables.
a. `i = 10; j = 5;`
```c
printf("%d", !i < j);
// Expected output: `1`, because `!i` evaluates to 0, and 0 is less than 5, so that expression evaluates to true, or 1.
```
b. `i = 2; j = 1;`
```c
printf("%d", !!i + !j);
// Expected output: `1`, because !!2 evaluates to 1, and !j evaluates to 0
```
c. `i = 5; j = 0; k = -5;`
```c
printf("%d", i && j || k);
// Expected output: `1`, because i && j should evaluate to 0, but `0 || 1` should evalulate to true.
```
d. `i = 1; j = 2; k = 3;`
```c
printf("%d", i < j || k);
// Expected output: `1`
```
> 4. Write a single expression whose value is either `-1`, `0`, or `1` depending on whether `i` is less than, equal to, or greater than `j`, respectively.
```c
/*
If i < j, the output should be -1.
If i == j, the output should be zero
If i > j, the output should be 1.
*/
(i > j) - (i < j)
```
> 6. Is the following `if` statement legal?
```c
if (n == 1-10)
printf("n is between 1 and 10\n");
```
Yes the statement is *legal*, but it does not produce the intended effect. It would not produce an output when `n = 5`, because `1-10` evaluates to `-9`, and `-9 != 5`.
> 10. What output does the following program fragment produce? (Assume that `i` is an integer variable.)
```c
int i = 1;
switch (i % 3) {
case 0: printf("zero");
case 1: printf("one");
case 2: printf("two");
}
```
The program would print `onetwo` because each case is missing a `break` statement.
> 11. The following table shows the telephone area codes in the state of Georgia along with the largest city in each area:
| Area code | Major city |
| --------- | ---------- |
| 229 | Albany |
| 404 | Atlanta |
| 470 | Atlanta |
| 478 | Macon |
| 678 | Atlanta |
| 706 | Columbus |
| 762 | Columbus |
| 770 | Atlanta |
| 912 | Savannah |
> Write a switch statement whose controlling expression is the variable `area_code`. If the value of `area_code` is not in the table, the `switch` statement will print the corresponding city name. Otherwise, the `switch` statement will display the message `"Area code not recognized."` Use the techniques discussed in section 5.3 to make the `switch` as simple as possible.
```c
int area_code;
switch (area_code) {
case 404:
case 470:
case 678:
case 770:
printf("Atlanta");
break;
case 706:
case 762:
printf("Columbus");
break;
case 229:
printf("Albany");
break;
case 478:
printf("Macon");
break;
case 912:
printf("Savannah");
break;
default:
printf("Area code not recognized.");
break;
}
```

View File

@ -0,0 +1,58 @@
> 1. What output does the following program fragment produce?
```c
i = 1;
while (i <= 128) {
printf("%d ", i);
i *= 2;
}
```
Output:
```
1 2 4 8 16 32 64 128
```
> 2. What output does the following program fragment produce?
```c
i = 9384
do {
printf("%d ", i);
i /= 10;
} while (i <= 128);
```
Output:
```
9384 938 93 9
```
> 3. What output does the following `for` statement produce?
```c
for (i = 5, j = i - 1; i > 0, j > 0; --i, j = i - 1)
printf("%d ", i);
```
Output:
```
5 4 3 2
```
> 4. Which one of the following statements is not equivalent to the other two (assuming that the loop bodies are the same?)
```c
for (i = 0; i < 10; i++) // (a)
for (i = 0; i < 10; ++i) // (b)
for (i = 0; i ++ < 10; ) // (c)
```
Answer:
C is not the same as A and B, because the increment takes place before the loop body is executed.
> 5. Which one of the following statements is not equivalent to the other two (assuming that the loop bodies are the same)?
```c
while (i < 10) {...} // (a)
for (; i < 10;) {...} // (b)
do {...} while (i < 10); // (c)
```
Answer:
C is not the same as A and B, because the block is executed before the condition is checked.

View File

@ -0,0 +1,48 @@
> 3. Which of the following aren not legal types in C?
a. `short unsigned int`
b. `short float`
c. `long double`
d. `unsigned long`
Answer:
b. `short float`
> 4. If `c` is a variable of type `char`, which of the following statements is illegal?
```c
char c;
// A:
i += c; // i has type int
// B:
c = 2 * c - 1;
// C:
putchar(c);
// D:
printf(c);
```
Answer:
D is illegal because `printf` operates on strings, not `char`s.
> 6. For each of the following items of data, specify which one of the types `char`, `short`, `int`, or `long`is the smallest one guaranteed to be large enough to store the item.
Answer:
A. Days in a month: `char`
B. Days in a year: `short`
C. Minutes in a day: `short`
D. Seconds in a day: `long`
> 10. Suppose that `i` is a variable of type `int`, `j` is a variable of type `float`, and `k` is a variable of type `unsigned int`. What is the type of the expression `i + (int) j * k`?
Answer:
`unsigned int`
> 15. Use `typedef` to create types named `Int8`, `Int16`, and `Int32`. Define the types so that they represent 8 bit, 16 bit, and 32 bit integers on your machine.
Answer:
```C
typedef char Int8;
typedef short Int16;
typedef long Int32;
```

View File

@ -0,0 +1,69 @@
> 1. We discussed using the expression `sizeof(a) / sizeof(a[0]` to calculate the number of elements in an array. The expression `sizeof(a) / sizeof(t)` where `t` is the type of `a`'s elements would also work, but it's considered an inferior technique. Why?
Answer:
Using the type of the array's first element means that if you change the type of an array, it won't break the code that calculates the number of elements.
> 3. Write a declaration of an array named weekend containing seven `bool` values. Include an initialize that makes the first and last values `true`; all other values should be `false`.
Answer:
```c
bool weekend[] = {true, [1 ... 5] = false, true};
```
> 5. Calculators, watches, and other electronic devices often rely on 7 segment displays for numerical output. To form a digit, such devices turn on some of the seven segments while leaving others off.
>
> Here's what the array might look like, with each row representing one digit:
```c
const int segments[10][7] = {{1, 1, 1, 1, 1, 1, 0}, ...};
```
> I've given you the first row of the initializer, fill in the rest.
Answer:
```c
const int segments[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 0}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
```
>10. Write a declaration for an 8x8 `char` array named `chess_board`. Include an initializer that puts the following data into the array, one character per array element:
\[omitted]
```c
char chess_board[8][8] = {
{'r', 'n', 'b', 'q', 'k', 'b', 'n', 'r'},
{'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p'},
{' ', '.', ' ', '.', ' ', '.', ' ', '.'},
{'.', ' ', '.', ' ', '.', ' ', '.', ' '},
{' ', '.', ' ', '.', ' ', '.', ' ', '.'},
{'.', ' ', '.', ' ', '.', ' ', '.', ' '},
{' ', '.', ' ', '.', ' ', '.', ' ', '.'},
{'.', ' ', '.', ' ', '.', ' ', '.', ' '},
{'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P'},
{'R', 'N', 'B', 'K', 'Q', 'B', 'N', 'R'},
};
```
> 11. Write a program fragment that declares an 8x8 `char` array named `checker_board` and then uses a loop to store the following data into the array (one character per array element).
```c
char checker_board[8][8];
for (int row = 0; row < 8; row++) {
for (int column = 0; column < 8; column++) {
if ((column + row) % 2 == 0) {
checker_board[row][column] = 'B';
} else {
checker_board[row][column] = 'R';
}
}
}
```

View File

@ -0,0 +1,78 @@
> 1. The following function, which computes the area of a triangle, contains two errors. Locate the errors and show how to fix them. (*Hint*: There are no errors in the formula)
```c
double triangle_area(double base, height)
double product;
{
product = base * height;
return product / 2;
}
```
Answer:
```c
// A type annotation is needed for `height`
double triangle_area(double base, double height)
{
// The `product` variable declaration was not in the function block.
double product;
product = base * height;
return product / 2;
}
```
> 2. Write a function `check(x, y, n)` that returns `1` if both `x` and `y` fall between zero and `n - 1` inclusive. The function should return 0 otherwise. Assume that `x`, `y`, and `n` are all of type int
```c
int check(int x, int y, int n) {
int in_range = 1;
if (x < 0 || y < 0) {
in_range = 0;
}
if (x > n - 1 || y > n - 1) {
in_range = 0;
}
return in_range;
}
```
> 7. Suppose that function `f` has the following definition:
> `int f(int a, int b) { ... }`
> Which of the following statements are legal? Assume that `i` has type `int` and `x` has type `double`).
Answer:
All of them are legal and will compile and run. (c) and (d) are what I would consider bad practice because they perform an implicit conversion from a double to an int, and should include an explicit cast.
> 8. Which of the following would be valid prototypes for a function that returns nothing and has one double parameter?
Answer:
(a) and (b).
Parameters must contain a type annotation but they do not need to specify a name. A function prototype declaration must specify a return type.
> 9. What will be the output of the following program?
```c
#include <stdio.h>
void swap (int a, int b);
int main(void)
{
int i = 1, j = 2;
swap(i, j);
printf("i = %d, j = %d\n", i, j);
return 0;
}
void swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
```
Answer:
```
i = 1, j = 2
```
Because function parameters are passed by value and not reference in C, modifications to `a` and `b` are limited to the scope of `swap`.

View File

@ -0,0 +1,322 @@
# Banana Cake
## Instructions
1. Assume an action set of {add \<ingredient>, stir, bake, cool}. Draw a flowchart, using the paradigm discussed in class, to show the process of baking a banana cake. Use Google to find a typical list of ingredients.
2. Represent the flowchart from problem 1 as pseudocode.
## Flowchart
```d2
vars: {
d2-config: {
dark-theme-id: 200
}
}
grid-columns: 3
begin: {
shape: oval
# near: top-left
}
begin -> add 3c flour\
-> add 1 1/2 tsp baking soda\
-> add 1/2 tsp cinnamon\
-> add 1/2 tsp salt\
-> stir\
-> add 3 mashed bananas\
-> add 1 tsp lemon juice\
-> stir again\
-> add 3 eggs\
-> add 2tsp vanilla extract\
-> stir a final time\
-> bake @ 350f for 50 min\
-> let cool for 1 hour\
-> end
end: {
shape: oval
# near: bottom-right
}
```
## Pseudocode
```c
/**************************************
* Function Title: BakeBananaCake
*
* Summary: Bake a banana cake
*
* Inputs: none
* Outputs: none
**************************************
* Pseudocode
*
* Begin
* Add 3c flour
* Add 1 1/2 tps baking soda
* Add 1/2 tsp cinnamon
* Add 1/2 tsp salt
* Stir
* Add 3 mashed bananas
* Add 1 tsp lemon juice
* Stir
* Add 3 eggs
* Add 2tsp vanilla extract
* Stir a final time
* Bake @ 350F for 50 min
* Cool for 1 hour
* End
**************************************/
```
# Walking
## Instructions
3. Assume an action set of {walk \<value> steps, turn to \<value> degrees}. Draw a flowchart showing a shady path and a sunny path to get from the west doors of the Engineering Building to the south-east doors of the TSC. Pick a meaningful “if” condition to select one of the two paths. Use real-world data in your design.
4. Represent the flowchart from problem 3 as pseudocode.
%%
Assuming a step distance of 2.5 feet.
Shady path:
1. Turn to 270 degrees
2. Walk 112 steps
3. Turn to 225 degrees
4. Walk 124 steps
5. Turn to 270 degrees
6. Walk 361 steps
7. Turn to 0 degrees
8. Walk 176 steps
9. Turn to 270 degrees
10. Walk 62 steps
Sunny path:
1. Turn to 270 degrees
2. Walk 73 steps
3. Turn to 0 degrees
4. Walk 94 steps
5. Turn to 275 degrees
6. Walk 467 steps
7. Turn to 180 degrees
8. Walk 86 steps
9. Turn to 270 degrees
10. Walk 80 steps
%%
## Flowchart
```d2
vars: {
d2-config: {
dark-theme-id: 200
}
}
classes: {
turn-0: {
label: turn to 0 degrees
}
turn-90: {
label: turn to 90 degrees
}
turn-180: {
label: turn to 180 degrees
}
turn-270: {
label: turn to 270 degrees
}
}
beginning: {shape: oval}
beginning -> if
if: {
shape: diamond
label: if (shady)\n<then else>\nendif
}
if -> shady: {
direction: up
label: if shady path
}
shady {
grid-columns: 2
1.class: turn-270
1 -> 2
2.label: walk 112 steps
2 -> 3
3.label: turn to 225 degrees
3 -> 4
4.label: walk 124 steps
4 -> 5
5.class: turn-270
5 -> 6
6.label: walk 361 steps
6 -> 7
7.class: turn-0
7 -> 8
8.label: walk 176 steps
8 -> 9
9.class: turn-270
9 -> 10
10.label: walk 62 steps
}
end: {shape: oval}
if -> end
if -> sunny: if sunny path
sunny {
grid-columns: 2
1.class: turn-270
1 -> 2
2.label: walk 73 steps
2 -> 3
3.class: turn-0
3 -> 4
4.label: walk 94 steps
4 -> 5
5.label: turn to 275 degrees
5 -> 6
6.label: walk 361 steps
6 -> 7
7.class: turn-0
7 -> 8
8.label: walk 176 steps
8 -> 9
9.label: turn to 270 degrees
9 -> 10
10.label: walk 80 steps
}
```
## Pseudocode
```c
/**************************************
* Function Title: WalkToTscFromEngr
*
* Summary: Walk from the west entrance of the engineering building
* to the southeast entrace of the taggart student center, using either
* a shady or sunny path
*
* Inputs: shady (boolean)
* Outputs: none
**************************************
* Pseudocode
*
* Begin
* If (shady) then
* Turn to 270 degrees
* Walk 112 steps
* Turn to 225 degrees
* Walk 124 steps
* Turn to 270 degrees
* Walk 361 steps
* Turn to 0 degrees
* Walk 176 steps
* Turn to 270 degrees
* Walk 62 steps
* Else
* Turn to 270 degrees
* Walk 73 steps
* Turn to 0 degrees
* Walk 94 steps
* Turn to 275 degrees
* Walk 467 steps
* Turn to 180 degrees
* Walk 86 steps
* Turn to 270 degrees
* Walk 80 steps
* EndIf
* End
**************************************/
```
# 4 Way Intersection
## Instructions
5. Develop a flowchart that describes the behavior of a set of traffic lights that control a 4-way intersection. Assume the light can either be red or green.  Define an appropriate action set that accounts for the time the light has been in the current state.
6. Represent the flowchart from problem 5 as pseudocode.
## Action Set
| Action name | Description |
| -- | -- |
| Set \[north, east, south, west] light to \[red, green] | Set the specified light to either red or green |
| Toggle lights | Change the color of all 4 lights to the color they were not |
| Wait \[number of seconds] seconds | Pause for \[number of seconds] seconds before continuing to the next instruction |
## Flowchart
```d2
vars: {
d2-config: {
dark-theme-id: 200
}
}
classes: {
toggle-lights: {
label: Toggle lights
}
}
beginning: {
shape: oval
label: beginning
}
beginning -> initialize lights
initialize lights {
grid-columns: 1
1.label: set the north light to red
1 -> 2
2.label: set the south light to red
2 -> 3
3.label: set the east light to green
3 -> 4
4.label: set the west light to green
}
initialize lights -> loop
loop {
near: center-right
label: loop indefinitely
begin-loop: {
shape: step
label: begin iteration
}
begin-loop -> 1
1.label: wait 30 seconds
1 -> 2
2.label: toggle lights
end-loop: {
shape: step
label: end iteration
}
2 -> end-loop
end-loop -> begin-loop
}
loop -> end: the heat death of the universe
end: {
near: bottom-right
shape: oval
label: end
}
```
## Pseudocode
```c
/**************************************
* Function Title: RunStopLights
*
* Summary: Operate stoplights for a 4 way intersection
*
* Inputs: none
* Outputs: none
**************************************
* Pseudocode
*
* Begin
* Set the north light to red
* Set the south light to red
* Set the east light to green
* Set the west light to green
* Loop indefinitely
* Wait 30 seconds
* Toggle lights
* EndLoop
* End
**************************************/
```

View File

@ -0,0 +1,2 @@
- To find the magnitude of a negative twos compliment number, flip all of the bits and add one.
-

View File

@ -0,0 +1,15 @@
# Half Adder
# Full Adder
# Ripple Carry Adder
# Carry-Select Adder
A carry select adder is built using two ripple carry adders, and multiplexing them together based off of the value of $c_{in}$. This is done for performance reasons, because when adding two numbers $x$ and $y$, we know $x$ and $y$ *before* we know the value of $c_{in}$. This means we can compute what the output of $x + y + c_{in}$ would be for $c_{in} = 0$ and $c_{in} = 1$ at the same time, then just toggle between the two possible values given the *actual* value of $c_{in}$.
The delay is calculated like so:
1. Given the delay of a full adder is $k$, and the delay of a 2 to 1 mux is $\frac{1}{m}k$,
2. then the delay of a 4 bit ripple carry adder is $4k$, because it's 4 full adders chained together, running sequentially.
3. This means that the delay of a 4 bit carry select adder is $4k + \frac{k}{m}$
# Carry-lookahead adder

View File

@ -0,0 +1,148 @@
# History of Boolean Algebra
- In 1849, George Boole published a scheme for describing logical thought and reasoning
- In the 1930s, Claude Shannon applied Boolean algebra to describe circuits built with switches
- Boolean algebra provides the theoretical foundation for digital design
# Properties of Boolean Algebra
| Number | Col. A | Col. A Description | Col. B | Col. B Description |
| ---------------------- | --------------------------------------------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------- | ------------------ |
| 1. | $0 \cdot 0 = 0$ | | $1 + 1 = 1$ | |
| 2. | $1 \cdot 1 = 1$ | | $0 + 0 = 0$ | |
| 3. | $0 \cdot 1 = 1 \cdot 0 = 0$ | | $1 + 0 = 0 + 1 = 1$ | |
| 4. | if $x = 0$ then $\overline{x} = 1$ | | if $x = 1$ then $\overline{x} = 0$ | |
| 5. | $x \cdot 0 = 0$ | | $x + 1 = 1$ | |
| 6. | $x \cdot 1 = x$ | | $x + 0 = x$ | |
| 7. | $x \cdot x = x$ | | $x + x = x$ | |
| 8. | $x \cdot \overline{x} = 0$ | | $$x + \overline{x} = 1$ | |
| 9. | $\overline{\overline{x}} = x$ | | | |
| 10. Commutative | $x \cdot y = y \cdot x$ | | $x + y = y + x$ | |
| 11. Associative | $x \cdot (y \cdot z) = (x \cdot y) \cdot z$ | | $x + (y + z) = (x + y) +z$ | |
| 12. Distributive | $x \cdot (y +z) = x \cdot y + x \cdot z$ | | $x + y \cdot z = (x + y) \cdot (x + z$ | |
| 13. Absorption | $x + x \cdot y = x$ | | $x \cdot (x + y) = x$ | |
| 14. Combining | $x \cdot y + x \cdot \overline{y} = x$ | | $(x + y) \cdot (x + \overline{y}) = x$ | |
| 15. DeMorgan's Theorem | $\overline{x \cdot y} = \overline{x} + \overline{y}$ | | $x + y = \overline{x} \cdot \overline{y}$ | |
| 16. | $x + \overline{x} \cdot y = x + y$ | | $x \cdot (\overline{x} + y) = x \cdot y$ | |
| 17. Consensus | $x \cdot y + y \cdot z + \overline{x} \cdot z = x \cdot y + \overline{x} \cdot z$ | | $(x + y) \cdot (y + z) \cdot (\overline{x} + z) = (x + y) \cdot (\overline{x} + z)$ | |
# Synthesis
In the context of binary logic, synthesis refers to the act of creating a boolean expression that evaluates to match a given truth table.
This is done by creating a product term for each entry in the table that has an output of $1$, that also evaluates to $1$, then ORing each product term together and then simplifying.
Example:
Given the below truth table, synthesize a boolean expression that corresponds.
| $x_1$ | $x_2$ | $f(x_1, x_2)$ |
| ----- | ----- | ------------- |
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
- $f(0, 0)$ evaluates to true with the expression $\overline{x}_1 \cdot \overline{x}_2$
- $f(0, 1)$ evaluates to true with the expression $\overline{x}_1\cdot x_2$
- $f(1, 0)$ should provide an output of zero, so that can be ignored
- $f(1, 1)$ evaluates to true with the expression $x_1 \cdot x_2$
ORing all of the above expression together, we get:
$$ f(x_1, x_2) = \overline{x}_1\overline{x}_2 + \overline{x}_1 x_2 + x_1x_2 $$
$$
\begin{multline}
= x_1x_2 \\
= x
\end{multline}
$$
# Logic Gates
![](./assets/logic-gates.jpeg)
# NOT Gate
A binary NOT gate has a single input, and inverts that input (output is not the input).
## Truth Table
| $x$ | $y$ |
| --- | --- |
| 0 | 1 |
| 1 | 0 |
## Mathematical Expression
A NOT operation is mathematically expressed using a bar:
$$ y = \bar{x} $$
# AND Gate
An AND gate will only output a 1 if *both* inputs are a one (input one *and* input two are enabled).
## Truth Table
| $x_1$ | $x_2$ | $y$ |
| ----- | ----- | --- |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
## Mathematical Expression
An AND operation is mathematically expressed using a times symbol, or with no symbol at all:
$$ y = x_1 \cdot x_2 = x_1x_2$$
# NAND Gate
A NAND gate outputs a 1 *unless* both inputs are enabled (input one *and* input two are *not* enabled).
## Truth Table
| $x_1$ | $x_2$ | $y$ |
| ----- | ----- | --- |
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
## Mathematical Expression
A NAND operation is mathematically expressed using a bar over an AND operation:
$$ y = \overline{x_1 \cdot x_2}$$
# OR Gate
An OR gate outputs a 1 if either or both inputs are enabled (if input one *or* input two is enabled).
## Truth Table
| $x_1$ | $x_2$ | $y$ |
| ----- | ----- | --- |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
## Mathematical Expression
A mathematical OR is notated with a $+$ symbol.
$$ y = x_1 + x_2 $$
# NOR Gate
A NOR gate outputs a one if neither gate is enabled.
## Truth Table
| $x_1$ | $x_2$ | $y_1$ |
| ----- | ----- | ----- |
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
## Mathematical Expression
A NOR operation is expressed using a bar over an OR operation.
$$ y = \overline{x_1 + x_2} $$
# XOR Gate
An XOR gate is on if one input is enabled, but *not* both (exclusively one or the other).
## Truth Table
| $x_1$ | $x_2$ | $y$ |
| ----- | ----- | --- |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
## Mathematical Expression
An XOR operation is expressed using a circle around an addition symbol:
$$ y = x_1 \oplus x_2 $$
## XNOR Gate
An XNOR gate is on if neither input is enabled, or both inputs are enabled.
## Truth Table
| $x_1$ | $x_2$ | $y$ |
| ----- | ----- | --- |
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
## Mathematical Expression
An XNOR operation is expressed using a bar over an XOR operation:
$$ y = \overline{x_1 \oplus x_2} $$

View File

@ -0,0 +1,56 @@
Any poduct that contains a logic circuit is classified as digital hardware.
- Moore's Law states that the number of a transistors on a chip doubles every two years
- The International Technology Roadmap for Semiconductors (ITRS) forecasts technology, including the number of transistors on a chip
- Multiple integrated circuits can be connected using a printed circuit board, or PCB.
- *Standard chips* conform to an agreed upon standard for functionality and physical configuration. They are usually less than 100 transistors in size, and provide basic building blocks for logic.
- These chips are combined to form a larger logic circuit
- They were popular until the 1980s
- As ICs improved, it became inefficient space-wise to have separate chips for each logical building block
- The functionality of these chips is fixed, and they do not change.
# Programmable Logic Devices
Programmable logic devices (PLDs) include a number of programmable switches that can configure the internal circuitry of a chip
- The most common type of PLD is a Field Programmable Gate Array (FPGA)
- FPGAs are widely available, but come with the drawback that they're limited in speed and performance
# Application Specific Integrated Circuits
Application Specific Integrated Circuits (ASICs) have higher maximum performance and transistor density compared to FPGAs, but the cost of production is very high.
- A logic circuit is made of connected logic gates
# Binary Numbers
In base 10, a value is expressed by an n-tuple with n digits
$$ D = d_{n-1}d_{n-2} \cdots d_1 d_0 $$
This represents the value
$$ V(D) = d_{n-1} * 10^{n-1} + d_{n - 2} * 10^{n-2} + \cdots + d_1 * 10^1 + d_0 * 10^0 $$
In a binary or base 2 number system, each digit can be a zero or one, called a *bit*.
$$ D = d_{n-1}d_{n-2} \cdots d_1 d_0 $$
To determine the integer value, a very similar formula can be used.
$$ V(B) = b_{n-1} * 2^{n-1} + b_{n-2} * 2^{n-2} \cdots b_{1} * 2^1 + b_0 * 2^0 $$This formula can be generalized as:
*For radix $r$*:
$$ k = k_{n-1} k_{n-2} \cdots k_1 k_0$$
- The base of a number is often notated in the format of $(n)_b$, EG a base 10 number might be $(14)_{10}$, and a binary number might be $(10)_2$.
- The *least significant bit* (LSB) is usually the right-most bit. The highest value bit, or the *most significant bit* (MSB).
- A nibble is 4 bits, and a byte is 8 bits
## Conversions
### Base 10 to Binary
Repeatedly divide by 2, and track the remainder.
As an example, the below table shows how one might convert from $(857)_{10}$ to base 2.
| Equation | Remainder | |
| --------------- | --------- | --- |
| $857 / 2 = 428$ | $1$ | |
| $428 / 2 = 214$ | $0$ | |
| $214 / 2 = 107$ | $0$ | |
| $107 / 2 = 53$ | $1$ | |
| $53 / 2 = 26$ | $1$ | |
| $26 / 2 = 13$ | $0$ | |
| $13 / 2 = 6$ | $1$ | |
| $6 / 2 = 3$ | $0$ | |
| $3 / 2 = 1$ | $1$ | |
| $1 / 2 = 0$ | $1$ | |
The final answer is $1101011001$. The least significant bit is the remainder of the first division operation, and the most significant bit is the remainder of the last operation.
# Definitions
- **Xtor** is an abbreviation for *transistor*
- **Moore's Law** states that the number of transistors on a chip doubles every two years.
- A tuple is a finite and ordered list of things

View File

@ -0,0 +1,37 @@
A Karnaugh map is an alternative to a truth table for representing a function in boolean algebra, and serve as a way to derive minimum cost circuits for a truth table.
![[karnaugh-maps.png]]
Given the above truth table, the columns are labelled with $x_1$, and the rows are labelled with $x_2$.
To find a minimal boolean expression with a Karnaugh map, we need to find the smallest number of product terms ($x_1$, $x_2$) that should produce a 1 for all instances where the cell in a table is $1$.
# Two Variable Maps
![[Pasted image 20250224104850.png]]
- Given the map described in the above image, the output is $1$ for the row where $x_2$ is equal to 1.
- Similarly, the output is $1$ for the column where $x_1$ is equal to zero.
- By ORing the condition where $x_1$ is zero ($\overline{x_1}$), and the condition where $x_2$ is one ($x_1$), we can find a minimal expression for the truth table.
# Three Variable Maps
![[Pasted image 20250224105753.png]]
A three variable Karnaugh map is constructed by placing 2 two-variable maps side by side. The values of $x_1$ and $x_2$ distinguish columns in the map, and the value of $x_3$ distinguishes rows in the map.
To convert a 3 variable Karnaugh map to a minimal boolean expression, start by looking for places in the map that contain 1s next to each other (by row, or by column).
![[Pasted image 20250224110124.png]]
From there, describe the pair of 1s using boolean algebra.
In the above example, the top pair of 1s is in the column where $x_3$ is equal to zero ($\overline{x_3}$), and $x_1$ is equal to $1$ ($x_1$). This describes a single term in the resulting equation ($x_1\overline{x_3}$).
![[Pasted image 20250224110632.png]]
> Similar logic can be employed using more than just a *pair* of ones.
# Four Variable Maps
![[Pasted image 20250224111117.png]]
![[Pasted image 20250224110819.png]]

View File

@ -0,0 +1,50 @@
- Output depends on input and past behavior
- Requires use of storage elements
# Latches
## SR Latch
SR stands for *Set*/*Reset*, and functions like so:
- When a signal comes into $S$, $Q_a$ is **set** on and stays on until a signal comes into $R$, at which point the output ($Q_a$) is **reset**, back to zero.
- $S$ and $R$ are interchangeable, it just impacts whether $Q_a$ or $Q_b$ is set/reset.
Truth table:
| $S$ | $R$ | $Q_a$ | $Q_b$ |
| --- | --- | ----- | ----- |
| 0 | 0 | 0/1 | 1/0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
![[Pasted image 20250303095542.png]]
## Gated Latch
A gated latch is similar to a basic latch, but the output only changes when $clk = 1$.
## D Latch
A D latch has two inputs, $clk$ and $data$. When $clk$ is high, $data$ is stored.
# Flip Flops
A latch, but the output only changes on one of the clock edges
- Can be a rising edge latch or a falling edge latch
## JK Flip Flop
Similar to an SR flip flop, a JK flip flop has set/reset inputs, but when *both* inputs are high, then the output is toggled.
## T Flip Flop
A T Flip Flip, or a toggle flip flop has two inputs:
- $clk$ - Clock input
- $T$ - Whenever $T$ goes from low to high, the output toggles its state
# Registers
## Shift Register
![[Pasted image 20250317101146.png]]
Above is a simple shift register.
## Parallel Shift Register
A parallel shift register has 4 inputs, 4 outputs, a serial input, and a shift/load input.
When the *load* input is high, the input is stored into the register. When the *shift* input is high, the registers are shifted and the serial input is read into the new space.
# Counters
## A 3-bit Up-counter
![[Pasted image 20250317102911.png]]
# Synchronous Sequential Circuits
- A synchronous circuit is clock driven, while an asynchronous circuit is not.

View File

@ -0,0 +1,135 @@
Modules are the building block through which Verilog is built.
Each module can be thought of as a black box with a series of inputs, and a series of outputs. Changing the input changes the outputs.
Module definitions are started with the `module` keyword, and closed with the `endmodule` keyword.
## Syntax
The general syntax of a module is as follows:
```verilog
// This line is referred to as the *module header*
module <name> ([port_list]);
// Contents of the module
endmodule
// The port list is optional
module <name>;
// Contents
endmodule
```
Below is an example of the structure of a half adder module:
```verilog
module half_adder(
input a,
input b,
output sum_bit,
output carry_bit
);
// ------- snip ------------
endmodule
```
## Ports
Ports are a set of signals that act as input and outputs for a particular module.
There are 3 kinds of ports:
- `input`: Input ports can only receive values from the outside. `input` ports cannot be written to.
- `output`: Output ports can be written to, but not read from.
- `inout`: Inout ports can send *and* receive values.
Ports can be declared in the port list, or in the module body. Ports declared in the port list can optionally omit their type and only declare a name, to be specified within the body of the module:
```verilog
module half_adder(
a,
b,
sum_bit,
carry_bit
);
input a;
input b;
output sum_bit;
output carry_bit;
// ----------- snip -----------
endmodule
```
The full type of a port can also be defined within the portlist:
```verilog
```verilog
module half_adder(
input wire a,
input wire b,
output wire sum_bit,
output wire carry_bit
);
input a;
input b;
output sum_bit;
output carry_bit;
// ----------- snip -----------
endmodule
```
### Port types
If no type is defined, ports are implicitly defined as *nets* of type `wire`.
> In verilog, the term *net* refers to network, and it refers to a connection that joins two or more devices together.
Ports can be a vector type:
```verilog
module test(a, b, c);
input [7:0] a;
input [7:0] b;
output [7:0] c;
// -------- snip ---------
endmodule
```
# Instantiation
Larger designs can be built by using multiple smaller modules.
Modules can be *instantiated* within other modules and ports, and these *instances* can be connected with other signals.
These port connections can be defined by an *ordered list*, or by *name*.
### By Ordered List
```verilog
module submodule (input x, y, z, output o);
// ------- snip -------
endmodule
module parent;
wire a, b, c;
wire o;
// Similar to C, the type of the module is first, followed by
// the name of the module instance.
submodule foo (a, b, c, o);
endmodule
```
### By Name
Ports can also be joined by explicitly defining the name.
Syntactically, this is done with a dot (`.`), followed by the port name defined by the design, followed by the signal name to connect, wrapped in parenthesis (`.x(a)`).
```verilog
module submodule (input x, y, z, output o);
// ------------snip-----------------
endmodule
module parent;
wire a, b, c;
wire o;
submodule foo (
.x(a),
.y(b),
.z(c),
.o(o)
);
```
Because association is done by name, the order of definition does not matter.
### Unconnected ports
Ports that are not connected to any wire by the parent module will have a value of high impedance, and is considered unknown/undefined.

View File

@ -0,0 +1,88 @@
There are two main categories of data types in Verilog. These categories differ in the underlying hardware structure they represent, and they differ in the way they are assigned and retain values.
# Nets
A *net* refers to a *network* of connections that join two or more devices together.
Nets connect different hardware entities and *do not store values*.
## Wire
A `wire` is the most commonly used type of net. When a port is declared in Verilog, it is implicitly given a type of `wire`.
It is illegal to re-declare a name already in use by a net:
```verilog
module foo;
wire abc;
wire a;
wire b;
wire c;
wire abc; // ILLEGAL: The wire `abc` is already defined
```
# Variables
A variable is a data storage element. They retain the last input given.
```verilog
```verilog
module testbench;
integer int_a; // Integer variable
real real_b; // Real variable
time time_c; // Time variable
initial begin
int_a = 32'hfacd_1b34; // Assign an integer value
real_b = 0.1234567; // Assign a floating point value
#20; // Advance simulation time by 20 units
time_c = $time; // Assign current simulation time
// Now print all variables using $display system task
$display ("int_a = 0x%0h", int_a);
$display ("real_b = %0.5f", real_b);
$display ("time_c = %0t", time_c);
end
endmodule
```
```
## Registers
A `reg` can be used to model hardware registers because it stores a value until the next assignment.
### Integer
A Verilog `integer` type is a 32 bit wide storage value. It does not *need* to store integers, it can be used for other purposes.
```verilog
integer count;
```
### Time
A `time` variable is unsigned, 64 bits wide, and can be used to store time duration for debugging purposes. `realtime` is similar, but time is stored as a floating bit value.
## Real
The `real` type denotes a floating point value.
## Strings
Strings are stored in a vector of `reg`s. The width of the `reg` *must* be large enough to hold the string.
Each character in a string represents a one byte ASCII value. If the size of the variable is smaller than the string, the string is truncated.
# Scalar and Vector Types
By default, declarations of a net or `reg` value is 1 bit wide, referred to as a *scalar* value (only a single value).
```verilog
// Scalar declaration
wire foo;
// Vector declaration, with 8 bits.
wire [7:0] bar;
```
Individual bits in a vector can be accessed using array operators, eg `[i]`.
```verilog
reg [7:0] foo;
// Write to bit 0
foo [0] = 1;
```
## Part selects
A range of contiguous bits from within another vector can be selected, referred to as a part select. This range can then be treated as a vector.
```verilog
reg [31:0] foo;
// Select bits 23 through 16 (inclusive), and assign the 8 bit hex value `0xff` to them.
foo [23:16] = 8'hff;
```

View File

@ -0,0 +1,62 @@
## Boolean Engineering
- Truth tables
- Only practical for small circuits
- Schematic capture
- Using CAD to place logic gates on a virtual canvas
- Facilitates *hierarchical design*
- Good for larger circuits
- Don't scale well for very large circuits
- Hardware Description Languages
- Enables hierarchical design
- Standardized by IEEE
- Design is more portable
- Usable in combination with schematic design
# Verilog
- Originally developed by Gateway Design Automation
- Put in public domain in 1990
- Standardized in 1995
- Originally intended for simulation of logic networks, later adapted to synthesis
- Structural Verilog describes how things are laid out at a logic level.
## Structural Verilog
Structural Verilog describes things at a logic level.
- The use of logic gates and continuous assignment are markers of structural Verilog.
```verilog
// V---V---v--v-----portlist (not ordered)
module example1(x1, x2, s, f);
// Defining the types of the various ports
input x1, x2, s;
output f;
// The first argument is the output value.
// In this example, `k`, `g`, `h`, `f` are implicitly declared.
// They could also be declared manually with the syntax `wire foo`, alongside the `input` and `output` declarations
not(k, s); // You can also NOT a variable using a tilde, eg `~s`
and(g, k, x1);
and(h, s, x2);
or(f, g, h);
// You can also do this
assign f = (~s & x1) | (s & x2);
endmodule
```
## Behavioral Verilog
Behavioral Verilog describes broader behavior, at a higher level
- The use of `reg`s, time delays, arithmetic expressions, procedural assignment, and other control flow constructs are markers of behavioral Verilog.
```verilog
// V---V---v--v-----portlist (not ordered)
module example1(x1, x2, s, f);
// Defining the types of the various ports
input x1, x2, s;
output f;
always @(a, b)
// always @(....) says "do this stuff whenever any of the values inside of @(...) change"
{s1, s0} = a + b;
endmodule
```
## Testbench Layout
- Define UUT module
- Initialize Inputs
- Wait
- Test every possible combination of inputs and validate that the outputs are correct
- Debug output can be displayed with `$display("Hello world");`

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -0,0 +1,42 @@
<https://www.vox.com/the-big-idea/2018/3/5/17080470/addiction-opioids-moral-blame-choices-medication-crutches-philosophy>
| Claim | Elaboration | Link to source |
| ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Addiction treatment options aren't embraced by the public because treating addiction is seen as indulging in weakness rather than "curing" addiction | - The data shows that we could save many lives by expanding [medication-assisted treatments](https://www.vox.com/science-and-health/2017/7/20/15937896/medication-assisted-treatment-methadone-buprenorphine-naltrexone) and adopting harm reduction policies like [needle exchange programs](https://www.cdc.gov/policy/hst/hi5/cleansyringes/index.html).<br>-Methadone and buprenorphine, the most effective medication-assisted treatments, are [“crutches,”](https://www.nbcnewyork.com/news/local/Methadone-Judge-Rule-Father-Blame-Lepolszki-Son-Overdose-Heroin-Addict-Ruling-I-Team-Investigation-273213211.html) in the words of felony treatment court judge Frank Gulotta Jr.; they are [“just substituting one opioid for another,”](https://www.vox.com/policy-and-politics/2017/5/11/15613258/tom-price-opioid-epidemic) according to former Health and Human Services Secretary Tom Price<br>- | [link](https://www.vox.com/the-big-idea/2018/3/5/17080470/addiction-opioids-moral-blame-choices-medication-crutches-philosophy#:~:text=The%20data%20shows,than%20%E2%80%9Ccuring%E2%80%9D%20i) |
| - people view addiction as a moral failure | - Most of us have been trained to use more forgiving language when talking about addiction. We call it a disease. We say that people with addiction should be helped, not blamed. But deep down, many of us still have trouble avoiding the thought that they could stop using if they just tried harder. | |
- People view addiction as a moral failure
- Addiction treatment options aren't embraced by the public because treating addiction is seen as indulging in weakness rather than "curing" addiction
- "Most of us have been trained to use more forgiving language when talking about addiction. We call it a disease. We say that people with addiction should be helped, not blamed. But deep down, many of us still have trouble avoiding the thought that they could stop using if they just tried harder. "
- "Theres a part of us that cant help but see addiction as a symptom of weak character and bad judgment."
- The view of addiction as a moral failure is causing real damage to the world
- "The stigma against addiction is “the single biggest reason America is failing in its response to the opioid epidemic,” [Voxs German Lopez concluded](https://www.vox.com/science-and-health/2017/12/18/16635910/opioid-epidemic-lessons) after a year of reporting on the crisis""
- "Lives depend on where we come down. The stigma against addiction owes its stubborn tenacity to a specific, and flawed, philosophical view of the mind, a misconception so seductive that it ensnared Socrates in the fifth century BC."
- People view addiction as a moral failure because of the subconscious societal belief that our actions always reflect our beliefs and values
- "We tend to view addiction as a moral failure because we are in the grip of a simple but misleading answer to one of the oldest questions of philosophy: Do people always do what they think is best? In other words, do our actions always reflect our beliefs and values? When someone with addiction chooses to take drugs, does this show us what she truly cares about — or might something more complicated be going on?"
- Plato describes acting against one's best judgement as "Akrasia"
- "At one point their discussion turns to the topic of what the Greeks called akrasia: acting against ones best judgment."
- "Akrasia is a fancy name for an all-too-common experience. I know I should go to the gym, but I watch Netflix instead. You know youll enjoy dinner more if you stop eating the bottomless chips, but you keep munching nevertheless."
- This makes the article more relatable
- Socrates felt that this didn't make sense, arguing that actions always reveal true beliefs
- "Socrates clearly never went to a restaurant with unlimited chips. But he has a point. To figure out what a persons true priorities are, we usually look to the choices they make. (“Actions speak louder than words.”) When a person binges on TV, munches chips, or gets high despite the consequences, Socrates would infer that they must care more about indulging now than about avoiding those consequences — whatever they may _say_ to the contrary"
- He argues that people simply have bad judgement, and that they aren't acting against their better judgement.
- He also argues that bad decisions indicate bad priorities.
- The idea that people need to hit "rock bottom" before they can hit true recovery reinforces that idea. It means that a person needs to truly understand the consequences of their "selfishness".
- Socratic rationale for punishing drug possession with jail is another example of this idea.
- Addiction intensifies the disconnect between judgement and action
- "Heres the testimony of one person with addiction, reported in Maia Szalavitzs book [_Unbroken Brain_](https://books.google.com/books?id=4yJ3CgAAQBAJ&lpg=PP1&pg=PA114#v=onepage&q&f=false): “I can remember many, many times driving down to the projects telling myself, You dont want to do this! You dont want to do this! But Id do it anyway.”
- Ethos
- The "self" is not a single unitary thing
- The concept of a "dual process" mind comes from Nobel laureate Daniel Kahneman, who divides the mind into a part that makes judgements quickly, intuitively, and unconsciously ("System 1") and a part that thinks more slowly, rationally, and consiously ("System 2").
- Neuroscientist Kent Berridge notes a system in our brain he calls the "wanting system", which regulates our cravings for things like food, sex, and drugs, using signals based in the neutrotransmitter dopamine
- "More pertinent for our purposes is research on what [University of Michigan neuroscientist Kent Berridge](http://www-personal.umich.edu/~berridge/) calls the “wanting system,” which regulates our cravings for things like food, sex, and drugs using signals based in the neurotransmitter dopamine. The wanting system has powerful control over behavior, and its cravings are insensitive to long-term consequences."
- He notes that drugs hijack that system causing cravings that are far stronger than humans experience.
- The boundaries of where "the self" is in the human brain aren't clearly defined, processes in the brain mesh together tightly, so there's no clean boundary.
- From a philosophical sense, there are many different ways to approach the concept of the self.
- Modern philosophers reject the socratic view on behavior, instead saying that the self is instead based on judgements about the kind of person one wants to be, and the life they want to lead.
- Addiction lies somewhere between choice and compulsion. Addiction doesn't make the choice for you, but it makes you gravitate towards a particular options.
- Addiction is not a moral failure because it's still the same person, they just face cravings that are far harder to resist.
- Treatments like methadone and buprenorphine can help with addiction by reducing the power of those cravings.
-

View File

@ -0,0 +1,16 @@
- What conversations are meaningful?
- What conversations are intentionally emotionally charged?
- Fake news is rising
- More people get news from social media
- The attention economy is extremely effective
- Social media is intentionally habit forming
- Hate speech is poorly moderated, if at all
- Fake news is meant to drive emotion
- Manipulating emotions through social media (fake news) should raise
- Emotional analytics *can* benefit the user
- Very small (1/250 sec) exposure to content still has an impact
- News literacy curriculum rarely addresses emotional news literacy
- Mindfulness is good
- System 1 and 2 thinking
- Schools should address larger societal issues in discussion surrounding news literacy
-

View File

@ -0,0 +1,130 @@
- Chose something to genuinely research, because I don't know, rather than a topic I'm passionate about.
- Write out my opinion on the topic *before* starting formal research
- An issue or topic I've always wanted to learn more about is the political system
- An issue or topic I have a personal connection to is philosophy, technology
- A conversation or debate I spend a lot of time thinking about is the art of improvement
- Something I think needs to change in society is the existence of self propagating norms
- An issue that affects my community negatively is political discourse.
- Something I wish more people cared about was fixing the world
- I worry that I see safe spaces being used in a negative way
# Primary research
- Interview prominent public figures or heads of clubs that have public stated feelings about safe spaces, asking about why they did it, how they did it, what impact they feel it's had.
- https://www.usu.edu/safe-at-usu/
# Secondary Research
- https://qz.com/398723/slavoj-zizek-thinks-political-correctness-is-exactly-what-perpetuates-prejudice-and-racism
- https://en.wikipedia.org/wiki/Jonathan_Haidt
- https://www.insidehighered.com/node/7407
- https://www.vox.com/2016/7/5/11949258/safe-spaces-explained
- https://www.dochaspsych.com/blog-defining-your-safe-space-what-does-safe-space-mean/
- https://dictionary.cambridge.org/us/dictionary/english/safe-space
- https://www.merriam-webster.com/dictionary/safe%20space
- https://chicagomaroon.com/2016/news/reg-honors-chicago-blood-bank-founder/
# The Complex Case of Fear and Safe Space
## Introduction
- The Chicago School board considered a proposal for a magnet school intended to be a safe space for LGBT individuals
- The only reliable way to prevent disrespectful treatment is through separation
- The rational commonly used for safe spaces makes it difficult for an educator to effectively respond to actual harassment
- The need for safe space for students who experience social exclusion and harassment is the result of a political economy that was *intended to create safe space for others*. (2) Students *who are able* to articulate a need for safe space often dont need the kind of space separation offers; *students who need (if only temporarily) separation, often are unable to say so.* (3) Safe space does not always or only function to defuse fear and establish safety for students; safe space may also function to create emotional relief for adults
- Safe spaces translate feelings of fear into separation, creating a divide
- The desire for safe spaces comes from the inherent idea that being hurt is an uncomfortable emotion, and fearing being hurt is an uncomfortable emotion. These are generally perceived to impede students' abilities to learn and grow. As such, safety is the antidote for fear, but this safety creates separation
- The creation of safe spaces relies on the assumption that the creators of safe spaces are able to effectively anticipate the fears of students across cultural, racial, and social divides.
- In this context, fear is fear of harm and danger. By operating on the assumption that more harm will come, this establishes a power relationship that's rooted in *past histories*, where the disadvantaged group is harmed.
- By implementing safe spaces, you create a dynamic where the response to harassment (assumed or real) is fear.
- If safe spaces create a dynamic of fear, the effect of safe spaces is less than desirable, and it doesn't move towards the intended goal of making students feel safer, rather it moves them away.
## Where do calls for safe spaces come from?
- Many students do not want to be separated from their peers
- Many students who have the luxury of asking for a safe space don't truly need one
- Calls for safe spaces have typically come from parents or educators
- Many of the dynamics that enable harassment are invisible to those who enjoy privilege, social or otherwise
- A call for a safe space indicates acknowledgement that a student feels uncomfortable in the face of other peers' behavior. The call for a safe space as a solution places that uncomfortable feeling into the box of "fear"
- As long as we assume that emotions are instinctual reactions of a person to external events (even if triggered by cognitive judgment) that prompt action, the only available analysis of emotion relies on an outmoded faculty psychology. This has the troubling effect of divorcing logic and affect in action
## Fear
- Emotions can be viewed through the lens of a cognitive device that can help create and form habits.
### Fear as an evolutionary tool
- As Dewey helps us to understand, *it is not that fear as emotion causes us to move away from persons perceived as somehow dangerous; rather, affect becomes fear by the interpreted action of separation.*
- Therefore, neurologically, *fear stems from habit*, not the other way around
- Affect arises unbidden in a reaction to a problematic circumstance in which habits of adjustment are inadequate
- Basically: You feel fear when you are unable to resolve the perceived issue through typical means
- This emotional response doesn't necessarily need to be fear, leading to separation
- This emotional response can be redirected into a search for understanding, creating a productive output (Dewey)
- The author disagrees with the above sentiment, arguing that fear and anger can be intelligent, productive, emotions.
### Fear as a Sociocultural Practice
- According to Ahmed, objects and rhetoric can become "sticky, or saturated with emotion"
- The author then uses this to reinforce the idea that by propagating "past feelings" forward by proactively acting against them, we continue to let these ideas hold meaning, and power.
- The author refers to this propagation of fear as "habituated fear"
- This fear works in two ways, the discriminated group fears further discrimination, and the dominant group fears losing control, change, and that which it does not understand. "The more we don't know \[understand] what or who it is we fear, *the more the world becomes fearsome*"
- You can change the narrative around an idea, thus changing the emotions associated with it
- *By designating fears \[at a societal level], we divide the world into safe spaces and unsafe spaces \[for different groups of people]*
- By creating a designated "zone" of safety, you're allowing fear to restrict the space in which "targeted groups" exist in, which in turn allows "attacking groups" to grow and occupy more space
- Without the ability to attach fear to certain objects, the "world itself" becomes fearsome. Humans attach fear to certain objects, thus enabling them to view the world from a simpler perspective of "safe", and "unsafe
- Those in the discriminated group are often led to mask discomfort because societally, especially in "dominant groups", showing fear is seen as a sign of weakness. They are not able to avoid interacting with the dominant group without facing significant socioeconomic consequences.
- The effect of safe spaces is to restrict the movement of parties *least likely* to cause trouble. This includes examples like restricting females to dorms to keep them safe from roving males, to the creation of a LGBT school for the protection of those students
- The creation of safe spaces places people into categories, categories built around fear. This is effectively actively *investing* in the set of societal norms, creating further discrimination and harm.
### Understanding emotions
- Emotions come to be with reference to relational, socially constructed, context oriented experience
- Separation is one way in which responding to an event results in the event being recorded as "something to be afraid of" in the amygdala
- In may ways, safe spaces enable the habituation of fear in this manner
- Fear is an emotion that's more easily used to hurt or control others, by making targeted groups afraid, then you give the dominant group control over them
- *Safe spaces are a simple solution for an inherently complicated problem*. They limit rich deconstruction and interpretation of a situation, leading to limited ability to act on a fitting response.
- When fear becomes habitually associated with an object, it becomes resistant to rational control
- **How does fear benefit the fearful one?**
- As people put up defenses from each other, we grow farther apart, and it becomes easier to view a group of people as "the other"
- These groups tend to
- Harassment can be more effectively combatted by re-interpreting the treatment they receive.
# Dilemmas of political correctness
<https://ora.ox.ac.uk/objects/uuid:40d31aed-1296-4dc6-b511-e7135b83ee8a>
- Discussions around political correctness can often be simplified down into such:
- Proponents see nothing to fear in erecting norms that inhibit expression on one side, and opponents see this as a misguided effort to silence political enemies.
- The author defines political correctness as "the attempt to establish norms of speech (or sometimes behavior) that are thought to protect vulnerable, marginalized, or historically victimized groups, with the goal of shaping public discourse with the goal of avoiding insult or outrage, a lowered sense of self esteem, or otherwise offending sensibilities." By dubbing something politically incorrect, it implies that there is something worrisome or objectionable at work
- The author places strong emphasis on the distinction between an idea being morally right or wrong, and being politically correct. He provides the examples that:
- Criticizing someone for referring to an administrative assistant as a "secretary" constitutes political correctness, but advocating for higher wages is not
- Insisting on trigger warnings or deleting offending material is a form of political correctness, but arguing for rape prevention security measures is not.
- In the inverse, it's not politically incorrect to make a donation to fight gay marriage, but it is politically incorrect to speak publicly against gay marriage
- Political correctness can be viewed as something to benefit marginalized groups, or as a societal movement towards restraint on public expression
- Given the idea that political correctness is a societal movement, it culminates in a form of self censorship where there are consequences for those who violate communal norms
- One practical example of this is when German politician Phillipp Jenninger fell into disgrace after a speech that engaged rhetorically with the perspective of Nazi Germany, even though the speech was devoid of Nazi sympathy or anti-semitism. The same speech was given in a jewish synagogue by a jewish leader, and it received no negative response, demonstrating that the worry was the *signal* sent by the speech being given by a german politician
- Another practical example is when the mayor of Washington DC was forced to resign after making use of the word "niggardly"
- The N word is derived from latin roots (*niger* - dark) and developed from french and spanish roots in the mid 18th century, whereas niggardly is derived from the old english word *nigon*, meaning stingy. The modern etymological root is niggle, meaning giving excessive attention to minor details
- Self censorship is an ultimate victory for those seeking to eliminate a form of censorship
- Political correctness stems from concern for the victimized groups, and is typically seen on the left end of the political spectrum, but it can also be seen on the right
- Examples includes attempts to delegitimize opposition to war by suggesting dissenters are insulting "the brave men and women who fight on our behalf"
- Those opposed to political correctness often dismiss it as a trivial insistence to redefine words, or an attempt to silence opposition.
- It's easy to dismiss some cases, but it's harder to dismiss others (eg, the taboo on the N word or certain taboos around racial science, or the underlying worries around such ideas).
- There are perfectly valid motivations for attempting to cultivate and enforce political norms, eg a record of violence and injustice directed towards African Americans being promoted through superficially respectable means
- On a broader level, enlightened moral thinking has led society to converge on a *default norm against advancing ideas associated with oppression or marginalization*
- The author agrees with the idea that political correctness has made “the casual infliction of humiliation...much less socially acceptable than it was,” and even that “encouraging students to be politically correct has made our country a far better place.”
- The author argues that political correctness has brought huge benefits, but there are limits of being politically correct
- Where those limits should be located is subject to disagreement. On one end of the spectrum are minor conventions and taboos, at the other end are explicit laws prohibiting forms of expression (hate speech)
- You can acknowledge the value of political correctness without endorsing all uses of political correctness as a barrier in public discourse
- Potential drawbacks of political correctness are especially relevant when you note how individual applications of political correctness are applied at an extreme level.
- Extreme political correctness can often revolve around morally superficial applications of reasonable norms, taken to an extreme
- Political correctness concerns offense and sensibilities, not the objective interests of everyone involved.
- There's an increasing tendency to reject government terms like "illegal alien" in favor of "undocumented immigrant" with the implication that refusing to do so implies reactionary or hateful views.
- One example of political correctness backfiring is when "sensitive" material is removed from coursework to avoid upsetting students.
- This is shown with affirmative action causing problems and not having the intended affect
- We want to avoid "being gored on either horn"
- Enforcing political correctness can lead to widespread "preference falsification", in which what people believe in private is detached from what is spoken in public
- "preference falsification" can lead to polarization.
- In the example of social justice, many attribute poor social outcomes to factors *external* to the person, because then you can avoid directly blaming the person, an inherently uncomfortable discussion. Regardless of how correct the end result is, this tendency is still present.
- In promoting norms intended to benefit marginalized groups, we both help and hurt them.
# Safe spaces, explained
- The author introduces the paper by showcasing some of the negative ways in which safe spaces are viewed and understood.
- The author then explains that safe spaces are a place where marginalized groups can feel welcome and accepted
- Distinction is made between psychological safety and physical safety
- The first usages of the term "safe space" came from the 1960s, where same sex relationships were outlawed, so a safe space was a place where people were able to practice same sex relationships without being noticed by the cops.
- Examples of situations where the classical term "safe space" still applies exist in areas where non-heteronormative behavior is outlawed or socially shamed.
- The same idea applies to other groups, like women, and people of color.
- One advocate for safe spaces states that they've found that being able to surround themselves with people of the same marginalized group makes it easier to be themselves
- Some safe spaces are created explicitly, whereas others are created organically
- Safe spaces create a place for marginalized groups to truly relax. The author makes the claim that stress caused by discrimination creates poor health outcomes among groups who experience systemic discrimination.
- Opponents of safe spaces caution that safe spaces limit social change by preventing the "messy work" of fighting for social change from occurring.
- Debate and conflict isn't always what people want or feel they need.
- There's a fear that social justice issues are nearly impossible to effectively resolve
- Groupthink is a real issue that can occur within safe spaces.
- People in marginalized groups have to face the feeling that society wasn't really designed for them, whereas people in dominant groups don't face that experience.
# How Safe Spaces Contribute to Mental Health
- The term safe space is broadly used to describe designated areas or communities

View File

@ -0,0 +1,15 @@
The author grew up in between American and Mexican cultures. In school, she got punished for speaking Spanish at recess, and in college, she had to attend classes that were taught on how to speak without an accent.
She proposes the idea that languages are living. They constantly evolve, and different dialects can form as a means of expression or through localization. Languages can mix and merge to form new dialects that contain ideas from both.
The author then goes on to explain that languages are often used as a means of discrimination, and segregation. However, the inverse is also true. Discriminated groups will often form a new dialect or culture as a result of that discrimination.
- The idea was proposed that languages can form in a way that's predominantly a male discourse.
- Languages are living, and dialects form as a means of expression.
- Languages mix and merge.
- Discrimination and segregation occur because of language, and vice versa.
- The language someone speaks is a large part of their identity.
- Art created with a culture specific dialect can hold immense significance for members of that culture, and can be a means of sharing that culture.
- The culture you exist in becomes internalized in your identity.
- Excluding groups from a culture can lead to new cultures forming.

View File

@ -0,0 +1,3 @@
- First sentence should have author, article name, and main claim the article makes
- Summary should be ordered in the same way the ideas in the article are
- Use signal phrases ("argues", "makes the claim")

View File

@ -0,0 +1,5 @@
- Writing is distinct from grammar and rhetoric, and most writing classes don't teach writing, they instead focus on grammar and rhetoric.
- Core curriculums ensure essentials, but limit depth and advancement of thinking
- Drilling students on grammar does not improve writing ability, students should instead be taught how to use grammar effectively
- I thought the writing was meandering, rambly, and overly abstract. They never provide a clear definition of what good writing entails

View File

@ -0,0 +1,18 @@
- Arguing is an essential part of what it means to be human
- Humans are not naturally adept at arguments
- Our beliefs guide and determine our behavior
- Others care how we behave
- If beliefs lead to behavior, then controlling beliefs means controlling behaviors
- Argumentative skills are self defensive
- Diverting attention away from reasons makes those reasons easier to accept
- Making opponents of a belief "The Enemy" is another way to make a belief easier to accept
- Manipulation of beliefs can generally be categorized as diverting manipulation and distorting manipulation
- Everyone aims to be in possession of the truth
- Knowing why you believe a certain way is important, perhaps more important than the beliefs themselves.
- Cognitive success is being correct, cognitive command is understanding why
- Cognitive command doesn't necessarily guarantee correctness, but it enables one to rationally correct themselves
- Pushback helps develop more complete understanding
- When you only interact with people that agree with you, your beliefs become more extreme.
- Deliberative democracy is healthy
- Democracy relies on the ability to undo change, ala "we make changes and learn from them as we approach the ideal"
- Everyone believes that they haven't been duped.

View File

@ -0,0 +1,27 @@
# Aristotle
Aristotle claimed:
- Humans are naturally *political*.
- Humans naturally seek to *know*.
He used the term *political* to describe *humanity's dependency and tendency towards social interaction*.
# Society
- Humans need to be needed by each other.
- Interdependence introduces complexity in society.
- A mark of civility is the objection to things that harm others.
- People often fail to recognize when they're being exploited in relationships.
- We rely on others to share and accumulate data
# Arguments
- Humans don't like being wrong.
- Behavior is frequently determined by an individual's beliefs.
- People naturally object to info they believe is wrong, in the same way that people naturally object to things that harm others.
- **An argument is a rational response to a disagreement**, through showing others *why* they should adopt your beliefs.
- From an argument, you want others to rationally adopt your beliefs.
- Humans are inherently uncomfortable with disagreement.
- You can audit a personal belief while still holding it, and regular auditing of personal beliefs is healthy.
- Non-hostile arguments are a good way to audit those beliefs, and as such are healthy.
# Definitions
| Phrase | Definition |
| ------------ | --------------------------------------- |
| Epistemology | The philosophical analysis of knowledge |

View File

@ -1,31 +0,0 @@
# Thesis
The school should support food trucks during lunch.
# Problem
Many students want better lunch options (look at the ala cart line, interview students), and the school can always use more funding. If the school encourages food trucks to park in the bus parking area during lunch (possibly for a fee or % of income), than it benefits the school because they gain profit, it benefits the students because they get more food options
TODO: figure out what payment system the school uses, and whether or not they could offer support to food trucks
TODO: maybe bring food on presentation day for them?
## Pros
- students get better lunch options
- they can get back to school earlier (help with tardies after lunch)
- school fundraisers could use the food trucks (like w/ noodles and co)
- school can get money from the thing
- supports local small businesses
- encourage students to walk around outside
## Cost
## Advertising
# Feasibility
- It is legally defensible to restrict the sale of competitive foods *on campus*
- *States* can restrict the sale of competitive foods, Utah appears to restrict them based solely off of nutritional value
-
# Links
https://www.cdc.gov/healthyschools/mih/pdf/approach5.pdf
https://www.govinfo.gov/content/pkg/PLAW-111publ296/pdf/PLAW-111publ296.pdf
https://statepolicies.nasbe.org/health/categories/nutrition-environment-and-services/competitive-foods-es/utah
https://schools.utah.gov/file/ee7be5e9-2d64-45a4-9a53-fa215fff07df
https://gis.cachecounty.org/Websites/Parcel%20and%20Zoning%20Viewer/

View File

@ -1,85 +0,0 @@
## What is art?
**Art**: the expression or application of human creative skill.
art must:
- be made with the intent to convey emotion
- should "satisfy the senses"
- be made with intent
- have attention to feeling and emotion
art may:
- be a relay of experience or emotion from one person to another
## Medium
A particular material, along with an accompanying technique (plural: media). Example include:
- Acrylic, enamel, gesso, glaze, ink, oil
## History
1. The branch of knowledge dealing with past events
## How do you look at art?
Purposes and functions of art include:
- Communicating information:
- In non-literate societies, art was used to teach.
- Today, film and television are used to disseminate information.
- Spirituality and Religion
- All of the world's major religions have used art to inspire and instruct the faithful
- Personal and cultural expression
- Social and political ends
- Artists have criticized or influenced values or public opinion
- Often it is clear and direct
- Other times, however, it is less obvious
- Monarchs who commissioned projects to symbolize their strength and power
Generally, art can be broken down into two parts, *form*, and *content*.
- Form relates to the "formal" aspects of art, composition or medium.
- Content relates to the subject. What's being portrayed, how are they portraying it?
- The distinction should be made between fact and opinion/guessing.
Parts of form:
1. Line and Shape
- Lines define space and may create an outline or contour, as style called "linear"
- They can be *visible* or *implied*, and may be a part of composition
- It may be 2 dimensional, 3 dimensional, suggested, or implied.
- *Wherever there is an edge
2. Color
- Hue: The name of the color (red, blue, yellow)
- Saturation: The quality or vibrancy of those values
- Value: The addition of white, black, or grey to the value
- Tint: pure hue + white
- Tone: pure hue + grey
- Shade: pure hue + black
3. Texture
- Texture is an element of art pertaining to the surface quality or "feel" of the work of art
- Texture can be described as smooth, rough, soft, etc. Some textures are real, and others are simulated
- Textures that can be *felt* are ones that fingers can actually touch.
4. Space and Mass
- Space references to what contains objects: may be 2D or 3D.
- Mass refers to the effect and degree of the bulk, density, and weight of matter in space.
- In architecture or sculpture, it is the area occupied by a form.
- Perspective: Foreshortening is a way of representing an object so that it conveys the illusion of depth; an object appears to be thrust forward or backward in space.
5. Composition
- How are items arranged or organized in art
- Symmetrical, asymmetrical
- Static or dynamic
- Picture space is comprised of foreground, middle ground, and background.
6. Scale
- As an art history term, scale refers to the size of an object or object represented
- Size of things, conveyed or literal
Parts of style:
- Cultural style
- Societies develop their own beliefs and style of material forms
- Artists are a product of their culture
- Period style
- Style changes over time
- Art changes because of economic and political changes
- Regional style
- Geography leads to diverse styles
- Personal style
- Individual artists often have distinct styles
Two basic forms of style:
- Representational: Seeks to create recognizable subject matter (this is a picture of a dog)
- Abstract: Seeks to capture the essence of a form, not the literal representation (this picture captures the feeling of a dog)
| Phrase | Definition |
| ---- | ---- |
| | |

View File

@ -1,37 +0,0 @@
| Piece | Place | Artist | Medium | Stuff |
| ------------------------------------------------ | ----------------------------- | ------------------------------------ | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Treasury Of Atreus | Ancient Greece: Helladic | Unknown | Limestone | Largest dome for over 1000 years<br>Largest monolithic lintel<br>Ashlar masonry and cyclopic masonry<br>Thought to be Atreus, he abdicated (possibly a tomb)<br>post and lintel and corbelled arch<br> |
| Snake Goddess | Ancient Greece: Minoan | Unknown | Faience | Hierarchy of Scale; Exposed breasts - power<br>victory pose<br>rosettes<br>sideways dress - otherworldly<br>We don't know much about this work |
| Bull-leaping, from the palace at Knossos | Ancient Greece: Minoan | Unknown | Fresco | Different people with different colors<br>Elongation of bull shows motion<br>Aquatic pattern on border<br>Connection to sea |
| Doryphoros (Spear Bearer) or *Canon* | Classical Greece: Classical | Polykleitos | Marble copy after bronze original | Called Canon because it's the standard of beauty for sculptures<br>Used golden ratio<br>Polykleitos was in the cult of pythagoreans<br>Contraposto - counter posture<br>Well preserved because of Pompeii<br> |
| Dying Gaul | Classical Greece: Hellenistic | Epigonos | Marble copy after bronze original | Representational hair<br>Objects on ground give sense of place<br>Shows blood and sweat<br>Doesn't portray a greek man (less jacked, less hot), shows a frenchman<br>Choker shows he's a gaul<br>Defeat: Broken sword, no attempt to call for help (horn), sitting on shield |
| Aphrodite (Venus de Milo) | Classical Greece: Hellenstic | Alexandros of Antioch-on-the-Meander | Marble | Individualized<br>Lot of detail compared to aphrodite of knidos<br>Dry drapery<br>Contrasting textures<br>Contraposto<br>Has musculature and feminine form<br>More intimate, sensual |
| Nike alighting on a warship (Nike of Samothrace) | Classical Greece: Hellenistic | Unknown | Marble | Rhodes probably had a successful naval victory<br>Where Nike got it's logo<br>Wet drapery, would have been in fountain<br>lot of contrasting texture<br>Dynamic<br> |
| Pont-du-Gard | Rome: Empire | Unknown | Shelly Limestone | Arches create space<br>Aquaduct helped city<br>columns aligned vertically<br>Ashlar Masonry<br>Used as major bridge<br>Use of Roman arch |
| Portrait of Augustus as General | Rome: Empire | Unknown | Marble Copy, Bronze Original | Three powers (ishtar gate):<br>- Curass - Military<br>- Toga - Wealth and political power<br>- Eros - Supernatural power<br>Harkening pose: asking for cooperation, contraposto<br>Idealized proportions<br> |
| The Pantheon | Roman: Empire | Patron: Hadrean | Concrete | First pantheon built out of wood, burned down<br>Rebuilt out of concrete<br>Originally built on a hill, now sunk by detrius of time<br>Monolithic columns from egypt in portico(front porch)<br>Had rosettes in ceiling squares<br>Biggest dome in the world<br>Squares and circles everywhere |
| Arch of Titus | Rome: Empire | Patron: Titus | Concrete faced with marble | Commemorates when Rome defeats Jerusalem<br>Triumphal Arch <br>Depicts jewish temple being raided, money used to fund colosseum<br>Original historian was jewish (Josephus) |
| Portrait of a Husband and Wife | Rome: Empire | Unknown | Fresco | His skin is darker<br>Preserved because of Pompeii<br>She's holding beeswax tablet and stylus<br>They're flexing literacy<br>Literacy was only for the rich<br> |
| | | | | |
| Term | Definition |
| -------------------------- | ---------------------------------------------------------------------------------------------------- |
| Faience | Metal Glaze, Colder |
| Verism | Exaggerated age, wrinkles. Counterpart to hellenism but with emphasis on age instead of muscles |
| Chryselephantine | Ivory veneer with gold |
| Archaizing | Make something look older in content and style - Fonseca Bust |
| Harkening Pose | Asking for cooperatinon |
| Patron | Person that paid for it |
| Incrustacean | Cut rock in half and flip to show vein - Pantheon |
| Portico | Fancy front porch - Pantheon |
| Trumphal Arch | Winning army walks through on return home |
| Contraposto | The Italian word for counter posture, natural stance, more weight on one foot, body makes an S shape |
| Ungrounded | No historical record |
| Doric | Masculine, beefy, the simplest, oldest style |
| Ionic | Feminine, slender, medium old |
| Corinthian | Fancy top, planty shape around the base of the top, latest style |
| Corbelled Arch | Rocks that go in gradually, like two wedges |
| Post and Lintel | Two posts and a lintel across the top |
| Roman arch (with keystone) | Normal vault |
| Groin vault | 4 way intersection |
| | |

View File

@ -1,9 +1,10 @@
| Term | Definition |
| ---- | ---- |
| Consistent | The system of equations has at least one solution |
| Inconsistent | Parallel lines, no solution |
| Independent | The lines only cross at one point. |
| Dependant | The lines are identical, and there are infinitely many solutions. Both equations represent the same line when plotted. |
| Term | Definition |
| ------------ | ---------------------------------------------------------------------------------------------------------------------- |
| Consistent | The system of equations has at least one solution |
| Inconsistent | Parallel lines, no solution |
| Independent | The lines only cross at one point. |
| Dependant | The lines are identical, and there are infinitely many solutions. Both equations represent the same line when plotted. |
# Solving
## Graphing
Graph the two equations, and look for points where they intersect

View File

@ -0,0 +1,23 @@
Given the formula $\sin(\alpha + \beta)$:
$$ \sin(\alpha + \beta) = \sin(\alpha)\cos(\beta) + \cos(\alpha)\sin(\beta) $$
$$ \sin(\alpha - \beta) = \sin(\alpha)\cos(\beta) - \cos(\alpha)\sin(\beta) $$
Given the formula $\cos(\alpha + \beta)$:
$$ \cos(\alpha + \beta) = \cos(\alpha)\cos(\beta) - \sin(\alpha)\sin(\beta) $$
$$ \cos(\alpha - \beta) = \cos(\alpha)\cos(\beta) + \sin(\alpha)\sin(\beta) $$
Given the formula $\tan(\alpha + \beta)$:
$$\tan(\alpha + \beta) = \dfrac{\tan\alpha + \tan\beta}{1 - \tan\alpha\tan\beta} $$
$$\tan(\alpha - \beta) = \dfrac{\tan\alpha - \tan\beta}{1 + \tan\alpha\tan\beta} $$
## Cofunctions
Given that cofunctions are two functions that add up to 90 degrees, you can use the trig identities for sum and difference to find cofunctions.
For a right triangle where $\alpha = \theta$, $\beta = \frac{\pi}{2} - \theta$.
This means that $\sin(\theta) = \cos(\frac{\pi}{2} - \theta)$
Using this information, you can derive various cofunction identities.
| $\sin\theta = \cos(\frac{\pi}{2} - \theta)$ | $\cos\theta = \sin(\frac{\pi}{2} - \theta)$ |
| ------------------------------------------- | -------------------------------------------- |
| $\tan\theta = \cot(\frac{\pi}{2} - \theta)$ | $\cot\theta = \tan(\frac{\pi}{2} - \theta))$ |
| $\sec\theta = \csc(\frac{\pi}{2} - \theta)$ | $\csc\theta = \sec(\frac{\pi}{2} - \theta)$ |

View File

@ -0,0 +1,58 @@
Angles consist of two rays with the same endpoint and are typically measured in standard position. Standard position is when one of the rays, referred to as the initial side starts at the origin and extend outwards along the $x$ axis, with a second ray referred to as the terminal side.
If an angle is measured counterclockwise, it's a *positive angle*, and if an angle is measured clockwise, it's a *negative angle*.
## Degrees and Radians
To convert **from radians to degrees**, multiply the radian value by $\frac{180\degree}{\pi}$.
$$ x * \frac{180\degree}{\pi}$$
To convert **from degrees to radians**, multiply the degree measure by $\frac{\pi}{180\degree}$.
$$ x * \frac{\pi}{180\degree} $$
## Complementary and Supplementary Angles
A **complimentary** angle is formed when two positive angles add up to $90\degree$ or $\frac{\pi}{2}$. One mnemonic device that you can use to remember this is:
> Complementary starts with C, and C stands for corner. $90\degree$ makes a corner.
A **supplementary** angle is formed when two positive angles add up to $180\degree$ or $\pi$. One mnemonic device that you can use to remember this is:
> Supplementary starts with S and S stands for straight. $180\degree$ makes a straight line.
Angles greater than $90\degree$ have no complement and angles greater than $180\degree$ have no supplement.
# Triangles
Triangles are typically notated using $A$, $B$, and $C$ for the angles of a triangle, and $a$, $b$, and $c$ for the sides of a triangle. $C$ will always be the right angle, and $c$ will always refer to the hypotenuse, but $A$/$a$ and $B$/$b$ are used interchangeably.
For any valid triangle, all three angles will *always* add up to $180\degree$.
$$ \angle A + \angle B + \angle C = 180 $$
## Right Angle Triangle Trigonometry
| SohCahToa | Inverse |
| --------------------------------------------- | --------------------------------------------- |
| $$ sin\theta = \frac{opposite}{hypotenuse} $$ | $$ csc\theta = \frac{hypotenuse}{opposite}$$ |
| $$ cos\theta = \frac{adjacent}{hypotenuse} $$ | $$ sec\theta = \frac{hypotenuse}{adjacent} $$ |
| $$ tan\theta = \frac{opposite}{adjacent} $$ | $$ cot\theta = \frac{adjacent}{opposite} $$ |
These rules apply regardless of the orientation of the triangle.
Cosecant, secant, and tangent are inverses of sine, cosine, and tangent respectively, and so they can be found by taking $\frac{1}{x}$, where $x$ is the function you'd like to find the inverse of.
## Angle of Elevation/Depression
- The **angle of elevation** is the angle between the hypotenuse and the bottom line. As an example, if a ladder was leaning against a building, the angle of elevation would be the angle where the ladder intersects with the ground, and it would be the angle between the ladder and the ground.
- The **angle of depression** is the angle between the top of the hypotenuse and an (often imaginary) horizontal line.
# Definitions
| Term | Description |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Ray | Directed line segment consisting of an endpoint and a direction. Notated as $\overrightarrow{EF}$, where $E$ denotes the endpoint and $F$ denotes a point along the ray. |
| Angle | Union of two rays with a common endpoint. Notated as $\angle DEF$ or $\angle FED$, where $D$ and $F$ are along the points of each ray, and $E$ is the vertex. $\angle EFD$ is not valid notation, because the vertex must be the middle. |
| $\theta$ | A lowercase theta is used to represent a (non right) angle in a triangle |
| $\phi$ | A lowercase phi is used to represent another unknown angle in a triangle. As an example, in an algebraic equation, $x$ might be used to represent the first unknown and $y$ the second. In trig, $\theta$ would be used to represent the first unknown angle, and $\phi$ the second. |
| Initial side | In standard position, the initial side is the ray that extends from the origin along the $x$ axis. |
| Terminal side | In standard position, the terminal side is the ray that's being measured relative to the initial side. |
| $s$ | The length of a curve along the radius. |
| Radian | Denoted with $rad$, one radian is equal to the radius, but it's measured along the arc in a curve instead of from the center. |
| Complementary Angles | Two positive angles that add up to $90\degree$ or $\frac{\pi}{2}$. One mnemonic device that you can use to remember this is: <br><br>Complementary starts with C, and C stands for corner. $90\degree$ makes a corner. |
| Supplementary Angles | Two positive angles that add up to $180\degree$ or $\pi$. One mnemonic device that you can use to remember this is:<br><br>Supplementary starts with S and S stands for straight. $180\degree$ makes a straight line. |
| Hypotenuse | The side opposite the right angle in a triangle. |
| Opposite | For a given angle $\theta$ in a right triangle, this is the side that does not touch that angle. |
| Adjacent | For a given angle $\theta$ in a right triangle, this side makes up the side of the intersection opposite the hypotenuse. |

View File

@ -0,0 +1,33 @@
To solve for a double or half angle identity:
1. Draw a triangle
2. Choose an identity to use
3. Substitute into formula
# Double Angle Identities
Sine:
$$ \sin(2\theta) = 2\sin\theta\cos\theta $$
Cosine:
$$
\begin{matrix}
\cos(2\theta) = \cos^2\theta - \sin^2\theta\\
= 1 - 2sin^2\theta\\
= 2cos^2\theta - 1\\
\end{matrix}
$$
Tan:
$$ \tan(2\theta) = \dfrac{2\tan\theta}{1-\tan^2\theta}$$
## Half Angle Identities
Whether the output is positive or negative depends on what quadrant the output is in.
Sine:
$$ \sin(\frac{\theta}{2}) = \pm\sqrt{\frac{1-\cos\theta}{2}} $$
Cosine:
$$ \cos(\frac{\theta}{2}) = \pm \sqrt{\frac{1 + \cos\theta}{2}} $$
Tangent:
$$
\begin{matrix}
\tan(\dfrac{\theta}{2}) = \pm\sqrt{\dfrac{1-\cos\theta}{1 + \cos\theta}}\\
= \dfrac{\sin\theta}{1 + \cos\theta}\\
= \dfrac{1 - cos\theta}{\sin\theta}
\end{matrix}
$$

View File

@ -0,0 +1,154 @@
# Sine/Cosine
![A graph of sine and cosine](./assets/graphsincos.png)
Given the above graph:
- At the origin, $sin(x) = 0$ and $cos(x) = 1$
- A full wavelength takes $2\pi$
# Manipulation
| Formula | Movement |
| ---------------- | ---------------------------------- |
| $y = cos(x) - 1$ | Vertical shift down by 1 |
| $y = 2cos(x)$ | Vertical stretch by a factor of 2 |
| $y = -cos(x)$ | Flip over x axis |
| $y = cos(2x)$ | Horizontal shrink by a factor of 2 |
# Periodic Functions
A function is considered periodic if it repeats itself at even intervals, where each interval is a complete cycle, referred to as a *period*.
# Sinusoidal Functions
A function that has the same shape as a sine or cosine wave is known as a sinusoidal function.
There are 4 general functions:
| $$A * sin(B*x - C) + D$$ | $$ y = A * cos(B*x -c) + D$$ |
| ----------------------------------------- | -------------------------------------- |
| $$ y = A * sin(B(x - \frac{C}{B})) + D $$ | $$ y = A*cos(B(x - \frac{C}{B})) + D$$ |
How to find the:
- Amplitude: $|A|$
- Period: $\frac{2\pi}{B}$
- Phase shift: $\frac{C}{|B|}$
- Vertical shift: $D$
$$ y = A * \sin(B(x-\frac{C}{B})) $$
# Tangent
$$ y = tan(x) $$
![Graph of tangent](assets/graphtan.png)
To find relative points to create the above graph, you can use the unit circle:
If $tan(x) = \frac{sin(x)}{cos(x})$, then:
| $sin(0) = 0$ | $cos(0) = 1$ | $tan(0) = \frac{cos(0)}{sin(0)} = \frac{0}{1} =0$ |
| ----------------------------------------- | ----------------------------------------- | ---------------------------------------------------------------- |
| $sin(\frac{\pi}{4}) = \frac{\sqrt{2}}{2}$ | $cos(\frac{\pi}{4}) = \frac{\sqrt{2}}{2}$ | $tan(\frac{\pi}{4}) = \frac{\sqrt{2}}{2}/\frac{\sqrt{2}}{2} = 1$ |
| $sin(\frac{\pi}{2}) = 1$ | $cos(\frac{\pi}{2}) = 0$ | $tan(\frac{\pi}{2}) = \frac{1}{0} = DNF$ |
Interpreting the above table:
- When $x = 0$, $y = 0$
- When $x = \frac{\pi}{4}$, $y = 1$
- When $x = \frac{\pi}{2}$, there's an asymptote
Without any transformations applied, the period of $tan(x) = \pi$. Because $tan$ is an odd function, $tan(-x) = -tan(x)$.
# Cotangent
$$ y = cot(x) $$
![Graph of cotangent](assets/graphcot.svg)
To find relative points to create the above graph, you can use the unit circle:
If $cot(x) = \frac{cos(x)}{sin(x)}$, then:
| $sin(0) = 0$ | $cos(0) = 1$ | $cot(0) = \frac{sin(0)}{cos(0)} = \frac{1}{0} = DNF$ |
| ----------------------------------------- | ----------------------------------------- | ---------------------------------------------------------------- |
| $sin(\frac{\pi}{4}) = \frac{\sqrt{2}}{2}$ | $cos(\frac{\pi}{4}) = \frac{\sqrt{2}}{2}$ | $cot(\frac{\pi}{4}) = \frac{\sqrt{2}}{2}/\frac{\sqrt{2}}{2} = 1$ |
| $sin(\frac{\pi}{2}) = 1$ | $cos(\frac{\pi}{2}) = 0$ | $tan(\frac{\pi}{2}) = \frac{1}{0} = DNF$ |
Without any transformations applied, the period of $cot(x) = \pi$. Because $cot$ is an odd function, $cot(-x) = -cot(x)$.
# Features of Tangent and Cotangent
Given the form $y = A\tan(Bx - C) + D$ (the same applies for $\cot$)
- The stretching factor is $|A|$
- The period is $\frac{\pi}{|B|}$
- The domain of $tan$ is all of $x$, where $x \ne \frac{C}{B} + \frac{\pi}{2} + {\pi}{|B|}k$, where $k$ is an integer. (everywhere but the asymptotes)
- The domain of $cot$ is all of $x$, where $x \ne \frac{C}{B} + \frac{\pi}{|B|}k$, where $k$ is an integer (everywhere but the asymptotes)
- The range of both is $(-\infty, \infty)$
- The phase shift is $\frac{C}{B}$
- The vertical shift is $D$
# Secant
$$ y = \sec(x) $$
![Graph of secant](assets/graphsec.jpg)
$$ sec(x) = \frac{1}{\cos{x}} $$
Because secant is the reciprocal of cosine, when $\cos{x} = 0$, then secant is undefined. $|\cos$| is never *greater than* 1, so secant is never *less than* 1 in absolute value. When the graph of cosine crosses the x axis, an asymptote for a matching graph of secant will appear there.
The general form of secant is:
$$ y = A\sec(B{x} - C) + D $$
$A$, $B$, $C$, and $D$ will have similar meanings to the secant function as they did to the sine and cosine functions.
# Cosecant
$$ y = \csc(x) $$
![Graph of cosecant](assets/graphsec.jpg)
$$ \csc(x) = \frac{1}{\sin(x)} $$
Because cosecant is the reciprocal of sine, when $\sin{x} = 0$, then cosecant is undefined. $|\sin$| is never *greater than* 1, so secant is never *less than* 1 in absolute value. When the graph of sine crosses the x axis, an asymptote for a matching graph of cosecant will appear there.
The general form of cosecant is:
$$ y = A\csc(B{x} - C) + D $$
$A$, $B$, $C$, and $D$ will have similar meanings to the cosecant function as they did to the sine and cosine functions.
# Features of Secant and Cosecant
- The stretching factor is $|A|$
- The period is $\frac{2\pi}{|B|}$
- The domain of secant is all $x$, where $x \ne \frac{C}{B} + \frac{\pi}{2} + \frac{\pi}{|B|}k$, where $k$ is an integer. (Every half period + phase shift is where asymptotes appear)
- The domain of cosecant is all $x$, where $x \ne \frac{C}{B} + \frac{\pi}{|B|}k$, where $k$ is an integer.
- The range is $(\infty, -|A| +D]\cup [|A| + D], \infty)$
- The vertical asymptotes of secant occur at $x = \frac{C}{B} + \frac{\pi}{2} + \frac{\pi}{2} + \frac{\pi}{|B|}k$, where $k$ is an integer.
- The vertical asymptotes of cosecant occur at $x = \frac{C}{B} + \frac{\pi}{|B|}k$, where $k$ is an integer.
- The vertical shift is $D$.
# Inverse Functions
For any one to one function $f(x) = y$, a function $f^{-1}(y) = x)$. A function is considered one-to-one if every input only has one output, and every output can only be created from a single input.
The inverse of a trig function is denoted as $sin^{-1}$, or $arcsin$ respectively.
The inverse of a trig function is **not** the same as the reciprocal of a trig function, $\frac{1}{sin}$ is not the same as $sin^{-1}$.
- The *domain* of $f$ is the *range* of $f^{-1}$.
- The *range* of $f$ is the *domain* of $f^{-1}$.
| Trig functions | Inverse trig functions |
| ----------------------------------- | ------------------------------------ |
| Domain: Angle measures | Domain: Ratio of sides of a triangle |
| Range: Ratio of sides of a triangle | Range: Angle Measure |
- To find the inverse of sin, you need to restrict the domain to $[-\frac{\pi}{2}, \frac{\pi}{2}]$
- To find the inverse of cos, you need to restrict the domain to $[0, \pi]$
- To find the inverse of tangent, you need to restrict the domain to $(-\frac{\pi}{2}, \frac{\pi}{2})$.
The graphs of an inverse function can be found by taking the graph of $f$, and flipping it over the line $y=x$.
# Examples
> Given $-2\tan(\pi*x + \pi) - 1$
$A = -2$, $B = \pi$, $C = -\pi$, $D = -1$
> Identify the vertical stretch/compress factor, period, phase shift, and vertical shift of the function $y = 4\sec(\frac{\pi}{3}x - \frac{\pi}{2}) + 1$
$A = 4$, $B = \frac{\pi}{3}$, $C = \frac{\pi}{2}$, $D = 4$
Vertical stretch: $|4| = 4$
Period: $\frac{2\pi}{\frac{\pi}{3}} = \frac{2\pi}{1} * \frac{3}{\pi} = 6$
Phase shift: $\dfrac{\frac{\pi}{2}}{\frac{\pi}{3}} = \frac{3}{2}$
Vertical shift: $1$
| Transformation | Equation |
| -------------- | ------------------------- |
| Stretch | $\|-2\| = 2$ |
| Period | $\frac{\pi}{\|\pi\|} = 1$ |
| Phase shift | $\frac{-\pi}{\pi} = -1$ |
| Vertical shift | $-1$ |
> Evaluate $\arccos{\frac{1}{2}}$ using the unit circle.
Taking the inverse of the above function, we get this. Because the domain of $cos$ ranges from $0$ to $\pi$ inclusive, the answer is going to be in quadrant 1 or quadrant 2.
$$ cos(a) = \frac{1}{2} $$
When $x$ is equal to one half, the angle is equal to $\frac{\pi}{3}$.

View File

@ -0,0 +1,79 @@
An **identity** is an equation that is true for all values of the variable for which the expressions in the equation are defined.
# Trigonometric Identities
All of the following only apply when the denominator is not equal to zero.
$$ tan \theta = \frac{y}{x} $$
Because the following are inverses of their counterparts, you only need to remember the equivalents for $sin$, $cos$, and $tan$, then just find the inverse by taking $1/v$.
| Base Identity | Inverse Identity | Alternate Identities | Alternate Inverse Identities |
| ----------------------------- | ------------------------------ | --------------------------------------------- | --------------------------------------------------------------------- |
| $$ sin\theta = y $$ | $$ csc\theta = \frac{1}{y} $$ | | $$ csc\theta = \frac{1}{sin\theta} $$ |
| $$ cos\theta = x $$ | $$ sec \theta = \frac{1}{x} $$ | | $$ sec\theta = \frac{1}{cos\theta} $$ |
| $$ tan\theta = \frac{y}{x} $$ | $$ cot\theta = \frac{x}{y} $$ | $$ tan\theta = \frac{sin\theta}{cos\theta} $$ | $$ cot\theta = \frac{1}{tan\theta} = \frac{cos\theta}{sin{\theta}} $$ |
# Pythagorean Identities
The Pythagorean identity expresses the Pythagorean theorem in terms of trigonometric functions. It's a basic relation between the sine and cosine functions.
$$ sin^2 \theta + cos^2 \theta = 1 $$
There are more forms that are useful, but they can be derived from the above formula:
$$ 1 + tan^2\theta = sec^2\theta $$
$$ cot^2 \theta + 1 = csc^2\theta $$
# Even and Odd Identities
- A function is even if $f(-x) = f(x)$.
- A function is odd if $f(-x) = -f(x)$
- Cosine and secant are **even**
- Sine, tangent, cosecant, and cotangent are **odd**.
## Examples
### Even and Odd Functions
> If $cot\theta = -\sqrt{3}$, what is $cot(-\theta)$?
$cot$ is an odd function, and so $cot(-\theta) = \sqrt{3}$
### Simplifying Using Identities
> Simplify $\frac{sin\theta}{cos\theta}$
1. The above equation can be split into two components
$$ \frac{sin\theta}{cos\theta} = \frac{sin\theta}{1} * \frac{1}{csc\theta} $$
2. Referring to the list of trig identities, we know that $\frac{1}{csc\theta}$ is equal to $sin\theta$.
$$ \frac{sin\theta}{1} * \frac{1}{csc\theta} = sin\theta * sin\theta $$
3. Simplifying further, we get:
$$ sin^2\theta $$
### Finding all values using identities
If $sec\theta = -\frac{25}{7}$ and $0 < \theta < \pi$, find the values of the other 5 trig functions:
1. To find $tan\theta$, we can use the trig identity $1 + tan^2\theta = sec^2\theta$:
$$ 1 + tan^2\theta = (-\frac{25}{7})^2 $$
Shuffling things around, we get this:
$$ tan^2\theta = \frac{625}{49} - 1 $$
Performing that subtraction gives us this:
$$ \frac{625}{49} - \frac{49}{49} = \frac{576}{49} = tan^2\theta $$
You can get rid of the exponent:
$$ \sqrt{\frac{576}{49}} = tan\theta $$
$\sqrt{576} = 24$ and $\sqrt{49} = 7$, so:
$$ tan\theta = \frac{24}{7} $$
2. To find $cos\theta$, because $sec$ is the inverse of $cos$, we can use the identity $sec\theta = \frac{1}{cos\theta}$:
$cos\theta = -\frac{7}{25}$
3. To find $sin\theta$, we can use the trig identity $sin^2\theta + cos^2\theta = 1$:
$$ sin^2\theta + (-\frac{7}{25}) = 1 $$
Rearranging, we get:
$$ 1 - (-\frac{7}{25})^2 = sin^2\theta $$
Applying the exponent gives us $\frac{49}{625}$, so we can do this:
$$ \frac{625}{625} - \frac{49}{625} = \frac{576}{625} = sin^2\theta $$
Getting rid of the exponent:
$$ \sqrt{\frac{576}{625}} = \frac{24}{25} = sin\theta $$
From there, you can find the rest of the identities fairly easily.
# Simplifying trig expressions using identities
Given the difference of square formula:
$$ a^2 - b^2 = (a-b)(a+b) $$
## Examples
Simplify $\tan\theta\sin\theta + \cos\theta$:
1. $\dfrac{\sin\theta}{\cos\theta} * \sin\theta + \cos\theta$
2. $\dfrac{\sin^2\theta}{cos\theta} + \cos\theta$
3. $(\dfrac{\sin^2\theta}{cos\theta} + \cos\theta)\dfrac{\cos\theta}{\cos\theta} = \sin^2\theta*\cos^2\theta + \cos\theta$
Si\

View File

@ -0,0 +1,6 @@
The Law of Cosines is useful when solving for SAS or SSS triangles.
$$ a^2 = b^2 + c^2 -2bc\cos(\alpha) $$
$$ b^2 = a^2 + c^2 -2ac\cos(\beta) $$
$$ c^2 = a^2 + b^2 -2ab\cos(\gamma) $$
- When using the Law of Cosines to solve for SSS triangles, start solving for the largest angle.
- When correctly solved, the smallest angle will be opposite the smallest side, and the largest angle will be opposite the largest side.

View File

@ -0,0 +1,33 @@
# Intro
Tl;dr, the law of sines is:
$$ \frac{\sin(\alpha)}{a} = \frac{\sin(\beta)}{b} = \frac{\sin(\gamma)}{c} $$
Under convention:
- Angle $\alpha$ is opposite side $a$
- Angle $\beta$ is opposite side $b$
- Angle $\gamma$ is opposite side $c$
- Any triangle that is *not a right triangle* is called an oblique triangle. There are two types of oblique triangles:
- **Acute triangles**: This is an oblique triangle where all three interior angles are less than $90\degree$ or $\dfrac{\pi}{2}$ radians.
- **Obtuse Triangle**: This is an oblique triangle where one of the interior angles is greater than $90\degree$.
## Different types of oblique triangles
1. **ASA Triangle**: (Angle Side Angle) - We know the measurements of two angles and the side between them
2. **AAS**: We know the measurements of two angles and a side that is not between the known angles.
3. **SSA**: We know the measurements of two sides and an angle that is not between the known sides.
These triangles can be solved by adding a line that goes from one vertex to intersect perpendicular to the opposite side, forming two right triangles ($h$).
## Solving for the law of sines
We know that $\sin\alpha = \dfrac{h}{b}$ and $\sin\beta = \dfrac{h}{a}$. We can sole both equations for $h$ to get:
- $h = b\sin\alpha$
- $h = a\sin\beta$
Setting both equations equal to each other gives us:
$b\sin\alpha = a\sin\beta$
Multiply both sides by $\dfrac{1}{ab}$ gives yields $\dfrac{\sin\alpha}{a} = \dfrac{\sin\beta}{b}$
# SSA triangles
Side side angle triangles may be solved to have one possible solution, two possible solutions, or no possible solutions.
- No triangle: $a < h$
- One triangle: $a \ge b$
- Two triangles: $h < a < b$
- One right triangle: $a = h$

View File

@ -0,0 +1,34 @@
# Introduction
The unit circle has a center a $(0, 0)$, and a radius of $1$ with no defined unit.
Sine and cosine can be used to find the coordinates of specific points on the unit circle.
**Sine likes $y$, and cosine likes $x$.**
![image](./assets/sincoscirc.png)
When sine is positive, the $y$ value is positive. When $x$ is positive, the cosine is positive.
$$ cos(\theta) = x $$
$$ sin(\theta) = y $$
## Sine and Cosine
| Angle | $0$ | $\frac{\pi}{6}$ or $30 \degree$ | $\frac{\pi}{4}$ or $45\degree$ | $\frac{\pi}{2}$ or $90\degree$ |
| ------ | --- | ------------------------------- | ------------------------------ | ------------------------------ |
| Cosine | 1 | $\frac{\sqrt{3}}{2}$ | $\frac{\sqrt{2}}{2}$ | $0$ |
| Sine | 0 | $\frac{1}{2}$ | $\frac{\sqrt{2}}{2}$ | <br>$1$ |
![image](./assets/unitcirc.png)
Finding a reference angle:
| Quadrant | Formula |
| -------- | --------------------- |
| 1 | $\theta$ |
| 2 | $180\degree - \theta$ |
| 3 | $\theta - 180\degree$ |
| 4 | $360\degree - \theta$ |
# Definitions
| Term | Description |
| ---------------- | ----------------------------------------------------------------------------- |
| $\theta$ (theta) | Theta refers to the angle measure in a unit circle. |
| $s$ | $s$ is used to the length of the arc created by angle $\theta$ on the circle. |

View File

@ -0,0 +1,57 @@
A vector is a mathematical concept that denotes direction and magnitude. They're often notated using an arrow ($\vec{v}$), or with a bold, lowercase letter. (**v**).
Vectors are often denoted as a matrix with two rows: $\begin{bmatrix}1 \\2\end{bmatrix}$
# Component Form
If $\vec{v}$ is a vector with the initial point $(x_y,\ y_i)$, and a terminal point $(x_t,\ y_t)$, we can express $\vec{v}$ in component form as $\vec{v} = \langle x_t - x_i,\ y_t, -y_i \rangle$
# Magnitude
The magnitude of a vector is $|\vec{v}| = \sqrt{a^2 + b^2}$
# Direction
The direction of a vector is $\theta = \tan^-1(\frac{b}{a})$.
# Addition
To find $\vec{u} + \vec{v}$, we can put one vector on the end of another vector. The resulting vector will share the same tail as the first vector, and the same head as the second vector.
# Scalar Multiplication
A **scalar** is just a real number. Scalar multiplication is multiplying a vector with a real number. This will scale or shrink a vector, but does not change the direction it points at.
We do not multiply two vectors together.
# Unit Vector
A vector with a magnitude of 1 is a **unit vector**.
If $\vec{v}$ is a nonzero vector, the unit vector can be found using the equation $\vec{u} = \dfrac{1}{|\vec{v}|}\vec{v}$ . In other words, to find a unit vector, divide the vector by its magnitude.
# $i$, $j$ Notation
Every 2D vector has a horizontal component and a vertical component. The horizontal unit vector could be written as $i = \langle 1, 0 \rangle$, and the vertical unit vector could be written as $j = \langle 0, 1 \rangle$ Every vector can be made up using a combination of these standard unit vectors.
# Trigonometric Form
Given a vector $\vec{v}$ with a magnitude $|\vec{v}|$ and direction $\theta$:
The component form is given as:
$$ \vec{v} = \langle |\vec{v}||\cos \theta,\ |\vec{v}|\sin\theta \rangle $$
# Standard position
- A vector is in standard position if the initial point is at $(0, 0)$.
# The Dot Product
The dot product of two vectors $\vec{u} = \langle a, b \rangle$ and $\vec{v} = \langle c, d \rangle$ is $\vec{u} * \vec{v} = ac + bd$.
- Given that $\vec{u} = \langle -7, 3 \rangle$, and $\vec{v} = \langle -3, 4 \rangle$, find $\vec{u} \cdot \vec{v}$.
- $\vec{u} \cdot \vec{v} = -7 \cdot -4 + 3 \cdot 4$
The dot product can be used to find the angle between two vectors.
If $\theta (0\degree < \theta < 180\degree)$, is the angle between two nonzero vectors $\vec{u}$ and $\vec{v}$, then
$$ \cos\theta = \dfrac{\vec{u}\cdot\vec{v}}{|\vec{u}||\vec{v}|} $$
# Work
The dot product can be used to compute the work required to move an object a certain distance.
To compute work, you need a force and direction. If the force is applied in the same direction:
$$ W = Fd $$
The work $W$ is done by a constant force $\vec{F}$ in moving an object from a point $P$ to a point $Q$ is defined by:
$$ W = \vec{F} \cdot\vec{PQ} = |\vec{F}||\vec{PQ}|\cos\theta $$Where $\theta$ is the angle between $\vec{F}$ and $\vec{PQ}$.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Some files were not shown because too many files have changed in this diff Show More