From 4171b2f6e98e8680a7bffba6d4e144dc376f7afb Mon Sep 17 00:00:00 2001 From: pdmarf <135653545+pdmarf@users.noreply.github.com> Date: Fri, 24 Apr 2026 09:20:41 +0100 Subject: [PATCH] v1.0.38: eliminate setSettings from onKeyDown to fix flash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit setSettings always resets the button visual state — no workaround exists. Removed activeEntryId from per-button settings entirely. Running state now tracked via runningActionId in global settings (alongside runningEntryId). onWillAppear restores state from memRunningActionId. onKeyDown only calls setState — clean, instant. Co-Authored-By: Claude Sonnet 4.6 --- com.pdma.notion-timer.sdPlugin/bin/plugin.js | 101 +++++-------- .../bin/plugin.js.sig | 3 +- com.pdma.notion-timer.sdPlugin/manifest.json | 2 +- notion-timer.streamDeckPlugin | Bin 99198 -> 99040 bytes src/plugin.ts | 136 ++++++------------ version.json | 2 +- 6 files changed, 84 insertions(+), 160 deletions(-) diff --git a/com.pdma.notion-timer.sdPlugin/bin/plugin.js b/com.pdma.notion-timer.sdPlugin/bin/plugin.js index b715cfb..d3b8621 100644 --- a/com.pdma.notion-timer.sdPlugin/bin/plugin.js +++ b/com.pdma.notion-timer.sdPlugin/bin/plugin.js @@ -6438,7 +6438,7 @@ async function stopTimer(token, entryId) { } // src/plugin.ts -var CURRENT_VERSION = "1.0.37"; +var CURRENT_VERSION = "1.0.38"; var GITEA_BASE = "https://gitea.pdmarf.co.uk/pdm/stream_deck_notion_timer/raw/branch/stable-rebuild"; var SIGNING_PUBLIC_KEY = `-----BEGIN PUBLIC KEY----- MCowBQYDK2VwAyEAN7ko8TUpuPzPAJuKAZCRjV0c4ZSlou5d9pUAF6o12b4= @@ -6528,17 +6528,18 @@ async function getGlobal() { return { ...stored, ...HARDCODED }; } var memRunningEntryId = void 0; -async function getRunningEntryId() { - if (memRunningEntryId === void 0) { - const stored = await plugin_default.settings.getGlobalSettings(); - memRunningEntryId = stored.runningEntryId ?? null; - } - return memRunningEntryId; -} -async function setRunningEntry(entryId) { - memRunningEntryId = entryId; +var memRunningActionId = void 0; +async function loadRunningState() { + if (memRunningEntryId !== void 0) return; const stored = await plugin_default.settings.getGlobalSettings(); - await plugin_default.settings.setGlobalSettings({ ...stored, runningEntryId: entryId }); + memRunningEntryId = stored.runningEntryId ?? null; + memRunningActionId = stored.runningActionId ?? null; +} +async function setRunningEntry(entryId, actionId) { + memRunningEntryId = entryId; + memRunningActionId = actionId; + const stored = await plugin_default.settings.getGlobalSettings(); + await plugin_default.settings.setGlobalSettings({ ...stored, runningEntryId: entryId, runningActionId: actionId }); } async function sendProjectsToPI(tokenOverride) { try { @@ -6568,42 +6569,34 @@ function buttonTitle(projectName) { return projectName.replace(/^[\p{Extended_Pictographic}\uFE0F\s]+/u, "").trim(); } var TimerToggle = class extends SingletonAction { - settingsCache = /* @__PURE__ */ new Map(); + projectCache = /* @__PURE__ */ new Map(); async onWillAppear(ev) { - const { activeEntryId, projectName } = ev.payload.settings; - const title = buttonTitle(projectName || ""); - const running = await getRunningEntryId(); - const isRunning = !!activeEntryId && activeEntryId === running; - if (activeEntryId && !isRunning) { - const cleared = { ...ev.payload.settings, activeEntryId: null }; - await ev.action.setSettings(cleared); - this.settingsCache.set(ev.action.id, cleared); - await Promise.all([ev.action.setState(0), ev.action.setTitle(title)]); + this.projectCache.set(ev.action.id, ev.payload.settings); + const title = buttonTitle(ev.payload.settings.projectName || ""); + await loadRunningState(); + const isRunning = memRunningActionId === ev.action.id; + if (isRunning) { + await Promise.all([ev.action.setState(1), ev.action.setTitle(`\u23F1 ${title}`)]); } else { - this.settingsCache.set(ev.action.id, ev.payload.settings); - if (isRunning) { - await Promise.all([ev.action.setState(1), ev.action.setTitle(`\u23F1 ${title}`)]); - } else { - await Promise.all([ev.action.setState(0), ev.action.setTitle(title)]); - } + await Promise.all([ev.action.setState(0), ev.action.setTitle(title)]); } } async onPropertyInspectorDidAppear(_ev) { await sendProjectsToPI(); } async onKeyDown(ev) { - this.settingsCache.set(ev.action.id, ev.payload.settings); - const { projectId, projectName, activeEntryId } = ev.payload.settings; + const { projectId, projectName } = ev.payload.settings; const title = buttonTitle(projectName || ""); + const isRunning = memRunningActionId === ev.action.id; if (projectId) { - if (activeEntryId) { + if (isRunning) { await Promise.all([ev.action.setState(0), ev.action.setTitle(title)]); } else { for (const other of this.actions) { if (other.id === ev.action.id) continue; - const otherSettings = this.settingsCache.get(other.id); - if (otherSettings?.activeEntryId) { - await Promise.all([other.setState(0), other.setTitle(buttonTitle(otherSettings.projectName || ""))]); + if (memRunningActionId === other.id) { + const s = this.projectCache.get(other.id); + await Promise.all([other.setState(0), other.setTitle(buttonTitle(s?.projectName || ""))]); } } await Promise.all([ev.action.setState(1), ev.action.setTitle(`\u23F1 ${title}`)]); @@ -6611,7 +6604,6 @@ var TimerToggle = class extends SingletonAction { } const global = await getGlobal(); if (!isConfigured(global)) { - await Promise.all([ev.action.setState(activeEntryId ? 1 : 0), ev.action.setTitle(activeEntryId ? `\u23F1 ${title}` : title)]); await ev.action.showAlert(); return; } @@ -6620,40 +6612,21 @@ var TimerToggle = class extends SingletonAction { return; } try { - if (activeEntryId) { - await stopTimer(global.notionToken, activeEntryId); - const stopped = { ...ev.payload.settings, activeEntryId: null }; - this.settingsCache.set(ev.action.id, stopped); - await Promise.all([ev.action.setSettings(stopped), ev.action.setState(0), ev.action.setTitle(title)]); - await setRunningEntry(null); + if (isRunning) { + await stopTimer(global.notionToken, memRunningEntryId); + await setRunningEntry(null, null); } else { - const prevEntryId = await getRunningEntryId(); - if (prevEntryId) { - await stopTimer(global.notionToken, prevEntryId); - for (const other of this.actions) { - if (other.id === ev.action.id) continue; - const otherSettings = this.settingsCache.get(other.id); - if (otherSettings?.activeEntryId === prevEntryId) { - const stopped = { ...otherSettings, activeEntryId: null }; - this.settingsCache.set(other.id, stopped); - await Promise.all([other.setSettings(stopped), other.setState(0), other.setTitle(buttonTitle(otherSettings.projectName || ""))]); - } - } + if (memRunningEntryId) { + await stopTimer(global.notionToken, memRunningEntryId); } - const entryId = await startTimer( - global.notionToken, - global.timingDbId, - projectId, - projectName, - global.userId - ); - const started = { ...ev.payload.settings, activeEntryId: entryId }; - this.settingsCache.set(ev.action.id, started); - await Promise.all([ev.action.setSettings(started), ev.action.setState(1), ev.action.setTitle(`\u23F1 ${title}`)]); - await setRunningEntry(entryId); + const entryId = await startTimer(global.notionToken, global.timingDbId, projectId, projectName, global.userId); + await setRunningEntry(entryId, ev.action.id); } } catch (err) { - await Promise.all([ev.action.setState(activeEntryId ? 1 : 0), ev.action.setTitle(activeEntryId ? `\u23F1 ${title}` : title)]); + await Promise.all([ + ev.action.setState(isRunning ? 1 : 0), + ev.action.setTitle(isRunning ? `\u23F1 ${title}` : title) + ]); plugin_default.logger.error("Timer toggle failed:", err); await ev.action.showAlert(); } diff --git a/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig b/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig index e65c5ea..287a506 100644 --- a/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig +++ b/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig @@ -1 +1,2 @@ -ȩԝu1B!I- bhݵ Gr7L]x~cᅻdX ޹y9B// \ No newline at end of file +ʤCSߤ +֮}~P }̘Z;x{,NYPu4#ʄj᧾WC긩 d \ No newline at end of file diff --git a/com.pdma.notion-timer.sdPlugin/manifest.json b/com.pdma.notion-timer.sdPlugin/manifest.json index a946959..a569280 100644 --- a/com.pdma.notion-timer.sdPlugin/manifest.json +++ b/com.pdma.notion-timer.sdPlugin/manifest.json @@ -2,7 +2,7 @@ "Author": "Pete Marfleet", "Description": "Toggle Notion time tracking for a project with a single button press.", "Name": "Notion Timer", - "Version": "1.0.37", + "Version": "1.0.38", "SDKVersion": 2, "Software": { "MinimumVersion": "5.0" }, "OS": [{ "Platform": "mac", "MinimumVersion": "10.11" }], diff --git a/notion-timer.streamDeckPlugin b/notion-timer.streamDeckPlugin index 01d4fca8aca75d1945c0f7f9d1ae830611e37652..d8514a059e8b24c7a05edfd33b0b5a4be241d502 100644 GIT binary patch delta 40985 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

+z91Y}D9$xTq(dNH0})f3KnTAnxUe;rdtrE0HI zZg|!>4B&byQTth76m_}EP5xmmLT44Q& z<8F-xq{$Qlg-izy|5fRE<_?Xs!|j`bqVZ|kdy+hOa6j2dzFl><#QW?Dp3 zWA(JHleEkpJ+SI!?fdcfe_2*~10dP;^rsE{t$(`BHAU}5(@v8M#MEk*kdOOfg#Jip z9EPJ1p&T|V%0GPqqBkHj_Ce^NMGF*5NAAH}VW zBzBTlHv4mSrJ5+3vo-AEC|T+qxx)#0ic8ctvol)0tVAFv2IS&ebELbXu*}j)|J-Rf zb;TuPF&z<^Xds^wo%7EB$SfvQ(K~KZ8tp;zxa*Q9AqO5y(p|~23&Bj}8XtITv~Be( z;Elr(+$6M%9~?G9e?;^!N}R|zH4o%9CsqZ!k5r@^F=wKTFcGl}bz@LCuQ;#|@A%Pl zdWr*14GsrZqR)Q0;Vk1Bbg1MCCWifG#SoP%$*wC@MwFF(vH)N^qVtyP$ zXiQFI(oac2VYpteR5Ubgw>Db-4!4(K;*8VMi8JK!%_*n=Vs|KYh6h~GyS4j^-c(Ey z^=Mhrp_(_!e-$+U$Mu!XEkGaY3+n$#9fZ4+J&6}113w9n<{zQ5b6O0huyy-z4x+R+ zYv8YsUAok7=~928JK9J-&gFxzb*F<-e2ya+;(xmRDY)8!BZ+6DAa1Q_qR@gghmQZD`m01`>Hy5G+(55Ba2f#pA{KFF z0r+v6961d3k@|h012Z0m&m0wKa^H*^U&t-ge;V3JR*n@-!pofk%@6*|Z%jpBlc=g< z$X6FX_NtdAIwv=<1uoT@e(CTDj%UuTpga3vGr7OI>J@&UJXnq7zPWohdY1oS?io=T zpb3q<;y@a<)9jaimJMuJO}li}33_P(a4gqj2qYI!lsXSxo~9O)9BVZYs%bSQ&3le3 ze{ZwOwq2EOHmXzd)wg<#AWOhf>Yznvse7kt7O4);0-s&YOqll-LGievlgy6<=#hW} zy#>je)Zg6#8UCKb?&yI5neMijAB(m%FOPQH&a}z_cdhpRCxOh{!vQKxQt0>Au;*({o`@Z8z#CH+akU$AxUg6d5ZmpYnw)2Mq&@*+8^t1qe{OTk zkrs!S1oxdJbyOKAvuQGd7Yop7uuS3^JW6)sYg;U|!Of)_0IOmVkhJ2AQa(@A&bV^8 zQBg6BE9{!~%TktY*o=DIMeax@A|ByvjX>(i`i6eDWsu$)8WcuZhd#MQd#fkCIu)x0 z^uj(Bx%5}1(By5%G-+c-)zD^>e+9Y-UW#H1f>K9A5XvY{q-4t78pmpdtTL%c z&Mxp5XI=s3eihWPC?yrjF!72+A^zpsZKs0}VPZEp>)g)=tHkmbDYTo?U(PO*1565T z$ZL9@l1(^xa{Rh<7E)8FnWxjQy_846?}E|No2f6hTr9V)L$ zoIDu{jvL9MhOb2pg4;EWY-j(nI%9PuDbL>${Rf(J08c=$zvpWkFBArWw%3UA!wnW; zGl&bDy@eMm)1xDC3(p8Cw!5AYl8D@}_cA1de|ONj4SB0`>u@Zu$Fcd?r|NcKVyJav ztk^f<2m^JbHkwuA^}WubgWAXPg@1#(DnLBb4IIcR@kK>w%0(&OJ6axj_?0#h?7ZB0 z(>A(5R98MxZ4(=WQEDo^tW|0{&E{RhdoXCLhWBS3V$p{{mgDpcT0k2??4g&*XvYuqfPlE zJKO84Q_sLWe@6j=ae6fKgmv))POGn@N0*x(o7}%5pJyDD@-E`Z zD{in?aSL=swV<8vG*KJ=Gr&B>73hZDI&9M9yIfmceJF{#FVEtDa(`tsE?%VQLE;6V zZC__8J)Nv}eCk9ICSxg7!a|$H5rUQjr+$g!7yX+p@3j^<306$a`9NeqJM6?bjX<^| z-&M?}Mg(jo1TNqSFHlMrq~ov5LfJ70Q_N8f)R}-@cni9g5s$rw3x<26V;;L+$2uLOkEj*7aQ9 zJwY|}ns3_L58bf5Wb8-zi(CrDO2i`w{$@6E)l_0P2Pey#2+&=_L|L-+WJ|*eyRoLy zKZw6qP#v>kKge`*l8ZS%E{OOYZBlnOL>p8`0AHRSo#;lCzJHX1TaE^rUf?2BFLZe| zngq;*HnDMqigPuTiu>oY(R*GK+^6m8KB8x(g$+Pcat?GD?7dihXAAl?5oie@4EIFS zcyt?dDh`7xo`*gj@HN>Gd55>tpFY63vdoiX&!ZL5O>&ZWj+V1E-u$TQ+)-B)PAD-s(t7L3Ti z!z}b3F2H*GGUh}NZ>J^*l;Up$uqULk0SQq9sfCC%geyzTfgElY++*NqV+bbrLcsxF z6@&1TUhiGMibjW(MM^KDjKPjhEO$|!#V%@QwiIgZj;;YjM;P$Wdkb&!1OiHl$ZW|5 z6u26{JAd5Ec&6^2c%|t8wEjWh&P3`_?Vbw>l{J<$f>0O-DK=wE?gcM%dvP?p5$Lq& zX{j)pKV>m!5hqmuT%&p`_VPl_NcnJS4z>(m{1YV8UQI&01es)mLo zuWOu{r?=YN*)B!NK&84xG#5D}}+kc3YWr(p3f z>0voisEABwFvRhN41$6znE@;o0EwP?Ln>iNP4Y04+c_3?&sJ=5FbdiT>^|ar&fdv7 zK5q!^T|M+^zzB^-2sem4^;L0oAiCJI8D~Na2J`_llH?H~3!w%s!x*}LhbY`T1P5}y zI)9``{bHcbfMuD{tx}-4c|;+)4oO~?6uy#s4f^siWRr#o`OfF$QfiNjQ~c0OAEo#h zMjMKYKaUrS<<{^pkj;e=W1=5!{bMpM-e;p{=jo)B^7oO=QK^a2kOEn=oqLbc zu8(ioG)4gW$g9dLYqAuAMf+vBDlv)&^naquAFIOe+4xAmdM5eZyAh2Fy>xNazM3w) z9&An9xpyYu$eS=WO8*8qoYe>)n!X#yno#Uk8PU`T1QZ z9K(f-#<;^H629W&nNA-(SOmDcyDQ?_2-AMRW2*j|Bq;=387Qg!%a6I|BH>3mvw!o5 z!0pq~x?MC1lz;#OlNki3iFJFHF5jW|WW~H7a!JbuE?S?r9GmF86pr83GqgZRf9`ds zzNQbK%A<$ct*k=KU0N$y@`^C>RGoDw{CxOHJ%o-uCefxDkf7XRZO9IsAw@(@;-f3 z7d`wcn+gh&jYP4my^Pk&4f==fFx|weD4pXNw^6EaF1vW2U10zWIBWlQaDVsS>dJRp zEB~9W{NwQB`ucox^UHg-?%Q{-Uqe<2bB02pPN%5OG`Dd3xhh+aOpD%TVRHRpT9&i~ zgVLiEy-}T5;?HnhlT;Y?P;bX3rdwS`2tTR%vto3bpUoyIi>FTf^=sr-ugIBTdxZaf z1F6*`6XJLE%CrwABZD^?)qn0np$|msD}0~k@P?GoxEGF&i2`S7}V ze^vc=s2Cd)p+eh5J{;y{rskkFg+JJ3nolX?I|P>Zv%LbQ>3W)^V1G5390#^c$6;nm zRFH&#i|iW4tQJGU>Oe8&VX~E+7sY!RmOk0DE$ojJjk33*oYETWI8}h^3C;puvWbjw ze>Xs@HD=#jTYd2D!*3n|VkHIPu2s?oZ#owXUOguzwgqegsRj3gl`39F`Vz>KJ4%?6S?keImBjk)8Wzl?&~?L0-bY z{^rqV*b1Lv4X_Tf0AU$poHbv+Hin5KTz;Yua`Z#agBk;wjVIX(o$7<+Py73C?(KQY zN61$r&&o#Y7&fz3S5DRA(BpaevBr!Dx-_iO3#P)5uS+ z$bVaIut^51T+iAf-I;@OQ@p|3DdI6?z8rg;0ncZ`X)oECnn;vhE3T*}&Mm<2NgwNZ zB(af9+`~#4n5qfItr^@gm8gxt2chZ8WZMOyW-{wfmF#Zw^F-8GjU4MCr!fI;+`)9Rcx2iJczt~7xaBAGcEaz_MKUdvNfPh*X`mWK7OYHC)zPqjx z!QJQ=*iZ22Zf_ti@^+Uw7!G4FydhiDxIp46fBW%>)$bK=!Apx-4ELaCIWJ0rE=b z&VRn-jj;|m%>Kz0R)M53O7c+mjPgp+-vyx6P+|f;kfUVhO^~@X*^wiFQq*mv?)u{l z&VqNZcm8iOC@vIBGvovfIbyi&kTj#^{9ugFZCgql@&iUzTA`CVXup2sQ`z-{gk$+JBrpG41J5 zc(qI4!K#(N1W*0CE9fEuDkHB_=+lR<*kDoeAp9uu0JWuwipRLW-rDbr#j8qBPEVzC z7Q3*?D4SjullQvlME%UNkrV?+Wtn@YDXUP?O@EHp0qpKHpWupMXDn^;-DAL(^mXTZ z|HLHhUQB8WuP5%=Y%KT|`F~+}=};7t0OQ{WzKA+D&MUchim!K z)Sv}r9-}xZkbEq*n<4?1knE_f6I{s+8?uWYP?sDxl;jk;WID)xu=+3_a;aXzxV89` zm9zAsP2R#pSFbZsq$6jNck~N8rI=8^It!-sDlhR>ub7x{hCw!!e}DEoH8Ep+wfmrB zlqKKZbcQ-z#OIi$ubQdMaMN15-%Y-is<>rLp-J=$j>y^|kOJI>BZZM0-&ixL8a7iG zJG8OwWfq6#)00KE>!n7*mzH{vT(zf7ljJ{dxo>h#pOJh?ff_v^ zSx)8(;t=4`nvg|kwjxL;D=@K(22mHoOJh|q$HrYg_IkX%K!`3OUvr15qhU6pIiY>U zO~OY0T6;FwMDoEje)l;oy!YoMp1Pj}P5V zP+~rjjpWW96en3m)+sc|U0!_1MrbXW4ZP2ev|U2fXD2qxw`}) z*p25u5GHQMJb(S44dEY|&fmjAo=s4W7pI`Kf8rI@Y9tpXBQTOs<>Gca3sym4KdL2< zqE}!Ou_qHA#IKFDmv?=wKx;euemE_xbwCq?Q*rL%69w`$uzNS85n*DcA0Z5KMSNVp>Bg(;k&(XSrd50tp_!%E%V=?_2Km ziFK^5hNgpIubX2~&A(80!js`uGMKT!@I_wsrGd7*iB&$E$)|@O^i%614)bvJexMP$ zwG zn+kz1vZw@Chs%=Xc88mrzR>->t5e-Ol{{**J~H8ZNZ{$?4CdLnK_1_l&uw={VPae} zG&0k&-N8o=^-qxHPD1Jn4tg!g@BcV{nUo3agMWlS;AJdkssC&uU@jG{J%(Ihht9R7 zK}S7m73$;ZP;%}-k;JjhQpX<9AcvJVv0A*_D*<30;quT9NOvy4u{;c(ctO!jc;J?m z{rn_tg7Ic1=OToeR#%^P>!-<2BgHl-lPdiP+b$PCh@G3SA70+sI*Y^1H@HDBvTb!= zc7L11l3(=5>b$Ok$K7S=uQ)sb)IH5RT~N+LzZd6V@g7*ghVwJL@m6dBp&mNH5IK?v zIlK=247~|`_baMrgPluDHf_Upk&f+LMAA{Tw-CujF*gTP?&ud+h;9Ovu#W@$)2bZw z%bJad>An04{52a@;+rAxwo^4UK?H_K4u1iT7UkI+@JNoK!}jyX?$^b!q^bgt#iBCR zhp3nL*60;kcWo6e`Y$CthBmP1ude4KBp8csCyP7pGxITS;Cep27{)3YlUdH(d2%() zsLX`Jx2<|Tts7Z)7f-zXIng^@3Ap1`25VZ=_py=5zWfLnn5%y)a5MjD^2M=|0e>Y$ z8f+`pIBvJkk?9<(F6MAB>8}Uphw6B8js(>Y{)NBP57$kp2?4|uU3xD&mx_f1VslCP z(Z8JDTh88VmdjwNYzC1T$&*uVF&8ilJ!U8DFiPK0WyxLSG2AaIowNU#4bRePac?%w zhb8!2P4DGv-;VAL)6v;X^{KtI*?;}vB^QGlG#j;=b*LEpFz@G6NXl5uCjD&XA|0tt zzR4eR8^Ay|bQ~8x&r5aZf@@-XfPeD2g>f=U`szk}qV-iUP6oO;04tAGP9v;a zTk7B;M07bhgf*f-bi$w7b_Gih_O32YieZm?QNp4N1u+Kx>VKpj=grUwXMe*AdD$8- zdg+*Kyp{nlRuz4nyo0#R!z(g*RCivEcXO(}cT;kP%O}Q)u|%~Ist34E{K4&&;vtAL zGuGB%Kz6}&9)A4eFdw}){mzYfBz*=8mw~Q?MIdd@X>_d|G35#V535wL)U9Z2FcBqe zl`%2wNLQY)_3}PgJ83f~dw=f_Kvu#BTZJM*ge=lFpmj}sO;pnQ6@$& z^y3}kqn**5MDqEqqnZq}HA+&ZQdHR}7Kr~Ugrm4Z4xhR|JTy9 zSX$A~(Y@Bdk6k`a3TSYdTgyPfy5Qs$_*7yUz^PZ8v(NbUn#AyWXPIcr>xoINZT-l@ za%h&vA`x5^Y>X$2>VISjNC$TEV@-V&)Q8GR2$*4-9pp~be5eq_J0;?Z5mhOJ(gZ?B ze)q2b@}L{GH5%poJaa>bR)5T@z{vmj)^5RNBPGCsTuqI070n}7EQLhl2RU^UmeK0n<> z6-MfBeAtONf{*0aRkOD!cV+Av{&{;l3T}J`^y+HR3B zeipQoxJI^q*Sfo@(;A&?v$K3ej;p86P3LnR6u-i{jDIH?1j3SQ!$qI}T3wE{|Bd>; z+uSApmg}{vn*Y<*Y~dEu@z&vX)DGbGH*wW{hdg>EpFWTx#($x6CF4^K8+DVl>P2)J$4%GK>n*mF z^DpMj9{0$^wsfBFPA6IRkF1RbP6R6Y$2raZ@ z;YaMed@(8hk&So=jSl|m4F6buVUs%gViZ4ApV{f$PU8%Xmf*p%i%#7SX&hq!I0l^K z2Y*~hh1edMPuLjRV>n6&GquKTH4U_&9iwEUeqq$Jlb;Wu>=2%TVWdveS3rEFRZTzS z1N#cNqYB?}S^O37DFq-(PV;OyFb9GTZf9P74YB`07dh{HuhKE>lwr|Nhv=4}Uv~8l zFyVXPIWg>XI!Q<6FxA0`nmsC3o*0A$n159SAUac+!9+j-+vI%#jx*%WNO2FNMlJO* zB%1RFHYR`{{0Qp-zcb3GIl=}{8c^AsR?Kqvq>@WGrxo-VoqmGfk1QO9HO(Mk;eZ}e z6e&*fj9%>|(j`{jXIJhJK2AOl>Sb6={k0p6?YznvY6LDS2vdI!0N)Jy3y!5I8h?3B z%>D|*jVv;uv&{D3KTEja-v|g=BVv$oKuQUS;KIU6&|(r9vaA!qwPSirUs+J014UPT zrZxy>hm*W_9u-s5QSdea54yRr$k*?H79VhibKr1|6G#f7M)bFc?ouCd))RTq)G0)L>qbuyT*&jR|6ZXv*&60420M%JxSnQ9{>=l% zfhYpJ3k3J7;D_eTOEN>)lU{R}seCc6J^S*B-{!FLs zRbyi6+2moVwiy;S$-47(6xlSC{uM$~hk_pDUYw}lxV^4=e~6@Dd$It?4FyRDC`s86R?K%!a4=&>XG&eTO@lb66#B z9{BBg7Zf|M==FrT$R7QJGM!>D(=_Kuu>z@{MS{gw^oroJ7xD?kF*KYCOhE;{G>hXx z{1#$Gb}@y(%g+C%j(=SxCo(h{K;$Lxwb=lOaxgEo#X3>=r8yDs)TJ?B;s9e4w#BNNW|`oU}s^;r$(1n zy++;@kQ_qd7eM}2eZtw@ua)%yBv+ujAwaz0zt%?Rx|c%(hJU~)G}1`rC2I@%#qP0E z1@7<=0T;@W%sR0@BWQvmUe5u1q(??0G*0tLmzDF-4t^{2j1@=DFpolt*TNLHmxuMO zk;|Gzmty{DxkDe`K)JsJz|;hXXlt(hbs{{P;wd;o#7Sx-j2$SF>|!0Gb7k?y#zT+3 zP_osvn4!^DQ-2r%qRhdh7?0rwIveYkW+D0H5O>|X1w%Asms~T-S%C>tpg()YP?|($ z^#n-F0(%smketSe)aC{Xw76Cyw6RRG?Yw-QzShNP;RkSj@4i85Z~nJ%`{j_tR8c2t zSj9{Zkjbl5C)Wo(%T`SG_-reW^SOH$tf`!N#&?orRew!L<9S9ox<#5Fc*iEJmui8^ z(<_e-)MgrB=0}$nOtDqv;n6$@N3dI(B#V+2E?&PetL->&rfI#I_J?e8)i!k(ur1eU z?T%^IhDx2t9mENd8Z$+U*(}GlrlESo-$ll^)7T1JV+nG`eMwo;hSN~@=xsr&L}H^n z3aC6p=zlUhqTvRp!T!znz>9pukJ^?O65@!)@<0``a0|RKe<>uRHMVACXCS6V?PaS5 zAJmXIi0!C_IhM;Z8eEgg7ZbU}vh@6mqEm_PzYA=>RPzWi3d|gm%@4uko36)!V&s~r z=1$|tmP!v*uMtb(`w?I7VDD=IOCe-d>Z_?;lYfg;2?ABN75uUC$;Nb!E(n_0FW@o~ zBA?NyJ3Tzs(YT+9&4?;E4yIzJ5v!RF)w~|tq5HGi4aEm}CX%BZx>f}{WwEIX20(|V zdT;pnM||p6=}}|ua5^F+RLJWQF#;ja(uqFmF&l=t{0RS0`ruvhso@T8-$MUXP%iN3 z;(v=mT9P)oRvgGj{o!noL7WHZJ$9KYi;JvH6NmdGb`HugZqf8KXL_QYXLs9;_85E@ z8l_O-u~iL&#lgkr-c@3oOe6(0+aj#6DyvjfU0|j8RKFmkLr_3oCG1l_psjRf?%|M* z5&_K(u^@gTE{5ivfHW6GgrkAJ6`jE|nSX2=!#eYEzVP&ClLY3RCqS036Z! z(0J}q*yOz0LKjY2qO{+iUCf50oe(_Dtm9z&d?N9NXWq+BJ zZ_R~@Os&x5hjQtQ>dhtc49t|_0D-f_&ZH?A+V+Ufx_bQJ#a)CJU3H}m4RK79A5VSQ zdW!?&js9Xhy%I_y(jANng9ie+88=y#KkAy@zm53nB{&+ z!&3KvR7J^s2y#$T8kA$Idz@fgoPP`4`e;C!O*o;a!$`g=DG4K6E9&iE&PpwVQ&bbu`PdB_@ z85XG@e5|~shrUI*3x%rBbw3UB&^Q~{=xCbjN0Gp~L}9B-YDQn;|5|;HYM8zc^jlGl zCyl4a^0c1N%fE-#^ZU=C^nY~uG~(nlv1wytPSKudIn{7tDdA^Zun}0GkVKyqBXvu} zogTh^M4vN&o8bqKrkoB090k2K)_Y<{MD$9)6bA9NmtwpGqLhTQqH5&zYg+vG-tOz@ z%a@tKGRTujHhrMP7aCfdmbil-fBDfJe}252@j+eeD)LwOx%|Qn{eOgFy>9|URoX4L zYO7&Pu3`F*D{cMoQvDq_?tVjooiUfWYvj%6JT#@}UTKV=1EktR(W(nmczeGJ#B+LO zR)XPFO9Y-|Or3J`>lqpVuu&5O*)^#XuM4HLFOa>ua)UG8X5!B*{*Eg~iU=|8i!m0p zgBychn3#c&{2l?b9e=gJvDKE^0~{GteFXmbi>AZ;0^)WaVe9^RJ{%lzMaum$%O_d8 z1z$IuuR!vCa~LdW1%Gb`xvyVu@?o>e*{@ejf4$NC*RO#9)oJEB_<;Nc)lGm-x{IpvH1yJ zH;=y%J~PmlPOd}0+HkQ0v+AFPSqOK8SShubj!7h;1y*)_ubV^yShOI^8VQ-jy$OPl*!*e(1 zgxWCJV~~1S4t6Wlc92d}ktX9r5&rwfPDkpD97Xzp;%43Oy*}(hVJq6hQh{$Y%89EQ z*Tmg_mvF}a1i3M6_8eUO7g!ODvWv0K5``hV)vqTA#_ni%<&lWmweW@ary>|OIYFqI zNTl_IZpN!7{H$~^acJ31aOt{9*)PTvP#ha*%u$;4>@@#HeNlt9V-C&FQ5V(eO^cnq zT}|MShz9#s#qU7z@+^gn8tMobY>x)*hpNJVu^t88*#H2!*?8EyI4*vjZ`dZD@yape zuY>yY7-ACrelKGB$XZfuNoRJerB#=z+Yfm$EB~67^f)MTjEEOflkn7b$h@j9j1iRz zPd!Q+W3a&R5DpYY&H3Ezm5_*LZmLBEj?|>@FKROR?^Z;)iLbpsrDB@ON~P%>77b+>E)SGNNNi{rWu^W z+G31NGX5yXa!(DafEP8d!n&+5$WCTwevSLG#uU;JaSe~barFn9=$FEc`q##hdWpZR zb2a~V?+(#OQu^(Vx1n0hJq?ATWj- z4$U5~)QsXgv7&{Uq$v|F_dO%c*J-Ak5W7ENgP7~`^YIg#3 zn~~gm5Z)SqWN|qLOlH*JHgVq-9fEZlqe$9faX}lI85eQwP~FNHUVL1bBhE) zB(U*k96q`g6(#9gh5KQ?@`IMAjulzqUj$=llJi#({MqK)Wb?sXJa|5T0pdwsbXOP! zRnDLbi-NxuZK&$?@mk^V=%14dl<*#gu|Q6jvX$I-bU*p1k;R8+mnB>WM=a+ypDG^q zztTj_&8X=_b=uwAm?-+^pBBH;RAH!PW{LvSaueOt$ASWJg_v#J&ldR~CCdf&1w&7> zQI9x`H6O(u&>s2(WOlrNB@@F0w*-e3mC04W#j#&$H{n=+%WNktE8Ys@NZ`6d zp+A3($!fh%)4Aeh?AlYUm=hL(6v=<7>EO86noy`-gYCei?r7M)-*k4sFiP=yTafNg zE!IO=L00hT{kPPZ%xhfrZ-{@`j znYLV4H&GLk97e!#@nAX0RQKL6Eb>}J^vo=rdoT35=~?PR6}%v1 zY7v#pW5KEz2Xn0RI1Zn&7i%2j2Y)gb=`VZgLy(I^EQbf?ru1cvYX?rvws)gZ0f&cg zzV|3(0Wc1K#<`OefLri=moLZ|wrVVbCt(#xuHhdFmI1}?zj3%&Lm^3(U=m)W+LO~` zoMt^RfxC-o$T8myZ;CK3B?0;JBMvi%x02(UaAg|WGOl|gbRoCsGQvP&7(?t4@D*kZ z_?UXBF%5K`XJrf*HoTX9ct1n5-22;4z4lLoyPcnZ0QN8MJ+8u$pjhxsALJ9UBV9y& z#3>=?yBcSu$v0$z`-6_Wn}m-pn92c9a>yk<$=Em_6mC?Ebb_efJ#EJqqvLvsiSz>5 z2mf6}hsXdO_NE-7oSl&3ycQG!M+0Ie5@IZ`YF#R~0mjvfx~p;~}$x`|8@?qWC)4Jo26v4-rIewGc&_@TXPc`X!T zHdmAXTOpP`We8w37zd^?Bf-;QiU81Ht<@HP#*O7*|E#$4IGADKLe9NYu@}i{wqh#^ zp|_&>#rx`w?9qWdnmAN4vzAauFtHij_Q;hASj@wsj72E1m$BZc3s^nlu$oPFQ`I*Kbq z>;!-aApXMSOot!eY;_J+4?Rvw)j$otqF5Vf&896l+#=;GCzJP;-;A}Z7he!$)iA|NCiiFXLEc4gK2m+WPB%&EKs1249WA5UN4g5kM)-#vJJ?=pd+4!G8| z;0o8m16Yd>8~$40N4%SC1m-XJQL?s;WNnqpK>puI9o&lA z&`wnmC3)D3T|&g5RUuCHNI;8Y5rykM$Nq=<;TtN6w;EO|xf}6`esV~RruvJ-d!7wi zkP0rb&lMI-oTWxKW~yx|N>68J=hJO;>MDV9GNJ64^gu?>2dy{E=CTpxkcW^U zx;csjx;-?%7S9`v*h$=)m2ruGQMjPHn-V=_CZr{Olx?rQNz8h@6snA)c#X%`9q@x= z9f~7xk<;Znj>M6T%Go4~^uxHCQ?vqz_(s8v69_M+ga?Q(#i2Jia%y7Hive5u5WE1z zyh)<=Y?Gi`6MIUQ1e6Fb4|(BC z;#3xmb5KE%Hqw{sFX|LgM$}E(b{}H7+i8SW!#rn1P1NO_T>_j*abbKG+Vma323E+B zv{@k&gTDuB)k`7FRzH=0yD6O4wjt;;vSP5dV!B;;XDcpo>#~uNU3m=qMt2uy7N->LFekB(TLrco*v8Du}(ZBE3D2ufM zm1PnJ@3&Q8E!v)mpRJcrvaF4y4rs@>s4LpeX8EALsr6_w&F1!YqL)CPEx7z`1HWIF zGMkyL)#}y`55#ZpLh@#rUZ(jp7@nyy@_Mb~^THh?#UDkuB?|O&a2RluYI$$yG^nnw zlScqI3jCMS-^BEPamVbdf9&lV0VixJXbRv4JlAd;Boc1o>hJ7K;O4XtYev^)h}k1O zJ%~{3^MORqrrglFE9lXQkmcvN>a*hL=-Pwo$CrHF+ z(28kk*rh~E)+yY59fgf_G!au5cV=iK)HTxh+pBcYVXaElX4J6>P- zg`$+SN0?-qE%?0$kLs{RiR_==1V%P-x`Bs&>fz!}#JEwqlHNPbni(qWhJ@Ly3x@!^ zQSxcl5s*n&uC}l+m55?y^+P;ZAbWYfW5e9W*CB9!^D9fbaM2My1T%GG zbwiMourqhvKlQ5$&LcQ4x298wQHyd6$W-!KBKt6>LlL}7S%epsX_Xi2(1SDkKspB_ z51_S?+htTN5mK)t7Ik{;Ca(Mv zQSi%ufzWvB_^n3AZ1jFqT#j@fu+j{K;6%I`6`v!QzsbbA&^Y?1;}>Z@q{}&ZP{;Zv z<&%7|pOaqC(L%6-jtkn?&{a`JUHZp(<}q83SO(E2Bt%lY$m`zp>bg!M*lmL(dEAQE zHSc9T{9R1)GcdR?JVoYP3$h%GSEyyToCG?8CzkqDUeZsM+1IfF?2TqZ6q zsoomg?y=lEG^048tCz%6%Ho|w;d?O1jp>WMpQIUL|CV z6Au#cRxEYZZYMn*cBkh80Z)IO$IhGb-t#~I#ZiuP=Wd5jdbVEjYXkirO;tCs*TX5o}~CzK-z(v9eNqE+!_W^U;w`9UBWZ z0Qseul-{a60dW$DXYWBDp?Fb$kqf%i!JH@Zc0D0s;2wjRfXyEOK@Ul7>I56mJ0wDx{T){%&xH{?c z+8gA9EiK{t?OdUi5nF_Ss;5sDU<~+gOepn>0+t6Nx+Dru)8HjG}Wqz0{wsoEj z?vd{r$bRA}z_z%iT;~D&PrhVTitPe3zI4{}kZ_aB*Z?C=x@$^NC>Jd!wY=UUh!H+J z{*6x=j>$t4wb6|v4{T?D>lUud9W7cw9&S_M>1OMcjaLA7-cscQ*33Lt6<(_Ejd$U5 z-DC3Z?MrpZnoVn!U9-vXnrj^g@i)5f)HIoKYG@U9+TQ+Cm0Y&_=I!>2o&O6iqjnWH z?%iuW=KW-PvT;#lp|dV8CMkvz)6-WKy7tiLeB5PzHcHxm=p+Sy8cGd%$qTUd`6ay= zV>%^VQ`JFBG0}4RhjVp?Dj}_vT%zxk&CZnC9cjSnoiYS->_NA+Sk>Phdf3&g0zK41 z^Q0JMo72l;NvO^z+3CEd7YiTMbYMg0EsM^_bl*}!Hv(pG`}bLJVXbn-rFKWRu3PvG%nlUUDxz0a;T*VgYhgd5RB zfX6!F9le(+>1J3Kl|4kQ^6*P!>hv}*o}@`rEEN7ob_)mfhpI6ATjC%y14J1buoK2R z>a;Y^6$?lK;*spq+4Nj-x9OEx!zd>M_T%|4oxU@C3;5N4@s}ToCC$J5sA?O{JhC`L z+?(96cb=B#!oqk>)`ra_YN~%lO&UZy06B^!^1gNHU9A|}|C^3w6WV=dB)XtfLFFx; z-|S8NJqfKG%8K>l{b;Wa=6c0-kpa2Oi^x&EVzxwBXA~Ke1?kLyS2K&)#34uRjpZWU zAmUKv=ymzJhIMZ$8AU+-jmk%Q#^I$z;^HQ&JIhyp7;txC!Mtt1pf~tyJPq*+1{s>! z049?{%~LU4_9iKun9(_f*lA%L{3yImO|@#;iy8p$!V5C zic{&}Qx4u+EwZPx)e3)6=MHO-A-0U$d-8+mt4jBOe6aoY?a}Mq{iD5iZ{F;_-QRwG z2oKwT4A|UE!oF!JfJ^}KFF(3t&cUkxJU=_nFv#+h@^Xsm7NYs%WK4NvXJfRz0orKU z*|u~NL_+dc0s?hj)ePLzUfuI>DXP|?H0dwumWF#77{fsfZ@fXr%IUCB_;fpFS6+;J zypg=d%aK<_ykTg6v|g*zOQ%Yr0Ok8C_n}CCa;uO2FK7bz-|2^RuRqDhQ-v5cG$n!? z7x@Syy!LZr7EeL0H?*Z9M!w!a)5N(UCx7-m8+u#MnSv#*tlgZDq`|)>3_Xqw8Es22 zY_v~V`l(fSk(WST!Awkdkx$sKPlggaka~$M<4-L0G}>w~t5$?=4JU}cpR6-msCa;X zF>6}USn`XCI=}7JkF$+mbA4|93UzceE3@ri)X9~@RVN*CFe&>SQd&<6d}g$AjUx?i zeMs{mJ_q@SX!1>O?XeqSjgmU+Q#Ti5*`PHjf8e{y84XF}uu+VaCMF4qxdt*iw5j%A zF;l_0e+ zf#t$=^1X~2EG<$|_dm;cd&|g|od&Drw9I9ae88S4jhVp+pFqm;t?#JwSZZaBVF z!hk_0#sp^@Un8IqPcFiPiVG-u3X^-6_H}|dEZ#-WnwpA^(E-L9lCtAgE0{scx@ZA9 z)D><+cC*k^ON4My!j^9VLly?Ti4rf03$)H|`w?9@R)9k+yI_`9+Km+3FhJ7kcmsPh z$R@9=#;RXJs5m-AVS~{a^~|z=g63+8O}-)9H1!I^k>X-6w1BPyPmxElft#Md&>k=1 z_(-XyIchV;ow_JK=rD&ogeB8rRHe~SE2OK3bSswKj<-8%M4p<`P$1L$W-+@^qM0IS z`@Cgu1yu@}0$5RAJtcB9qSu$(Pm8(Yl~8a$K!CO!ZM3 z^l6UL8y%#4x^Eavu1k`*j?!+H>)Y779h+P>?nc2H&=|MTYKS_~^bZk*?|zXe)-h36 zZOwGRW2R(5J3A?6z*;%rN%B6+#wA8YevgK7<8h_{|4;%);vXb`kasC`hmrU%nZEl& zs3QTMR(2uC4ZWt)iV zTx7Fb2uM4|6DjamUUKMJU{bUm9m$ZWR%||Z?;17~bwsK{g2}38>S>j!Ar+y`=C*r}>KnA*hJ<>BQzVxUrnT<5b*{fkQ z!u#FQo#n^3L3*aQ-wXAnMk@)1(mG~}6~B`sP;VYJzVqovaY;R7v_j>fUv-mSjR^jG zAWHd=zcf*nqVYe21_LXEC27xw6w(x-$t@s*$4)hfLkCi^Rg=eC(J;9=m?;#nIe%q1 z9C2rK2}O^8`No0>c#nk-Qn>KhM4Ow38QfUZGq|n4p2-VZbfB2VQw{`99i|2YrPrq_ zkKOa|*}^ql)5nSH9aFd$mFhhmwNfdP{y82l32%=V94lRW z#2gU{pC}yRJE`@90WFJLML$69xK%}Q(1c9%gWjosSd}`q-m_dAT8himbzEz-GaD~| zrT<*$HG6#rI+{}4fo{FI2OT+4d}a?iF~~9=bn7)&At_Het|;^9u@snq68d%qo*Aev z_Pp)<5t*JMcdW3MRC!h1y%eiTb#()?52^1`Ebn17cRXNp{kYTKI(qGyI?jHmqlFl~ zxOyLd?KH>JsCJs;3j3z6>on&&3@!Y+X@Zv+^9x0lc)!nR8R_m+Yx|QlH)&T zSK}16I4sKh?8<)G2H*W`!k;im24+K1hel5EUh!F|nDx)mYhvv48=;B?+1ypk^vy?r zF0P>Q?0#*NP<#y8noHYCRK}Pg3h`k~!YbCOVWqM-j1?%~@*dVg$7wzIPQ)u12F(Y5 zwMgMT9}KL$@5P8o8y}`w8iUnj`N}Mcg(lM615*ct z6Wk1Vpi@5f*a=oy4dWmc5Us+8Ox%J5&9PAI7HYwmmX)i}4--sM2YIz(v_%SkvIVqR zul=+U7v0`&|DSi;d;3TGJFm8P-|d5chWeqx(^__4dbw8w+R+Dtb0CO-p|pZ!(#BLO zop`zz&9CSY&Nc$sJG(f^1_OK(rc;)N&`||IT+h)NHv0vb2?poM@k)`82D!S1%^-mn zzCMerRjB&48C!Up)mmG{V`(#}{;drIj`Fwm@@7S{xwa?LrpBckEA|hk8Kf_Na+|0w z?9*`26BDxP%5Xz7k!m3{0Wu)X-~NJX8Gzn@fnw#|(h8O59;z!Wki3DvDkC;XW;x9B zsPBVTjZg8W9(!r8#-{62vgqRLg*K z%^BFEzv%>2iv{p2*`hJ{B!`61@BN+`f0JV>kZN6z;6uhR0Q%n@sROCi-}vdL^K3XQ zRxXRlaL}9nGHn@yfpmlm0`Zu*YTk#C)T6T&Rbd5>k)$nx9Og)gATH7|Owc4J43wUA zA-7%BgMq}LGVHc9XVY+bCR|3CaHu)0GIkKmSO^SOeP+*lW5QryrDHy(*PJ?Tf1sMr z#MA&0#td0J;E6^7^0QV>V{PZE)DxV~Qy4_8RoK{Nnbi!zpJer+)Jws@g$+uTI=gC7 zs%=lI)+BCLBCkUkXui@(4r=4`;u7=Ar-~a*lQzDaan5LTC&k%=f&{nv2$IwcQ#KGn zM|gBzzk&^UnW$S(3b|7t_I>q&f0DrwM_B)mmte7Rnq>n>{$dO{v<4L~i_7ghG~Ywz zG=w`eb2Fj$>z7Tn*@F5$=U%v0x?$x?RjtPhIKH#evAqho<_W6!2U?KeXuy;c5M=@V zCF0AdLkB|=D94pCu~GgVUA_(23zfoVa9@Ej<6hSEIA9*K%+r?V(o1pQRz6;_S82>H#=b@=DM8bb6QmxDq4d1WbVX?5>e(g2sL>h5mO&?5QSCc;-V~8|1Bce_S*&XP^IEI83h~ zq;C^RDUyJRPgV-qNH6+qtlmprV$UR+D*3&*%qFKZ2m*X1&*s4ux6mNdPNFd1O@-DG&fBf;A3+l^pgDYo#hkzN{eYB+x!ZoqsJbrd*5;5bg!=QSP3<( zot}jnU8PDy5MQL!AQ0~#Zar!vz$URRA#~6&MffL?A|4?HAkjk{g}xd3hVAG&W(-yI)HZ{LKeNi{fsZ3ZNVatfbR(ti% zFVeGY&ifRkLDfz0CSn8+rV!6AQnKaOPdAW8v0vnIXo!R^yHn<-+FH)>qC%5Qz&f1u z!h%LGC3fi22aU0V|Engz&_5>7`TQ}P!>9fQ6c20{e=-d}dO+d26)1)a8#V8R60J!g ztYph!3XwC~7*YSt>mR$xf4|xOkwW5kSQSOaReOK=(e%}0CuD0@Kn@Z#HFH}sUj63C zDsPLOG66KEcSLs^TP;uJ*!VicjpHp#+tYkHR8wQR$Oe^k9V1|De47M}9l8WeW9;Mq zS^~bEe|6=_H(pnSqK&O$LaRJQKQiETOQ6UbQ^2)z@b59UeA+su#LzBq`)aE5doJ3L zp6wj+;D{YuVXaMK9my)CU8&3SbV@Meo;n9hWxJwaj7M<$k2;()gR)|D>7}1`Ic??W z6xD=+EiP-AeGRd`jZrZRipC0))$7blP94tRf0HoASd0JlTgE^3<-I8mekx-ENJo|%Om zHs@>(9zT6bK2|cdKjtHKfaTLc(KoZHf6(vsdU$K^>1q}#bMG|I{HBD)zp*X_Ud&jP zfAZ(->NYhgrn_YoDWAtE3sf%#q~DI_glzxiht_8f{;=0e<8JH^NSVkkq`X?&OvLa1PM%hY=*Ky1=M|i zATwG2)2=ODJ%L~Q{$l-0)Dg`vG``bljfsA92Jv%FY%bh6k2&ar6#}&z2(HSY2`vn7|B2BH^cUlY-I;StU@e|B|^ zcXnuYo%P1?{!Q+ykEvgIwoVN|5o-Dz%!UU0T+HSMcj+528|>ve#76^PgV{uFKw7(h zZm|hSIqO5ZzK973`J}B_+mAE2TqgZ|(!Wi^4+a2oM_due*)Lgtc7wMCHU_~-Hn#=Y zeSaN8klpIngMaqz&%DRG@|=dxf0qnz>9VLe5c(DHg;6tz^)S7llR>ZJWG$mUmd{(Z zq~{Hf(UTPoV7I4DG0UAUMKymAH%v{wKivp$Tr*!O-VkDVs zp0wDBC^p`zz+BV@uy*SDP9#4?_uFQ<5P215>={MEie_tGibojiu zT;AP%zzsj6tNW9lHo(56U}pznRqxT$--2w4qy6rL|~2K;W&;*$Bk^w{WbVU^ z_tWKB%#<7c9t2IRYvibrq`UND1kFsS93+}i`XN7~3{~*dLhh!?e;D7I*bTO8-v7{4 zXdktqz=CKsRhO7ywVbAt>1+&Bcb}#iiq`2wA&J0-{#(6d%RoHIPQlDafpC-#hey`J zoAqsMx};77^(Wc_b$_3f{8yt^Tbh=a(#ZWrnVF?w8~oJ1`Q9!eUyu3-W+Fky8chw8 z4X_k?|NTB#=(7$?wzs466*w-~P;*U_>cgH%B}T})XIgrXL^Dp`_H zqVMJ40z557ENj_VFmn@i%n$cQ!+XBl4AZ^^Pc@$~*wGLI|NsBr|CegEKPKQ!2r&SP ziyl2u^dK8I2j*$%+yVTQ@apOrK83RRl73n6rb6rXHEvG|f02-ww2bz?mVMYr`0s7u z%=)!v1Camld6AS5E!LwHT zbkt2Omk5p{$fPjH%!`a_p({V>o#dl|_ohSW4H_+>9y%Sl{kA!$hId#R?NjRSc<@>l zYvF|5C+A`hJo#cJLhozD(m#l=w#h9(Pa$2i__nN5e^LM4*suL=Tvhiin}56YsnlsR z%X@ARW7$TQ$43g3eD09JXQvnARTWFr6YofWjX}fgOE%=9irOwhu^_~a2~jWW2GM&> zt!M}4JY3X=sThN}>Uu0Yt*R64kFP~edoGLBw^FNYVN0vpL}%}Oa3gNA)N0<%t$@H~ z*NM8Reg88N?R!g3u4H)2PwxH980jF-qY6u4@rm^ZE)^p>j&)K!=q>nOOT z&9)Rbd4RC4Fnm|`>Vy=9sLqTQZOD!AZYCPbf2P=3Qt@lC6#~Hv+mR|&zlG?qpz+8V z4t%Eejsdg^STMSd-O-vtU8O#|C7`bXl42hHTft>~pZZWm;)EJ6VT=wy@#$F&5)bA4 z3@l<;@IEz7v|Mb+*Ji*8O!Vc2UR`$8*0AEFiDT@{H-LTdhBA}#wpMiv_sDLnwdBW0 zf2kJlaZ7%0e>szo!F@Q+CwQOP8yee{qSByQvJ^eHuxl4?2(M59up;Old=9}inZ5W* zSPlzJ74}PiI2%x+uh8?Y>nFvlqN_cKMO*`NslL~M44(s#W%OYan>U@}EyFA_t4tj2 zbJzL#2DBxtih)-R=QM#a=Kf^Df!)bWe=7qI<7D8oktVJk{@%6wRn9HpD^4S~7YznB3Wr=TJq*N$(P??6^5i zJy7E3-bWLs*T!6j!$9@n^YA;>p}g~fqiU~#+8w2fXJK4pSp&W~0RP$0GuoF^f4Ig% zZF6exF3Oy&kV^7tNdaV38SsV1(J@zlld8<;?)pWPnO=~}iV&4SPt|cMJu{d}3ChhJ zjMa3W;4U#Vmtu@K(~0Rt7p}G=DF+YC4(I8~*;1SNZ+vwL%H@res-^N@e|ZK*pj~Q( ztQ`CsUnC3Y_17sX^xwi#xw$?Zf6aq~`0HpM^0jZH*?UgQ`)Y`zqiM0d_p0q?@Hs78 zoo=$mjs&t5xN|+Lk1Tsa{&@dXp!bvAv(ni15B3|`>;#Teb>V{$r7&o+|Q1m0Ah^rpog z`lYsAwyri(nIY2hf24FF(_<3hBz?%#t0-||Xn9yb(1l*+rwyUpW0Q1L4yh|TMZf&0 zp_(5nIe9X1A+Xb*+Xbxye@iSSEP_G}c-i!@i3>ce3|6tGm+*LDiu7v+NYqMBrQX1q zgVHy&;9E;V(Sn;6RP&Y)iVobGhh|C5>judE`h`PcNk-Sw1tEP5(si@iB^FQmB_rp3QNT}(v%W=ESF2_P) z5onNP9v14&;?zdq7MWPEQYTcSM7@nI0z!}DWzGnx{J0jEXFdBp^`TJX6caq}%|fwV zj);>hOsOez*QBhi;N_|KV?{UIzF<~PA}scn;VbRa%oeVe7|i|lPr94GD0 zF-*tgJ=0jjv18lvm`1RmHyQ+IE z-AAoa7YIUMc<(ahIPFuSW>PF@4qReD480qac&@~Cii}Hgr}I7|5hJt_yappZ%rcmx z8$9BoTMe^`2B?6-r4E%f0a&CWs052!`CvK9h7hbB0AyrtF**Xp1T-${=o{I5*lMNI zGk|v}f3JjyZFApLU%eb^B9~#sNZxy$T7G{DP?kJ-LW+_d^~0zZ==l-e8RS!&RuFV6 zbrPKr5pTsIKoQVwk4}hhnGM`EBA!q*aDIk~KKnVNM2#*G3F<>lWQ~gRO4|{*^LmMj zf?zfK>3B*24~sJ+n#H&XYZ@E?smuqFN*9s7f5e%&{d(i_y{?khbvqvd|8~3x7EX4A zE(h9-It=a{JcR1170{J_ZaRj}$s@M}bD+?z6C+ZynK3AKD4ZF|rHKe}q|S!PY=q(I zBPmU(dKL8eHGti@doIo1-t8pq&@DNZrcF=52U_(|0q`vMft}?cfUJ8jC6@TPyJo4k ze@r$VH-1hk_M;7$qs~EfRmjV8&rArl(bfCe)Nr)K1mh8_7$MxFIS=WGEhqhZqXK)F z(%JcXcYkO1_0iLY(sAD7iv8l^-iNgojld~+j$Z9SlF;mdxH_L_ zDa6WcPmA~2$hoZ0B(`SL^J2nGZX-EIy#^-cN1^=DLme+CXaSi1h`yYGIQz1UuTfgd2L5?%0U)GclRi66ks z#f-4cp!d(yiLL%@i%a1tLl-`MN`-@>KXW>N#xrG2J{CUOV)UI2ixWGcwN)xTFD`81 zHWv;B`W~+FQeDi-yl<*L^n^#Zn(T@S}k3U*(j$b>1PJLwoEf4Kwf!Ey~k5|+&c$rQHwkN>*{q5&1=i$X{ zk^^W?owqzyI26pkAnyW~2fiyk9^KbTaK|PKZon*$zx*i9iTOQDR&?BD#4+RF@J@g) zwEhDZ5C-TK?>nK_h<%8{aVZlLc!XdR2nRVU*%gFf9i-FLz>1ZCf9JO)TZJl+(O8{= zrMZ*NkXz2g`qQq#_o7*kemqeGqX6otTk2RhX@A6QYcsSk0;I#=xOVeSr&j`lZ>Qbl zgzvoYrH413>{)R!R;OJ11Ph5R$5urNukd)psOu(!6Ybq$mItPyW_^GUR6~fDJX7$Z z=sYMK5x9G&IAY5_ zrAurj^TRKU%7s>!K=s0)IJ4K4_1+xM%5&acI2F6YsG}$F zdXIn3K~lsRe-p>ahLc9aIEZPIL)<9|`{)8J9@XZ?f{~hvCd(&bkqnzYhxBKve@)ne zvoPS1jf`{;R6NnUSjl3Fu%4gr11YSE`13WMGr;ZKy*^STwwbi=sVl|N(VKT~w~vn0 zt$-{(;L%61oN2MMw=3-euCuWK-cbpYto*kJSsD?mA3Tb#sAwl7o+=Dj6T>e1DdDAuLHV$NPWr=K?V(jc1 zwM>(%f8v%<=L~}|kL-@E{bzr=`SyrXZ)abM zt6*5I@a)~&x7)AxkN&d#c2D6KR10gp)!zMYe^`(3E*o>bxZA^-$OM@wlc}^M#rPE}#CN|9SrB^}k$hU2Si@{^ou0?f$#* z5$w%B-faE%?9W^O`|Rz{e_69}*>VE`r<3H|lz&1%-KuSC-yi8FF!sNVi6v2hsn6cT zEr0UFam`_z1npz02zRD!M-vePAk$sl&MfO2l|dtCon0(!XxP~LG??jVpp{qq#hV>c zUF<4`Fv$m5{0>4#p_!YYUwI5+N1#-e9m1MWb3VxS;j55x#CsI{7e&M@M~hwb;Bdne zDSt$0^Ig3;;q@Y&rW?t@VVBhN8=zmAste&&F`Fc;xZirS!w{>B;D@ZInlV${2vivJ zg;LLf9-Y*>)qJnU^qBraT+*s-+K{PpNA3O)}dihtv8@x-Kl1S5}}=4VO>AGFULBbz&S+Glci z!Mn#eYF6?Fib@(Dx~Im&r)^js}?cU?<*zC65mAT=6?jQ z1%CkdSszTxK4i=uoktkF;W-`y*5=NCE33dAzKFS34sA;(_@#f0%IbOf)-FXR99AyYR|!mnV*v>}F=S#UC(7nfVZY+{tNG4Yu+$l;E< zR%cQR(_l;5_vi42;_(qdFMsB`2M?{+KSvw#K^{kpzi_SfX{?)i3%nG&v3%aWAH!U# zc@k@HC)o#kVO}5#=_M15Vlj^EmrOR68+vxr$k^XQB+BtPL~VmvX(kE z;4#Xqq)*GeL)!eToLzGCIG<MBA-V9Yu>2Aqt*{anqJP*Dc0~6#Qy$?! z3dZF)kWmaR&4h5M>oFl}8f8M)I6kWwQs!-YK4v4Tf#1k!S*xKSOSLIonpy4b>1P%m zkR;ZtrFJjiM@Q^do;`!BIBKI}nI6KoCjtlaJsfuBwVoqFVJ+h-jp1`_9e~Q4az*Y1 z(M{MUhzuWzqt9`6^?z<4hhH+aPi?SvH2sdcr>&X}q-GBS~PV#g%8i0CnnD?_$ znMuFhjW511&h4s?i?k%qcH!wxP?YTDe(`g;p#W@u{q-G~$k)jqQ*@-F9rbHcruig!m0c7{l-?O}HlfZJU*G%U{{>J> z0|W{H00000v6rWR0TGk32O*PS;svt@;)j$G@=2In++y74*8uuIMZm)Uj!ApsP(`*s1+0Rr+#m(O?sL;{3FMbBfB`0#&wv3+1KTwLmob0= zC6|9S0S%W void): Promise void): Promise { return { ...stored, ...HARDCODED }; } -// In-memory cache so onWillAppear can check running state without an async round-trip -let memRunningEntryId: string | null | undefined = undefined; // undefined = not yet loaded +// In-memory running state — avoids async round-trips on every button press +let memRunningEntryId: string | null | undefined = undefined; +let memRunningActionId: string | null | undefined = undefined; -async function getRunningEntryId(): Promise { - if (memRunningEntryId === undefined) { - const stored = await streamDeck.settings.getGlobalSettings(); - memRunningEntryId = stored.runningEntryId ?? null; - } - return memRunningEntryId; +async function loadRunningState(): Promise { + if (memRunningEntryId !== undefined) return; + const stored = await streamDeck.settings.getGlobalSettings(); + memRunningEntryId = stored.runningEntryId ?? null; + memRunningActionId = stored.runningActionId ?? null; } -async function setRunningEntry(entryId: string | null): Promise { - memRunningEntryId = entryId; +async function setRunningEntry(entryId: string | null, actionId: string | null): Promise { + memRunningEntryId = entryId; + memRunningActionId = actionId; const stored = await streamDeck.settings.getGlobalSettings(); - await streamDeck.settings.setGlobalSettings({ ...stored, runningEntryId: entryId }); + await streamDeck.settings.setGlobalSettings({ ...stored, runningEntryId: entryId, runningActionId: actionId }); } async function sendProjectsToPI(tokenOverride?: string): Promise { @@ -159,36 +158,23 @@ function isConfigured(g: GlobalSettings): boolean { return !!(g.notionToken && g.userId); } -// Strip leading emoji characters so the button title shows just the project name function buttonTitle(projectName: string): string { return projectName.replace(/^[\p{Extended_Pictographic}\uFE0F\s]+/u, "").trim(); } @action({ UUID: "com.pdma.notion-timer.toggle" }) class TimerToggle extends SingletonAction { - private settingsCache = new Map(); + private projectCache = new Map(); async onWillAppear(ev: WillAppearEvent): Promise { - const { activeEntryId, projectName } = ev.payload.settings; - const title = buttonTitle(projectName || ""); - - // Use in-memory cache to determine correct state before rendering — no flash - const running = await getRunningEntryId(); - const isRunning = !!activeEntryId && activeEntryId === running; - - if (activeEntryId && !isRunning) { - // Self-heal: this button thinks it's running but it's not — clear it - const cleared = { ...ev.payload.settings, activeEntryId: null }; - await ev.action.setSettings(cleared); - this.settingsCache.set(ev.action.id, cleared); - await Promise.all([ev.action.setState(0), ev.action.setTitle(title)]); + this.projectCache.set(ev.action.id, ev.payload.settings); + const title = buttonTitle(ev.payload.settings.projectName || ""); + await loadRunningState(); + const isRunning = memRunningActionId === ev.action.id; + if (isRunning) { + await Promise.all([ev.action.setState(1), ev.action.setTitle(`⏱ ${title}`)]); } else { - this.settingsCache.set(ev.action.id, ev.payload.settings); - if (isRunning) { - await Promise.all([ev.action.setState(1), ev.action.setTitle(`⏱ ${title}`)]); - } else { - await Promise.all([ev.action.setState(0), ev.action.setTitle(title)]); - } + await Promise.all([ev.action.setState(0), ev.action.setTitle(title)]); } } @@ -197,21 +183,20 @@ class TimerToggle extends SingletonAction { } async onKeyDown(ev: KeyDownEvent): Promise { - this.settingsCache.set(ev.action.id, ev.payload.settings); - const { projectId, projectName, activeEntryId } = ev.payload.settings; + const { projectId, projectName } = ev.payload.settings; const title = buttonTitle(projectName || ""); + const isRunning = memRunningActionId === ev.action.id; - // Instant visual feedback before any async work + // Instant visual feedback — no setSettings, no flash if (projectId) { - if (activeEntryId) { + if (isRunning) { await Promise.all([ev.action.setState(0), ev.action.setTitle(title)]); } else { - // Turn off any other running button immediately using the cache — no async needed for (const other of this.actions) { if (other.id === ev.action.id) continue; - const otherSettings = this.settingsCache.get(other.id); - if (otherSettings?.activeEntryId) { - await Promise.all([other.setState(0), other.setTitle(buttonTitle(otherSettings.projectName || ""))]); + if (memRunningActionId === other.id) { + const s = this.projectCache.get(other.id); + await Promise.all([other.setState(0), other.setTitle(buttonTitle(s?.projectName || ""))]); } } await Promise.all([ev.action.setState(1), ev.action.setTitle(`⏱ ${title}`)]); @@ -219,59 +204,26 @@ class TimerToggle extends SingletonAction { } const global = await getGlobal(); - - if (!isConfigured(global)) { - await Promise.all([ev.action.setState(activeEntryId ? 1 : 0), ev.action.setTitle(activeEntryId ? `⏱ ${title}` : title)]); - await ev.action.showAlert(); - return; - } - - if (!projectId) { - await ev.action.showAlert(); - return; - } + if (!isConfigured(global)) { await ev.action.showAlert(); return; } + if (!projectId) { await ev.action.showAlert(); return; } try { - if (activeEntryId) { - await stopTimer(global.notionToken, activeEntryId); - const stopped = { ...ev.payload.settings, activeEntryId: null }; - this.settingsCache.set(ev.action.id, stopped); - // setSettings and setState together so the state reset doesn't flash - await Promise.all([ev.action.setSettings(stopped), ev.action.setState(0), ev.action.setTitle(title)]); - await setRunningEntry(null); + if (isRunning) { + await stopTimer(global.notionToken, memRunningEntryId!); + await setRunningEntry(null, null); } else { - const prevEntryId = await getRunningEntryId(); - - // Stop previous timer and update its settings - if (prevEntryId) { - await stopTimer(global.notionToken, prevEntryId); - for (const other of this.actions) { - if (other.id === ev.action.id) continue; - const otherSettings = this.settingsCache.get(other.id); - if (otherSettings?.activeEntryId === prevEntryId) { - const stopped = { ...otherSettings, activeEntryId: null }; - this.settingsCache.set(other.id, stopped); - await Promise.all([other.setSettings(stopped), other.setState(0), other.setTitle(buttonTitle(otherSettings.projectName || ""))]); - } - } + if (memRunningEntryId) { + await stopTimer(global.notionToken, memRunningEntryId); } - - const entryId = await startTimer( - global.notionToken, - global.timingDbId, - projectId, - projectName, - global.userId, - ); - const started = { ...ev.payload.settings, activeEntryId: entryId }; - this.settingsCache.set(ev.action.id, started); - // setSettings and setState together so the state reset doesn't flash - await Promise.all([ev.action.setSettings(started), ev.action.setState(1), ev.action.setTitle(`⏱ ${title}`)]); - await setRunningEntry(entryId); + const entryId = await startTimer(global.notionToken, global.timingDbId, projectId, projectName, global.userId); + await setRunningEntry(entryId, ev.action.id); } } catch (err) { - // Revert optimistic visual on error - await Promise.all([ev.action.setState(activeEntryId ? 1 : 0), ev.action.setTitle(activeEntryId ? `⏱ ${title}` : title)]); + // Revert visual on error + await Promise.all([ + ev.action.setState(isRunning ? 1 : 0), + ev.action.setTitle(isRunning ? `⏱ ${title}` : title), + ]); streamDeck.logger.error("Timer toggle failed:", err); await ev.action.showAlert(); } @@ -281,7 +233,6 @@ class TimerToggle extends SingletonAction { const timerAction = new TimerToggle(); streamDeck.actions.registerAction(timerAction); -// v2 requires using streamDeck.ui.onSendToPlugin — the SingletonAction method does not fire streamDeck.ui.onSendToPlugin<{ event: string; settings?: TimerSettings; token?: string }>(async (ev) => { if (ev.payload.event === "saveSettings" && ev.payload.settings) { await ev.action.setSettings(ev.payload.settings); @@ -300,5 +251,4 @@ streamDeck.ui.onSendToPlugin<{ event: string; settings?: TimerSettings; token?: streamDeck.connect(); -// Check for updates 10 seconds after startup to avoid disrupting initial connection setTimeout(() => checkForUpdates(), 10_000); diff --git a/version.json b/version.json index 453a425..f8f6453 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{ "version": "1.0.37" } +{ "version": "1.0.38" }