--- /home/fdroid/fdroiddata/tmp/com.superproductivity.superproductivity_1606010000.apk +++ /home/fdroid/fdroiddata/tmp/sigcp_com.superproductivity.superproductivity_1606010000.apk ├── zipinfo {} │ @@ -157,70 +157,62 @@ │ -rw-r--r-- 0.0 unx 1526 b- defN 81-Jan-01 01:01 assets/public/chunk-3JWM7PKT.js.map │ -rw-r--r-- 0.0 unx 615 b- defN 81-Jan-01 01:01 assets/public/chunk-3UB54IM4.js │ -rw-r--r-- 0.0 unx 2240 b- defN 81-Jan-01 01:01 assets/public/chunk-3UB54IM4.js.map │ -rw-r--r-- 0.0 unx 43132 b- defN 81-Jan-01 01:01 assets/public/chunk-3Z2FNV42.js │ -rw-r--r-- 0.0 unx 158060 b- defN 81-Jan-01 01:01 assets/public/chunk-3Z2FNV42.js.map │ -rw-r--r-- 0.0 unx 291 b- defN 81-Jan-01 01:01 assets/public/chunk-44W6YCXP.js │ -rw-r--r-- 0.0 unx 694 b- defN 81-Jan-01 01:01 assets/public/chunk-44W6YCXP.js.map │ --rw-r--r-- 0.0 unx 65318 b- defN 81-Jan-01 01:01 assets/public/chunk-4ANWUG5O.js │ --rw-r--r-- 0.0 unx 180014 b- defN 81-Jan-01 01:01 assets/public/chunk-4ANWUG5O.js.map │ -rw-r--r-- 0.0 unx 30243 b- defN 81-Jan-01 01:01 assets/public/chunk-4LZ5GS7Z.js │ -rw-r--r-- 0.0 unx 145576 b- defN 81-Jan-01 01:01 assets/public/chunk-4LZ5GS7Z.js.map │ -rw-r--r-- 0.0 unx 285 b- defN 81-Jan-01 01:01 assets/public/chunk-4MDX2LQL.js │ -rw-r--r-- 0.0 unx 816 b- defN 81-Jan-01 01:01 assets/public/chunk-4MDX2LQL.js.map │ -rw-r--r-- 0.0 unx 3622 b- defN 81-Jan-01 01:01 assets/public/chunk-4RA25WAL.js │ -rw-r--r-- 0.0 unx 11641 b- defN 81-Jan-01 01:01 assets/public/chunk-4RA25WAL.js.map │ -rw-r--r-- 0.0 unx 6299 b- defN 81-Jan-01 01:01 assets/public/chunk-52E4OR7C.js │ -rw-r--r-- 0.0 unx 24744 b- defN 81-Jan-01 01:01 assets/public/chunk-52E4OR7C.js.map │ -rw-r--r-- 0.0 unx 1079 b- defN 81-Jan-01 01:01 assets/public/chunk-53XHIVHI.js │ -rw-r--r-- 0.0 unx 4139 b- defN 81-Jan-01 01:01 assets/public/chunk-53XHIVHI.js.map │ -rw-r--r-- 0.0 unx 867 b- defN 81-Jan-01 01:01 assets/public/chunk-54O5TGTU.js │ -rw-r--r-- 0.0 unx 1567 b- defN 81-Jan-01 01:01 assets/public/chunk-54O5TGTU.js.map │ -rw-r--r-- 0.0 unx 3929 b- defN 81-Jan-01 01:01 assets/public/chunk-5EW7IJ3A.js │ -rw-r--r-- 0.0 unx 9310 b- defN 81-Jan-01 01:01 assets/public/chunk-5EW7IJ3A.js.map │ +-rw-r--r-- 0.0 unx 67165 b- defN 81-Jan-01 01:01 assets/public/chunk-5QSHRBB3.js │ +-rw-r--r-- 0.0 unx 271518 b- defN 81-Jan-01 01:01 assets/public/chunk-5QSHRBB3.js.map │ -rw-r--r-- 0.0 unx 58459 b- defN 81-Jan-01 01:01 assets/public/chunk-5WWLWJDY.js │ -rw-r--r-- 0.0 unx 260396 b- defN 81-Jan-01 01:01 assets/public/chunk-5WWLWJDY.js.map │ -rw-r--r-- 0.0 unx 89375 b- defN 81-Jan-01 01:01 assets/public/chunk-62BQDC26.js │ -rw-r--r-- 0.0 unx 262577 b- defN 81-Jan-01 01:01 assets/public/chunk-62BQDC26.js.map │ -rw-r--r-- 0.0 unx 602 b- defN 81-Jan-01 01:01 assets/public/chunk-63CPB6EG.js │ -rw-r--r-- 0.0 unx 2080 b- defN 81-Jan-01 01:01 assets/public/chunk-63CPB6EG.js.map │ -rw-r--r-- 0.0 unx 5446 b- defN 81-Jan-01 01:01 assets/public/chunk-66UQFYBZ.js │ -rw-r--r-- 0.0 unx 9891 b- defN 81-Jan-01 01:01 assets/public/chunk-66UQFYBZ.js.map │ --rw-r--r-- 0.0 unx 300255 b- defN 81-Jan-01 01:01 assets/public/chunk-6BTBXX5V.js │ --rw-r--r-- 0.0 unx 973430 b- defN 81-Jan-01 01:01 assets/public/chunk-6BTBXX5V.js.map │ -rw-r--r-- 0.0 unx 2789 b- defN 81-Jan-01 01:01 assets/public/chunk-6HMGLSTJ.js │ -rw-r--r-- 0.0 unx 10909 b- defN 81-Jan-01 01:01 assets/public/chunk-6HMGLSTJ.js.map │ -rw-r--r-- 0.0 unx 2562 b- defN 81-Jan-01 01:01 assets/public/chunk-6ILFT54O.js │ -rw-r--r-- 0.0 unx 10428 b- defN 81-Jan-01 01:01 assets/public/chunk-6ILFT54O.js.map │ -rw-r--r-- 0.0 unx 29541 b- defN 81-Jan-01 01:01 assets/public/chunk-6M43B367.js │ -rw-r--r-- 0.0 unx 115931 b- defN 81-Jan-01 01:01 assets/public/chunk-6M43B367.js.map │ -rw-r--r-- 0.0 unx 2588 b- defN 81-Jan-01 01:01 assets/public/chunk-6OTPDFIS.js │ -rw-r--r-- 0.0 unx 6355 b- defN 81-Jan-01 01:01 assets/public/chunk-6OTPDFIS.js.map │ --rw-r--r-- 0.0 unx 1465 b- defN 81-Jan-01 01:01 assets/public/chunk-77ZSDKZD.js │ --rw-r--r-- 0.0 unx 93 b- defN 81-Jan-01 01:01 assets/public/chunk-77ZSDKZD.js.map │ -rw-r--r-- 0.0 unx 5278 b- defN 81-Jan-01 01:01 assets/public/chunk-7AEWECSO.js │ -rw-r--r-- 0.0 unx 11535 b- defN 81-Jan-01 01:01 assets/public/chunk-7AEWECSO.js.map │ -rw-r--r-- 0.0 unx 1199 b- defN 81-Jan-01 01:01 assets/public/chunk-7QJOIGWD.js │ -rw-r--r-- 0.0 unx 3448 b- defN 81-Jan-01 01:01 assets/public/chunk-7QJOIGWD.js.map │ -rw-r--r-- 0.0 unx 21838 b- defN 81-Jan-01 01:01 assets/public/chunk-A7MOHWFK.js │ -rw-r--r-- 0.0 unx 64287 b- defN 81-Jan-01 01:01 assets/public/chunk-A7MOHWFK.js.map │ -rw-r--r-- 0.0 unx 1140 b- defN 81-Jan-01 01:01 assets/public/chunk-AAAAG6LL.js │ -rw-r--r-- 0.0 unx 2013 b- defN 81-Jan-01 01:01 assets/public/chunk-AAAAG6LL.js.map │ -rw-r--r-- 0.0 unx 4955 b- defN 81-Jan-01 01:01 assets/public/chunk-ABDFPP75.js │ -rw-r--r-- 0.0 unx 20334 b- defN 81-Jan-01 01:01 assets/public/chunk-ABDFPP75.js.map │ --rw-r--r-- 0.0 unx 1547 b- defN 81-Jan-01 01:01 assets/public/chunk-AHUFPQ34.js │ --rw-r--r-- 0.0 unx 93 b- defN 81-Jan-01 01:01 assets/public/chunk-AHUFPQ34.js.map │ -rw-r--r-- 0.0 unx 9485 b- defN 81-Jan-01 01:01 assets/public/chunk-ATRC5YAB.js │ -rw-r--r-- 0.0 unx 16139 b- defN 81-Jan-01 01:01 assets/public/chunk-ATRC5YAB.js.map │ -rw-r--r-- 0.0 unx 23993 b- defN 81-Jan-01 01:01 assets/public/chunk-AW23F5KX.js │ -rw-r--r-- 0.0 unx 41587 b- defN 81-Jan-01 01:01 assets/public/chunk-AW23F5KX.js.map │ -rw-r--r-- 0.0 unx 7866 b- defN 81-Jan-01 01:01 assets/public/chunk-BEPRWKFF.js │ -rw-r--r-- 0.0 unx 16437 b- defN 81-Jan-01 01:01 assets/public/chunk-BEPRWKFF.js.map │ --rw-r--r-- 0.0 unx 11621 b- defN 81-Jan-01 01:01 assets/public/chunk-BM5UM4I2.js │ --rw-r--r-- 0.0 unx 22060 b- defN 81-Jan-01 01:01 assets/public/chunk-BM5UM4I2.js.map │ -rw-r--r-- 0.0 unx 3417 b- defN 81-Jan-01 01:01 assets/public/chunk-BMNBNE4Q.js │ -rw-r--r-- 0.0 unx 15954 b- defN 81-Jan-01 01:01 assets/public/chunk-BMNBNE4Q.js.map │ -rw-r--r-- 0.0 unx 4449 b- defN 81-Jan-01 01:01 assets/public/chunk-BR4DJPMY.js │ -rw-r--r-- 0.0 unx 6897 b- defN 81-Jan-01 01:01 assets/public/chunk-BR4DJPMY.js.map │ -rw-r--r-- 0.0 unx 411 b- defN 81-Jan-01 01:01 assets/public/chunk-CTKG63YM.js │ -rw-r--r-- 0.0 unx 938 b- defN 81-Jan-01 01:01 assets/public/chunk-CTKG63YM.js.map │ -rw-r--r-- 0.0 unx 2699 b- defN 81-Jan-01 01:01 assets/public/chunk-DBKAVYUF.js │ @@ -229,20 +221,20 @@ │ -rw-r--r-- 0.0 unx 38595 b- defN 81-Jan-01 01:01 assets/public/chunk-DP7GTZUF.js.map │ -rw-r--r-- 0.0 unx 9276 b- defN 81-Jan-01 01:01 assets/public/chunk-DU3YCOM3.js │ -rw-r--r-- 0.0 unx 32056 b- defN 81-Jan-01 01:01 assets/public/chunk-DU3YCOM3.js.map │ -rw-r--r-- 0.0 unx 3897 b- defN 81-Jan-01 01:01 assets/public/chunk-DX2IO2N5.js │ -rw-r--r-- 0.0 unx 11586 b- defN 81-Jan-01 01:01 assets/public/chunk-DX2IO2N5.js.map │ -rw-r--r-- 0.0 unx 1444 b- defN 81-Jan-01 01:01 assets/public/chunk-DXQO57I2.js │ -rw-r--r-- 0.0 unx 4396 b- defN 81-Jan-01 01:01 assets/public/chunk-DXQO57I2.js.map │ +-rw-r--r-- 0.0 unx 11621 b- defN 81-Jan-01 01:01 assets/public/chunk-EVT7NY2D.js │ +-rw-r--r-- 0.0 unx 22060 b- defN 81-Jan-01 01:01 assets/public/chunk-EVT7NY2D.js.map │ -rw-r--r-- 0.0 unx 135134 b- defN 81-Jan-01 01:01 assets/public/chunk-EX3XCQ6H.js │ -rw-r--r-- 0.0 unx 445105 b- defN 81-Jan-01 01:01 assets/public/chunk-EX3XCQ6H.js.map │ -rw-r--r-- 0.0 unx 326828 b- defN 81-Jan-01 01:01 assets/public/chunk-G25OYBCW.js │ -rw-r--r-- 0.0 unx 3252836 b- defN 81-Jan-01 01:01 assets/public/chunk-G25OYBCW.js.map │ --rw-r--r-- 0.0 unx 84003 b- defN 81-Jan-01 01:01 assets/public/chunk-GAB5FZMM.js │ --rw-r--r-- 0.0 unx 210426 b- defN 81-Jan-01 01:01 assets/public/chunk-GAB5FZMM.js.map │ -rw-r--r-- 0.0 unx 7077 b- defN 81-Jan-01 01:01 assets/public/chunk-GT73NP2G.js │ -rw-r--r-- 0.0 unx 25011 b- defN 81-Jan-01 01:01 assets/public/chunk-GT73NP2G.js.map │ -rw-r--r-- 0.0 unx 9348 b- defN 81-Jan-01 01:01 assets/public/chunk-GZFWFOBC.js │ -rw-r--r-- 0.0 unx 21258 b- defN 81-Jan-01 01:01 assets/public/chunk-GZFWFOBC.js.map │ -rw-r--r-- 0.0 unx 32842 b- defN 81-Jan-01 01:01 assets/public/chunk-HB5KHHRQ.js │ -rw-r--r-- 0.0 unx 100119 b- defN 81-Jan-01 01:01 assets/public/chunk-HB5KHHRQ.js.map │ -rw-r--r-- 0.0 unx 20050 b- defN 81-Jan-01 01:01 assets/public/chunk-HPLGUE6W.js │ @@ -263,16 +255,16 @@ │ -rw-r--r-- 0.0 unx 183686 b- defN 81-Jan-01 01:01 assets/public/chunk-IGCLYYTY.js.map │ -rw-r--r-- 0.0 unx 120799 b- defN 81-Jan-01 01:01 assets/public/chunk-IHQL4CLN.js │ -rw-r--r-- 0.0 unx 457705 b- defN 81-Jan-01 01:01 assets/public/chunk-IHQL4CLN.js.map │ -rw-r--r-- 0.0 unx 2235 b- defN 81-Jan-01 01:01 assets/public/chunk-IJCJ6COC.js │ -rw-r--r-- 0.0 unx 8779 b- defN 81-Jan-01 01:01 assets/public/chunk-IJCJ6COC.js.map │ -rw-r--r-- 0.0 unx 41390 b- defN 81-Jan-01 01:01 assets/public/chunk-IL5OTZXM.js │ -rw-r--r-- 0.0 unx 345863 b- defN 81-Jan-01 01:01 assets/public/chunk-IL5OTZXM.js.map │ --rw-r--r-- 0.0 unx 3103 b- defN 81-Jan-01 01:01 assets/public/chunk-J754SOWT.js │ --rw-r--r-- 0.0 unx 9467 b- defN 81-Jan-01 01:01 assets/public/chunk-J754SOWT.js.map │ +-rw-r--r-- 0.0 unx 300255 b- defN 81-Jan-01 01:01 assets/public/chunk-IQQZUO6I.js │ +-rw-r--r-- 0.0 unx 973430 b- defN 81-Jan-01 01:01 assets/public/chunk-IQQZUO6I.js.map │ -rw-r--r-- 0.0 unx 1485 b- defN 81-Jan-01 01:01 assets/public/chunk-JCC3ZHM6.js │ -rw-r--r-- 0.0 unx 2733 b- defN 81-Jan-01 01:01 assets/public/chunk-JCC3ZHM6.js.map │ -rw-r--r-- 0.0 unx 18481 b- defN 81-Jan-01 01:01 assets/public/chunk-JSX6VTWN.js │ -rw-r--r-- 0.0 unx 81848 b- defN 81-Jan-01 01:01 assets/public/chunk-JSX6VTWN.js.map │ -rw-r--r-- 0.0 unx 27360 b- defN 81-Jan-01 01:01 assets/public/chunk-JWEVU4VV.js │ -rw-r--r-- 0.0 unx 74857 b- defN 81-Jan-01 01:01 assets/public/chunk-JWEVU4VV.js.map │ -rw-r--r-- 0.0 unx 4384 b- defN 81-Jan-01 01:01 assets/public/chunk-K5GRC76V.js │ @@ -287,42 +279,44 @@ │ -rw-r--r-- 0.0 unx 12228 b- defN 81-Jan-01 01:01 assets/public/chunk-L3HKLZJ5.js.map │ -rw-r--r-- 0.0 unx 76727 b- defN 81-Jan-01 01:01 assets/public/chunk-LIWG7NLG.js │ -rw-r--r-- 0.0 unx 181885 b- defN 81-Jan-01 01:01 assets/public/chunk-LIWG7NLG.js.map │ -rw-r--r-- 0.0 unx 15422 b- defN 81-Jan-01 01:01 assets/public/chunk-LLYEAZFH.js │ -rw-r--r-- 0.0 unx 38046 b- defN 81-Jan-01 01:01 assets/public/chunk-LLYEAZFH.js.map │ -rw-r--r-- 0.0 unx 1014 b- defN 81-Jan-01 01:01 assets/public/chunk-LM73TW6C.js │ -rw-r--r-- 0.0 unx 1893 b- defN 81-Jan-01 01:01 assets/public/chunk-LM73TW6C.js.map │ +-rw-r--r-- 0.0 unx 1465 b- defN 81-Jan-01 01:01 assets/public/chunk-LTHMW6C4.js │ +-rw-r--r-- 0.0 unx 93 b- defN 81-Jan-01 01:01 assets/public/chunk-LTHMW6C4.js.map │ -rw-r--r-- 0.0 unx 25613 b- defN 81-Jan-01 01:01 assets/public/chunk-LWOYY253.js │ -rw-r--r-- 0.0 unx 69182 b- defN 81-Jan-01 01:01 assets/public/chunk-LWOYY253.js.map │ -rw-r--r-- 0.0 unx 202246 b- defN 81-Jan-01 01:01 assets/public/chunk-MAQCQPYF.js │ -rw-r--r-- 0.0 unx 824865 b- defN 81-Jan-01 01:01 assets/public/chunk-MAQCQPYF.js.map │ -rw-r--r-- 0.0 unx 295 b- defN 81-Jan-01 01:01 assets/public/chunk-MTAMSYXR.js │ -rw-r--r-- 0.0 unx 93 b- defN 81-Jan-01 01:01 assets/public/chunk-MTAMSYXR.js.map │ -rw-r--r-- 0.0 unx 12431 b- defN 81-Jan-01 01:01 assets/public/chunk-NAC3HR42.js │ -rw-r--r-- 0.0 unx 49745 b- defN 81-Jan-01 01:01 assets/public/chunk-NAC3HR42.js.map │ -rw-r--r-- 0.0 unx 128406 b- defN 81-Jan-01 01:01 assets/public/chunk-NAWYCYT3.js │ -rw-r--r-- 0.0 unx 312508 b- defN 81-Jan-01 01:01 assets/public/chunk-NAWYCYT3.js.map │ -rw-r--r-- 0.0 unx 769153 b- defN 81-Jan-01 01:01 assets/public/chunk-NBHHRDIC.js │ -rw-r--r-- 0.0 unx 2002931 b- defN 81-Jan-01 01:01 assets/public/chunk-NBHHRDIC.js.map │ -rw-r--r-- 0.0 unx 55054 b- defN 81-Jan-01 01:01 assets/public/chunk-NNQWYSOU.js │ -rw-r--r-- 0.0 unx 79449 b- defN 81-Jan-01 01:01 assets/public/chunk-NNQWYSOU.js.map │ --rw-r--r-- 0.0 unx 30649 b- defN 81-Jan-01 01:01 assets/public/chunk-NRU3TRWE.js │ --rw-r--r-- 0.0 unx 110501 b- defN 81-Jan-01 01:01 assets/public/chunk-NRU3TRWE.js.map │ -rw-r--r-- 0.0 unx 22976 b- defN 81-Jan-01 01:01 assets/public/chunk-NW24E2WJ.js │ -rw-r--r-- 0.0 unx 132437 b- defN 81-Jan-01 01:01 assets/public/chunk-NW24E2WJ.js.map │ -rw-r--r-- 0.0 unx 18730 b- defN 81-Jan-01 01:01 assets/public/chunk-O55BJVFS.js │ -rw-r--r-- 0.0 unx 39881 b- defN 81-Jan-01 01:01 assets/public/chunk-O55BJVFS.js.map │ -rw-r--r-- 0.0 unx 3548 b- defN 81-Jan-01 01:01 assets/public/chunk-O73YLTLO.js │ -rw-r--r-- 0.0 unx 23515 b- defN 81-Jan-01 01:01 assets/public/chunk-O73YLTLO.js.map │ -rw-r--r-- 0.0 unx 4844 b- defN 81-Jan-01 01:01 assets/public/chunk-OKE7ST2R.js │ -rw-r--r-- 0.0 unx 57684 b- defN 81-Jan-01 01:01 assets/public/chunk-OKE7ST2R.js.map │ -rw-r--r-- 0.0 unx 1144 b- defN 81-Jan-01 01:01 assets/public/chunk-P374KFOI.js │ -rw-r--r-- 0.0 unx 4972 b- defN 81-Jan-01 01:01 assets/public/chunk-P374KFOI.js.map │ -rw-r--r-- 0.0 unx 29214 b- defN 81-Jan-01 01:01 assets/public/chunk-P5ZILOHA.js │ -rw-r--r-- 0.0 unx 78422 b- defN 81-Jan-01 01:01 assets/public/chunk-P5ZILOHA.js.map │ +-rw-r--r-- 0.0 unx 1547 b- defN 81-Jan-01 01:01 assets/public/chunk-PEQBECIR.js │ +-rw-r--r-- 0.0 unx 93 b- defN 81-Jan-01 01:01 assets/public/chunk-PEQBECIR.js.map │ -rw-r--r-- 0.0 unx 19871 b- defN 81-Jan-01 01:01 assets/public/chunk-PQR5WPAM.js │ -rw-r--r-- 0.0 unx 55140 b- defN 81-Jan-01 01:01 assets/public/chunk-PQR5WPAM.js.map │ -rw-r--r-- 0.0 unx 1445 b- defN 81-Jan-01 01:01 assets/public/chunk-QBGCTL24.js │ -rw-r--r-- 0.0 unx 2946 b- defN 81-Jan-01 01:01 assets/public/chunk-QBGCTL24.js.map │ -rw-r--r-- 0.0 unx 1558 b- defN 81-Jan-01 01:01 assets/public/chunk-QOJGSMZM.js │ -rw-r--r-- 0.0 unx 4533 b- defN 81-Jan-01 01:01 assets/public/chunk-QOJGSMZM.js.map │ -rw-r--r-- 0.0 unx 2835 b- defN 81-Jan-01 01:01 assets/public/chunk-QXGG4PL2.js │ @@ -333,16 +327,14 @@ │ -rw-r--r-- 0.0 unx 6496 b- defN 81-Jan-01 01:01 assets/public/chunk-RKZ7SXWB.js.map │ -rw-r--r-- 0.0 unx 26574 b- defN 81-Jan-01 01:01 assets/public/chunk-SBPDLBVD.js │ -rw-r--r-- 0.0 unx 91206 b- defN 81-Jan-01 01:01 assets/public/chunk-SBPDLBVD.js.map │ -rw-r--r-- 0.0 unx 10546 b- defN 81-Jan-01 01:01 assets/public/chunk-SJ7MG42N.js │ -rw-r--r-- 0.0 unx 15302 b- defN 81-Jan-01 01:01 assets/public/chunk-SJ7MG42N.js.map │ -rw-r--r-- 0.0 unx 997 b- defN 81-Jan-01 01:01 assets/public/chunk-SLMGX7CW.js │ -rw-r--r-- 0.0 unx 93 b- defN 81-Jan-01 01:01 assets/public/chunk-SLMGX7CW.js.map │ --rw-r--r-- 0.0 unx 67165 b- defN 81-Jan-01 01:01 assets/public/chunk-TJDV7M2I.js │ --rw-r--r-- 0.0 unx 271518 b- defN 81-Jan-01 01:01 assets/public/chunk-TJDV7M2I.js.map │ -rw-r--r-- 0.0 unx 43005 b- defN 81-Jan-01 01:01 assets/public/chunk-TKAMWYJP.js │ -rw-r--r-- 0.0 unx 171587 b- defN 81-Jan-01 01:01 assets/public/chunk-TKAMWYJP.js.map │ -rw-r--r-- 0.0 unx 5690 b- defN 81-Jan-01 01:01 assets/public/chunk-TN6ZV5G7.js │ -rw-r--r-- 0.0 unx 20569 b- defN 81-Jan-01 01:01 assets/public/chunk-TN6ZV5G7.js.map │ -rw-r--r-- 0.0 unx 25920 b- defN 81-Jan-01 01:01 assets/public/chunk-TP2NJOZF.js │ -rw-r--r-- 0.0 unx 95670 b- defN 81-Jan-01 01:01 assets/public/chunk-TP2NJOZF.js.map │ -rw-r--r-- 0.0 unx 22042 b- defN 81-Jan-01 01:01 assets/public/chunk-TRL2N7WU.js │ @@ -351,56 +343,64 @@ │ -rw-r--r-- 0.0 unx 20008 b- defN 81-Jan-01 01:01 assets/public/chunk-TXK67HLH.js.map │ -rw-r--r-- 0.0 unx 2055 b- defN 81-Jan-01 01:01 assets/public/chunk-UFA5CYAZ.js │ -rw-r--r-- 0.0 unx 7786 b- defN 81-Jan-01 01:01 assets/public/chunk-UFA5CYAZ.js.map │ -rw-r--r-- 0.0 unx 335 b- defN 81-Jan-01 01:01 assets/public/chunk-UHJC7PJM.js │ -rw-r--r-- 0.0 unx 680 b- defN 81-Jan-01 01:01 assets/public/chunk-UHJC7PJM.js.map │ -rw-r--r-- 0.0 unx 17938 b- defN 81-Jan-01 01:01 assets/public/chunk-UMDDCTK2.js │ -rw-r--r-- 0.0 unx 62372 b- defN 81-Jan-01 01:01 assets/public/chunk-UMDDCTK2.js.map │ +-rw-r--r-- 0.0 unx 84003 b- defN 81-Jan-01 01:01 assets/public/chunk-UQLLTF4E.js │ +-rw-r--r-- 0.0 unx 210426 b- defN 81-Jan-01 01:01 assets/public/chunk-UQLLTF4E.js.map │ -rw-r--r-- 0.0 unx 16416 b- defN 81-Jan-01 01:01 assets/public/chunk-URDPZMVD.js │ -rw-r--r-- 0.0 unx 31642 b- defN 81-Jan-01 01:01 assets/public/chunk-URDPZMVD.js.map │ -rw-r--r-- 0.0 unx 88801 b- defN 81-Jan-01 01:01 assets/public/chunk-UTQXOQR6.js │ -rw-r--r-- 0.0 unx 168903 b- defN 81-Jan-01 01:01 assets/public/chunk-UTQXOQR6.js.map │ -rw-r--r-- 0.0 unx 594 b- defN 81-Jan-01 01:01 assets/public/chunk-UVSMMNVI.js │ -rw-r--r-- 0.0 unx 2136 b- defN 81-Jan-01 01:01 assets/public/chunk-UVSMMNVI.js.map │ -rw-r--r-- 0.0 unx 12937 b- defN 81-Jan-01 01:01 assets/public/chunk-UXI3O75E.js │ -rw-r--r-- 0.0 unx 61703 b- defN 81-Jan-01 01:01 assets/public/chunk-UXI3O75E.js.map │ -rw-r--r-- 0.0 unx 1341 b- defN 81-Jan-01 01:01 assets/public/chunk-V2RAQUZK.js │ -rw-r--r-- 0.0 unx 8779 b- defN 81-Jan-01 01:01 assets/public/chunk-V2RAQUZK.js.map │ -rw-r--r-- 0.0 unx 33414 b- defN 81-Jan-01 01:01 assets/public/chunk-V74RJRMS.js │ -rw-r--r-- 0.0 unx 112678 b- defN 81-Jan-01 01:01 assets/public/chunk-V74RJRMS.js.map │ -rw-r--r-- 0.0 unx 8906 b- defN 81-Jan-01 01:01 assets/public/chunk-VAUX3UM4.js │ -rw-r--r-- 0.0 unx 14186 b- defN 81-Jan-01 01:01 assets/public/chunk-VAUX3UM4.js.map │ +-rw-r--r-- 0.0 unx 3103 b- defN 81-Jan-01 01:01 assets/public/chunk-VH75GC5P.js │ +-rw-r--r-- 0.0 unx 9467 b- defN 81-Jan-01 01:01 assets/public/chunk-VH75GC5P.js.map │ -rw-r--r-- 0.0 unx 8884 b- defN 81-Jan-01 01:01 assets/public/chunk-VKAEHVNS.js │ -rw-r--r-- 0.0 unx 45001 b- defN 81-Jan-01 01:01 assets/public/chunk-VKAEHVNS.js.map │ +-rw-r--r-- 0.0 unx 30649 b- defN 81-Jan-01 01:01 assets/public/chunk-VQZLIIQ7.js │ +-rw-r--r-- 0.0 unx 110501 b- defN 81-Jan-01 01:01 assets/public/chunk-VQZLIIQ7.js.map │ -rw-r--r-- 0.0 unx 32137 b- defN 81-Jan-01 01:01 assets/public/chunk-VW4V5P53.js │ -rw-r--r-- 0.0 unx 143700 b- defN 81-Jan-01 01:01 assets/public/chunk-VW4V5P53.js.map │ -rw-r--r-- 0.0 unx 20308 b- defN 81-Jan-01 01:01 assets/public/chunk-WA3HPSFI.js │ -rw-r--r-- 0.0 unx 30377 b- defN 81-Jan-01 01:01 assets/public/chunk-WA3HPSFI.js.map │ -rw-r--r-- 0.0 unx 483 b- defN 81-Jan-01 01:01 assets/public/chunk-WD2BQIDZ.js │ -rw-r--r-- 0.0 unx 4619 b- defN 81-Jan-01 01:01 assets/public/chunk-WD2BQIDZ.js.map │ -rw-r--r-- 0.0 unx 770 b- defN 81-Jan-01 01:01 assets/public/chunk-XU2E3I7U.js │ -rw-r--r-- 0.0 unx 2780 b- defN 81-Jan-01 01:01 assets/public/chunk-XU2E3I7U.js.map │ -rw-r--r-- 0.0 unx 307408 b- defN 81-Jan-01 01:01 assets/public/chunk-Y3NEBWGS.js │ -rw-r--r-- 0.0 unx 1167768 b- defN 81-Jan-01 01:01 assets/public/chunk-Y3NEBWGS.js.map │ -rw-r--r-- 0.0 unx 426 b- defN 81-Jan-01 01:01 assets/public/chunk-Z5NQ6E6P.js │ -rw-r--r-- 0.0 unx 949 b- defN 81-Jan-01 01:01 assets/public/chunk-Z5NQ6E6P.js.map │ -rw-r--r-- 0.0 unx 4299 b- defN 81-Jan-01 01:01 assets/public/chunk-Z64B45LV.js │ -rw-r--r-- 0.0 unx 10545 b- defN 81-Jan-01 01:01 assets/public/chunk-Z64B45LV.js.map │ +-rw-r--r-- 0.0 unx 130223 b- defN 81-Jan-01 01:01 assets/public/chunk-ZBYY2JLW.js │ +-rw-r--r-- 0.0 unx 206546 b- defN 81-Jan-01 01:01 assets/public/chunk-ZBYY2JLW.js.map │ -rw-r--r-- 0.0 unx 3243 b- defN 81-Jan-01 01:01 assets/public/chunk-ZCISRLM3.js │ -rw-r--r-- 0.0 unx 11375 b- defN 81-Jan-01 01:01 assets/public/chunk-ZCISRLM3.js.map │ -rw-r--r-- 0.0 unx 676 b- defN 81-Jan-01 01:01 assets/public/chunk-ZCJ6XKWS.js │ -rw-r--r-- 0.0 unx 2139 b- defN 81-Jan-01 01:01 assets/public/chunk-ZCJ6XKWS.js.map │ -rw-r--r-- 0.0 unx 4561 b- defN 81-Jan-01 01:01 assets/public/chunk-ZPHWHN2X.js │ -rw-r--r-- 0.0 unx 10919 b- defN 81-Jan-01 01:01 assets/public/chunk-ZPHWHN2X.js.map │ +-rw-r--r-- 0.0 unx 65318 b- defN 81-Jan-01 01:01 assets/public/chunk-ZPIMGF6Z.js │ +-rw-r--r-- 0.0 unx 180014 b- defN 81-Jan-01 01:01 assets/public/chunk-ZPIMGF6Z.js.map │ -rw-r--r-- 0.0 unx 10801 b- defN 81-Jan-01 01:01 assets/public/chunk-ZQPHFDPR.js │ -rw-r--r-- 0.0 unx 41620 b- defN 81-Jan-01 01:01 assets/public/chunk-ZQPHFDPR.js.map │ -rw-r--r-- 0.0 unx 1060 b- defN 81-Jan-01 01:01 assets/public/chunk-ZR6RFLU7.js │ -rw-r--r-- 0.0 unx 3183 b- defN 81-Jan-01 01:01 assets/public/chunk-ZR6RFLU7.js.map │ --rw-r--r-- 0.0 unx 130223 b- defN 81-Jan-01 01:01 assets/public/chunk-ZWF7G3DQ.js │ --rw-r--r-- 0.0 unx 206546 b- defN 81-Jan-01 01:01 assets/public/chunk-ZWF7G3DQ.js.map │ -rw-r--r-- 0.0 unx 1344 b- defN 81-Jan-01 01:01 assets/public/collapsible.component-CBYP37WQ.css.map │ -rw-r--r-- 0.0 unx 210 b- defN 81-Jan-01 01:01 assets/public/color-input.component-RUVBKWVP.css.map │ -rw-r--r-- 0.0 unx 1638 b- defN 81-Jan-01 01:01 assets/public/config-form.component-FM6QXSE2.css.map │ -rw-r--r-- 0.0 unx 3405 b- defN 81-Jan-01 01:01 assets/public/config-page.component-QIQF5R3W.css.map │ -rw-r--r-- 0.0 unx 3342 b- defN 81-Jan-01 01:01 assets/public/config-section.component-Q36LTOMV.css.map │ -rw-r--r-- 0.0 unx 1343 b- defN 81-Jan-01 01:01 assets/public/config-sound-form.component-SGP4LNG3.css.map │ -rw-r--r-- 0.0 unx 1058 b- defN 81-Jan-01 01:01 assets/public/contrast-test.component-WMPSQOT7.css.map │ @@ -490,16 +490,16 @@ │ -rw-r--r-- 0.0 unx 1777 b- defN 81-Jan-01 01:01 assets/public/issue-provider-setup-overview.component-R4UMPHXJ.css.map │ -rw-r--r-- 0.0 unx 1899 b- defN 81-Jan-01 01:01 assets/public/issue-provider-tab.component-IAK65AKV.css.map │ -rw-r--r-- 0.0 unx 325 b- defN 81-Jan-01 01:01 assets/public/jira-additional-cfg.component-42ZCNEAB.css.map │ -rw-r--r-- 0.0 unx 2327 b- defN 81-Jan-01 01:01 assets/public/jira-issue-content.component-UYCKI7MC.css.map │ -rw-r--r-- 0.0 unx 393 b- defN 81-Jan-01 01:01 assets/public/jira-link.component-AKJUVRHV.css.map │ -rw-r--r-- 0.0 unx 1877 b- defN 81-Jan-01 01:01 assets/public/lazy-chart.component-Q72Z5DAO.css.map │ -rw-r--r-- 0.0 unx 8774 b- defN 81-Jan-01 01:01 assets/public/magic-side-nav.component-C33IJRYT.css.map │ --rw-r--r-- 0.0 unx 904214 b- defN 81-Jan-01 01:01 assets/public/main-JUHT2LPO.js │ --rw-r--r-- 0.0 unx 3058391 b- defN 81-Jan-01 01:01 assets/public/main-JUHT2LPO.js.map │ +-rw-r--r-- 0.0 unx 904214 b- defN 81-Jan-01 01:01 assets/public/main-WYUKMRIM.js │ +-rw-r--r-- 0.0 unx 3058391 b- defN 81-Jan-01 01:01 assets/public/main-WYUKMRIM.js.map │ -rw-r--r-- 0.0 unx 13327 b- defN 81-Jan-01 01:01 assets/public/main-header.component-7SP3PJ76.css.map │ -rw-r--r-- 0.0 unx 926 b- defN 81-Jan-01 01:01 assets/public/manifest.json │ -rw-r--r-- 0.0 unx 356840 b- defN 81-Jan-01 01:01 assets/public/media/MaterialIcons-Regular-5HNTTCIU.ttf │ -rw-r--r-- 0.0 unx 11076 b- defN 81-Jan-01 01:01 assets/public/media/open-sans-cyrillic-300-normal-NXEWA4HB.woff2 │ -rw-r--r-- 0.0 unx 9056 b- defN 81-Jan-01 01:01 assets/public/media/open-sans-cyrillic-300-normal-UZNP3MNX.woff │ -rw-r--r-- 0.0 unx 10724 b- defN 81-Jan-01 01:01 assets/public/media/open-sans-cyrillic-400-italic-74FQI23K.woff │ -rw-r--r-- 0.0 unx 12596 b- defN 81-Jan-01 01:01 assets/public/media/open-sans-cyrillic-400-italic-SOA5CBZH.woff2 │ @@ -1438,8 +1438,8 @@ │ -rw---- 0.0 fat 308 b- defN 81-Jan-01 01:01 res/zn.xml │ -rw---- 0.0 fat 448 b- defN 81-Jan-01 01:01 res/zp.xml │ -rw---- 0.0 fat 464 b- defN 81-Jan-01 01:01 res/zq.xml │ -rw---- 0.0 fat 506416 b- stor 81-Jan-01 01:01 resources.arsc │ -rw---- 2.0 fat 148125 b- defN 81-Jan-01 01:01 META-INF/F4E24334.SF │ -rw---- 2.0 fat 1342 b- defN 81-Jan-01 01:01 META-INF/F4E24334.RSA │ -rw---- 2.0 fat 147998 b- defN 81-Jan-01 01:01 META-INF/MANIFEST.MF │ -1443 files, 45555078 bytes uncompressed, 15561915 bytes compressed: 65.8% │ +1443 files, 45555078 bytes uncompressed, 15561921 bytes compressed: 65.8% ├── assets/public/ngsw.json │ ├── Pretty-printed │ │┄ Similarity: 0.9320355885961513% │ │┄ Differences: {"'assetGroups'": "{0: {'urls': {insert: [(16, '/chunk-5QSHRBB3.js'), (41, '/chunk-EVT7NY2D.js'), " │ │┄ "(58, '/chunk-IQQZUO6I.js'), (70, '/chunk-LTHMW6C4.js'), (84, " │ │┄ "'/chunk-PEQBECIR.js'), (102, '/chunk-UQLLTF4E.js'), (110, " │ │┄ "'/chunk-VH75GC5P.js'), (112, '/chunk-VQZLIIQ7.js'), (120, " │ │┄ "'/chunk-ZBYY2JLW.js'), (124, '/chunk-ZPIMGF6Z.js'), (129, " │ │┄ "'/main-WYUKMRIM.js')], delete: [129, 126, 97, 81, 62, 47, 36, 32, 26, 21, […] │ │ @@ -14,135 +14,135 @@ │ │ "/chunk-2NYJ54WT.js", │ │ "/chunk-352ZKRK2.js", │ │ "/chunk-3EOVUPIY.js", │ │ "/chunk-3JWM7PKT.js", │ │ "/chunk-3UB54IM4.js", │ │ "/chunk-3Z2FNV42.js", │ │ "/chunk-44W6YCXP.js", │ │ - "/chunk-4ANWUG5O.js", │ │ "/chunk-4LZ5GS7Z.js", │ │ "/chunk-4MDX2LQL.js", │ │ "/chunk-4RA25WAL.js", │ │ "/chunk-52E4OR7C.js", │ │ "/chunk-53XHIVHI.js", │ │ "/chunk-54O5TGTU.js", │ │ "/chunk-5EW7IJ3A.js", │ │ + "/chunk-5QSHRBB3.js", │ │ "/chunk-5WWLWJDY.js", │ │ "/chunk-62BQDC26.js", │ │ "/chunk-63CPB6EG.js", │ │ "/chunk-66UQFYBZ.js", │ │ - "/chunk-6BTBXX5V.js", │ │ "/chunk-6HMGLSTJ.js", │ │ "/chunk-6ILFT54O.js", │ │ "/chunk-6M43B367.js", │ │ "/chunk-6OTPDFIS.js", │ │ - "/chunk-77ZSDKZD.js", │ │ "/chunk-7AEWECSO.js", │ │ "/chunk-7QJOIGWD.js", │ │ "/chunk-A7MOHWFK.js", │ │ "/chunk-AAAAG6LL.js", │ │ "/chunk-ABDFPP75.js", │ │ - "/chunk-AHUFPQ34.js", │ │ "/chunk-ATRC5YAB.js", │ │ "/chunk-AW23F5KX.js", │ │ "/chunk-BEPRWKFF.js", │ │ - "/chunk-BM5UM4I2.js", │ │ "/chunk-BMNBNE4Q.js", │ │ "/chunk-BR4DJPMY.js", │ │ "/chunk-CTKG63YM.js", │ │ "/chunk-DBKAVYUF.js", │ │ "/chunk-DP7GTZUF.js", │ │ "/chunk-DU3YCOM3.js", │ │ "/chunk-DX2IO2N5.js", │ │ "/chunk-DXQO57I2.js", │ │ + "/chunk-EVT7NY2D.js", │ │ "/chunk-EX3XCQ6H.js", │ │ "/chunk-G25OYBCW.js", │ │ - "/chunk-GAB5FZMM.js", │ │ "/chunk-GT73NP2G.js", │ │ "/chunk-GZFWFOBC.js", │ │ "/chunk-HB5KHHRQ.js", │ │ "/chunk-HPLGUE6W.js", │ │ "/chunk-HR6HBFFX.js", │ │ "/chunk-HZ5GTVY7.js", │ │ "/chunk-I22KLOPA.js", │ │ "/chunk-I2ZIWQWB.js", │ │ "/chunk-I55AAMCK.js", │ │ "/chunk-ICEXZO6Q.js", │ │ "/chunk-IGCLYYTY.js", │ │ "/chunk-IHQL4CLN.js", │ │ "/chunk-IJCJ6COC.js", │ │ "/chunk-IL5OTZXM.js", │ │ - "/chunk-J754SOWT.js", │ │ + "/chunk-IQQZUO6I.js", │ │ "/chunk-JCC3ZHM6.js", │ │ "/chunk-JSX6VTWN.js", │ │ "/chunk-JWEVU4VV.js", │ │ "/chunk-K5GRC76V.js", │ │ "/chunk-K5WKWNP7.js", │ │ "/chunk-KGXGY3N2.js", │ │ "/chunk-KRVE43WZ.js", │ │ "/chunk-L3HKLZJ5.js", │ │ "/chunk-LIWG7NLG.js", │ │ "/chunk-LLYEAZFH.js", │ │ "/chunk-LM73TW6C.js", │ │ + "/chunk-LTHMW6C4.js", │ │ "/chunk-LWOYY253.js", │ │ "/chunk-MAQCQPYF.js", │ │ "/chunk-MTAMSYXR.js", │ │ "/chunk-NAC3HR42.js", │ │ "/chunk-NAWYCYT3.js", │ │ "/chunk-NBHHRDIC.js", │ │ "/chunk-NNQWYSOU.js", │ │ - "/chunk-NRU3TRWE.js", │ │ "/chunk-NW24E2WJ.js", │ │ "/chunk-O55BJVFS.js", │ │ "/chunk-O73YLTLO.js", │ │ "/chunk-OKE7ST2R.js", │ │ "/chunk-P374KFOI.js", │ │ "/chunk-P5ZILOHA.js", │ │ + "/chunk-PEQBECIR.js", │ │ "/chunk-PQR5WPAM.js", │ │ "/chunk-QBGCTL24.js", │ │ "/chunk-QOJGSMZM.js", │ │ "/chunk-QXGG4PL2.js", │ │ "/chunk-RHU3AIGY.js", │ │ "/chunk-RKZ7SXWB.js", │ │ "/chunk-SBPDLBVD.js", │ │ "/chunk-SJ7MG42N.js", │ │ "/chunk-SLMGX7CW.js", │ │ - "/chunk-TJDV7M2I.js", │ │ "/chunk-TKAMWYJP.js", │ │ "/chunk-TN6ZV5G7.js", │ │ "/chunk-TP2NJOZF.js", │ │ "/chunk-TRL2N7WU.js", │ │ "/chunk-TXK67HLH.js", │ │ "/chunk-UFA5CYAZ.js", │ │ "/chunk-UHJC7PJM.js", │ │ "/chunk-UMDDCTK2.js", │ │ + "/chunk-UQLLTF4E.js", │ │ "/chunk-URDPZMVD.js", │ │ "/chunk-UTQXOQR6.js", │ │ "/chunk-UVSMMNVI.js", │ │ "/chunk-UXI3O75E.js", │ │ "/chunk-V2RAQUZK.js", │ │ "/chunk-V74RJRMS.js", │ │ "/chunk-VAUX3UM4.js", │ │ + "/chunk-VH75GC5P.js", │ │ "/chunk-VKAEHVNS.js", │ │ + "/chunk-VQZLIIQ7.js", │ │ "/chunk-VW4V5P53.js", │ │ "/chunk-WA3HPSFI.js", │ │ "/chunk-WD2BQIDZ.js", │ │ "/chunk-XU2E3I7U.js", │ │ "/chunk-Y3NEBWGS.js", │ │ "/chunk-Z5NQ6E6P.js", │ │ "/chunk-Z64B45LV.js", │ │ + "/chunk-ZBYY2JLW.js", │ │ "/chunk-ZCISRLM3.js", │ │ "/chunk-ZCJ6XKWS.js", │ │ "/chunk-ZPHWHN2X.js", │ │ + "/chunk-ZPIMGF6Z.js", │ │ "/chunk-ZQPHFDPR.js", │ │ "/chunk-ZR6RFLU7.js", │ │ - "/chunk-ZWF7G3DQ.js", │ │ "/favicon.ico", │ │ "/index.html", │ │ - "/main-JUHT2LPO.js", │ │ + "/main-WYUKMRIM.js", │ │ "/manifest.json", │ │ "/polyfills-7T2IZYD3.js", │ │ "/styles-MUUYMKWO.css", │ │ "/worker-74WKLSIJ.js" │ │ ] │ │ }, │ │ { │ │ @@ -448,135 +448,135 @@ │ │ "/chunk-2NYJ54WT.js": "6b2058100c2940dca4d746dd3f5d18ab6c115902", │ │ "/chunk-352ZKRK2.js": "697cfd42f8292727ee32ca2500a540c7be4b5be0", │ │ "/chunk-3EOVUPIY.js": "145fe8152cd8949553f6cc8fd2f87d09b5577cb7", │ │ "/chunk-3JWM7PKT.js": "758aebbd32678e7101e198ec55e9389fd8430bcd", │ │ "/chunk-3UB54IM4.js": "6dd0205087c3166a305b1af5ec8ad771cd5ce0e3", │ │ "/chunk-3Z2FNV42.js": "f791413606b709ffda23c76bb4ce76c6c0fb49e4", │ │ "/chunk-44W6YCXP.js": "2c4e00317533990b932670c522f6216973a0f7e2", │ │ - "/chunk-4ANWUG5O.js": "50c5b0e0fad186d70829eb8ea8af25b4716369e8", │ │ "/chunk-4LZ5GS7Z.js": "4d2f841f752ba39c28013e6f876870bce1d6196f", │ │ "/chunk-4MDX2LQL.js": "239f37d0028f1680b77f49a370f5b9f5bd61ca3a", │ │ "/chunk-4RA25WAL.js": "58cec271ce6d3fcbb2f77b09b73a7b456a0111bb", │ │ "/chunk-52E4OR7C.js": "8fc86f9c0d64a0b061a7d2427d63b32dafa02419", │ │ "/chunk-53XHIVHI.js": "32998c2d1df02f8ddf046c5f8bbacd7eedacd5cd", │ │ "/chunk-54O5TGTU.js": "04dfad52f1fee2079460a53ca30531fd2cb47c90", │ │ "/chunk-5EW7IJ3A.js": "848ec665cd4046c77b009a5387a5f537d981621c", │ │ + "/chunk-5QSHRBB3.js": "7c528c4791e1d78e3dc1f1e42d6ac54c2bf5f9d6", │ │ "/chunk-5WWLWJDY.js": "188e6e04e1a03b1817ec3a867038723436a383a8", │ │ "/chunk-62BQDC26.js": "fe9e8e8fdbebe680805ba4540ec8c7f9386d02a9", │ │ "/chunk-63CPB6EG.js": "ab847067a4b15a3cc36d10b7fd1ff88f4c3166a9", │ │ "/chunk-66UQFYBZ.js": "d41ed54fdcdfe004d83e43daf71160cb8d30aef0", │ │ - "/chunk-6BTBXX5V.js": "0af5fed8da6a479dd974f60fef8da5e28db58ee4", │ │ "/chunk-6HMGLSTJ.js": "2138ea54dc5b0b8d361a4486c9a0bb15ee996d62", │ │ "/chunk-6ILFT54O.js": "7c1452729a81c7dfaae0029bd4764563c8c431c5", │ │ "/chunk-6M43B367.js": "1dab88b3ff3d15fede27ef6a82791e1fad91f119", │ │ "/chunk-6OTPDFIS.js": "1535b26ea6f159690f04907552f5af359d94ea86", │ │ - "/chunk-77ZSDKZD.js": "992e6fd512d221328c381ef2e159da0727414684", │ │ "/chunk-7AEWECSO.js": "697e40501c5c81d4995eb3ebf1e96c17341ef70a", │ │ "/chunk-7QJOIGWD.js": "03e50a4ab1647aa1dae0c8951f566bda8f8d748f", │ │ "/chunk-A7MOHWFK.js": "d9ff6f94cb246fa39f7771bc4ed17c66cb1dd570", │ │ "/chunk-AAAAG6LL.js": "427a83a75262f74218ec0c5ab05d473e2be9dc6a", │ │ "/chunk-ABDFPP75.js": "a1c2da6b140d024b0d76a2129f26a17712d90e82", │ │ - "/chunk-AHUFPQ34.js": "0a1198906c129235e5f00d661f761bb1b97eb28f", │ │ "/chunk-ATRC5YAB.js": "e6d9f48fd2e10ea5d15a52fcad35b2313c663961", │ │ "/chunk-AW23F5KX.js": "8bdc9d74ed521bd117d1e9f79e95bd4a40853456", │ │ "/chunk-BEPRWKFF.js": "caeda38a849dd36a98f56e78ec5aa621f28e407f", │ │ - "/chunk-BM5UM4I2.js": "93420fb1e4a423508176b19a4bf9967db16597ed", │ │ "/chunk-BMNBNE4Q.js": "78e5f9fb8796de1f4d2894f2c000f10cfa749231", │ │ "/chunk-BR4DJPMY.js": "b834e52bd84d6948e5b6a2a484b6e957604f3188", │ │ "/chunk-CTKG63YM.js": "76ecec62ed3c04113fb53739b4911e80cea76285", │ │ "/chunk-DBKAVYUF.js": "6584b77d2d999b4ffa3ed40aae90c48540af29f6", │ │ "/chunk-DP7GTZUF.js": "99cfee18e25c71d957b89ec50c694c433b573874", │ │ "/chunk-DU3YCOM3.js": "2f8066161a87885890a4e62dd99e5b5bc3610ad5", │ │ "/chunk-DX2IO2N5.js": "2c56f2d5155314cc54ea4c8c91262828edbf8a59", │ │ "/chunk-DXQO57I2.js": "d503055be13e0daa51c46cb1ad8082e7edb089d4", │ │ + "/chunk-EVT7NY2D.js": "4b9f0cbc22e49bf1e0133a9f1a3904f768f2779c", │ │ "/chunk-EX3XCQ6H.js": "031ec865196f12bfcc856cf085119a83f513034f", │ │ "/chunk-G25OYBCW.js": "af5ad8c3f042537987a380f0a10ff41a4ad303a4", │ │ - "/chunk-GAB5FZMM.js": "faf1cac24f135bd415d2ac3ea77445e68868b886", │ │ "/chunk-GT73NP2G.js": "c1bc9c2bd563805c919d627c94dfd11f5eb282af", │ │ "/chunk-GZFWFOBC.js": "d62a321e78d8d334c5a4d13456a37cc941e9ef3c", │ │ "/chunk-HB5KHHRQ.js": "fa64737c50d438a32c350f8db91a08b6a4a1c810", │ │ "/chunk-HPLGUE6W.js": "2dc32da5af36337614d3faf933cbd07313f5a006", │ │ "/chunk-HR6HBFFX.js": "72688363437d51eef3c93df5dbb512d6dc8e99ab", │ │ "/chunk-HZ5GTVY7.js": "500c69d2880d05388dd933733a3140f32c8761e7", │ │ "/chunk-I22KLOPA.js": "f8412dd035871354b71cdc2337e33e085bd67ccf", │ │ "/chunk-I2ZIWQWB.js": "4b454e921451837d0d5bb4f9606f601eab49bf37", │ │ "/chunk-I55AAMCK.js": "ca6ab938d4d888abb86c971f19512a467f406993", │ │ "/chunk-ICEXZO6Q.js": "2d632f5c1cd2cefe1b36c509606934e2ab2e0e0b", │ │ "/chunk-IGCLYYTY.js": "54b5ed7ad6a1fcafdb7e1e41263b2a568dfb51f4", │ │ "/chunk-IHQL4CLN.js": "41eeea01284b6b74d1737fdb85a2103f69d5c842", │ │ "/chunk-IJCJ6COC.js": "ddd4976a0a76c51a5d7e459b10ee052cb9700c08", │ │ "/chunk-IL5OTZXM.js": "fc7be380c899e5149297a736f96ae1e74855fc3a", │ │ - "/chunk-J754SOWT.js": "fd6e3db174e780da8a05b79a3d3cbb28c49c5301", │ │ + "/chunk-IQQZUO6I.js": "36a49398dc2a81c1c09810f289affead31e4ae9d", │ │ "/chunk-JCC3ZHM6.js": "8605708c6333bb6c1e6e9b918cd3b7b27acd7074", │ │ "/chunk-JSX6VTWN.js": "952b396f15155c029f8ad6fda69570a330c21071", │ │ "/chunk-JWEVU4VV.js": "d5f16f8b751288e0298d149ea1d6bc2b1b38f75c", │ │ "/chunk-K5GRC76V.js": "5a9d3104107d8ae44743f223d08652e9ea5371aa", │ │ "/chunk-K5WKWNP7.js": "fcbe8e50cbebdc7250aaf2b4417d50e69d1f5979", │ │ "/chunk-KGXGY3N2.js": "5adc173afc739778513a7c1b959559fdcb9b15f6", │ │ "/chunk-KRVE43WZ.js": "d139419aacc6e1d5d587d78823537769b669fc70", │ │ "/chunk-L3HKLZJ5.js": "804636a5e972ef1d1a40e5d3600d20190268ae73", │ │ "/chunk-LIWG7NLG.js": "f0d6640db16a0696aff163915fb1f768d836427a", │ │ "/chunk-LLYEAZFH.js": "692d7eecf2cbb546a64205846c547f8761112a74", │ │ "/chunk-LM73TW6C.js": "8613de29c183a6b509f3ccc1dc6d9c18f6898fd7", │ │ + "/chunk-LTHMW6C4.js": "4c38c86d64830a5044eaabd791a6bd0fa415f3bd", │ │ "/chunk-LWOYY253.js": "3171432ff691afc21af95c8470fbacdbbdc660fb", │ │ "/chunk-MAQCQPYF.js": "8962f5bde977491e99943d87df7a9efbac7264a5", │ │ "/chunk-MTAMSYXR.js": "02de2bbdfa7dc25351c5a95aafe06b1d0eb937d1", │ │ "/chunk-NAC3HR42.js": "c6719cf2b184b81ea5918c54460404cabc00c26a", │ │ "/chunk-NAWYCYT3.js": "4a319fad2069886c28b6aaaa46d17fe7bf361ebf", │ │ "/chunk-NBHHRDIC.js": "00a6bd0d5ef0276528cf7d28ce3655ba6a00d7a2", │ │ "/chunk-NNQWYSOU.js": "b10c8cf6ff331f377c0a009ee72a98adfed4b60d", │ │ - "/chunk-NRU3TRWE.js": "fc84bbaa479d45d106054554b30ee5e4b8f11678", │ │ "/chunk-NW24E2WJ.js": "3670a4e71bcd3332eaca865cada75ad5aad4b652", │ │ "/chunk-O55BJVFS.js": "d0ccd1c3fad74f914cf6ffc9626927bf91923f31", │ │ "/chunk-O73YLTLO.js": "95ec738ba1ae90cce8f4768bbaf91a702b0dacc2", │ │ "/chunk-OKE7ST2R.js": "a92b0efca8c50b753085fe2bb66fdf8e3f48e86a", │ │ "/chunk-P374KFOI.js": "8c780c90e5a90fc16389f17294a079ab75586f45", │ │ "/chunk-P5ZILOHA.js": "823c121c799e01397852a6939d95ee4f75b18f17", │ │ + "/chunk-PEQBECIR.js": "de5f1f6b160c4b296c5750649c28f289b5f7a40d", │ │ "/chunk-PQR5WPAM.js": "6e70d104d5cdd3f0a8f57ef24f7573693f5ff039", │ │ "/chunk-QBGCTL24.js": "8863bfe487853e032694eb20aa74d67f172ece86", │ │ "/chunk-QOJGSMZM.js": "5956b600a92f834384c711b268b89a88991e8255", │ │ "/chunk-QXGG4PL2.js": "b836a4c525c2c352e03176ad43cc570f5655f423", │ │ "/chunk-RHU3AIGY.js": "70f3005532610e087402505fa642745a0759fb44", │ │ "/chunk-RKZ7SXWB.js": "dbc04f04c9d1ff5ebe648ab7b939fa0a82a67c61", │ │ "/chunk-SBPDLBVD.js": "750fe3923581f5d51179f4f45249bce598db34ce", │ │ "/chunk-SJ7MG42N.js": "7cab2cd06583e588b4e60e5c864b23f87a67e4d5", │ │ "/chunk-SLMGX7CW.js": "6e793b472e3d29f8f7d5390134d80a9fdbf6344a", │ │ - "/chunk-TJDV7M2I.js": "9171bd22600f9529ea1c82c0a0f2550db38cc9f9", │ │ "/chunk-TKAMWYJP.js": "89cc39348b5dbd92c5644735b5fa7a033ea06619", │ │ "/chunk-TN6ZV5G7.js": "b11c4fb7caa4481a9167c74cb9d12d2ab4e4e436", │ │ "/chunk-TP2NJOZF.js": "f75afbe85ad0000373d8e5427ddda06f3d6b2406", │ │ "/chunk-TRL2N7WU.js": "759d3bc17e1f7d72b5e74d569c14385dd06b0b5b", │ │ "/chunk-TXK67HLH.js": "cecd8ba11bb97a0b7244c42559becd393a606418", │ │ "/chunk-UFA5CYAZ.js": "321128f06f695eb2fd6fa45e80619f4c86f114b9", │ │ "/chunk-UHJC7PJM.js": "5b919596993bfbf3fc71adc2144d349d34001bed", │ │ "/chunk-UMDDCTK2.js": "accb2927814804871431416db4401d096c39d67b", │ │ + "/chunk-UQLLTF4E.js": "ffbfa3deca1635c3f27e894c402288c41e58935c", │ │ "/chunk-URDPZMVD.js": "f07bf1542109f2edbd8b0368c83dac1d5add8f8a", │ │ "/chunk-UTQXOQR6.js": "1c182cf123dfb29ca1cf258e450d3ea07698c760", │ │ "/chunk-UVSMMNVI.js": "2d76e7639bd348402f8fc28a5f275a2c7e89e90d", │ │ "/chunk-UXI3O75E.js": "cc6cc619dff4bf4cc59edc230f91247b66de8e89", │ │ "/chunk-V2RAQUZK.js": "be76a4c8f89505966e5953bd4a3c62767da50713", │ │ "/chunk-V74RJRMS.js": "b8bb0d14243305fec3d9743185ca29d26ff387f1", │ │ "/chunk-VAUX3UM4.js": "22b44a4c331cfa589b8f1a9445c10c3cedc72c15", │ │ + "/chunk-VH75GC5P.js": "7759c72c9e73feaa9f131b0de25e68b4433e4e8b", │ │ "/chunk-VKAEHVNS.js": "9dfd713ec3e66bdd28a26f80db6824de4a0e5aa1", │ │ + "/chunk-VQZLIIQ7.js": "32b746084de5758a1c7261966ed799bd7af708fa", │ │ "/chunk-VW4V5P53.js": "9a0f87f3de6e84bcaa2d4bb6c97cddf6b36491f0", │ │ "/chunk-WA3HPSFI.js": "b5ac3918c494885f3f3e9d5b5bc101bbf14f7189", │ │ "/chunk-WD2BQIDZ.js": "1fda8304503f0bfe49249d24c431f2840ca74185", │ │ "/chunk-XU2E3I7U.js": "42be333379abd934534b707aa2e0824a038af868", │ │ "/chunk-Y3NEBWGS.js": "321451090c02f1ab329f4c7b5cef805c7154daed", │ │ "/chunk-Z5NQ6E6P.js": "e3db5ab2dced9c9e734d09773608372d21d08397", │ │ "/chunk-Z64B45LV.js": "6c6d0380c622f467736f329dabbad808f6012456", │ │ + "/chunk-ZBYY2JLW.js": "6df74bd39c670f62d7df895382e64a7498c9f17c", │ │ "/chunk-ZCISRLM3.js": "674f658f96d16d27b91d8fac429e3e852cc8aa99", │ │ "/chunk-ZCJ6XKWS.js": "92a205b201b6d13a52a27a7480642d07f538e277", │ │ "/chunk-ZPHWHN2X.js": "024b5e9177e1e8712ee065c25787ea84452af84b", │ │ + "/chunk-ZPIMGF6Z.js": "70a1444b4b8efebf55d5d531c6ecb60721785a0a", │ │ "/chunk-ZQPHFDPR.js": "636ebc52a13076af1ec32cf95c7a3a515a92b8ed", │ │ "/chunk-ZR6RFLU7.js": "0534138313437429ccacce33a44e32e16bc0d5ff", │ │ - "/chunk-ZWF7G3DQ.js": "2e0261a01a4ef993b43b3f850b9377f22e8f0349", │ │ "/favicon.ico": "041b337586bb0e48da6f4fdfc846ef3594373009", │ │ - "/index.html": "8a1686d094fbe8fe5f7646d4a1c9121308bc5d95", │ │ - "/main-JUHT2LPO.js": "4d176515fe26c464609569040379105e7dfed41e", │ │ + "/index.html": "66307d09be2955cbb6e20b1f1b2855d39ec1cfe7", │ │ + "/main-WYUKMRIM.js": "f45828a2a461fe21534b6e41d81c45a24dd44a93", │ │ "/manifest.json": "94d39d23fcd194a0c89eb3bcd838730cec7cabee", │ │ "/polyfills-7T2IZYD3.js": "a8544b66093f4b40320bc816d4e78e213f9f296d", │ │ "/styles-MUUYMKWO.css": "1038a7e6454766c02eb717fde53443886cd914a7", │ │ "/worker-74WKLSIJ.js": "25cf178e252819c883edff5b7eecb329a8023090" │ │ }, │ │ "index": "/index.html", │ │ "navigationRequestStrategy": "performance", │ │ @@ -594,9 +594,9 @@ │ │ "regex": "^\\/(?:.+\\/)?[^/]*__[^/]*$" │ │ }, │ │ { │ │ "positive": false, │ │ "regex": "^\\/(?:.+\\/)?[^/]*__[^/]*\\/.*$" │ │ } │ │ ], │ │ - "timestamp": 1765798460289 │ │ + "timestamp": 1766567347162 │ │ } ├── assets/public/index.html │ @@ -7114,22 +7114,22 @@ │ 0001bc90: 3d20 7072 6f64 7563 7469 7669 7479 5469 = productivityTi │ 0001bca0: 7073 5b72 616e 646f 6d49 6e64 6578 5d5b ps[randomIndex][ │ 0001bcb0: 315d 3b0a 0a20 2020 2020 2028 6675 6e63 1];.. (func │ 0001bcc0: 7469 6f6e 2028 2920 7b7d 2928 293b 0a20 tion () {})();. │ 0001bcd0: 2020 203c 2f73 6372 6970 743e 0a20 203c . < │ 0001bce0: 6c69 6e6b 2072 656c 3d22 6d6f 6475 6c65 link rel="module │ 0001bcf0: 7072 656c 6f61 6422 2068 7265 663d 2263 preload" href="c │ -0001bd00: 6875 6e6b 2d42 4d35 554d 3449 322e 6a73 hunk-BM5UM4I2.js │ +0001bd00: 6875 6e6b 2d45 5654 374e 5932 442e 6a73 hunk-EVT7NY2D.js │ 0001bd10: 223e 3c6c 696e 6b20 7265 6c3d 226d 6f64 ">< │ 0001bf10: 2f73 6372 6970 743e 3c73 6372 6970 7420 /script>.. │ --- assets/public/main-JUHT2LPO.js.map ├── +++ assets/public/main-WYUKMRIM.js.map │┄ Files identical despite different names │ --- assets/public/main-JUHT2LPO.js ├── +++ assets/public/main-WYUKMRIM.js │┄ Files 99% similar despite different names │ ├── js-beautify {} │ │ @@ -1,11 +1,11 @@ │ │ import { │ │ a as Jy, │ │ b as H2 │ │ -} from "./chunk-BM5UM4I2.js"; │ │ +} from "./chunk-EVT7NY2D.js"; │ │ import { │ │ a as Yc, │ │ b as G2, │ │ c as qy, │ │ d as K2 │ │ } from "./chunk-PQR5WPAM.js"; │ │ import { │ │ @@ -31,15 +31,15 @@ │ │ t as zy, │ │ u as Hy, │ │ v as U2, │ │ w as bm, │ │ x as Gy, │ │ y as Ky, │ │ z as W2 │ │ -} from "./chunk-TJDV7M2I.js"; │ │ +} from "./chunk-5QSHRBB3.js"; │ │ import { │ │ a as Fa, │ │ b as Tm │ │ } from "./chunk-3JWM7PKT.js"; │ │ import { │ │ a as eS, │ │ b as bA, │ │ @@ -105,19 +105,19 @@ │ │ b as UD, │ │ c as Nb, │ │ d as d2, │ │ e as Bb, │ │ f as m2, │ │ g as Ll, │ │ h as xf │ │ -} from "./chunk-J754SOWT.js"; │ │ +} from "./chunk-VH75GC5P.js"; │ │ import { │ │ f as Er, │ │ g as Gc │ │ -} from "./chunk-NRU3TRWE.js"; │ │ +} from "./chunk-VQZLIIQ7.js"; │ │ import { │ │ a as wp, │ │ b as Ip, │ │ c as hS │ │ } from "./chunk-3EOVUPIY.js"; │ │ import { │ │ a as Tp, │ │ @@ -135,15 +135,15 @@ │ │ b as Tl │ │ } from "./chunk-IJCJ6COC.js"; │ │ import { │ │ a as mo, │ │ b as _2, │ │ k as Ir, │ │ l as Hc │ │ -} from "./chunk-ZWF7G3DQ.js"; │ │ +} from "./chunk-ZBYY2JLW.js"; │ │ import { │ │ A as bf, │ │ B as xb, │ │ C as i2, │ │ D as yf, │ │ E as n2, │ │ I as Wc, │ │ @@ -174,15 +174,15 @@ │ │ p as Ms, │ │ q as e2, │ │ v as Qe, │ │ w as Sf, │ │ x as im, │ │ y as vb, │ │ z as Tb │ │ -} from "./chunk-6BTBXX5V.js"; │ │ +} from "./chunk-IQQZUO6I.js"; │ │ import { │ │ a as Dl, │ │ b as em, │ │ c as jc │ │ } from "./chunk-AW23F5KX.js"; │ │ import "./chunk-TRL2N7WU.js"; │ │ import { │ │ @@ -13291,15 +13291,15 @@ │ │ }); │ │ var Gw, Kw = A(() => { │ │ "use strict"; │ │ zw(); │ │ Hw(); │ │ Gw = [{ │ │ path: "config", │ │ - loadComponent: () => import("./chunk-4ANWUG5O.js").then(i => i.ConfigPageComponent), │ │ + loadComponent: () => import("./chunk-ZPIMGF6Z.js").then(i => i.ConfigPageComponent), │ │ data: { │ │ page: "config" │ │ }, │ │ canActivate: [ai] │ │ }, { │ │ path: "search", │ │ loadComponent: () => import("./chunk-ATRC5YAB.js").then(i => i.SearchPageComponent), │ │ @@ -13361,22 +13361,22 @@ │ │ loadComponent: () => import("./chunk-TXK67HLH.js").then(i => i.QuickHistoryComponent), │ │ data: { │ │ page: "quick-history" │ │ }, │ │ canActivate: [Va, ai] │ │ }, { │ │ path: "tag/:id/daily-summary", │ │ - loadComponent: () => import("./chunk-GAB5FZMM.js").then(i => i.DailySummaryComponent), │ │ + loadComponent: () => import("./chunk-UQLLTF4E.js").then(i => i.DailySummaryComponent), │ │ data: { │ │ page: "daily-summary" │ │ }, │ │ canActivate: [Va, ai] │ │ }, { │ │ path: "tag/:id/daily-summary/:dayStr", │ │ - loadComponent: () => import("./chunk-GAB5FZMM.js").then(i => i.DailySummaryComponent), │ │ + loadComponent: () => import("./chunk-UQLLTF4E.js").then(i => i.DailySummaryComponent), │ │ data: { │ │ page: "daily-summary" │ │ }, │ │ canActivate: [Va, ai] │ │ }, { │ │ path: "tag/:id/metrics", │ │ loadComponent: () => import("./chunk-JWEVU4VV.js").then(i => i.MetricPageComponent), │ │ @@ -13417,41 +13417,41 @@ │ │ loadComponent: () => import("./chunk-JWEVU4VV.js").then(i => i.MetricPageComponent), │ │ data: { │ │ page: "metrics" │ │ }, │ │ canActivate: [ja, ai] │ │ }, { │ │ path: "project/:id/daily-summary", │ │ - loadComponent: () => import("./chunk-GAB5FZMM.js").then(i => i.DailySummaryComponent), │ │ + loadComponent: () => import("./chunk-UQLLTF4E.js").then(i => i.DailySummaryComponent), │ │ data: { │ │ page: "daily-summary" │ │ }, │ │ canActivate: [ja, ai] │ │ }, { │ │ path: "project/:id/daily-summary/:dayStr", │ │ - loadComponent: () => import("./chunk-GAB5FZMM.js").then(i => i.DailySummaryComponent), │ │ + loadComponent: () => import("./chunk-UQLLTF4E.js").then(i => i.DailySummaryComponent), │ │ data: { │ │ page: "daily-summary" │ │ }, │ │ canActivate: [ja, ai] │ │ }, { │ │ path: "active/:subPageType", │ │ canActivate: [hu, ai], │ │ - loadComponent: () => import("./chunk-4ANWUG5O.js").then(i => i.ConfigPageComponent) │ │ + loadComponent: () => import("./chunk-ZPIMGF6Z.js").then(i => i.ConfigPageComponent) │ │ }, { │ │ path: "active/:subPageType/:param", │ │ canActivate: [hu, ai], │ │ - loadComponent: () => import("./chunk-4ANWUG5O.js").then(i => i.ConfigPageComponent) │ │ + loadComponent: () => import("./chunk-ZPIMGF6Z.js").then(i => i.ConfigPageComponent) │ │ }, { │ │ path: "active", │ │ canActivate: [hu, ai], │ │ - loadComponent: () => import("./chunk-4ANWUG5O.js").then(i => i.ConfigPageComponent) │ │ + loadComponent: () => import("./chunk-ZPIMGF6Z.js").then(i => i.ConfigPageComponent) │ │ }, { │ │ path: "plugins/:pluginId/index", │ │ - loadComponent: () => import("./chunk-AHUFPQ34.js").then(i => i.PluginIndexComponent), │ │ + loadComponent: () => import("./chunk-PEQBECIR.js").then(i => i.PluginIndexComponent), │ │ data: { │ │ page: "plugin-index" │ │ }, │ │ canActivate: [ai] │ │ }, { │ │ path: "contrast-test", │ │ loadComponent: () => import("./chunk-7AEWECSO.js").then(i => i.ContrastTestComponent), │ │ @@ -32918,8 +32918,8 @@ │ │ ie.log("Time window for completing sync started"), yield X0(2e4), ie.log("Time window for completing sync ended. Closing app!"), o0.finish({ │ │ taskId: e │ │ }) │ │ })) │ │ }))) │ │ }); │ │ export default wW(); │ │ -//# sourceMappingURL=main-JUHT2LPO.js.map │ │ +//# sourceMappingURL=main-WYUKMRIM.js.map │ --- assets/public/chunk-ZWF7G3DQ.js.map ├── +++ assets/public/chunk-ZBYY2JLW.js.map │┄ Files identical despite different names │ --- assets/public/chunk-ZWF7G3DQ.js ├── +++ assets/public/chunk-ZBYY2JLW.js │┄ Files 99% similar despite different names │ ├── js-beautify {} │ │ @@ -1,11 +1,11 @@ │ │ import { │ │ S as Ar, │ │ T as _t │ │ -} from "./chunk-6BTBXX5V.js"; │ │ +} from "./chunk-IQQZUO6I.js"; │ │ import { │ │ g as Sr, │ │ h as gt │ │ } from "./chunk-K5GRC76V.js"; │ │ import { │ │ a as Ye, │ │ b as Je, │ │ @@ -2975,15 +2975,15 @@ │ │ } │ │ }) │ │ } │ │ sendMessageToPlugin(r, s) { │ │ return T(this, null, function*() { │ │ let { │ │ PluginRunner: l │ │ - } = yield import("./chunk-77ZSDKZD.js"); │ │ + } = yield import("./chunk-LTHMW6C4.js"); │ │ return this._injector.get(l).sendMessageToPlugin(r, s) │ │ }) │ │ } │ │ _initWindowFocusTracking() { │ │ window.addEventListener("focus", () => { │ │ this._isWindowFocused = !0, this._notifyFocusHandlers(!0) │ │ }), window.addEventListener("blur", () => { │ │ @@ -3809,8 +3809,8 @@ │ │ } │ │ return m │ │ })() │ │ }); │ │ export { │ │ ne as a, ie as b, Pr as c, wr as d, Z as e, _e as f, br as g, Rr as h, ee as i, ge as j, Br as k, xr as l, Ya as m, Ja as n, za as o, Nr as p, $r as q, jr as r, us as s, kt as t │ │ }; │ │ -//# sourceMappingURL=chunk-ZWF7G3DQ.js.map │ │ +//# sourceMappingURL=chunk-ZBYY2JLW.js.map │ --- assets/public/chunk-TJDV7M2I.js.map ├── +++ assets/public/chunk-5QSHRBB3.js.map │┄ Files identical despite different names │ --- assets/public/chunk-TJDV7M2I.js ├── +++ assets/public/chunk-5QSHRBB3.js │┄ Files 99% similar despite different names │ ├── js-beautify {} │ │ @@ -16,15 +16,15 @@ │ │ import { │ │ a as Xe, │ │ b as ri │ │ } from "./chunk-IJCJ6COC.js"; │ │ import { │ │ e as ze, │ │ i as Ut │ │ -} from "./chunk-6BTBXX5V.js"; │ │ +} from "./chunk-IQQZUO6I.js"; │ │ import { │ │ h as Ci, │ │ j as ao │ │ } from "./chunk-P374KFOI.js"; │ │ import { │ │ a as fi, │ │ b as ro │ │ @@ -2635,8 +2635,8 @@ │ │ } │ │ return o │ │ })() │ │ }); │ │ export { │ │ nn as a, uo as b, bi as c, Si as d, Da as e, va as f, ka as g, ba as h, Sa as i, Ra as j, xa as k, Ma as l, Ta as m, Ea as n, Oa as o, Zo as p, cn as q, mo as r, xi as s, Mi as t, Ti as u, Ei as v, Kn as w, Ro as x, Lr as y, Ao as z │ │ }; │ │ -//# sourceMappingURL=chunk-TJDV7M2I.js.map │ │ +//# sourceMappingURL=chunk-5QSHRBB3.js.map │ --- assets/public/chunk-NRU3TRWE.js.map ├── +++ assets/public/chunk-VQZLIIQ7.js.map │┄ Files identical despite different names │ --- assets/public/chunk-NRU3TRWE.js ├── +++ assets/public/chunk-VQZLIIQ7.js │┄ Files 99% similar despite different names │ ├── js-beautify {} │ │ @@ -5,21 +5,21 @@ │ │ f as et, │ │ i as Ae, │ │ j as tt, │ │ q as $e, │ │ r as it, │ │ s as Te, │ │ t as nt │ │ -} from "./chunk-ZWF7G3DQ.js"; │ │ +} from "./chunk-ZBYY2JLW.js"; │ │ import { │ │ I as ye, │ │ J as Ye, │ │ l as Ce, │ │ m as Je │ │ -} from "./chunk-6BTBXX5V.js"; │ │ +} from "./chunk-IQQZUO6I.js"; │ │ import { │ │ a as F, │ │ j as Ze, │ │ xf as ue, │ │ yf as Ke │ │ } from "./chunk-NBHHRDIC.js"; │ │ import { │ │ @@ -1129,8 +1129,8 @@ │ │ } │ │ return d │ │ })() │ │ }); │ │ export { │ │ Le as a, Oe as b, Z as c, Y as d, Ue as e, ri as f, st as g │ │ }; │ │ -//# sourceMappingURL=chunk-NRU3TRWE.js.map │ │ +//# sourceMappingURL=chunk-VQZLIIQ7.js.map │ --- assets/public/chunk-J754SOWT.js.map ├── +++ assets/public/chunk-VH75GC5P.js.map │┄ Files identical despite different names │ --- assets/public/chunk-J754SOWT.js ├── +++ assets/public/chunk-VH75GC5P.js │┄ Files 98% similar despite different names │ ├── js-beautify {} │ │ @@ -1,15 +1,15 @@ │ │ import { │ │ f as F, │ │ g as U │ │ -} from "./chunk-NRU3TRWE.js"; │ │ +} from "./chunk-VQZLIIQ7.js"; │ │ import { │ │ a as O, │ │ b as q │ │ -} from "./chunk-6BTBXX5V.js"; │ │ +} from "./chunk-IQQZUO6I.js"; │ │ import { │ │ Aa as m, │ │ Ac as h, │ │ Ad as T, │ │ Db as I, │ │ Ec as b, │ │ Fc as z, │ │ @@ -157,8 +157,8 @@ │ │ let t = new SpeechSynthesisUtterance; │ │ t.text = e, t.voice = l.getVoices().find(i => n.includes(i.name)) || l.getVoices().find(i => i.default) || null, console.log(o), t.volume = o / 100, l.speak(t) │ │ } │ │ }); │ │ export { │ │ te as a, W as b, se as c, X as d, ve as e, Y as f, me as g, Q as h │ │ }; │ │ -//# sourceMappingURL=chunk-J754SOWT.js.map │ │ +//# sourceMappingURL=chunk-VH75GC5P.js.map │ --- assets/public/chunk-GAB5FZMM.js.map ├── +++ assets/public/chunk-UQLLTF4E.js.map │┄ Files identical despite different names │ --- assets/public/chunk-GAB5FZMM.js ├── +++ assets/public/chunk-UQLLTF4E.js │┄ Files 99% similar despite different names │ ├── js-beautify {} │ │ @@ -32,15 +32,15 @@ │ │ p as ko, │ │ q as on, │ │ r as Mo, │ │ w as gn, │ │ x as Fo, │ │ y as Cn, │ │ z as Ro │ │ -} from "./chunk-TJDV7M2I.js"; │ │ +} from "./chunk-5QSHRBB3.js"; │ │ import { │ │ a as _n, │ │ b as wo │ │ } from "./chunk-3JWM7PKT.js"; │ │ import { │ │ c as yi, │ │ d as hi, │ │ @@ -68,15 +68,15 @@ │ │ import { │ │ a as le, │ │ b as xi │ │ } from "./chunk-IJCJ6COC.js"; │ │ import { │ │ S as Ki, │ │ T as xo │ │ -} from "./chunk-6BTBXX5V.js"; │ │ +} from "./chunk-IQQZUO6I.js"; │ │ import "./chunk-AW23F5KX.js"; │ │ import { │ │ a as Vi, │ │ b as Ni, │ │ d as So │ │ } from "./chunk-TRL2N7WU.js"; │ │ import "./chunk-HR6HBFFX.js"; │ │ @@ -2666,8 +2666,8 @@ │ │ return i │ │ })() │ │ }); │ │ vr(); │ │ export { │ │ id as DailySummaryComponent │ │ }; │ │ -//# sourceMappingURL=chunk-GAB5FZMM.js.map │ │ +//# sourceMappingURL=chunk-UQLLTF4E.js.map │ --- assets/public/chunk-BM5UM4I2.js.map ├── +++ assets/public/chunk-EVT7NY2D.js.map │┄ Files identical despite different names │ --- assets/public/chunk-BM5UM4I2.js ├── +++ assets/public/chunk-EVT7NY2D.js │┄ Files 99% similar despite different names │ ├── js-beautify {} │ │ @@ -1,21 +1,21 @@ │ │ import { │ │ f as ie, │ │ g as Ie │ │ -} from "./chunk-NRU3TRWE.js"; │ │ +} from "./chunk-VQZLIIQ7.js"; │ │ import { │ │ k as Y, │ │ l as ve, │ │ m as Z, │ │ n as ee, │ │ o as te, │ │ p as Me, │ │ q as ne, │ │ r as we │ │ -} from "./chunk-ZWF7G3DQ.js"; │ │ +} from "./chunk-ZBYY2JLW.js"; │ │ import { │ │ a as re, │ │ b as oe, │ │ c as ae, │ │ f as le, │ │ g as Oe │ │ } from "./chunk-GT73NP2G.js"; │ │ @@ -328,8 +328,8 @@ │ │ } │ │ return t │ │ })() │ │ }); │ │ export { │ │ rt as a, Re as b │ │ }; │ │ -//# sourceMappingURL=chunk-BM5UM4I2.js.map │ │ +//# sourceMappingURL=chunk-EVT7NY2D.js.map │ --- assets/public/chunk-AHUFPQ34.js ├── +++ assets/public/chunk-PEQBECIR.js │┄ Files 94% similar despite different names │ ├── js-beautify {} │ │ @@ -1,14 +1,14 @@ │ │ import { │ │ a, │ │ b │ │ -} from "./chunk-BM5UM4I2.js"; │ │ -import "./chunk-NRU3TRWE.js"; │ │ -import "./chunk-ZWF7G3DQ.js"; │ │ -import "./chunk-6BTBXX5V.js"; │ │ +} from "./chunk-EVT7NY2D.js"; │ │ +import "./chunk-VQZLIIQ7.js"; │ │ +import "./chunk-ZBYY2JLW.js"; │ │ +import "./chunk-IQQZUO6I.js"; │ │ import "./chunk-AW23F5KX.js"; │ │ import "./chunk-TRL2N7WU.js"; │ │ import "./chunk-K5GRC76V.js"; │ │ import "./chunk-HR6HBFFX.js"; │ │ import "./chunk-352ZKRK2.js"; │ │ import "./chunk-GT73NP2G.js"; │ │ import "./chunk-ABDFPP75.js"; │ │ @@ -53,8 +53,8 @@ │ │ import "./chunk-MAQCQPYF.js"; │ │ import "./chunk-2KEZIUSW.js"; │ │ import "./chunk-2NYJ54WT.js"; │ │ b(); │ │ export { │ │ a as PluginIndexComponent │ │ }; │ │ -//# sourceMappingURL=chunk-AHUFPQ34.js.map │ │ +//# sourceMappingURL=chunk-PEQBECIR.js.map │ --- assets/public/chunk-77ZSDKZD.js ├── +++ assets/public/chunk-LTHMW6C4.js │┄ Files 91% similar despite different names │ ├── js-beautify {} │ │ @@ -1,12 +1,12 @@ │ │ import { │ │ s as a, │ │ t as b │ │ -} from "./chunk-ZWF7G3DQ.js"; │ │ -import "./chunk-6BTBXX5V.js"; │ │ +} from "./chunk-ZBYY2JLW.js"; │ │ +import "./chunk-IQQZUO6I.js"; │ │ import "./chunk-AW23F5KX.js"; │ │ import "./chunk-TRL2N7WU.js"; │ │ import "./chunk-K5GRC76V.js"; │ │ import "./chunk-HR6HBFFX.js"; │ │ import "./chunk-352ZKRK2.js"; │ │ import "./chunk-ABDFPP75.js"; │ │ import "./chunk-LIWG7NLG.js"; │ │ @@ -50,8 +50,8 @@ │ │ import "./chunk-MAQCQPYF.js"; │ │ import "./chunk-2KEZIUSW.js"; │ │ import "./chunk-2NYJ54WT.js"; │ │ b(); │ │ export { │ │ a as PluginRunner │ │ }; │ │ -//# sourceMappingURL=chunk-77ZSDKZD.js.map │ │ +//# sourceMappingURL=chunk-LTHMW6C4.js.map │ --- assets/public/chunk-6BTBXX5V.js.map ├── +++ assets/public/chunk-IQQZUO6I.js.map │┄ Files 99% similar despite different names │ ├── Pretty-printed │ │┄ Similarity: 0.9982993197278912% │ │┄ Differences: {"'sourcesContent'": "{insert: [(65, '// This file is auto-generated by tools/load-env.js\\n// Do " │ │┄ 'not modify directly - edit .env file instead\\n// Generated at: ' │ │┄ '2025-12-24T09:06:44.422Z\\n\\n/**\\n * Environment variables loaded from ' │ │┄ '.env file\\n * Access these constants instead of process.env in your Angular ' │ │┄ 'app\\n */\\nexport const ENV = {\\n\\n} as const;\\n\\n// Type-safe helper ' │ │┄ 'to en […] │ │ @@ -4829,15 +4829,15 @@ │ │ "import * as i0 from '@angular/core';\nimport { ChangeDetectionStrategy, Component, NgModule } from '@angular/core';\nimport { FieldType, FormlyMatFormFieldModule } from '@ngx-formly/material/form-field';\nimport * as i1 from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport * as i2 from '@angular/material/slider';\nimport { MatSliderModule } from '@angular/material/slider';\nimport * as i3 from '@ngx-formly/core';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCommonModule, MatRippleModule } from '@angular/material/core';\nlet FormlyFieldSlider = /*#__PURE__*/(() => {\n class FormlyFieldSlider extends FieldType {\n constructor() {\n super(...arguments);\n this.defaultOptions = {\n props: {\n hideFieldUnderline: true,\n floatLabel: 'always',\n displayWith: value => `${value}`\n }\n };\n }\n static {\n this.\u0275fac = /* @__PURE__ */(() => {\n let \u0275FormlyFieldSlider_BaseFactory;\n return function FormlyFieldSlider_Factory(__ngFactoryType__) {\n return (\u0275FormlyFieldSlider_BaseFactory || (\u0275FormlyFieldSlider_BaseFactory = i0.\u0275\u0275getInheritedFactory(FormlyFieldSlider)))(__ngFactoryType__ || FormlyFieldSlider);\n };\n })();\n }\n static {\n this.\u0275cmp = /* @__PURE__ */i0.\u0275\u0275defineComponent({\n type: FormlyFieldSlider,\n selectors: [[\"formly-field-mat-slider\"]],\n standalone: false,\n features: [i0.\u0275\u0275InheritDefinitionFeature],\n decls: 2,\n vars: 15,\n consts: [[3, \"input\", \"change\", \"id\", \"formlyAttributes\", \"tabIndex\", \"color\", \"displayWith\", \"max\", \"min\", \"step\", \"discrete\", \"showTickMarks\"], [\"matSliderThumb\", \"\", 3, \"formControl\", \"formlyAttributes\"]],\n template: function FormlyFieldSlider_Template(rf, ctx) {\n if (rf & 1) {\n i0.\u0275\u0275elementStart(0, \"mat-slider\", 0);\n i0.\u0275\u0275listener(\"input\", function FormlyFieldSlider_Template_mat_slider_input_0_listener($event) {\n return ctx.props.input && ctx.props.input(ctx.field, $event);\n })(\"change\", function FormlyFieldSlider_Template_mat_slider_change_0_listener($event) {\n return ctx.props.change && ctx.props.change(ctx.field, $event);\n });\n i0.\u0275\u0275element(1, \"input\", 1);\n i0.\u0275\u0275elementEnd();\n }\n if (rf & 2) {\n i0.\u0275\u0275styleProp(\"width\", \"100%\");\n i0.\u0275\u0275property(\"id\", ctx.id)(\"formlyAttributes\", ctx.field)(\"tabIndex\", ctx.props.tabindex)(\"color\", ctx.props.color)(\"displayWith\", ctx.props.displayWith)(\"max\", ctx.props.max)(\"min\", ctx.props.min)(\"step\", ctx.props.step)(\"discrete\", ctx.props.discrete)(\"showTickMarks\", ctx.props.showTickMarks)(\"step\", ctx.props.step);\n i0.\u0275\u0275advance();\n i0.\u0275\u0275property(\"formControl\", ctx.formControl)(\"formlyAttributes\", ctx.field);\n }\n },\n dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.FormControlDirective, i2.MatSlider, i2.MatSliderThumb, i3.LegacyFormlyAttributes],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return FormlyFieldSlider;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction withFormlyFieldSlider() {\n return {\n types: [{\n name: 'slider',\n component: FormlyFieldSlider,\n wrappers: ['form-field']\n }]\n };\n}\nlet FormlyMatSliderModule = /*#__PURE__*/(() => {\n class FormlyMatSliderModule {\n static {\n this.\u0275fac = function FormlyMatSliderModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FormlyMatSliderModule)();\n };\n }\n static {\n this.\u0275mod = /* @__PURE__ */i0.\u0275\u0275defineNgModule({\n type: FormlyMatSliderModule\n });\n }\n static {\n this.\u0275inj = /* @__PURE__ */i0.\u0275\u0275defineInjector({\n imports: [CommonModule, MatCommonModule, MatRippleModule, ReactiveFormsModule, MatSliderModule, FormlyMatFormFieldModule, FormlyModule.forChild(withFormlyFieldSlider())]\n });\n }\n }\n return FormlyMatSliderModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FormlyFieldSlider, FormlyMatSliderModule, withFormlyFieldSlider };\n", │ │ "import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n MatAutocomplete,\n MatAutocompleteSelectedEvent,\n MatAutocompleteTrigger,\n MatOption,\n} from '@angular/material/autocomplete';\nimport {\n MatChipGrid,\n MatChipInput,\n MatChipInputEvent,\n MatChipRemove,\n MatChipRow,\n} from '@angular/material/chips';\nimport { MatIcon } from '@angular/material/icon';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { T } from '../../../t.const';\nimport { TagService } from '../tag.service';\nimport { TaskService } from '../../tasks/task.service';\nimport { TaskCopy } from '../../tasks/task.model';\nimport { TagComponent } from '../tag/tag.component';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { TODAY_TAG } from '../tag.const';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\ninterface Suggestion {\n id: string;\n title: string;\n\n [key: string]: any;\n}\n\nconst DEFAULT_SEPARATOR_KEY_CODES: number[] = [ENTER, COMMA];\n\n@Component({\n selector: 'tag-edit',\n standalone: true,\n imports: [\n MatAutocomplete,\n MatAutocompleteTrigger,\n MatChipGrid,\n MatChipInput,\n MatChipRow,\n MatIcon,\n MatChipRemove,\n TagComponent,\n ReactiveFormsModule,\n MatOption,\n TranslatePipe,\n ],\n templateUrl: './tag-edit.component.html',\n styleUrl: './tag-edit.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TagEditComponent {\n T: typeof T = T;\n\n private _tagService = inject(TagService);\n private _taskService = inject(TaskService);\n private readonly _destroyRef = inject(DestroyRef);\n\n task = input();\n isShowMyDayTag = input(false);\n tagIds = input.required();\n excludedTagIds = input();\n tagUpdate = output();\n\n escapePress = output();\n\n inputCtrl: UntypedFormControl = new UntypedFormControl();\n separatorKeysCodes: number[] = DEFAULT_SEPARATOR_KEY_CODES;\n\n readonly inputEl = viewChild>('inputElRef');\n readonly matAutocomplete = viewChild('autoElRef');\n\n inputVal = signal('');\n tagSuggestions = computed(() =>\n this.isShowMyDayTag()\n ? this._tagService.tagsSortedForUI()\n : this._tagService.tagsNoMyDayAndNoListSorted(),\n );\n\n constructor() {\n this.inputCtrl.valueChanges\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((value: string | null) => {\n this.inputVal.set(value ?? '');\n });\n }\n\n allExcludedTagIds = computed(() => [\n ...this.tagIds(),\n ...(this.excludedTagIds() || []),\n TODAY_TAG.id,\n ]);\n filteredSuggestions = computed(() => {\n const val = this.inputVal();\n const allExcludedTagIds = this.allExcludedTagIds();\n\n if (!val) {\n return this.tagSuggestions().filter(\n (suggestion) => !allExcludedTagIds.includes(suggestion.id),\n );\n }\n const filterValue = val.toLowerCase();\n\n return this.tagSuggestions().filter(\n (suggestion) =>\n suggestion.title.toLowerCase().indexOf(filterValue) === 0 &&\n !allExcludedTagIds.includes(suggestion.id),\n );\n });\n\n tagItems = computed(() => {\n const suggestions = this.tagSuggestions();\n return suggestions.length\n ? (this.tagIds()\n .map((id) => suggestions.find((suggestion) => suggestion.id === id))\n .filter((v) => v) as Suggestion[])\n : [];\n });\n\n add(event: MatChipInputEvent): void {\n const matAutocomplete = this.matAutocomplete();\n if (!matAutocomplete) {\n throw new Error('Auto complete undefined');\n }\n\n if (!matAutocomplete.isOpen) {\n const inp = event.input;\n const value = event.value;\n\n // Add our fruit\n if ((value || '').trim()) {\n this._addByTitle(value.trim());\n }\n\n inp.value = '';\n\n this.inputCtrl.setValue(null);\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (event.code === 'Escape') {\n this.escapePress.emit();\n }\n }\n\n focusInput(): void {\n const inputEl = this.inputEl();\n if (inputEl) {\n inputEl.nativeElement.focus();\n }\n }\n\n remove(id: string): void {\n this._updateModel(this.tagIds().filter((tid) => tid !== id));\n }\n\n selected(event: MatAutocompleteSelectedEvent): void {\n this._add(event.option.value);\n const inputEl = this.inputEl();\n if (inputEl) {\n inputEl.nativeElement.value = '';\n }\n this.inputCtrl.setValue(null);\n }\n\n private _updateModel(v: string[]): void {\n this.tagUpdate.emit(v);\n const task = this.task();\n if (task) {\n this._taskService.updateTags(task, v);\n }\n }\n\n private _getExistingSuggestionByTitle(v: string): Suggestion | undefined {\n return this.tagSuggestions().find((suggestion) => suggestion.title === v);\n }\n\n private _add(id: string): void {\n // prevent double items\n if (!this.tagIds().includes(id)) {\n this._updateModel([...this.tagIds(), id]);\n }\n }\n\n private _addByTitle(v: string): void {\n const existing = this._getExistingSuggestionByTitle(v);\n if (existing) {\n if (!this.allExcludedTagIds().includes(existing.id)) {\n this._add(existing.id);\n }\n } else {\n this._createNewTag(v);\n }\n }\n\n private _createNewTag(title: string): void {\n const cleanTitle = (t: string): string => {\n return t.replace('#', '');\n };\n\n const id = this._tagService.addTag({ title: cleanTitle(title) });\n this._add(id);\n }\n\n protected readonly onkeydown = onkeydown;\n}\n", │ │ "\n @for (modelItem of tagItems(); track modelItem.id) {\n \n \n\n cancel\n \n \n }\n \n\n\n @for (suggestion of filteredSuggestions(); track suggestion.id) {\n \n \n \n }\n\n", │ │ "import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/material';\nimport { FormlyFieldConfig, FormlyModule } from '@ngx-formly/core';\nimport { T } from 'src/app/t.const';\nimport { TagEditComponent } from '../../features/tag/tag-edit/tag-edit.component';\n\n@Component({\n selector: 'formly-tag-selection',\n standalone: true,\n imports: [FormsModule, FormlyModule, ReactiveFormsModule, TagEditComponent],\n templateUrl: './formly-tag-selection.component.html',\n styleUrl: './formly-tag-selection.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyTagSelectionComponent extends FieldType {\n T: typeof T = T;\n}\n", │ │ "\n\n\n\n", │ │ "import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormlyFieldConfig, FormlyModule } from '@ngx-formly/core';\nimport { FieldType } from '@ngx-formly/material';\nimport { MatButton } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Log } from '../../core/log';\n\n@Component({\n selector: 'formly-btn',\n templateUrl: './formly-btn.component.html',\n styleUrl: './formly-btn.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormlyModule, MatButton, TranslatePipe],\n})\nexport class FormlyBtnComponent extends FieldType {\n onClick(): void {\n if (this.to.onClick) {\n const r = this.to.onClick(this.field, this.form, this.model);\n if (r && 'then' in r) {\n r.then((v) => {\n Log.log('update', v, this);\n this.formControl.setValue(v);\n this.form.markAsDirty();\n });\n } else {\n this.formControl.setValue(r);\n }\n }\n }\n}\n", │ │ "@if (value) {\n
{{ value }}
\n}\n\n {{ (to.text | translate) || 'Click Me' }}\n\n", │ │ - "// This file is auto-generated by tools/load-env.js\n// Do not modify directly - edit .env file instead\n// Generated at: 2025-12-15T11:33:41.030Z\n\n/**\n * Environment variables loaded from .env file\n * Access these constants instead of process.env in your Angular app\n */\nexport const ENV = {\n\n} as const;\n\n// Type-safe helper to ensure all expected env vars are defined\nexport type EnvVars = typeof ENV;\n", │ │ + "// This file is auto-generated by tools/load-env.js\n// Do not modify directly - edit .env file instead\n// Generated at: 2025-12-24T09:06:44.422Z\n\n/**\n * Environment variables loaded from .env file\n * Access these constants instead of process.env in your Angular app\n */\nexport const ENV = {\n\n} as const;\n\n// Type-safe helper to ensure all expected env vars are defined\nexport type EnvVars = typeof ENV;\n", │ │ "/**\n * Pure functions for accessing environment variables.\n * These can be used anywhere in the codebase, including outside Angular context.\n */\n\n// Import the generated environment constants\n// This file is auto-generated from .env by tools/load-env.js\nimport { ENV } from '../config/env.generated';\n\n/**\n * Get an environment variable value.\n * Returns undefined if the variable is not set.\n */\nexport const getEnv = (key: keyof typeof ENV): string | undefined => {\n return ENV[key] || undefined;\n};\n\n/**\n * Get an optional environment variable that may not be in the required list.\n * Use this for environment variables that are truly optional and may not be defined\n * in the REQUIRED_ENV_KEYS list in load-env.js.\n * Returns undefined if the variable is not set.\n */\nexport const getEnvOptional = (key: string): string | undefined => {\n return (ENV as any)[key] || undefined;\n};\n\n/**\n * Get an environment variable as a number.\n * Returns undefined if the value is not a valid number.\n */\nexport const getEnvNumber = (key: keyof typeof ENV): number | undefined => {\n const value = getEnv(key);\n if (value === undefined) return undefined;\n const num = Number(value);\n return isNaN(num) ? undefined : num;\n};\n\n/**\n * Get all environment variables as an object.\n * Useful for debugging or passing multiple values.\n */\nexport const getAllEnv = (): typeof ENV => ENV;\n", │ │ "import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { getEnvOptional } from '../../util/env';\n\nexport interface UnsplashPhoto {\n id: string;\n urls: {\n raw: string;\n full: string;\n regular: string;\n small: string;\n thumb: string;\n };\n links?: {\n self?: string;\n html?: string;\n download?: string;\n download_location?: string;\n };\n description: string | null;\n alt_description: string | null;\n user: {\n name: string;\n links?: {\n html?: string;\n };\n };\n}\n\nexport interface UnsplashSearchResponse {\n results: UnsplashPhoto[];\n total: number;\n total_pages: number;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UnsplashService {\n private _http = inject(HttpClient);\n\n private readonly API_URL = 'https://api.unsplash.com';\n // Register your app at https://unsplash.com/developers?utm_source=super-productivity&utm_medium=referral&utm_campaign=api-credit for a free Access Key (50 req/hour)\n // The Access Key is used with \"Client-ID\" prefix in the Authorization header\n private readonly ACCESS_KEY = getEnvOptional('UNSPLASH_KEY');\n\n isAvailable(): boolean {\n return !!this.ACCESS_KEY;\n }\n\n searchPhotos(query: string, page = 1): Observable {\n if (!query || query.trim() === '') {\n return of({ results: [], total: 0, total_pages: 0 });\n }\n\n if (!this.ACCESS_KEY) {\n console.warn(\n 'No Unsplash Access Key configured. Register at https://unsplash.com/developers?utm_source=super-productivity&utm_medium=referral&utm_campaign=api-credit',\n );\n return of({ results: [], total: 0, total_pages: 0 });\n }\n\n const params = {\n query: query.trim(),\n page: page.toString(),\n per_page: '20',\n orientation: 'landscape',\n };\n\n const url = `${this.API_URL}/search/photos`;\n const headers = {\n Authorization: `Client-ID ${this.ACCESS_KEY}`,\n };\n\n return this._http\n .get(url, {\n params,\n headers,\n })\n .pipe(\n catchError((error) => {\n console.error('Unsplash API error:', error);\n return of({ results: [], total: 0, total_pages: 0 });\n }),\n );\n }\n\n getPhotoUrl(\n photo: UnsplashPhoto,\n size: 'thumb' | 'small' | 'regular' = 'regular',\n ): string {\n return photo.urls[size];\n }\n\n /**\n * Get optimized image URL for backgrounds\n * @param photo - The Unsplash photo object\n * @param width - Desired width (default 2560 for high res displays)\n * @param quality - Image quality 1-100 (default 85)\n */\n getBackgroundImageUrl(photo: UnsplashPhoto, width = 2560, quality = 85): string {\n return `${photo.urls.raw}&w=${width}&q=${quality}&auto=format`;\n }\n\n /**\n * Add UTM parameters to Unsplash attribution links as required\n * @param url - The original Unsplash URL\n */\n addUtmParams(url: string): string {\n if (!url) return url;\n\n const separator = url.includes('?') ? '&' : '?';\n return `${url}${separator}utm_source=super-productivity&utm_medium=referral&utm_campaign=api-credit`;\n }\n\n /**\n * Trigger download tracking as required by Unsplash API guidelines\n * This must be called when a user selects a photo for use\n * @param photo - The selected photo\n */\n trackPhotoDownload(photo: UnsplashPhoto): Observable {\n if (!photo.links?.download_location) {\n console.warn('No download_location available for photo', photo.id);\n return of(null);\n }\n\n if (!this.ACCESS_KEY) {\n console.warn('No Unsplash Access Key configured');\n return of(null);\n }\n\n const headers = {\n Authorization: `Client-ID ${this.ACCESS_KEY}`,\n };\n\n // Call the download endpoint to track usage\n return this._http.get(photo.links.download_location, { headers }).pipe(\n catchError((error) => {\n console.error('Failed to track photo download:', error);\n // Don't fail the selection if tracking fails\n return of(null);\n }),\n );\n }\n}\n", │ │ "export const IS_MAC = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n", │ │ "import * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, EventEmitter, Directive, Optional, Inject, Input, Output } from '@angular/core';\nimport { registerables, Chart, defaults } from 'chart.js';\nimport { merge } from 'lodash-es';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nconst NG_CHARTS_CONFIGURATION = /*#__PURE__*/new InjectionToken('Configuration for ngCharts');\n/**\n * Provide all the default registerable as defined by Chart.js\n */\nfunction withDefaultRegisterables(...registerables$1) {\n return {\n registerables: [...registerables, ...registerables$1]\n };\n}\n/**\n * Provide configuration for ngCharts. In most cases, you have to pass it some registerables. So either\n * `withDefaultRegisterables()`, or a custom list of registerables tailored to your needs to reduce bundle size.\n */\nfunction provideCharts(...configurations) {\n const config = merge({}, ...configurations);\n return {\n provide: NG_CHARTS_CONFIGURATION,\n useValue: config\n };\n}\nlet ThemeService = /*#__PURE__*/(() => {\n class ThemeService {\n constructor() {\n this.colorschemesOptions = new BehaviorSubject(undefined);\n }\n setColorschemesOptions(options) {\n this.pColorschemesOptions = options;\n this.colorschemesOptions.next(options);\n }\n getColorschemesOptions() {\n return this.pColorschemesOptions;\n }\n static {\n this.\u0275fac = function ThemeService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ThemeService)();\n };\n }\n static {\n this.\u0275prov = /* @__PURE__ */i0.\u0275\u0275defineInjectable({\n token: ThemeService,\n factory: ThemeService.\u0275fac,\n providedIn: 'root'\n });\n }\n }\n return ThemeService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet BaseChartDirective = /*#__PURE__*/(() => {\n class BaseChartDirective {\n constructor(element, zone, themeService, config) {\n this.zone = zone;\n this.themeService = themeService;\n this.type = 'bar';\n this.plugins = [];\n this.chartClick = new EventEmitter();\n this.chartHover = new EventEmitter();\n this.subs = [];\n this.themeOverrides = {};\n if (config?.registerables) {\n Chart.register(...config.registerables);\n }\n if (config?.defaults) {\n defaults.set(config.defaults);\n }\n this.ctx = element.nativeElement.getContext('2d');\n this.subs.push(this.themeService.colorschemesOptions.pipe(distinctUntilChanged()).subscribe(r => this.themeChanged(r)));\n }\n ngOnChanges(changes) {\n const requireRender = ['type'];\n const propertyNames = Object.getOwnPropertyNames(changes);\n if (propertyNames.some(key => requireRender.includes(key)) || propertyNames.every(key => changes[key].isFirstChange())) {\n this.render();\n } else {\n const config = this.getChartConfiguration();\n // Using assign to avoid changing the original object reference\n if (this.chart) {\n Object.assign(this.chart.config.data, config.data);\n if (this.chart.config.plugins) {\n Object.assign(this.chart.config.plugins, config.plugins);\n }\n if (this.chart.config.options) {\n Object.assign(this.chart.config.options, config.options);\n }\n }\n this.update();\n }\n }\n ngOnDestroy() {\n if (this.chart) {\n this.chart.destroy();\n this.chart = void 0;\n }\n this.subs.forEach(s => s.unsubscribe());\n }\n render() {\n if (this.chart) {\n this.chart.destroy();\n }\n return this.zone.runOutsideAngular(() => this.chart = new Chart(this.ctx, this.getChartConfiguration()));\n }\n update(mode) {\n if (this.chart) {\n this.zone.runOutsideAngular(() => this.chart?.update(mode));\n }\n }\n hideDataset(index, hidden) {\n if (this.chart) {\n this.chart.getDatasetMeta(index).hidden = hidden;\n this.update();\n }\n }\n isDatasetHidden(index) {\n return this.chart?.getDatasetMeta(index)?.hidden;\n }\n toBase64Image() {\n return this.chart?.toBase64Image();\n }\n themeChanged(options) {\n this.themeOverrides = options;\n if (this.chart) {\n if (this.chart.config.options) {\n Object.assign(this.chart.config.options, this.getChartOptions());\n }\n this.update();\n }\n }\n getChartOptions() {\n return merge({\n onHover: (event, active) => {\n if (!this.chartHover.observed && !this.chartHover.observers?.length) {\n return;\n }\n this.zone.run(() => this.chartHover.emit({\n event,\n active\n }));\n },\n onClick: (event, active) => {\n if (!this.chartClick.observed && !this.chartClick.observers?.length) {\n return;\n }\n this.zone.run(() => this.chartClick.emit({\n event,\n active\n }));\n }\n }, this.themeOverrides, this.options, {\n plugins: {\n legend: {\n display: this.legend\n }\n }\n });\n }\n getChartConfiguration() {\n return {\n type: this.type,\n data: this.getChartData(),\n options: this.getChartOptions(),\n plugins: this.plugins\n };\n }\n getChartData() {\n return this.data ? this.data : {\n labels: this.labels || [],\n datasets: this.datasets || []\n };\n }\n static {\n this.\u0275fac = function BaseChartDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BaseChartDirective)(i0.\u0275\u0275directiveInject(i0.ElementRef), i0.\u0275\u0275directiveInject(i0.NgZone), i0.\u0275\u0275directiveInject(ThemeService), i0.\u0275\u0275directiveInject(NG_CHARTS_CONFIGURATION, 8));\n };\n }\n static {\n this.\u0275dir = /* @__PURE__ */i0.\u0275\u0275defineDirective({\n type: BaseChartDirective,\n selectors: [[\"canvas\", \"baseChart\", \"\"]],\n inputs: {\n type: \"type\",\n legend: \"legend\",\n data: \"data\",\n options: \"options\",\n plugins: \"plugins\",\n labels: \"labels\",\n datasets: \"datasets\"\n },\n outputs: {\n chartClick: \"chartClick\",\n chartHover: \"chartHover\"\n },\n exportAs: [\"base-chart\"],\n features: [i0.\u0275\u0275NgOnChangesFeature]\n });\n }\n }\n return BaseChartDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of ng2-charts\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BaseChartDirective, NG_CHARTS_CONFIGURATION, ThemeService, provideCharts, withDefaultRegisterables };\n", │ │ "export const IS_FIREFOX = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n", │ │ "import { inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Log } from '../log';\n\nexport interface CustomTheme {\n id: string;\n name: string;\n url: string;\n requiredMode?: 'dark' | 'light' | 'system';\n}\n\nexport const AVAILABLE_CUSTOM_THEMES: CustomTheme[] = [\n {\n id: 'default',\n name: 'Default',\n url: '',\n requiredMode: 'system',\n },\n {\n id: 'arc',\n name: 'Arc',\n url: 'assets/themes/arc.css',\n requiredMode: 'dark',\n },\n {\n id: 'dark-base',\n name: 'Dark Base',\n url: 'assets/themes/dark-base.css',\n requiredMode: 'dark',\n },\n {\n id: 'dracula',\n name: 'Dracula',\n url: 'assets/themes/dracula.css',\n requiredMode: 'dark',\n },\n {\n id: 'everforest',\n name: 'Everforest',\n url: 'assets/themes/everforest.css',\n requiredMode: 'system',\n },\n {\n id: 'rainbow',\n name: 'Rainbow',\n url: 'assets/themes/rainbow.css',\n requiredMode: 'system',\n },\n {\n id: 'glass',\n name: 'Glass',\n url: 'assets/themes/glass.css',\n requiredMode: 'dark',\n },\n {\n id: 'nord-polar-night',\n name: 'Nord Polar Night',\n url: 'assets/themes/nord-polar-night.css',\n requiredMode: 'dark',\n },\n {\n id: 'nord-snow-storm',\n name: 'Nord Snow Storm',\n url: 'assets/themes/nord-snow-storm.css',\n requiredMode: 'light',\n },\n];\n\n@Injectable({ providedIn: 'root' })\nexport class CustomThemeService {\n private document = inject(DOCUMENT);\n private currentThemeLinkElement: HTMLLinkElement | null = null;\n\n loadTheme(themeId: string): void {\n const theme = AVAILABLE_CUSTOM_THEMES.find((t) => t.id === themeId);\n\n if (!theme) {\n Log.err(`Theme with id ${themeId} not found`);\n return;\n }\n\n // Remove existing theme\n this.unloadCurrentTheme();\n\n // If default theme, no need to load external CSS\n if (theme.id === 'default' || !theme.url) {\n return;\n }\n\n // Create new link element for theme\n const linkElement = this.document.createElement('link');\n linkElement.rel = 'stylesheet';\n linkElement.href = theme.url;\n linkElement.id = 'custom-theme-stylesheet';\n\n // Add to head\n this.document.head.appendChild(linkElement);\n this.currentThemeLinkElement = linkElement;\n }\n\n unloadCurrentTheme(): void {\n if (this.currentThemeLinkElement) {\n this.currentThemeLinkElement.remove();\n this.currentThemeLinkElement = null;\n }\n\n // Also remove any existing custom theme stylesheets\n const existingThemeLink = this.document.getElementById('custom-theme-stylesheet');\n if (existingThemeLink) {\n existingThemeLink.remove();\n }\n }\n\n getAvailableThemes(): CustomTheme[] {\n return AVAILABLE_CUSTOM_THEMES;\n }\n}\n", │ │ "import {\n effect,\n EnvironmentInjector,\n inject,\n Injectable,\n runInInjectionContext,\n signal,\n untracked,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BodyClass, IS_ELECTRON } from '../../app.constants';\nimport { IS_MAC } from '../../util/is-mac';\nimport { distinctUntilChanged, map, startWith, switchMap, take } from 'rxjs/operators';\nimport { IS_TOUCH_ONLY } from '../../util/is-touch-only';\nimport { MaterialCssVarsService } from 'angular-material-css-vars';\nimport { DOCUMENT } from '@angular/common';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ChromeExtensionInterfaceService } from '../chrome-extension-interface/chrome-extension-interface.service';\nimport { ThemeService as NgChartThemeService } from 'ng2-charts';\nimport { GlobalConfigService } from '../../features/config/global-config.service';\nimport { WorkContextThemeCfg } from '../../features/work-context/work-context.model';\nimport { WorkContextService } from '../../features/work-context/work-context.service';\nimport { combineLatest, fromEvent, Observable, of } from 'rxjs';\nimport { IS_FIREFOX } from '../../util/is-firefox';\nimport { ImexViewService } from '../../imex/imex-meta/imex-view.service';\nimport { IS_MOUSE_PRIMARY, IS_TOUCH_PRIMARY } from '../../util/is-mouse-primary';\nimport { ChartConfiguration } from 'chart.js';\nimport { IS_ANDROID_WEB_VIEW } from '../../util/is-android-web-view';\nimport { androidInterface } from '../../features/android/android-interface';\nimport { HttpClient } from '@angular/common/http';\nimport { LS } from '../persistence/storage-keys.const';\nimport { CustomThemeService } from './custom-theme.service';\nimport { Log } from '../log';\nimport { LayoutService } from '../../core-ui/layout/layout.service';\n\nexport type DarkModeCfg = 'dark' | 'light' | 'system';\n\n@Injectable({ providedIn: 'root' })\nexport class GlobalThemeService {\n private document = inject(DOCUMENT);\n private _layoutService = inject(LayoutService);\n private _materialCssVarsService = inject(MaterialCssVarsService);\n private _workContextService = inject(WorkContextService);\n private _globalConfigService = inject(GlobalConfigService);\n private _matIconRegistry = inject(MatIconRegistry);\n private readonly _registeredPluginIcons = new Set();\n private _domSanitizer = inject(DomSanitizer);\n private _chartThemeService = inject(NgChartThemeService);\n private _chromeExtensionInterfaceService = inject(ChromeExtensionInterfaceService);\n private _imexMetaService = inject(ImexViewService);\n private _http = inject(HttpClient);\n private _customThemeService = inject(CustomThemeService);\n private _environmentInjector = inject(EnvironmentInjector);\n private _hasInitialized = false;\n\n darkMode = signal(\n (localStorage.getItem(LS.DARK_MODE) as DarkModeCfg) || 'system',\n );\n\n private _isDarkThemeObs$: Observable = toObservable(this.darkMode).pipe(\n switchMap((darkMode) => {\n switch (darkMode) {\n case 'dark':\n return of(true);\n case 'light':\n return of(false);\n default:\n const darkModePreference = window.matchMedia('(prefers-color-scheme: dark)');\n return fromEvent(darkModePreference, 'change').pipe(\n map((e: any) => e.matches),\n startWith(darkModePreference.matches),\n );\n }\n }),\n distinctUntilChanged(),\n );\n\n isDarkTheme = toSignal(this._isDarkThemeObs$, { initialValue: false });\n\n private _backgroundImgObs$: Observable = combineLatest([\n this._workContextService.currentTheme$,\n this._isDarkThemeObs$,\n ]).pipe(\n map(([theme, isDarkMode]) =>\n isDarkMode ? theme.backgroundImageDark : theme.backgroundImageLight,\n ),\n distinctUntilChanged(),\n );\n\n backgroundImg = toSignal(this._backgroundImgObs$);\n\n init(): void {\n if (this._hasInitialized) {\n return;\n }\n this._hasInitialized = true;\n\n runInInjectionContext(this._environmentInjector, () => {\n // This is here to make web page reloads on non-work-context pages at least usable\n this._setBackgroundTint(true);\n this._initIcons();\n this._initHandlersForInitialBodyClasses();\n this._initThemeWatchers();\n\n // Set up dark mode persistence effect\n effect(() => {\n const darkMode = this.darkMode();\n localStorage.setItem(LS.DARK_MODE, darkMode);\n });\n\n // Set up reactive custom theme updates\n this._setupCustomThemeEffect();\n });\n }\n\n private _setDarkTheme(isDarkTheme: boolean): void {\n this._materialCssVarsService.setDarkTheme(isDarkTheme);\n this._setChartTheme(isDarkTheme);\n // this._materialCssVarsService.setDarkTheme(true);\n // this._materialCssVarsService.setDarkTheme(false);\n }\n\n private _setColorTheme(theme: WorkContextThemeCfg): void {\n this._materialCssVarsService.setAutoContrastEnabled(!!theme.isAutoContrast);\n this._setBackgroundTint(!!theme.isDisableBackgroundTint);\n\n // NOTE: setting undefined values does not seem to be a problem so we use !\n if (!theme.isAutoContrast) {\n this._materialCssVarsService.setContrastColorThresholdPrimary(theme.huePrimary!);\n this._materialCssVarsService.setContrastColorThresholdAccent(theme.hueAccent!);\n this._materialCssVarsService.setContrastColorThresholdWarn(theme.hueWarn!);\n }\n\n this._materialCssVarsService.setPrimaryColor(theme.primary!);\n this._materialCssVarsService.setAccentColor(theme.accent!);\n this._materialCssVarsService.setWarnColor(theme.warn!);\n }\n\n private _setBackgroundTint(isDisableBackgroundTint: boolean): void {\n // Simplify: toggle only the disable flag; CSS handles the rest\n this.document.body.classList.toggle(\n BodyClass.isDisableBackgroundTint,\n !!isDisableBackgroundTint,\n );\n }\n\n private _initIcons(): void {\n const icons: [string, string][] = [\n ['sp', 'assets/icons/sp.svg'],\n ['play', 'assets/icons/play.svg'],\n ['github', 'assets/icons/github.svg'],\n ['gitlab', 'assets/icons/gitlab.svg'],\n ['jira', 'assets/icons/jira.svg'],\n ['caldav', 'assets/icons/caldav.svg'],\n ['open_project', 'assets/icons/open-project.svg'],\n ['drag_handle', 'assets/icons/drag-handle.svg'],\n ['remove_today', 'assets/icons/remove-today-48px.svg'],\n ['estimate_remaining', 'assets/icons/estimate-remaining.svg'],\n ['working_today', 'assets/icons/working-today.svg'],\n ['repeat', 'assets/icons/repeat.svg'],\n ['gitea', 'assets/icons/gitea.svg'],\n ['redmine', 'assets/icons/redmine.svg'],\n ['linear', 'assets/icons/linear.svg'],\n // trello icon\n ['trello', 'assets/icons/trello.svg'],\n ['calendar', 'assets/icons/calendar.svg'],\n ['early_on', 'assets/icons/early-on.svg'],\n ['tomorrow', 'assets/icons/tomorrow.svg'],\n ['next_week', 'assets/icons/next-week.svg'],\n ['keep', 'assets/icons/keep.svg'],\n ['keep_filled', 'assets/icons/keep-filled.svg'],\n ];\n\n // todo test if can be removed with airplane mode and wifi without internet\n icons.forEach(([name, path]) => {\n this._matIconRegistry.addSvgIcon(\n name,\n this._domSanitizer.bypassSecurityTrustResourceUrl(path),\n );\n });\n\n this.preloadIcons(icons);\n }\n\n preloadIcons(icons: [string, string][]): Promise {\n // Map each icon name to a promise that fetches and registers the icon.\n const iconPromises = icons.map(([iconName, url]) => {\n // Construct the URL for the SVG file.\n // Adjust the path if your SVGs are located elsewhere.\n return this._http\n .get(url, { responseType: 'text' })\n .toPromise()\n .then((svg) => {\n // Register the fetched SVG as an inline icon.\n this._matIconRegistry.addSvgIconLiteral(\n iconName,\n this._domSanitizer.bypassSecurityTrustHtml(svg),\n );\n })\n .catch((error) => {\n Log.err(`Error loading icon: ${iconName} from ${url}`, error);\n });\n });\n\n // Return a promise that resolves when all icons have been processed.\n return Promise.all(iconPromises);\n }\n\n registerSvgIcon(iconName: string, url: string): void {\n // Plugin icon is already registered, skip\n if (this._registeredPluginIcons.has(iconName)) return;\n this._matIconRegistry.addSvgIcon(\n iconName,\n this._domSanitizer.bypassSecurityTrustResourceUrl(url),\n );\n this._registeredPluginIcons.add(iconName);\n }\n\n registerSvgIconFromContent(iconName: string, svgContent: string): void {\n // Plugin icon is already registered, skip\n if (this._registeredPluginIcons.has(iconName)) return;\n this._matIconRegistry.addSvgIconLiteral(\n iconName,\n this._domSanitizer.bypassSecurityTrustHtml(svgContent),\n );\n this._registeredPluginIcons.add(iconName);\n }\n\n private _initThemeWatchers(): void {\n // init theme watchers\n this._workContextService.currentTheme$.subscribe((theme: WorkContextThemeCfg) =>\n this._setColorTheme(theme),\n );\n this._isDarkThemeObs$.subscribe((isDarkTheme) => this._setDarkTheme(isDarkTheme));\n\n // Update Electron title bar overlay when dark mode changes\n if (IS_ELECTRON && !IS_MAC) {\n effect(() => {\n const isDark = this.isDarkTheme();\n // Use untracked to prevent reading misc from creating a dependency\n const misc = untracked(() => this._globalConfigService.misc());\n // Only update if custom window title bar is enabled\n if (misc?.isUseCustomWindowTitleBar !== false) {\n window.ea.updateTitleBarDarkMode(isDark);\n }\n });\n }\n }\n\n private _initHandlersForInitialBodyClasses(): void {\n this.document.body.classList.add(BodyClass.isNoAdvancedFeatures);\n\n if (!IS_FIREFOX) {\n this.document.body.classList.add(BodyClass.isNoFirefox);\n }\n\n if (IS_MAC) {\n this.document.body.classList.add(BodyClass.isMac);\n } else {\n this.document.body.classList.add(BodyClass.isNoMac);\n }\n\n if (IS_ELECTRON) {\n this.document.body.classList.add(BodyClass.isElectron);\n this.document.body.classList.add(BodyClass.isAdvancedFeatures);\n this.document.body.classList.remove(BodyClass.isNoAdvancedFeatures);\n } else {\n this.document.body.classList.add(BodyClass.isWeb);\n this._chromeExtensionInterfaceService.onReady$.pipe(take(1)).subscribe(() => {\n this.document.body.classList.add(BodyClass.isExtension);\n this.document.body.classList.add(BodyClass.isAdvancedFeatures);\n this.document.body.classList.remove(BodyClass.isNoAdvancedFeatures);\n });\n }\n\n if (IS_ANDROID_WEB_VIEW) {\n androidInterface.isKeyboardShown$.subscribe((isShown) => {\n Log.log('isShown', isShown);\n\n this.document.body.classList.remove(BodyClass.isAndroidKeyboardHidden);\n this.document.body.classList.remove(BodyClass.isAndroidKeyboardShown);\n this.document.body.classList.add(\n isShown ? BodyClass.isAndroidKeyboardShown : BodyClass.isAndroidKeyboardHidden,\n );\n });\n }\n\n // Use effect to reactively update animation class\n effect(() => {\n const misc = this._globalConfigService.misc();\n if (misc?.isDisableAnimations) {\n this.document.body.classList.add(BodyClass.isDisableAnimations);\n } else {\n this.document.body.classList.remove(BodyClass.isDisableAnimations);\n }\n });\n\n effect(() => {\n const misc = this._globalConfigService.misc();\n if (misc?.isUseCustomWindowTitleBar !== false) {\n this.document.body.classList.add(BodyClass.isObsidianStyleHeader);\n } else {\n this.document.body.classList.remove(BodyClass.isObsidianStyleHeader);\n }\n });\n\n // Add/remove hasBgImage class to body when background image changes\n effect(() => {\n if (this.backgroundImg()) {\n this.document.body.classList.add(BodyClass.hasBgImage);\n } else {\n this.document.body.classList.remove(BodyClass.hasBgImage);\n }\n });\n\n // Add/remove has-mobile-bottom-nav class to body for snack bar positioning\n effect(() => {\n if (this._layoutService.isShowMobileBottomNav()) {\n this.document.body.classList.add(BodyClass.hasMobileBottomNav);\n } else {\n this.document.body.classList.remove(BodyClass.hasMobileBottomNav);\n }\n });\n\n this._imexMetaService.isDataImportInProgress$.subscribe((isInProgress) => {\n // timer(1000, 5000)\n // .pipe(map((val) => val % 2 === 0))\n // .subscribe((isInProgress) => {\n if (isInProgress) {\n this.document.body.classList.add(BodyClass.isDataImportInProgress);\n } else {\n this.document.body.classList.remove(BodyClass.isDataImportInProgress);\n }\n });\n\n if (IS_TOUCH_ONLY) {\n this.document.body.classList.add(BodyClass.isTouchOnly);\n } else {\n this.document.body.classList.add(BodyClass.isNoTouchOnly);\n }\n\n if (IS_MOUSE_PRIMARY) {\n this.document.body.classList.add(BodyClass.isMousePrimary);\n } else if (IS_TOUCH_PRIMARY) {\n this.document.body.classList.add(BodyClass.isTouchPrimary);\n }\n }\n\n private _setChartTheme(isDarkTheme: boolean): void {\n const overrides: ChartConfiguration['options'] = isDarkTheme\n ? {\n // legend: {\n // labels: { fontColor: 'white' },\n // },\n scales: {\n x: {\n ticks: {\n color: 'white',\n },\n grid: {\n color: 'rgba(255,255,255,0.1)',\n },\n },\n\n y: {\n ticks: {\n color: 'white',\n },\n grid: {\n color: 'rgba(255,255,255,0.1)',\n },\n },\n },\n }\n : {\n scales: {},\n };\n this._chartThemeService.setColorschemesOptions(overrides);\n }\n\n private _setupCustomThemeEffect(): void {\n // Track previous theme to avoid unnecessary reloads\n let previousThemeId: string | null = null;\n\n // Set up effect to reactively update custom theme when config changes\n effect(() => {\n const misc = this._globalConfigService.misc();\n const themeId = misc?.customTheme || 'default';\n\n // Only load theme if it has changed\n if (themeId !== previousThemeId) {\n this._customThemeService.loadTheme(themeId);\n previousThemeId = themeId;\n }\n });\n }\n}\n", │ --- assets/public/chunk-6BTBXX5V.js ├── +++ assets/public/chunk-IQQZUO6I.js │┄ Files 99% similar despite different names │ ├── js-beautify {} │ │ @@ -10293,8 +10293,8 @@ │ │ } │ │ return r │ │ })() │ │ }); │ │ export { │ │ fe as a, Ns as b, bt as c, em as d, Bh as e, $h as f, lm as g, Js as h, el as i, nl as j, ol as k, At as l, tr as m, ao as n, ad as o, ut as p, al as q, On as r, sl as s, tc as t, ic as u, K0 as v, hc as w, Ic as x, eo as y, Ec as z, to as A, Ac as B, Oc as C, Gf as D, xl as E, Hc as F, qc as G, Yc as H, Gc as I, Qc as J, Xc as K, Zc as L, rd as M, nd as N, on as O, oo as P, fd as Q, _d as R, gd as S, bd as T │ │ }; │ │ -//# sourceMappingURL=chunk-6BTBXX5V.js.map │ │ +//# sourceMappingURL=chunk-IQQZUO6I.js.map │ --- assets/public/chunk-4ANWUG5O.js.map ├── +++ assets/public/chunk-ZPIMGF6Z.js.map │┄ Files identical despite different names │ --- assets/public/chunk-4ANWUG5O.js ├── +++ assets/public/chunk-ZPIMGF6Z.js │┄ Files 99% similar despite different names │ ├── js-beautify {} │ │ @@ -11,24 +11,24 @@ │ │ b as _n, │ │ c as Fe, │ │ d as zt, │ │ e as jt, │ │ f as vn, │ │ g as di, │ │ h as Hn │ │ -} from "./chunk-J754SOWT.js"; │ │ +} from "./chunk-VH75GC5P.js"; │ │ import { │ │ a as Qt, │ │ b as Rn, │ │ c as ei, │ │ d as Dn, │ │ e as Ln, │ │ f as ti, │ │ g as Un │ │ -} from "./chunk-NRU3TRWE.js"; │ │ +} from "./chunk-VQZLIIQ7.js"; │ │ import { │ │ a as Ft, │ │ b as xt, │ │ c as On, │ │ d as ni, │ │ e as Kn │ │ } from "./chunk-3EOVUPIY.js"; │ │ @@ -42,15 +42,15 @@ │ │ import { │ │ e as qt, │ │ f as Nn, │ │ g as Zt, │ │ h as kn, │ │ k as Jt, │ │ l as Gn │ │ -} from "./chunk-ZWF7G3DQ.js"; │ │ +} from "./chunk-ZBYY2JLW.js"; │ │ import { │ │ A as yn, │ │ F as Yt, │ │ G as Vt, │ │ H as Ht, │ │ I as Wt, │ │ J as xn, │ │ @@ -62,15 +62,15 @@ │ │ k as Sn, │ │ r as ve, │ │ s as bn, │ │ t as Rt, │ │ u as In, │ │ x as Lt, │ │ y as Ut │ │ -} from "./chunk-6BTBXX5V.js"; │ │ +} from "./chunk-IQQZUO6I.js"; │ │ import { │ │ a as Ae, │ │ c as Dt │ │ } from "./chunk-AW23F5KX.js"; │ │ import "./chunk-TRL2N7WU.js"; │ │ import "./chunk-K5GRC76V.js"; │ │ import "./chunk-HR6HBFFX.js"; │ │ @@ -2633,8 +2633,8 @@ │ │ return i │ │ })() │ │ }); │ │ xo(); │ │ export { │ │ Qr as ConfigPageComponent │ │ }; │ │ -//# sourceMappingURL=chunk-4ANWUG5O.js.map │ │ +//# sourceMappingURL=chunk-ZPIMGF6Z.js.map