From 6d84cb56932045c5e9f45fc0c1c33ff3bb898854 Mon Sep 17 00:00:00 2001 From: gao Date: Tue, 29 Jul 2025 04:51:11 -0400 Subject: [PATCH 01/14] add package: ddns-go --- cross/ddns-go/Makefile | 33 +++++++++++++++++++++++++++++++ cross/ddns-go/PLIST | 1 + cross/ddns-go/digests | 3 +++ spk/ddns-go/Makefile | 27 +++++++++++++++++++++++++ spk/ddns-go/src/ddns-go.png | Bin 0 -> 6912 bytes spk/ddns-go/src/service-setup.sh | 6 ++++++ 6 files changed, 70 insertions(+) create mode 100644 cross/ddns-go/Makefile create mode 100644 cross/ddns-go/PLIST create mode 100644 cross/ddns-go/digests create mode 100644 spk/ddns-go/Makefile create mode 100644 spk/ddns-go/src/ddns-go.png create mode 100644 spk/ddns-go/src/service-setup.sh diff --git a/cross/ddns-go/Makefile b/cross/ddns-go/Makefile new file mode 100644 index 00000000000..7c880f69392 --- /dev/null +++ b/cross/ddns-go/Makefile @@ -0,0 +1,33 @@ +PKG_NAME = ddns-go +PKG_VERS = 6.12.0 +WEB_VERSION = $(PKG_VERS) +PKG_EXT = tar.gz +PKG_DIST_NAME = v$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/jeessy2/ddns-go/archive +PKG_DIST_FILE = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +BUILD_DEPENDS = native/go + +# lacking support for atomics +UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) +# not supported by go +UNSUPPORTED_ARCHS += $(PPC_ARCHS) + +HOMEPAGE = https://github.com/jeessy2/ddns-go +COMMENT = Automatically obtain your public IPv4 or IPv6 address and resolve it to the corresponding domain name service. +LICENSE = MIT + +COMPILE_TARGET = ddns-go_compile_target +INSTALL_TARGET = ddns-go_install + +include ../../mk/spksrc.cross-go.mk + +.PHONY: ddns-go_compile_target +ddns-go_compile_target: + @$(RUN) $(MAKE) VERSION=$(shell git describe --tags `git rev-list --tags --max-count=1` 2>/dev/null || git rev-parse --short HEAD) BUILD_TIME="$$(date -u +'%Y-%m-%dT%H:%M:%SZ')" build + +.PHONY: ddns-go_install +ddns-go_install: + @mkdir -p $(STAGING_INSTALL_PREFIX)/bin + @install -m 755 $(WORK_DIR)/$(PKG_DIR)/ddns-go $(STAGING_INSTALL_PREFIX)/bin/ \ No newline at end of file diff --git a/cross/ddns-go/PLIST b/cross/ddns-go/PLIST new file mode 100644 index 00000000000..4d22f8f1091 --- /dev/null +++ b/cross/ddns-go/PLIST @@ -0,0 +1 @@ +bin:bin/ddns-go \ No newline at end of file diff --git a/cross/ddns-go/digests b/cross/ddns-go/digests new file mode 100644 index 00000000000..f83ee2935e1 --- /dev/null +++ b/cross/ddns-go/digests @@ -0,0 +1,3 @@ +ddns-go-6.12.0.tar.gz SHA1 97d0115e88312f5e12f5658adee2b4d1c6a3cb3d +ddns-go-6.12.0.tar.gz SHA256 59f5a705f08f539c011e12c01b4e82791130bfb4ccfb332f2b6545945fa70e38 +ddns-go-6.12.0.tar.gz MD5 5571704118f4fe49e206a8fda48363d5 diff --git a/spk/ddns-go/Makefile b/spk/ddns-go/Makefile new file mode 100644 index 00000000000..a51ba0a475d --- /dev/null +++ b/spk/ddns-go/Makefile @@ -0,0 +1,27 @@ +SPK_NAME = ddns-go +SPK_VERS = 6.12.0 +SPK_REV = 1 +SPK_ICON = src/ddns-go.png + +DEPENDS = cross/ddns-go + +UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) +# not supported by go: +UNSUPPORTED_ARCHS += $(PPC_ARCHS) + +MAINTAINER = GrandDuke1106 +DESCRIPTION = Automatically obtain your public IPv4 or IPv6 address and resolve it to the corresponding domain name service. +DISPLAY_NAME = ddns-go +CHANGELOG = "Initial package release." + +HOMEPAGE = https://github.com/jeessy2/ddns-go +LICENSE = MIT + +SERVICE_SETUP = src/service-setup.sh + +STARTABLE = yes +SERVICE_USER = auto +SERVICE_PORT = 9876 +ADMIN_PORT = $(SERVICE_PORT) + +include ../../mk/spksrc.spk.mk \ No newline at end of file diff --git a/spk/ddns-go/src/ddns-go.png b/spk/ddns-go/src/ddns-go.png new file mode 100644 index 0000000000000000000000000000000000000000..5668ce73be30d1a2336a11c18fce7155ce4a76e2 GIT binary patch literal 6912 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 literal 0 HcmV?d00001 diff --git a/spk/ddns-go/src/service-setup.sh b/spk/ddns-go/src/service-setup.sh new file mode 100644 index 00000000000..328d843a132 --- /dev/null +++ b/spk/ddns-go/src/service-setup.sh @@ -0,0 +1,6 @@ +DDNS_GO="${SYNOPKG_PKGDEST}/bin/ddns-go -l :9876" +CONFIG_FILE="${SYNOPKG_PKGVAR}/config.yaml" + +SERVICE_COMMAND="${DDNS_GO} -c ${CONFIG_FILE}" +SVC_BACKGROUND=yes +SVC_WRITE_PID=yes \ No newline at end of file From 956a3532b7c19e4a9c7d3ef11da335a91504a5c1 Mon Sep 17 00:00:00 2001 From: mreid-tt <943378+mreid-tt@users.noreply.github.com> Date: Tue, 29 Jul 2025 05:59:49 -0400 Subject: [PATCH 02/14] Update package logo --- spk/ddns-go/src/ddns-go.png | Bin 6912 -> 40343 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/spk/ddns-go/src/ddns-go.png b/spk/ddns-go/src/ddns-go.png index 5668ce73be30d1a2336a11c18fce7155ce4a76e2..40b36c810eee5c49e8b1484ebc7abd41633b22ae 100644 GIT binary patch literal 40343 zcmbq(by!qU*YBAb7;5MmLO@ESK}rx9l#=dF0ZAz-0b%G)Dd|R1x`iPG0SReoK|;D4 z=JLMZ^F8996l~JE&u@dujQpR008_Tf&pyE1M4Yf z{s90GKut+YCZu#jJ@Om)bwdBvxm<8d(3e3*MK#my7{BwY*f z6@$?C2W#hdbovSGHpO7o%&3|P8qHu#jXVP7BJ}0y#L*4Dc9M=uj9F@L{P$h3b{d9u z3QRL4wy0IiIu5K=h(=#MHT*=NlSZYJ@nvB7;_}Kdt%Jb05Ks04re-3&Y5=c$aqsvF zrgjdgVgRQ0=O>0S5RLTGUmNJVo2A=(n8s%ujkL6ushc~rX-KJKYO|PAHv0aKLOUkB zc@|GK+9|zL&?;Hdw~pQ<8LE?oMx!ZId_SbrVrr(Y?3~`+-eap3gqBZumd`XVT#PO6 zrnS#p+}`h_(O~TiZ0#&!{VXOm&wp2FY^@YPx13Tt4ofYCL@QR%G6`EVm%%KR!yuU3 zBx3jU@(zv0(@q0x<-Bmn=C(+|(8{9GNwbRjN~xPoZkUFnn^)91jj5HfeUH`;%KrT8 zmeR6}R3!|ml}V@d30pfowPJ$wbu>sjXZ{pj{d@lgjqYFEIzgk~<^0eLDMzF4&e0bN z&KY!i(FB@FH#gUq8YRJ1V^FP(rmi6@^(^%L!(aY$0{ZFb>-)FSHKZybivA7BZHtr! z1-$l|?~+@enMM_jo-kNuvzw;mb?wV}WEsR%Ya=V6nps>X;ecMj>d`f>M$+8=J-NXr zmEiKok5U|gC7gOe6gkm%O6q?_iP(7&PT>w)11W`$0*9#z34=ew9 zVe~Oy+%8haEjzb&vH$3f+$a;nq!OZ?C9L;>P$SViuKgB`KEAq#=|&EpJ8cnR0Jhpxc(aj5CQsD&v5a6bv zq6s|Qi6_ez8eQ@rXgriUG#dATq0t-vrKf0nGNi?9(|)5*dKD$Kj!`t$*U)nBs(lypVP<{vFKYA|3xO&r52yH zml7v)T7gP#`8l<5pNhlpBN587%{XOn4f)RP#&heD%;zVb=!0eQOPb=bTTEOsHnm(t z0Qmn`;HG!HoI{`NEH7X0%}9LQ%v#1osm2w05jsy~c`jZ3vhTe5nsa+PW7?K?X!0@f za(%|{?#AhU_dbK}gS5)!O$N4f90UAONzc1K&KVdCdr9dL#4TDRF6uV+_7!D2ZJvIo zzefG;Crr^ke-_&kTQ--`XVasd9-Cb2$9Z&f$)}G>%Q+x=#5i$eh#xpDtjH}Uk2X5@ z?_+un?c_u}2RxFEr(=1l{?`qoOV?jJIonfpGk4K{rblm&ijR-Ej+$-9EWyg#g0o5{ zha74(N)2zRlh;1b7vGIG>9f$y z-G(~#tJNmo&AMgwXc)Jm-|Z)-1%W~;!T!A8iUtZ}bYzVV0}JX&dX>1*8;>s;1y*LT z_awDCZ4Mh}ByMhAVsk&)zakSkj_K3uTQLd$9%)e7y+(WQRXT>`P0^Z4M17^rh zmT)A;#zh?M&4@qxFGq;yz3U1G`f#3SFKc$*&}f&OkdlFyD;=pNA)s~tYqaBPv-`(k zqATIyJr`4dYm{Q-P^95^6;%CG=a%+wHhj3@AO8vabBC{xxb(#NpM0|ji>0gF7uGqW z_KEtggtXrPyt?cIW*|6hboAfWX*ziJ>Zh%8V|V<296sZaX2zyOy# zHV6O1L2ljd1$A@`np26wc+vvB`SsCGN^sF1XGU5ACbG!DwxP(H@qzQo;vebfDM_Dd!%_{HtXs*Y&fu91~NQUUvED4~L7MIrl?nG(wXXgfZja zUKu}y;_JbYaNg+jKt(_a*BLYKs1k zk>B_0ZsvR?au&x$O)#lX4)=vS{avRh59a@3htS4`rUyyn@%>bt+H#8}dNtkdd!9__ z@9une#v$yMB_XZ{?RaGvJVJ^zG6nGncznE=?zTbrI$k!3k-D#VSAF9m?gL}QL3OSt zeIub2*O7VIdHb=~G4{(J(A%Mc_ypW!t8jAC)t9uJmK~D8;C9Pzz z5c1b4w=14IVzKU=EMQ(Bf$RgADE#{y`Q1y4&N~+=$m+=1{W*~{`e;q34I|H%F(!1g z9mMOn;DwHpxb;$2W{bQKAmG5wO;h^Efgigt zHEpVioyx;O*O{GV_WDe=+dEH=MtICOSpgvl6HJL!vv!F((CNFyGsOj|a2nM$f@2gm zTb9w*&GFIz6mF)8PFM94QH{=SaDc!EnYUVncQkA$vu)BLCtFo_Ag6%_`!%fG$*JH{o+A-(dlW%EGt zI3wd{L}54H97X$tEu?o%z*H}oRd$tHglThdrGcGuGUFp{PwR(TsPiUC0zV-6o_QC% zAa#!}nK!N6C{QaisGZoaGYp2#-gF0z(mmQcqK+G!-z|1|H4O?3mQM7}H?>%}ju|DN zI|euZF{H;Ih=Dd6Ol%i1RMmr4`9wp0JH=kA)yowSW1#HZwcmZzAFACy>3OLEb^h=^ z+R1jMAF!Q#QED0+gFks+CrMN@j|ug<>`i=BGA-Wba>e)BkR)2U&temb3 zt^KZ?zAiR@=IzICl*)K*KHOefKV%kO@>q80hH&pb=W90|0*)-6N0W`$KI^6dc&C6( zWmx|QTCAqN!Cf$9vSGKP(nZ9?#P?9o^FRb)hAfpHOjHiR{ux1Ye=pYm)4MGxmI@XG zC4D;uxx|LU++K|2;8Ev%T#IU;*X@OL1A3hE2m2QFyFdRvL&n=E%d^g(J7|6$14<05 z=|!oZKhk{fapZ1nyoLhO|ACP*i37b%Xk$GAUi=CF%~%=hwGEk2Af5Xr;``?mM5B>ZMEy z8hyKz8yXtZ^L0L1X^s-bBAN>Z)3lx#hET2QA0>}2kO))9ux-CPd--QVAk-4FBK{2S zxbwX6q$sR0q3qmaFHFw1>jmQHI<8yhsz?g?FhHcU2YX)iD01sb4s_q}j~U{vSy=5} zgz$8#Zc=@Hz1k+I$3_(KV}1Eb$2?Gkr}Oq}#+%BTG(M<~XNCcmd7R`^fQu`ApQpm` z7w@jQo7C~{zN;4j+}R4kd#W22Mmz-&O%qpszeH|RSA$~?RD1-x#9u+wruMAG!Hu^1Y+N;m0EC)A$3 z*rlT5F8g5nB9!5G-7)Z|%&XQziM0yE@JlV>csq==5u244>0~pttx>5UBTKbdtuv+j zez|H>wp8GH02al0l1oykkThT;7FiZr~smo|Y*t&DnQ(UFcoVp8(94t_|Fw-ms+75Z+E9cz=7 zYUEX!h^qP*^C`uln}ln>-t0^=WN;T^g3l>p!1=oEVbuC_^hOPTn^A!jzwCv#vKbMQ zg_m>n0EV{y77gVGmm=F;W?skXdI=9pGCWt|07w0+Fn5BJ%1Uen>( z+6K{zRj9w+_mES@?zPZk{S;GFcC~Kp;dqcLd#c4i2_T~mO4?btz6;;I%Bvi;N2^la z_>z={0vekEplT`-9L!?*YlpC$7up5(9^P8f{jWrm?TRnf5;N)mH9P+~Mv(f+!qEyR%v2~6x zN9alQKw*)Nh6d+>PfLD1IMObSKT9I1t4VGgBnR+hcY$?nF)!zmaWt zVD#MP#M@8`{6^q0FJQ+emOuMpuU2ARa8F7Y8_6CLcH}i_EyiALiR*l85!!t8L&cb_ zu1eJnf(Y!g4~+Y|z=>n=+(FsYL;4R|k&*%T7qlzw&u*MfW0E--atJ~gLk%L=RQAZRNdU7uQS2S9N?1$7=N=-hPsG*rdKf_V)54fWk@97{ zKh44mjtp3yp#mbyTIB)Vi%iu-}T*Ql- zbpIPk@$~4&0bV8A^WxS|y;gZVf{jea>9r7`22Kd~v;0R$bA9O1r0{*TB~hJ_vx(Yz znrl&oy9HH9p3j@^ST)r-Bj2fT5f13FE zv}i0XY=}#o@iFH>&{}Mh&~6s|UlQDl*B%!$v!#08NA&*QsqIekVs6j1O}v6IXifZ0 z2*~+ycxXK1cP{JLuckGd=^E}He1sYJNPfMO0@mj9IMV{saP7}SO;x3jQa;Gj`HF5> z0O1A$)7cfWbszv&o|(XSk2wTHluxJ0A8St-6Z|PuU|Qg?SB7zq?z(UJxOb(=vGjCD zy)8RTA%Fp7hLqmiD@k!#vE=yyuH6wEAhWpq=7Vn%G?3nn`Cw7`yTn17x zeDSbv+M7JJBVraFklS@!DaHe;v{t=rem@&(!o~;G_3(Rt#7pyE&u!knE%EF8W%e>fY@LC2`vElox- znDb5!N$HPfO3nG&+ztDLHVm8n{i=<5Mcl{>{OSm6Oik_r3UPWf_P;?#zKc>$14M%5 zOXrDnMdM~fJ@4%?c%)Pq)A!@u6zRC0*5yufn!(KYF;1OJ5|(oAxT;7mmE~0JvN>U~ zcbOm~VjtsCN|RD9ZFZ@fp7)*aAt-^}47R75f59tu28KamkMW!U5u)EUS%}h1&{pst z_I@{ze3K*<{@I>r)=ZX5JszZ7&R z;8bR!RU&U5qQ_aVqh;aP;Qa?52=M%TR{4aHm>rT(Ay%8>Qn#xFLYe2<>%I#wnWN7| z0xoQn6_!y;GAf4d%1)=rRT2icVU-Fe;Qy#cHonld+`f8S#dVljjy_m987oIqbS zxt=#Q*@GPyv+)qpgz;$3L8IE%#z}(|1m{x#yQ#@=^jKPs-vL z?l)()<`$y|l@tF8fEZk!T-@8JHr|0GcJ_F>6%Ub7mH={oSiIf{#Bkj37cfh&=2(sKG`jNze)vIXV@=uI(CuddL?$Gc)A(zdYhMkMx_$x zJA4CqQD;?w@2R}d@uTP~RWGn(vwO>e#_m~4nk$s|orEz-m0#ZUAGp~IB>`%3YDBof zMs#RLt7kRmXIuY4yGO=5Hk^UwNbWf}&~5iwOsA2R1cx&wziR&%Wy2mX=n8^di-okU zHMX`EatULj$Z#`w{8pPfZ>5{iPO6y zY?RPXC4&RExPSA?t`$wu7)|J=u-!yDvWEO6H(Q%!_rnNFlgZ)&i9- zTjGEN!0=k}_m8Zc*-rtgcMgTa+)|+5!y*w01&dkaszO^y2A*nrk2RHM>>P`ZJLc16 zNlUfOs^{iN;+8gD2na=Fgb;p#c6~0j6V|+KU&y4BS>Bi|&x~w57U!wJ%%V8yJdj*H z(P!)~hfv@}QtK{x_dGe7LzkqIz!|3)S{C(66&fH6^^F#&X$WCINk9V~m!eWN?28*@!sf3snnutmr zbd%F1MkCs6=-*nurq9g=2@zYT-DhrUs|5oyU{nc;(iblGdF&Y5Q{pef_!N@)`EnbP z(EqPjoQ}5h3ls@5i=;LwGS;F#6wc518}~_NL3{{?%+VjHm?H{``or4P*|0si3Po#h za*_KIVIbIwR%Tdn`|iH^F^Cl4c=K`2C5HX)5%Roq7Ham#AZLuX&Htqc^h$L_s8t4lK-G5n6WRKB2|iIQy`yZs@4h~6ou%&5* z&_hs#(w|43ao7GTAxPUBfs{wd2mlyRq~#08y{9J$2xcbG>!Rh(j;~r!7_Xrj&sc@1 zJ36$=0bt9{&MO}EeL2@zAm@~du`-c7Zk78lA;MTNcaMsI_WlY2_!#YbuDfwkE^qO!k!6208L=^psEi2MaG^UvO6Q z%)=ZEp0f88fIxm?Hn~F#+r*fVQr!%kBH(f9Pjew zC@{hV%_u--1+bY54Pjp)n3Xb3?rM$l7+q>N&i6B0?*53WlA^8MlmN`2O2gpcy?(5Dnf3|uK06t-;K;9a;?*Es=F;*d z8sy6(@IFt`30bp2{>nRPkfbJTCd_TFwmfi;0<2f#!)*@+{=&H(h;w+erjJlp&h5&2w_)JvOkPl+a);_LCO? z4dRBgokpSjkdFJ~G)Nk=Dv98?V1S-lsP@cknHC?_txsgu0txf}t5HgZgH3`Mkm7M( zA3;xlSJ5J+Moa?*$8FSUeT))7{4FS+9Dj%Ilr%U22?dy$BA4oh_Z%;*%mCTG_Mp7a z4FTb9g`KWDl-m0%w4)dcmPt7O?nT*?paRwX4+j=)Nzrt#& zLV|(%1RV{U8@MgQmEikM>8cknJw5xJsBPxy$BPBfcfteb*+oP~|TwFr`alylhH;Tp3zU!6fq|^Xo zlW2_q(4eWm`R7E-q>&bA?t!^!uRS=q*!$JHctTW>5Fq{BWB93o>N@u2$C+(zHbBK) z?Vp$LtM(#H#W+Yjl7oUKE^g^+jbrz`)5+s9F+wCzp7?3rAN!#^9w*H}VSVu#AfAvV zE?Bu(N;7oHCrE0Yw; zrJ~(P1>Pa4*vfl^ycDE>g%$Y2dyVAHRBABYuhV%88=LbeeA8Lxw)+x{D1&Bt?U@qh zEJf#k2GYn<3P*)cGdSJ?hdh-m6g=CwhlLwxr*=pD9?1lE$L3_2kE9y5dg;eFDe{w3 zR0nSZ0pZftLMV~1YHsNqeqt96EM5Vy!Z%un2Z7SW*eUvxhs#rRHQCsJ1rvCbSwim; zhn4kj^io^>jG=>j5h(yOYj?Te#|kn9_W3p!Uy&fS(&uso6Hec)*Ovk|JS`wEjZRqQ zj>yMMLO}J5TF~f`sOKdEd=on;Qc9 zy4mVbOt-tT$8;wv4StdG7p!I#E^KT}lT2=`2E4S+NmLw1Ng%)Y-=zOsy5;nHjn5!0 zbQ^8^%%<1@5U{5anF@g-D&O{{Wt0n22zchHMY`W>2Lm7E!{73#?3PXF+g|$Gd7V{63l#+ zxa1yoE6*!PJk0Z)4I3G%uy&H16LPa);tWi7jn!J$;KE3EU;k!JSiU+)y&ze!_!Ar; z4A28Ux%WkC2}vIFR zX&{LD*cfpe$#en)GZjwfI_I&G7f|o`&gaCC$pcmpjIq?_8wQd*P%vu@?n)*AWH8ws zefZig{r3sX8aN1uT|bNfOkxLX8Ar9xfZ(h9cvaORNG^bLIYj-Ncfdqs|9rfIp1XTo z&310T-N+hp@2<{~S)qu} z1UZUNVtN;bp-iL^%%l8uOLa{VnbckQ>#a|j!w^jW{ChXg9OoEA%Tn@n#6s5$bw zO5Ja{6-CNqWi4ijle}gJycKu698QlU$a`EU9ROF&&hKp4h}`=KKJus7D66-C4$W=9 zNdSmU?|48WF^kYZm~Er1){>uO0E&$D)JEUd?f??=q$zF+g(SEuG18nFsu%m?4drlI zFZA@nVTE_IgA9<6mBe8|jZ=NY(M9)X?*B zkI*Q7N(W@>j?d8P()6^BZe-X{YH3g&TZ9;oE@Z{-93e9T=xNqoc*JH2J8ExHisASK zE3EOuWz%*1PO^teA(ywBp(;3pFl2tk$<|tHjRsdg-%m_xRr#Zj26XV)|$z-kFb%%Bb3D&D{1Io7*S0p*?6})agWg# z(B$?Lk8~xS+51u;>35D{u_lLjPiiHI!C=4AZ>Twn5CCK@N*5kGE`e-3Uv#ub=2tsh zB%;0y*(4uY3pX{Ux040RuhgAM0Y)?)sJ;1o@Wuipc-j_g*+a`SwRqa^QOTyZ#KgW%UAc$HT5V&_(W>YT%VI(j>>T5mZ)GNy0K85 z&3UpL5ywVppxMw^Cf1I-$43SIom)r{(J-(9XRt@Qy19? z_&sgOa5++fwmOtV15EGvB4Qz$ZESu{c&X*9WrFt9cAMYR1wAWX;LmlCQ^rk6iL^3sR$NH4E7d>%R3edWN9G~h(&9`qr|-_0+=H}}8IwNCo(?ot2Y-nyk^@zhMGQI{j=!y=GOGFThs*ZqFE_<205Gaa zAollMp7%NQ_IZi~g)S}3+ZJA$sQ(jXqu-!c5whbz# zSEtEXy*!Qhe~B{^IEMrnaX+aoKqj`fHmbaTLH9MC-b}T=I3i*Y{$P=NWv!-=P%2}A z(?4kE7WQ%+Y%C@U0(0;G3CCW(cKNG}g*5k7 z^dV2DrPA52hrqMi*eNu~KHE#V(sqRdWk((XZ!UHep#A_k)N5z$X@>wHE-iB4Z;FdS z<)KZ{M$AyrV*yPtLK{6()IqG~C?TFLp?jhMhRuec3tvEkN(JqaZhg{>LIeT`A~&SR zhlw;Lp#(7M6%KI^poNr!1K*a87rz?KJx68yti4M4;ofGXjZ z0$_M>UWXxsA1BB5Xn zAP_t539PEUkOE4{DuM0wiTN6_QkQxtn|q*r_LhX`^+ytr-y$i1!GLN*k&(^=*q#35 zNCn9Ja-$gtMS)aus=FJ1y0ScGQa~)Dsr)tWFlW5J zbcPztWZ&78Tq!EUSZ@&stp%s0MYe+an8mRK{8OJPZ;#uT|_Lr5H zoASgxsm929d+YXFIrSw-*tb=WQR)K(XgBfhnRhxM3L;12o#`V%VB70uy*i8Uv6SW! zkV{7~0v$z6C~DQI^BcG$kZt#O-Kw8tazWv4Rg>Pui96w?QP)~zVvd>ks_(fB+vN@~j>NId@+20!gJBexLy)WKj8i2x;%E0%$dW#9|E zdQS#2O4<$7Pkx2NRn|T~sbw5ZFB#Iz0>EQC#<}lXFmRhU3ua<49MEn6$=&jSCVw+r zr0NxuG=t*qSmWDdg>wA2iWp`9hB4x0J%CuS*bQ6PA}BAiC4aX2$G+o-rAmJ!fuY?9 z7=$8rO}wA}PKnH6Ww`z1`zADUzA-u0<B6j16@jwB#SvCgdQ2Kfq*IQ5QdC2vI(=jHF0p zd1N)GsMoMy?G+8uGHBtAg^cF6fRV{OG{c{4eTC*`9Zrf#Kq(x5|HEYN!3cA%CcEiU z2{_ywNJHie-bM0aKkQa=gWTtAD+lx$TYS{dpoeYSgMXBLPM(xaSG7EMELdxqYsSI) zvbepQcaZ5+Q-&!BP-=&G>?OM?K7%4C^1gm?%ZD?Z=@ARRe^(;S&Wrr_GmG*$uv}Te z9IX%OZBO~?*z=uX(3?6NvX|4-{*`bECs(Je%i1XO%_5#H01p_$Ql|LesEr+2HO|)# z*}&-(53Mq{ZqhPCc0JqhZ)=_hWi>WOx9}m0E~S-;C?Oid6PM>0omUN>qoPNQ(pNVAMdPc#I`JQf76nqtVp# z=cBGWV*zCZ7@!P!XX9MAih(Hg@x%60O@FfF{)W`Sf0Nu2z@G42nSEQnVz=_Azd$9< zTCWgW;78ime0k`%Y}bDYJjT7xkv#ACG9t)8*i&v?Yke{S+B?~MgoObFTLw$fVj$f# z5PU!A)py+JLH_zEmsL7G`MvDPF9s)>tO<(1Ov{^nz%D3-Woinm^E9h!_SDh zvVJoJvCRdsc5H({&BrhzgT}m>$aT2r)=Gah9kJQVp22f^Mq(H-*-_oY_3+N;)(`$d z-=&gIDSu>CK*sHN*}5@+)M;&m;{jt-yz!_2JS256zXrk~8UXh|M#cq|2L^Dybn4*+ zJIy-M@tr_{`Ud^%ISMVPz6KdYpndXylG@Ccp1W-v20WfBH}N!oZlJnrZJGa&PvYe- zSqtke#JE(wy?s-OQ7)YN3UbKsuHc|BJ2fuqWzQMY18T}>6J>QtZUY#7Sl;2r9eOi& zV=n&!g1An3mrEQx$clR5GK5e0k3W84S6J5yruKWTCg`2&-ts7=1doouKnRrAKRE!p z(vk>U(VB6T`L#gZk{Gf4JXGcxAl-jg)?1?Hz^h%pqupR$^B7i)MMo6 zq_S2YNI-SypAS}OgY%{d-m_FawDcekJChJ7Q*JK4G$gAS@z}^D69f19QTV#*$ z@F64@o{%T`+$EEY3ph+K*#7IKNHTzlsy^Gn`zZXwr)Kie4b;gFHl}|R_-ZJU0+`yK zXL%0M`}E_JIuUS;D*y!RpTj@SWjriv{Ds8CZdaHL4CvV!k)Zx6jRCc}KENbE9dLZn zK@Jdw1<$wYp0zCIvjEGDMrMGM{)&G{KJ3GH>Rj`tf3l?XNCfimhEP2TjZ=ZQUI`FgYFE0wZL3Q{Z5 z9~au!YwF4u8KDgI+3{OvR1nyC)%VXFzk!(w-nV@~4ICS_L?3?%>=P%Lf4-i}gOh|? z!K#0IUUJ~Il6}D%fT9rnl;3jg30uG80{<$$Ez(XiQ9*j!IwIfe)`HRmldbtdxeyG# zBUr3YCLM7?a*E%WX$VGNX*~$K<4sXZcEUlT1)?I018i75yw8mjv9zP+OqBV*v$gZK+R# z6n?cL%|~0gneyepwtvH>f4o%Rh!g~RY|zh1fo6~S@rJelEgxyjif8EW8uJ?u7+kYl z*^XMIPxp_Qz6W#|x2592u;9Wh+{W9*+1qi+ki5G4IZErbrzk4zx%WCXV#aUz98rA7 zMeK9i8~J6NiF)kYNrn`0zjw4QQg_6Iyt*1;VR39 zUvnHu;0&v#UnEwt4~PWc zJq|#Ei_F)-c+HZEke1e{25Poc+RHY3pCCV;sMVY84)f||H8^Rja+Hoo9*1m0{A#tR z3BsNod=|J(wSqWThH6$|NP9lyXHGTWm;u@LsKu3e(=MplXS892#zXika{A-^OS+mr zv^N(Xj4c>Ma*_tQ5-W9bVl3t#&&6rP|Cvb(BKJj4!n-iSKfe($j}+fSO=Ul5FQmdz zRXkFI3X-Hxn6*tR2`mi7&BYsm1@7+f>Nx*u#zo6N>;TMVIc6{OsZmFnEiWW&6v)km zzUTCd=T=!l;+s9}`v4-DE72@Dx5=_6QG(&n*K48$`e{W0Xx{M$aBUOU`(S9V0OCu> z0xdnQfYi^$;$Q9}(KF-@0INdn(1U)HC0KrbdLKLZjOlOEa@QbM`Sk=NKJW)8+P=eW zH1Nfv?Jap^clA%7>2qIYi-LZpe9-wM1cI_&!|%hA`&s-et}CGv`Cxm^0z`?vg6{xK z)Z1EP%F~}1m$>FPua2RBuG}cy6cI)OA4;V5v>(s)@t667d@^{58CgYwE;UUU){6JH z=LZnXWgC(uoC+QGWIMs~x0(xLZ&+7DrN-`$ygsz=+CY}|a>svID!2?T(uvN7D2(kQ zi%Bt1IB<$@_a#`0=GuCEU%R|NVoPGBIjb>`VDWmMo_HOTMG($(*b0z5hsf{v*Al%# zMkKnVYUiQGU$mC6$sa%cz6rfGd?i+vY++%+08$X_M9-j41J9d|w4ZPJq-$EMy;WeI z3ldz;K?tBmYzLbrMKWtcR!owXBU8Z9Ke!C1n@2-fUi?@!7C z8jPXQz8;TNz)uYN@O5NFL1c}Ms#KPrw~Xd$D#aa?o>P_$%kK;d)A9(Ytn9oqk;@$udxF zZ?`q1FLAYZ3DxBLxiFV=Dk467aduq?8teVbtS-dm@djI-L3(!ADtF#K1)9zRy*-XSB4?5$aEdgptA^>r7!G+lf6@MmNu9vxww z?2>A~pf3;)NKN{y+yd=7n0?l)8KB#beDC3luI{F79<$G$Kv0sUhUdNRL#aG6qxNQFw|Ez+_vX@0fAdgc-v(;0MPp3(_NF{*%o$?={wk2*+;%_E7 zeygdWhol~Z2enEduKlNC`A#&;ZB73O%RK~w>m8>S=IF8O;298T@(*e$Z z)zwD{N5%imp$v{t#efu^zbF_E4iL&%JN=swmtap?g@VZ z;wg9(yW`0{DPy@(qm)`Mp*-{8r_d*lVC^?n1W+|u`+M8X@n1}GiKUsiV~6C3tj9bow{a7wXS(hZcr_De|-kXTUO-1HzfkY1JPmcjz>b_@2(hwBJ zA+a8VQ2^B##<-h@r@aAZ4ZiQVaUwGiu7a^_F&MNqoUFMREOYceE0t{R5oP;D-!95^*;PCQieNVLicnStVt- z?t0Sazfh?8M=B+gOQdyz66g20WuudfV#P&@E%G>4b-_Q^NpL6I9c(ERccIGgoVRUO z@s$(4p{80|mstV6T#gHGodB{;{0qKddz*WGSbPaCvzE6Bn38atgec7&;56g)I$f!i zAdeaq0%ABE=cBNzqr`D5ck0>Na@O^x$F zMD#MRqZVgc&MSP*93DWMLJpi1)F|uwq#t#FII(zz7O)k0{U}dA2BcT=iR+kC-&TQo z)lC9I299Ud(bu0UKJYi|6mxes69U1<#5Et=puH$_ETGPds&EMadZV=sb*Dr`Tq(RPdm5T>=ICD&Et7sQjjtX9vOI(N zTY5{B0UT^^I|;w~CD>*cE;J2~0XRyl@!nh$CI9z11QeR}F%B1>NGPh!bh1-RAsD*V zA&Ox@*FAcuN{<|yH^hG(4YkB);DMXzfO0KlXSUvnUBBS}%?W1MF?_HbXN~R!`6z>Y zXK1HSf{B|?+_}Ow12Ciu6#C28Z);RZZ3PZ%*RR;%W_B3uEFF!Tc0n@yDL?zGKV5}9 z%rMA=j}q#~MN24mN)&rh&%QjNVMFBn6i1dQf-qQ8Ajvwe|{(6wAs}ruoDGU_y+rbMF!c z`{#UDT6$tV+y%aZwea5-lnYuQRb(R4C@~}<)Fz{(vGvjPhO(kZzCMtrR@v!T zx`2nAP&&cQpiajc8yNZ{jQ!NnY8RIN98aE2R@#XCRIWMHWb~862fLP_-jjzsZglpX z{<}%|`hNz6V{|b_RFPib+ZR|$*s>IxXEYQ5N z2&qHjf!8AHUmMW3#U|E6bllbHp(XG#+zrN^=vTAI~?VSPl55pTdl zYE^wP35D+=Ee4(ZzEq3p5nwKWi?8NjS6m#AFl){fN7Bw%AKSDqwhsl`>VdS;dgdeA z?1`Jl_D04Ur4bLoQX05Eug>&J?uL73)Dzy|#NHSvLpI)L-+-w;k*IR;ZUz+-_lHhJ zD@R5`p(R%ISRUE42Osg%&kM?Ks>kXO8}rknX09yexSvF( zXaXp^*;Sz6$37mAYp{v!2Ujl9H_;Ck+k`M5S;fdorq({f(eKEU^6nHz-$3J5Ll4&1 z*Bz`g8=;kZ3528;SFe>fueT#{15l$M@U6F`O+nER^FbaBb(t^jZd@VhT6%>xIBkEe zk|Z6o!~9w}Mn1Fcf8xh>8{g7wmd}3q#mhFqEWu%k642Us;_YcYLM+K2O=#}RYW_si z3p!8=IVzs~7A5fHClI3=AtppE?lB8%P6G)R{>P%k6zCapLbydqqj)gDfl$SFEdbA9 zX2WxRT{SmN33=|eXxBPE;~j6AJ;h4CqDalD6j=~Xy*hA^{nM@z@0Iu28jcm;re_)Z zyM*U=!_n5^?>m?3(47(qzajO(S&xC}N2Ot5$k*Kdto7_dLsNGbyZ%ys$l8AJsN(7B zj~@}sEElfB%;;LLri!4`=@=qkZ}E}8xfq`%8uTWskL$~&mr^)3cp=vZbf)o-R3zP7 z;xasH{Sn-`>u9`PYjjvtu!siTM4jVb>*vc$jx;TY6F}STBBtGNw0Lj^;dC`D=E1@u&Mq4cBMdGl;OLLVGkaS&6UJo z`6)$yLC+_O+D(pVgxK;XA>SVkpDpU2Gos%nN0&I#ISJCeprs^a zp(F^`z&}at%+Vl=%yY{&EFs-9Px&4!S*$($MY4KreEq>$oKVjJbf>vK->&9tu%bYy-Ku%;t$&I<5V4#rnrC#5G|IYB|;_88O6e6Gw8v=bcGA5u)o% zaJ1-fOHTLo59YlEdeT%8wAsGcn|z2O2ja;rc1t`Z!ML>u8xPh!SNpd_B|wHg%K9Em z)J^s0Rp;eT@fss4LaF$>b|Rz_++afa@#j}FkS*l1)-`2Rtu1+9kGeE)E-tX?CN^QQ zrs3wCQI%s4s{bRrYWpc6Q92I^#%D1t?yIF?Om422d4D=1`bRRkTBAIZ1Y3JmmG@p|vb7zszmrPKN$$ zeOhCgpj7%RA!;LNbly+*%;fMe6f1IZA`T`#HqN^nE_D>E$^AyM)=Bd~tkh2V0^=*LF`Gcp_WG zNairKDriy+oW&;$WASZB!kuVp%*eC_N^1C0%aSk@z6IA509K?KVr{ri_%)P1&~ zw=%~-XcQpW5B)uu=9ebSLCY%|V)JJ*(mQh>&Ijn2;OR5q(}O#Oukk{i`Pzl7Pzc-d zasTfrs`x17KIj*pT`(wVD!)=+e9F*HO%HjT&3G<2`_Gn%XuqrYIJz|;RaMbiaK+~X zM}(!_Hz<_EXA>5V1rlz*kw$`4RlXNuZqCH-CJ5~%7{RItj+Rd@Q7rDi%mgk+WOy=E z7m?~xQEuRb!H^Hv*6rx$g$wiJ>19&PfO|*y;0~&-UNodHC#SVF&M7 z2!Em1^IMYfqz>lAh3oeXZt8_VOg=~o@ZZ-*ehgkC3S6yIVQ6IgwsH+I`kw>%3M zR2WO%4+ak(*vqq86rWYyfldwy1W^(Xs3g9paQth;5xnat;Dy3HTz7B<9tEjIPA5BB z5|pun2ldDlN)Q4~lKgffDflZn!ZfB#Ykav>ggk-fpJzy80B1W^wQnL}*wc#WRjBHq z%$_qrALiw|-ynu(p8q!OmvwiK@&lD<|lb8Atc|KRQ>1#>qq2}Xub6zy&D1t^9i z>8AP;H`?e?T@Pn8x%Q=YII2b1Ykd^1eQq+xX7qtAcfz(?pJE6@2r%SR0$yDGH|Ch& zt{=h9-CrunC5ErP+5>~`W}<3w#4}%$u4N|TAtKL;BGt%RSJ&5eWU9z3W zy;Fc8H%MYz8pKCt##=?dfHht{`1z4Qnt_G^<(F(}Yl%K176q|=bl|EO-_Rc$F2oZ1 zbEOEG!UcBx73oo(Fi!96utKj4D|8{_@`RjHp4Bo1L$so>NZsC*cm4ZBut5!H%a~f1 z&?8mGXN#Ke!HQ}vsbo!j6*k-)thiiu0O17h$>)7{e8&36(HQXlTE@+pNCG!MdaSi* ziugI2?VjCL5rlC+=2*)N=rnldDGRSF5CSYV5(a|M)2&zeL6^SYfwV1PG3>dgU?)^u zYvc?6vlt50g}}g6V6{RP_PMM0HZ$%4a3-kZtzhnJVzj|)W5Rp%=V z_-SOIh{-+j$<*c2x4x^Dg}3L)!{HLO52Ubl|Ck8Z+s~-oh0x6=lCkm@2lSF})zD3= z$^MET2}p1l1Cuks&AY?Cr2WB`ND3r&5&uXA`0Ss;3(UUICri57@;d0D03;>DB_b?}cr!z}Qvwt}DkPFxt%i*3WBYe~$DiPkWMJMzQN=b3DdHnjda;a$sdNjZEoU;bU;E7QxfR&f8I=lwd~#LyyvqetIbRSOH#S}z zo;~7bX)LdtEsgo^N-2d3fLA!&-tq}Uy)-E1xn_Mj0>3TQlVRwhlIe(z8QS0_vB)Tg zdjB%$vfIB?7JXY&Gw{J{NYNe1_N+&fS6mZUi?Z)S!uRb%Qqn2NU<@9rO@#{v6sd-( z&D~i{{RgC<{)R_doG*)Gbb|M+NwHooM#Zgmb|9^Ou-eyM|8OL5RJNeD_L0w$9r|qc z0*N_i355vQq~91UmOml{q$Hq!Us|6kNpe39l8!&4{MksVWj1BL`N6yEHl_Qdtj9SS z7adbnJ{;D`E8HksRbWkuLL1J7sUQXozZ z3uS8fWVkYc{RsGD6#3SA|HeWw-@Z7i+wL{JmC%X2M_~#-bT}=}_V! z*=?#G|GfX=W}Gu>p}8g@jyo)QyG84Iw4{QoAn~*6@2!s{ID}h_MHwHsemb)-j|wA; z%5TP-sC}21Wra35FZs7Yq`x%XRQ8V!+kMXvF7Z!js^O*8P3B*e6r8mTn>e!Y7`eD$ zv9w}dN#7A1&+ac7+krw0%}<~>0up1Ex38X=u>>fw-oPP;3<0mRd<*Ty-jSi6J}sL6 zj7o4cg8#{eU@-XD1DfMitU4PjSjMQm{Lct(GWccWs{>P8czUq_<6Xxfc)H;-VUch8 zTBT!+6P-gz?u{VsmmeHu*Pk99#gt?Q3(5(cxF4IT5;mEdj z4|z41sl$KRpI92N-`P{lTLmPdK?Yky6yJowr?QjpNV3HHX!ROLPUnnYp!0gFfaJNR zz4fNRkAtpW0I0Y?V`kkNIy8yP-X3 zDFW&{9&1>kXMb+r$?!oIXdf%2ks|={>uwA5ZggH328TlP66oc)o_p(`uPXX9Bm0eu z2p%uO6>jmQFpwRYn|nBqlEtmII4>cqTCN$X;22Z(5WQ^GiGpT6_a=aW@Wv3M;P)tEG? zU;`e4?xzb{pazm%(_J6|(cMIEeuIj~@nyqewj8LpVx#nLivKZymx+clf`Ag$M*Kv6 z%WvKTiTS`QGlpJf^CWlT8*~&+{rC%bvEtI!#hbqGRjZQ+o&D_sJ=q{qlxaA?AP7iy zsN6^_QvU-l^lpELNOl$aimECuMWDLQ*WKeFae|(U5sdW6*r$&GwKF9>`O|s($-vR! z93iV`*MAziJ&+ZnNz5`O5i=aLAwuG`#evtv&(&{KYX1nuN2k63Zm=D*f)6b;f=Y^l zC>Iio*Pn}|0>202F~JL!Gn*SOaj0tI4Csd{Qj>+^;%+4Zre>mjZ1O5ec2oIy&Gf*E z-aP%oa$SA;5)1HfkRD@{zfxbE@T$_S*iifgKT;=uExTZ;biFH{8vg{C@WMDKzukd+ zJ`LXc5Ye8C&(;E2fN(;I!0&!?A1DF2`&V-Y;<`P0Hl@?19(bH9H31wW%-u6ck8avl z{MY%8%t`Pa;QqFh5#6cku5+3;>4D6q=Km6$6xM3UO|~3r807ig_@CK$?Na+xWU0;2 zPZA*ZSC9WKWb}V-ytA}vlLYlE4v@JL8D!6UO~f4)A^JlG~)iZg?4g zu~M>Xkorc^L*?gY7vZ=p+fUzqxLTO+KNyF7@Z&ouu*pLx%ZoWVV*#yxhe}1!eXUDZoSy8wu){+idxN zYdBx|DT-DO!)$duC#k4E0}4wPvb+UOMa#s!BLH8yZeRGC^63&fSPG6Xm!{r+uRMBO zv`gYpyB6Q1p|QB#YXOJ`C>VTC&mB`L*<66KS6qeP;COFMtUdbH08G#uu1qt>YvI~S zhaJy9!J3e0)t{t3HhlhBwxjW>WCj%afb3_(XRlM{9wTXZk*D;@SvL|x!AViD`lhmD%p&7Ips4xTfy+)k08WxwW_G)gl3uF*uOK&Elo?jyO)Sno7#^{ zT7nz?V&>C`Tf2kUHT&fLF7EJ8yWe^8qpP#H>{;C1e=mUE%+&A^t+NpvMWLuL2$5EL zj>c~0$iS_vobMAyJ9@G@%Zf~|rMiQD7PZ}_k94f%?BA6Zc0ylSknH%o!6C`+ zHorLOIk*uF)jLdV^>#qGSQijkRG$}SH0TY9)`qbvqbhv+Ms`PbftV7zit%Z38GT8B z+Ns^?oeWGxIuw-^Ly3O#1!B`Iw_kA|8XA(YIMmQ_97(r(8SRW#o){#f?3*=Uq?=Ul z8wVX6>z=C5?8Zb$;8>RVtG`lV5XE&}QMaFmlY)rgW3RZKt5VGe2FIdE3X9`m!wW{u zEz1-YNbCM_De?J&`&KWZd9Z>)kGklPC@703Cc%y-#JEcul+n@w-*3Ni99US?o)S3{ z?X*;vFt9M^D2k)%Hb15o3W5iw1^D*u8zdH$6R|U^?;a_%x3h@Zbz3A(`1(n~C60MN zpn*ZZ^ZrDSYIUSK9tc>O4v<>#(zF5)#6vNt77-se>EBp*!N7&?5=>L&wVY6i?av)I^CWv10-x=&qYIw$CaMHyA9u zMFShI)bD&$fObhMd;`N&)0*i>>b-{O@Vozl=7qzq+;$cu1Gpl{apdC&S;b|&6UdW? ztE;AuSku4!>6w#;Z;}hU;=lb!iiLe@2vxlPRxM@Y#fjx&mK&c?>AC56?G>N?=1$}8 z-KuaJ1V&ZuN+X?7f#RVZV3uQh>1bQ%HGG6#*#|%V!UH#ZFfsuM-ErELOcWZ~y=H{| zdENKjlKf78v+E;@<4;*B)1ZrLiT_>c7m}%h$`jU&y!$KPr`zadITrsC|wMoJ!%Q)PoArT5)C#6Rj_ylP3 z>xQoJiP_A1Pw4=6P|r7+Layu%e=&+RRxR(qtie@?5Dl@ZG`c7RqElPJ;(X0l>+muE zIU{~r@G;MAj8tMf6*E~*a#0S4+GfnB+{9VBdC(qT(pJ*_0na`IzeqzA<>hK&vaC6b57a=ngoOFu*s;&pO_m5T0GWcKJZ) zM4;YWg34|y?HO3xyfHwcg%?$S|BLo4@67ogB%y5W97aiplLi}{M^d1zh3o4-FCOFt zdlvpqr>LutU?{C`uKn7HeVH)|BqWFh^;0|F&Pv>%J2PeF4q#jI*arr_m+u(K;(XMQ z#u{9SXaY7ZLrJr*0h$fMA~9N$)8+5YP=M<>71%m&1Ij$CH*CWQ9!~R3vSNQ;K&}n- zLH>%0@B{umIoB-J*oMJ8&3>ZH^W?4@7!RatK4~JlOWqjiVm@aPs%lHLqUNk~nmo-T zx|G@rw0&qSqS=%s0#?FgX==>RuB_9;|{ZLPbN10ZFl@BW(Kq*DIDiK=cXT+OTI4bY{vf*@BK za0XCwtFnLN_6gabP+)fl@-F2cp7l>=3Qr?RqmCiCqrgOGk)e>$luJ?SYbhCo6=f+*o!c|NV0(Gk?OSixtUdndi;<20J4E}MIYvD-FwgzW?V>e?-G{aHV09Zs?m7kylEFG3KV`!xOQ&{5%N|r=?0= z>4kzGp*H?Id04&>*n734{aL$YQSZyy-sR=Z`yV3uPfU$#vP@_^=je6gC#>$o@S`E= zuk61E3FQI%$ac*B!b*w?3k@B%Jpe*SS)!d-`OPk3pSeuA>3NfiV~TPen2_LV{zu+q z+V6v-k0e^(H)&ae>P~W=o%h`zN^}Tn;~B&_R69G-J1B}#;~sGo9qwsE4u3!X27gKd zC+V^VmYm9^J@(G~WOp{;0;cD!_h*~(7r5$-D^76cAW`h%wk4b}+lMzML6HzcT1!p5 zO-y%rv$vNWTpsx{vK87?e~RJUeg0NQOi70Ky6uafdj3n3hNt}UeYWU>4<)}G;m|etr;;>;-$4$9h9B5%KZ_S)>T^W@(&l3Y z=~?_Eq4#a;?4*FJ>8-I*Me>B;CY-si8?Vo0dgNXZGH)|Oc@I2Z z{L^uyn#(`<_Thq%i8cef7RNEOXzRI7tyune?cUzmSg;gFMyiq9?tcoRk!U9iu zt5TPwhA0brQ_kbr`wOT#b&B{L9loq+^_u$HU^h?c`F@`#;LW8)06Pf4ecETl1}iykcG_?rS`XrR82Iq?2lsb8PJG)8T|XPG=J<> zlpb*s5@pjeV9`7)nJ>_sg23EseXH4!KHHZrUUX-F&e?fPEM%ZaKhp|aOepxmvCqjx zbL#2s^=&#v75)BGt~ay*8x`#t;((A2}G^XO8E8;lfw8O9sVg3 zJ3GsC@2cQsK>FV>ua9AnK~UB-lU?HOc(tF|p`gUBajy6OX%~=zEYWZAbje>!F#%xnY-G*m@wycxm?h8@OZ`j^6 zA|*I)VGU8g0I0fx2RMKcB6v1=*5tw+ywQ7>p)VoVlBBP>l|oBHC3`U}(F>s@6t1TF z@5I4CDyc#!eFTQRGL!YX%MW*&^6-O~|G0od{e~qLus&jRdhD&U{Y<(%z9AKQy?0te!d4X2|Ru^iI^Y$Z}TZJ*LhW0h$sI!IP-or^XG- zYvr;{ZjLT$YV`82QwR~Qy<#Aj-mkWGmSA^iV@4IPF`rWu_5I-J``PXIeonK-K;?eb zD=R)va@OgqJUOSqRf+T-X}MV9;jNROtoK=D?>`(Q2sMdJ%eWz29F#jPSO8F8BI6h{1CRdUBQ_eYuL6%U+#FFX zd~w3M7`k9QmJy5&#CCPfr=qzMIjUpLo-1-Be)%;sGvIa(uayI4?oNA}2W2 zId`pO@$|hpLL%rww_b9mo<6E_||#>>T?CGbRw3|BBp{buBpdXAeK|mfe5GfjH`H4?`N~k1~+6DtDig$ zd3u8|fJf-07cH#jd{~ee#Y`lNqPP+bf2`0W0Lpe-hD0Cl<7FRBaZ%mICYMLuL>qU> zpWBjVk2Qo_?!)wClUAcKlQ4^HLaU^fPCHS(&%{j0zjz)Fa%{dqB~qUi?L?FRu#0=j zzb&R0rymc;EO!>u#nGGSWP@cdXzxuP2gg#ekB#(mL5mUhr#?-kXgAcb&$DiuYS1fE zK%khNwIY;CLxP|S?cz;f6SS8;UN>bXfuZJs<#3%FoE2> zPQRrr!SjS$TQEeUUCl`#`RBhLS%Fu8z}qgxBaXJ2`GTju5s88!i4DMZx{UuK(fw}*Y?-B!9`vOOn$A4- zpLn{;1h;U7?&#twj1icGvwR`6AfT`W71Gcj$c&{cyJGJ)`kI-CcgNqMRUY*zvxM*M zA}J=ml>Z&JVEAHVTX8<$wHJuejOjD}H{>AQa|+KME-l&Vure$6egdKExZuAxECUg_ z1$#J)b7xk94&E&bsFNQ-5~Bc=B*qS2Mai<8F1yZI%O16uF)84QM+WIMf&c*~8oKQN zI0(=$mq3Nl@b8SH6bT3o!;+#Fg>cynY$!bOH^3g#%0N)jl%+N%!Jf|hm&NVRswIW?1^6LUw>o=TC(YMgPq{f)0^h9(GAAd5Hd^6q^Uvl?OF90Q6{K%@V|+**e2FYBDZkZA zM4k|H1(%kJq;Msm$-r)3znVMQzQ;0fmrZu|^HSRVhjAG3OzGVMIbDC?sOAb2)T6S_ zX8%)N{8;whMVa*-*KdsS6n<9%f>-aR6OsWns1$H)lhs7RF3w>S&b8@lC0DahV+IUC zLSA%FNb3ecQ0>EJKJ1hWqZ~UWnlw^>^t}6X-fi6TZsl;h`ri1=WXlY}s%JbuKzak)S_n~ZtN)`Ms#m-`sh4(YsTS+ zF-+8Nng*}W5~YUz#9B`>gotf6rr}5e>jGn+{3)M+p!)-#$&*Lpl7aQ_YrpxIwW9G} zJ5Js{zX5|2XVU_D-iD2U7n07jDHPVCs^Cc%d&~p*U5#9SRHob5aip%0qjr`uf+Z4q z%=}83%p6*BC4PG?Qwi51+$q?tZxkZ%p@XNP<%qIu(k-)j{*(&-e|QRKTJ&AW%PzvS z?5nUCGavK^9+<3&NEGL^#KTfzHTRnoeraJLe&{P*AyIrz74#!Wc1BGR2FiZDpdrwf z3uKTe5ywpmCCe_ zI$oPp*@fmW9G{w$)xQru>O0I@I;9y@3Q3+m|2P`BwdI~Qzr`nE4y(GBkkbHN(J~3q zh{d@tT1GGnZu0lyBue0!$;4G_ApUH6x;pGN)8L}(vrd5!3p|6}`5IB^fX_QRe9<^I zV3n|9@5(F5oeuLrG^5<9S>PSu2+zOWbQqDgp%FwY#RT8@Kx_XO5mg$b!YQcFqw-cg z4(k4`*~<7i;v3aYdBsdaeOd=6<`2et`uNIfR7~tNaxmEGl=!7|Ac@wI=^M<22I0A& z4>g-i5M)wsDKQUPgL3p0%Q6o?4P_h8Y{9kTfFE9u@{H8>ZON+ z4M}{JI7Jg|=-nz))VWa5OV@u-n1y)ZCa6%Z^ZbdOSBzbIj6x!fQr#Ai&yQgz<^ z)b_&_Z>7)iZ?$fiW5N;#B70>>0rq%M_-M;IQ-3~vpSY8sYkE6wa2oSojJ`kN$ zuLYC^Y0lktcc?I*cN}l}Uf#RfeoR8=+KbQdJEAcci))rnHpbp&27~|p z4Wh}&+loA={R`oY)R+RL@h!vKl<8?7?&Sr*e*EVs7t?@(k&uVF+TXm?xXNJN-uZ59 z^rYs%&+YS9UHik1A4NPCQm>y&z54i`YrC`E`c$~GLUdlRSKHzi<*~26=pQmQ1 z;@|?F9u<)xyp`Cs(qgXViVzNYgP)t^lU^!@PNmv^$H#eg$t>eazbdGZw+X5~E;{f_ zGW(4E!{Br{P}R}){4b3vwl3spC?$2BAHAgV>aJB!P10fgR?agUGRyvk^Brc^D;MAF zf?zdrWpo4*KZGn&FsIDGnTS276|qu0epzJ4baIy)!0yr9JFV^9W|G|~Hr4R;)hLd+ z%{p~HYa998yULI^xr`=LOeqBtP;jSvk95KRR3+-CZLuaZ7EQwu`iW(oO{{CtOyK0n z02K_@{IqExLzUtC;z>vP+cJ@;$Nt6*-ZMMc-{!gq4;e9;OCkv<+`*166Og`&F=V{a zPi07Xrq~)M9{Vdq^FgDqBn6reao6x_@(*GMj?IhEE#@=!7#=P#lL=^bEN?nOnj7nv z-_1U?M9(IR|4JwwHJBubCgDPjtd*8G-I8W)IdUug$P|8mG$X)k-O+Y-+K|=hYwh|5 zbaKJ{%4ncp#q&OiK00;ds%4touZGZC%{B{*7(W8WlVXZ3<8I`cPKfVnno7zRXvk?(2 ztwhg#{1+3?BOJ-S@1G75XRgCL2=0F(`+P@YI}f_*K@yd{jwXwZNR46UyM>Uq<}^Nt zF0)mfZ@W_K*(tlYu&%B#(~+^h`(suG>p@vCGe3uQopMTE8?5`}r^fOM#`G{us%V|O zb8u^}JFv0w+bt4REhg&k*&h~KcRO{+4k`YQw%*dUG@y1Qm+q62F5Fv=l_sDhzGc#% zUKnT~%0Ia)p^VnGudphxm>9T0fH{3h2KCRpQ$QH#m2M_b&2yvE)!kqO;9P+B&MPx9 zMfCKhTK_%)W&lGILPk}57N)H>F1)*y5-~7x-g#$##-AIr~leEX-ghq!0^v-%-7y5>K7 z-d5RrF;rkifI)n#TQ&SGLg*eghk@q_K-|dYb`I8u(HyB-8kkJwjTBe+X4HL*{PiF1HW)p;3>V+ zU>0Yb$+NhmVd3A(cVB~wjp@p@^!38PM#b;Tm~X_1!WN2z*uC@3TK;!xc@>N(@OZVz z&oBGt$lKIlVfX+gp4F`(N#tP7QhAaG^e( zcVrk7=n6uGdp0kvn%>Z2qtP%fw7Us{t?wlZ$^de>-&DXoNFaN|S&Ntlt)nqDH2X79 zl?g*+u|Iu_L21j*Ihm9Q8~>Q}cbS6{9u=CcQ_g*KUoA$^Ka)hFz#TT!Euri3L=!!8 z!){g*4~tTQ-4tlK{X2Hv3`fSM`~23|Ey<4QpSR&RA1$@^}K)zAJ2bKwbh`l1!mQ6#36d-uoE7S7ifK%mxAs`ex2I3vQ#-JoaN=uAyLP>oUdhx zj=+3pBdyr!f9Ar_!4{2`tCH9nwKAyI(QkJ8Je^9(W`05OKr|(u5E$;7r5X1Uv$fp0 zbfdGP#SkJS(v#l7r!Ol`N#f7#+WiJ3_Dv0~N) z0AVo&x51}BVXjkp8uiot(R@#_k|1I4pSLj7;nH@e4lxHXA#{?rNlT$c-9JBarSq~m zyN#0g64O#KjuXA(l3PxGc?-`qv}NGRN#O@}{|!Z5Zdv{@?q;~Vsqv4bkRz~n{6i^L z1p5iA%)Y|k?ZEoKWyMFzBh`Nkq3V35jKV@@sZduI)iVO=U`_g!`)ELzd|r;uF*Tk* z8aIRY(q&`sJJtof{ugDgL>%DL*{h2K#EPl2fOB?~y#&&g;)gpU$>HlXN6q)Wr)*eS zL8yPD@rb;OL?R8i4#X#xRxa2KAS$l@7H5;F5W3p6Yy8CZQVIv-#$6=oK$h~I3K^f> zHi@Wu3j#$PeUwJ>Iz2}cN=Zs0j=9tbYO#P(#CWPTA^U?wh{~)M(~WyUyk)aYX*?M@&SUpl9q`OKljPW;ZYQMNo??A^KPO zxJ8>AYZ{<1p3f*zq{0-_Hq5Ge=&?rTufR%m3Qf_DgAc>rssZI~osd+t9|IRkuKK^4 zoJ>u0x>{DnIzj`@w>UvU83sjK0TI;X8qN>gy2uuwfx}#pV-P+W-}4Cr`YWN`qj3I$`zjtQA3EiR^&C zdbkOjGd2_0%+)!`J$Cu3v*N)7M>v-}d+ZBQre*06rh#FBp=Z_hB&wuLc;JOo%MA^R z8Qx)~1HB+tiUxV^_aNlTAOGcFJcARt5Ec(9F7zeRMqf9J60>LR|4y$T;bVdQ%M>kd zZxP_3jW+M0(xCQVq-hEg{2UT8J@GVB5auz`{VzpfUopX))h;D|6z1pEE3TO5Op!#O zwqX8K!w6?8oHzOU7~G{gNszz5e@J#ifmFefc^b7pBqZ1hQ!1|?csJN4oLfGlmsX8V z=3`P!O$INl+Y!t?cIlHHt-+>*+P&t5{t z+KtEPwik2G0zG-#4!&yQ%v2U#PR!4(j9|QeWjT>APw`aIZ5y7~{7Deh*nxYm;yEtG za3#v&$;g`%IqnZccFu<~;S~~Bf8!a%OI*9oON-Zs!?S!9e&KxOohJucibi>+WjW;> zRN1bhzwQJ`2rn&L`nOnSSz`i%OUt@_X~>Q;<$sI1f4 zuLX-3k#2Md)mA*7ZhFkVehs0=dkVz*pRdITD;u^K>ZywfQCuk>c08caH*al1g76lZ z?g=VBcS@xBOz65ZwS%~grg&6QsK@(Gd11?s;~uJu@a1zcybyYf+jCnbHVkbO3+I1} z=K@W0LIa5Xok|bLS}*?y%3!z|9&@_I6Y*qrN#@JugSCaN#WAPy)KPP@DOtkl_$*bA1L?gA+oe*#r{B+g)J11anvB`= z0+~ka?7K2!lXdaIQRT?nv~E0Y8O=qP%|)*xZ%m2cu-Vn|B7+&|uJc!^H>Jb2d<__s z>p}wzcuY4;=A`?0v;k^oOgSg#b8g<#N3#e3WUbW)F>&w!*JknW~!p?x;oTG zr*{$<&47u>eY3g+*;r8xQ1pWDg4a4tE8ytgk??EU>|*}2wia^=qB`h)3LVb%!m*|e zts{9^ru%JtqZq&0Z>Z_vMTmpA3eh$f%$?xC&%H{7W-c5Qfz{*DB z=o%larK#xob>t7SwLE{@v^x-VxbWLfcD?tOFDyOYu`b9t9z)tqhBeH<^ zCY1)m`E>NFPu7po-$Won3$YRZYtB@~k>lHx%8$_ormI0=RrbL{$^ z5DQnYMM&Iry3`dd3K+lf!)<02*6-~7Ug%vO|G0ViueY|?S1 zO8<4RjY?BQL}LUF-8FRy$N%>X?*-|#*rf>A5QWA{Jh8_w-AjlJw9D%YTJ+q?ZLg3Q z(cKG%hze7;NV~VbCs*V1@Y5(>Qy^YyyEf%4868J-l!2fh4?-!^VfE!q!MKxX*_RUd zbtQHBelGPWdM53`qlhSC}lr%DVGpK?5&44}K5z7XD z8Xt+xl#O9T*vmN0ciMVot6NC(;Py)^tG-O(Fc)Rm#xQlMS)J=V-M>b!f+*YT`nFjUiI* zI69hp;cyTxfB3~<^6|c4XRSA~Up}gmGQMTnR)Y~v$FaDf?;ZbfZz5EI61y82^#Wf? zFRHQeWD%cq?-n6eX!2Gn<>ZBmIHkftBiI}E79f0mM)(5J`LO5xpuI9DD?Y({K6drE zBp)m-S4k3Wc5}HA8{|IyhC>68(w*k8oGb3yu`Vt7BR||6Qw)qK!{`iYPu{W5P za53RpN4{y*c*jkqgx!_OP#l>IP;-+|uRw+uRnpw7YnG%OFxJ5tTwU0Pkt5d)GzmJ) z{J2(U(amGyeeekFz@WXz?S*;^gv6s1?}Y9bRr!QykG`2t?3g8wIAlRPv~cVBmmbep zx0!4Z*F$`V4Q)Z#{{rt5rA0L$L`TRwUshA95%z~zowRsbVn+=AQMM?DtsMGYWlL~w z*C~kF_?#F7eu&7|fmxjTla1Z&7qCDF|G3ngzE=NnZMOXDwghR2$bH`J@p=SXo7F3# zi`-$`!(AA4(kMl*&|J2M?kV5YEy~%#s^pEU>h{%#%z1jmHo<1OmvSWy?f>_-S-U=;v5x_oHx z>b=9rM4*8xaCsqK-yYruIeHRI zg;obJ3gei~zD}xXiF zf@{MXgDex?0fH>>@)jlP&4(uY%4w3s)EuDQm-^MTkbx5jT9CjbJZ4sFd>i#r3$neg zc?O2&7PrK1mD6(H(z*)me`8!cyz_4??Rnj<6|?woq=sp$?-q z^E46A2n7yta%FeJ34v=ojRoe*)Eh05gnnry*^k_*|9$Zr;KFNn2)_x~`Bv(p9QMTH z^uYV5K11H!Pv)27=c#2Xcz7wPgxS3{*XMP*4$p}pEFbMKb^Kk3?fvD=cQ-Np()ibG zsV}AVbl)l~$35nF%c*NI7LY{7i4J}b%idj!{mwW@iIS@*{Z23zr&?*!B2t8u);hVde6Fb)9O@Mh@C_7Vchg@MV+^S-kYW3`NV7=Sfwqtj~mi^ z-*5qL6!!bHC^X3(7rX2MgCkTy+_Qc}e}s7niJ^)Jg80>^zhhsC_#VAhK}YN@FE6_% zGWBd7=HBfbcGUbL%Fy#%_-AxTf@h&f#~&)T{t9==bmsdhfSc&dnMhQ97*VGs&bkjQ zZ)IQSAYOX=2TQ-^qF*ffEIDCZ8Ne$?5VNr2uOe!5`h2w$#-XuS6(ioLn$1B277=%N zgP3s*mPxoV9b&DHoy5dNC%Wo@){kdB>UTIU!s3*EqvPxQ-eCxaZqYW_Pr$wjAS2;0 z-y2@-w8Od_}Sp{LG-`Vicl@!{eJa9Co}Y9*b*%%pAQXMTs>i? z!;hE1(PTw8vKE(*J0+o=sOpvN&6tz->LB=ZBjq-Yg0eF=c9&&DGQ+aK-GdNKscX^8 zc)S_+Q&1L4IVZN3yQyIx7=i0#)aiaKXR3wZA8z0-z05K|y{s8%eJ4E8zK)dKG-cVl%}MYp z0-gP1ZpqA16*zv{Y{%gC`C&Y0BWehSKy~xtopCb->53UaCRbOf%L!hN*4g_^27jK* zp7u%)=q~%`q$i4AKDqTxa(&|FT2-82BLb_9IxPP}b``-d!)LZe@}ubP2XN{8&CiJ@ zO0?t6ush5WCXAD!DW;EAufe&iN9?n^F9Hli59^nmIBDkaK$T%lzGfZ$6PT;S<<;%u z0z!-GrSi+tKq4;m!^0S{|EfF;k>z+pJtX*ZdDOreJ{)?QB;j*xC13WiCj84W{eURe z`1;v`}0bZ%byILDeZZH(wLvyP--;`pnil0==GSr4A4)W^d(lEt<74YS&ziAM= zv??^zdy@aT;Q^0-X{-Fh`{Y;CK?7A-@}x{f^;8z<>sAl#7po5nES4||JDtJf29{eyrF(3|tVxvD8ih%yNQh=8Ch9=^~p-%K!j({JM0$bQ~`Ntj4yclV~J znQ$Y-Of*dP%=n2@+-7l_;mA=bQ1Yw**u^5*snp27D~%xqrpDB@g#W&1n9ZcZh^D!1 z4vE{K{YQEgiD3qydnT81_XfeZ_71+yrB1YX`(&bh!r2#|!4kv9CHTnGFU@k{jy2dL%lDQwTY zr$YbZul8~K&q7~C1G}u)dOt(uDs^!r%-V@Sz^sqTPXSq8uZPsy=(e zcXTz2FKW1zvw@eE_Dnf|Z~EG&{1ZO^&gi$4j0(&^_`GrvY7R+9Z%Pcs0k*-yqT%ku zDGL9$=mCpW+B0ToF$orK1RmDKv(;R-kM5@X<4myteSX8UcNlLLty^&AcFfHjRY?&^ z`zs5{3OEftAiVr95Y-3#UcI}FP;51FLEPJv26q!EWeITkk8O*>2%2q3K#hPBY*jxX zrKTEe=Elecp4GPG{75k}5pF5}I^Q`+|ud2il7@LSZ4PEku}eRX-;-^1N?AHJ_z!Bf?untb$Gr zT=ef4^YuqM0$|WFo@|*M2XfD&lCJg&h{J%L8@Of!D|7(-Gt=VI!d}k(;L^E)%l1U6 zf_@#0$lq*hJT<#cawWXW0HkWnWB0Bj15flFGl=$Wgyws`C@`Of9{ot0t#0e`UvCX} zu-yFvzD3qcTUBH5Y*%sl_g&i7M>)#f-Wk6M`;&K|FO;#{sB)#5%)nK_k-xSJUyDm{ zkotj!&2OpY!9~u(uOF0OzXC#qrsqzt*S*VXJf|N+MxDKd_vC67bq#3~mt(#hj~D_Z_AqJpt)7sZ(Zwo@+i8OjD6YjQJJ)B&vnYTW7cQZ5kf81eS%<>C zRI;WF{u8gOXOjla;x(c?OCZ|@w2G-wN56dk={-kc7P0H8nRqG2D#yH4r~t`BqEg+C zq8_vzFpNEGsnp1mhClYm)pWUDXgy zL1|;D0LCY~QEggyI3#rPV3N$TfWg6Rur@nR3aYi2Z)@`;QE4Xsh%C(;8gYD;I9zXD zU36bFpUSHSv{1bmeXvre>BS|P+M^n)D+iZiJcFTME7U-Ab_=*(t&z~<+pypIG0^IN z?|m*#rU5BK`%jHz<3I_p_~}kJPYM&h%BEx@(ioC{I)Q2RCQNIHR>Y+`APl7eH^ibM zchmYK!UmPgUzDD?Y8r!E^2+czq~Fjs8+&oym(2UGY7Wqta**+ZL9^0j*xBuS>ew1} zjHqwe4_vo+HUAc}ImB}cfG@OXd8QJI11q9p6%ZWVvJT=afnD%ZO7~B{A#!Y-Ae_ct zSnX^btL*@?-QSDUU8oAh2rI=}7jXrdYAIO_3?&-l<7Hw51c86D8DA!LLHFA)W!`B6 zakMyTu)DnusWteRa2~{y{OU-;ypR>RmhFU(p&t*%r*GZp$hR@H8hxxlaxOHaWA8$jr zA%}lP2f%Xbf3Wlr{ssyVmh%#D@g%kV4R~xc%6oeR18qxbdIlW6bkc3hY@pqyOW#=^H5imf|%ewfP{_@SMzg z?s;gCw6q?eYo{PHqt%+1dWH)Wmtr-XHF0V8=CLBuJg&~8+1Nm96t6$ejS*#YP|?2! z1|@c3(@)aoQlg1IPl@xE<1|o4LzxSscwLf zi_9c3@{QQ-Mx5_`FVTWXF)pH+cd6CI%Yv_$nG}#=Su$)b3Wb1$#Ck6=vaAmu!VObN zpuN^LXbW+SOO;{D_A;?_D7=B?qra>RaX)OA^VMl?d=x2zY3<%4*%mg%FwJTtlc+E? zq6+tHDV_;Kd3~X}y7>*UtPtowe%YQt0eI7aa6YyCxnYxZHI&iTA%`4=tB;g_*4EWREQi#fBt(-A9UD`;Zm_?0?x^ zKhz#aHL4tScc-aNh{HBpijr<{+a;AF^O&3=D|fK)lFg3H(O^3!Dz zYin`#B?mkHzQV`lA+5l^S#^8Ylv}Sb0{--mxzx^g=bU!!bJ*V*?O)`6YU3S%DpyPZ zb=q5WSrc~Y*&&!A?CoLH^z1^SMo9m21ZkSnnqU1)C7NHIiB|0c8Gd`-Or8IXrNy zAp*1Rpk7jVLibb_&B;1-lc$Td=JFPcbbjXO4GS1PRi#_rj>;yQ=~*#e;!u18hPctC zI9wL$$9GL5`s53-uBI43SljWfp$#dszN_A4h69)PLZARb_SyKV;2s_AZ$PC@LFLGQ zWo!~4UrGP|$QH6@ZwAJDiOf%WWxQ07wp+3=zX7*rSgAAuM&7Jc%~c=9^*xU>WaGL{ zD;BC7$SP{(K{1i84@C;)GVOp=n+0(|jxT7bbAGNgpEM76NcfgA6saHZz-!dvv;n=W z8@R#rydjg0(ACcMWB@|8v30?E$g<4Fd2{YtiQ^wh0H(Z_Pi$B}2T7>S?mKms z_LQ))@_=S}G8bIGCt@NW6un2a@#5zg?&~;F9x>6{2;M@awjk zBM(0p*CfiE zi7JHWRQ9N%tW?32pZ!|r!_?0&{)}tarH6iV(gFbY0nMy4kCw8wuR7A~2r4?q#%j7o zVP{HKVZ|RcJF@Fvq z_zxf14-~45WsD#Or}t78LV#0sBGoW~i3u-qKxjFYXpNhi&@}qa^(~#=U`?Xa>_scZ z1CVo{s@XhN*zM01Aq?WFqb2pe41j6aITyRH_Ff4Crx-@fpz_TrOJ=^e*q|f`M`4OS zz(1v@$kvjSpCB0`m6p=LVGbAc8hkGWYm!iR5>Q%uqtHO0U`@+by~K9gc3K&1ocRO` z#}iA$`$kra8;RWXFR%;#_t7_39v=|ufA29?8EQAu_TV}czy|y~ug>KM22Th`0HBZ{ z9Z{HkRUYSq=gC;sZW+c^toJd~vLnvK4rn>&O=NMg?A+P=@o?AiO5!P#HrvyL*@=h2 zuN|)E8nc(I+e3{q>G9s+wXL?SPLpO^hZKLXT(+x0_G29%E1b(p-L;zMQn&Oo$WsKA z5Pp|IWTfDc^uZGR(lO^UuYdNv=rKy~rm*XO5Nt%DVi^kZR*3(EaVr%$;OQ8C z2whKa4)ZRRw6J;nXl0;(lztRE$MQVg-ka!>4EAz=dm}iBzhrRZ)u?{}Ayk~fDev2% z7>b;FBVh+`;BayBJ87ZAY{`Si&`iZ$e+hXIr>WsM)%6?eOdouJDw`OM}2os1zx0< zl_BZ(Y3CtuFv*!C_O22>O6b`gU* z6Iga=y_u+ZNg!Vl)P;^)!NW^FcM)AZz7x-nYQN&^X-ze&)if$(g^$~}gcE`8DZ3$_ z;&I2nkXQs6PRDw{=F-<4;@G|ypggVE4AQmM?(XK}mu6;TC&q;PvH@2r*O0hCnHwQe zbX3J{pIxwt$vUdB2w@Tpfm>p)$rN6!J-QHhiqrk$bs_WCZ~q+^f`&RkeNhUCPkgpK4q^m={(V+p|{*&^%eU+bystv(zjm6U%TG<9mw%P8di zjD*xM!AY`H>G!Xlwhjs>x=>l23ms&1o z^hk$+VekdWl!v0xDVJg>RIEx3HsxpKcgiDoDC5Uw{NbPoJik2s?35u5M?*NEnb_%V zAoC{#1bt(Ei=kNU*&Xq0mpQInoWrdyLp2j+S?;a=U*HBJ!`gEY0c%$@`xl z$I8p0k?o(0SNWNh9R_X%g3dwo{!}StWM5CGTm6*$0 zJYSi8FNW;xl9t@@BQ3P(!0kFHE>zSXU@~Iz&sA8`E^RNoh^gkRTAd;=if$JXtTY0_ ziFn9}BT!?NzC>SpvCIe?G6tP-$v86y^D!@OW3QrO1M{5 z&h%h6GOqsi6nKRIkAqdQ^9)N&kzr*004pGK9AO5E0SI4WT$3Us-P%!!*c2W+!t1|Q z79y^kGjK^>u>!r1?ymr}c1|-|Jn+m|3VifT5<~p^{9gMfvzP%Bei(J+Wu*P>~P*0D1G}(f{9Wg(?lg>!ERtFuiAoH zSeI-$z z!cS;}THwNWcY1o-u6>jyPpgL%u{skLA*#+g6X!+9HN2QeQJU}_3-7#}?MT7zt}5}r z3K9Rl*OBp2nt%@n2wJ@CZ$FJ5Yq^;;I0iE_G76C(9Cynyf>OGg1NJE94h|y3=45oi zlh3EsG8>Pwsser05WFGaYYf3`eo7KRJDYf@hp4Ed`+KZ2@c2uTy>z#OvRj@ep{1#D z!OD?)#9d0_xMXtxyZNr1-6Oth-@}4Pu-$h9HR310RQpBHckazf?l;OE*oVt@)lQCu zwM`n4R`xs~XHh;E@1}+3(mAb&6!1OSBnN-1#?}n;$i*SKtnpOF{3;dp#zTUE#j0s$ zuC9^Z-yWgIH?nU3(+C90h>XcSD~_i8T(oNSz0=`wz*$xH^mIh2cxJS%{93P01%WCT zIhCOh`nIoqbc4P+%Th!T`}3D1Hf;AvT{wSxjSA=>T$*`M;kPB$@F(uhG4kuXddY+T zmaAn=CD4wMO4Pl!$5)jysUSd|09Q@1$DXgw?cr=ZXOJj2aJ7Te*ua1+(vopniX9k# z48gLRhG`^4Wc`*YQvSmL1$@}REUa97Qvt)z0gV5Z{k5akNVej`uq1rxPfxVtTP98% za=(e?WkN&#>NgY?pZYYzDWs;N0=T7Q$_kPy7_{-Jp78a1xqmlvhlvSG)fvunl}vA9 z?e41LnOZVIE_U8g&yavV4ei}lSu`tguTcViZThZ9*^Zkc1PnIuP50%UK_e>KT%0uQ zb3)b^7no7Fsk|81AwfJKt~ZI>s%PpsmnnIHd%S(p1wl5U=Nh0?L$mxVM;E@=Z%kYS zZ0zZp({>j_t4IGrxj<{{C|MzaR@%M*5Z;Q+#l5bF`n%TFH(d0lF>xPBVIvSkI@t4l z_=Pxs=fy&|ZJYQj%&;u6z|-jr=0IgI!auu<6Ka)dzT`j`sptISws@7r5L^^}*r%V% zP2V>SW%yQI%}buaSOk0|u_yAvg`eO8DHuWqQt5$LDG?W<+2j>H!-Awh{O(1Xs?aDq zRgBCypuU?yX1qQKLk`)A3~sO&1Q`}g68S2tfp(Di6j5{4Nj zu5BtMgvwNKIz*x&hfCaZ#zg(6r_{SoKjE8-;z-U*p6*plQpC2TG{|(RfAS&hEttnf zON=aVr>a{Wv0|QJ$+gKa%pf$vMA)OC(8FN5+vi(xV(?f6as4DU*P`oFLt^|17Q?a4 z#|R!=^uUjg5W`r8@# zzdl&(%!(y~Mc&gZgHsX8FSvgAB5y-;j_KL-mpdM+q`A%LOy*Cr&zOOJ!bxn^lAz96 zN0BJmCmGZw)k z;^Sq%DO&a8?tC(4P}wB^A|Cy26T@@k6t@StmN(!<_9K${A;Y9(CT#owoEeCq^mo9&Im1xG$hDj1e9())!f zf8TXyxK$}TaQ!P+wsZU0Qn>@u>rNBi05Bp@MTj)Xe%Wu^KRlD_MB50zOY*9YQ-9BA z(;i*~UMrt>4>%cU?H(~*FT91`7ox6A|D)RY9BL2!WrTUmlDL`p{Dz-!Jq)|3^-o>< z!(Drh*@KYvicR?aZq||Me@ZINb-YZ(NLLtUYby+9IJ{Mhyn3v|VQrZ&%DA=r#~6=~-(?;66L- zF)D&#G|Xw62Vb@Q3%@ukMBfk6Sllmqgr)A@8)U*{Z+k4lj)!EsZngw>J8p(# zAO7;nUca_KvmH)lRE!~@68Qg3zA~VB>v6k&9iY+IJ-^ygpluSs<4{x5dRe7l8Tmh= Cs9|#e literal 6912 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 From b5b200e4789c49d2f0c45154a615a5aff3cb10ff Mon Sep 17 00:00:00 2001 From: gao Date: Wed, 30 Jul 2025 00:52:55 -0400 Subject: [PATCH 03/14] add line breaks fix getting version --- cross/ddns-go/Makefile | 4 ++-- cross/ddns-go/PLIST | 2 +- spk/ddns-go/Makefile | 2 +- spk/ddns-go/src/service-setup.sh | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cross/ddns-go/Makefile b/cross/ddns-go/Makefile index 7c880f69392..6765ed91dd2 100644 --- a/cross/ddns-go/Makefile +++ b/cross/ddns-go/Makefile @@ -25,9 +25,9 @@ include ../../mk/spksrc.cross-go.mk .PHONY: ddns-go_compile_target ddns-go_compile_target: - @$(RUN) $(MAKE) VERSION=$(shell git describe --tags `git rev-list --tags --max-count=1` 2>/dev/null || git rev-parse --short HEAD) BUILD_TIME="$$(date -u +'%Y-%m-%dT%H:%M:%SZ')" build + @$(RUN) $(MAKE) VERSION=v$(PKG_VERS) BUILD_TIME="$$(date -u +'%Y-%m-%dT%H:%M:%SZ')" build .PHONY: ddns-go_install ddns-go_install: @mkdir -p $(STAGING_INSTALL_PREFIX)/bin - @install -m 755 $(WORK_DIR)/$(PKG_DIR)/ddns-go $(STAGING_INSTALL_PREFIX)/bin/ \ No newline at end of file + @install -m 755 $(WORK_DIR)/$(PKG_DIR)/ddns-go $(STAGING_INSTALL_PREFIX)/bin/ diff --git a/cross/ddns-go/PLIST b/cross/ddns-go/PLIST index 4d22f8f1091..df736e8b5bd 100644 --- a/cross/ddns-go/PLIST +++ b/cross/ddns-go/PLIST @@ -1 +1 @@ -bin:bin/ddns-go \ No newline at end of file +bin:bin/ddns-go diff --git a/spk/ddns-go/Makefile b/spk/ddns-go/Makefile index a51ba0a475d..16d307362ce 100644 --- a/spk/ddns-go/Makefile +++ b/spk/ddns-go/Makefile @@ -24,4 +24,4 @@ SERVICE_USER = auto SERVICE_PORT = 9876 ADMIN_PORT = $(SERVICE_PORT) -include ../../mk/spksrc.spk.mk \ No newline at end of file +include ../../mk/spksrc.spk.mk diff --git a/spk/ddns-go/src/service-setup.sh b/spk/ddns-go/src/service-setup.sh index 328d843a132..55afcd05217 100644 --- a/spk/ddns-go/src/service-setup.sh +++ b/spk/ddns-go/src/service-setup.sh @@ -3,4 +3,4 @@ CONFIG_FILE="${SYNOPKG_PKGVAR}/config.yaml" SERVICE_COMMAND="${DDNS_GO} -c ${CONFIG_FILE}" SVC_BACKGROUND=yes -SVC_WRITE_PID=yes \ No newline at end of file +SVC_WRITE_PID=yes From c9c667e73bfbc3ce76bd4e7c8a95be23d8050d81 Mon Sep 17 00:00:00 2001 From: gao Date: Wed, 30 Jul 2025 04:33:42 -0400 Subject: [PATCH 04/14] use the -cacheTimes parameter --- spk/ddns-go/src/service-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spk/ddns-go/src/service-setup.sh b/spk/ddns-go/src/service-setup.sh index 55afcd05217..86a49cfe8a6 100644 --- a/spk/ddns-go/src/service-setup.sh +++ b/spk/ddns-go/src/service-setup.sh @@ -1,4 +1,4 @@ -DDNS_GO="${SYNOPKG_PKGDEST}/bin/ddns-go -l :9876" +DDNS_GO="${SYNOPKG_PKGDEST}/bin/ddns-go -l :9876 -f 60 -cacheTimes 1800" CONFIG_FILE="${SYNOPKG_PKGVAR}/config.yaml" SERVICE_COMMAND="${DDNS_GO} -c ${CONFIG_FILE}" From d5bc73a9fb7ed68ecd428dbf94d0c02db44486a0 Mon Sep 17 00:00:00 2001 From: gao Date: Wed, 30 Jul 2025 04:51:16 -0400 Subject: [PATCH 05/14] modify -cacheTimes --- spk/ddns-go/src/service-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spk/ddns-go/src/service-setup.sh b/spk/ddns-go/src/service-setup.sh index 86a49cfe8a6..0c7a783b937 100644 --- a/spk/ddns-go/src/service-setup.sh +++ b/spk/ddns-go/src/service-setup.sh @@ -1,4 +1,4 @@ -DDNS_GO="${SYNOPKG_PKGDEST}/bin/ddns-go -l :9876 -f 60 -cacheTimes 1800" +DDNS_GO="${SYNOPKG_PKGDEST}/bin/ddns-go -l :9876 -f 60 -cacheTimes 180" CONFIG_FILE="${SYNOPKG_PKGVAR}/config.yaml" SERVICE_COMMAND="${DDNS_GO} -c ${CONFIG_FILE}" From 428489573569649e6fa10d5ff7a341746d461e26 Mon Sep 17 00:00:00 2001 From: gao Date: Wed, 30 Jul 2025 22:22:07 -0400 Subject: [PATCH 06/14] use the ${SERVICE_PORT} variable --- spk/ddns-go/src/service-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spk/ddns-go/src/service-setup.sh b/spk/ddns-go/src/service-setup.sh index 0c7a783b937..0519ea412b9 100644 --- a/spk/ddns-go/src/service-setup.sh +++ b/spk/ddns-go/src/service-setup.sh @@ -1,4 +1,4 @@ -DDNS_GO="${SYNOPKG_PKGDEST}/bin/ddns-go -l :9876 -f 60 -cacheTimes 180" +DDNS_GO="${SYNOPKG_PKGDEST}/bin/ddns-go -l :${SERVICE_PORT} -f 60 -cacheTimes 180" CONFIG_FILE="${SYNOPKG_PKGVAR}/config.yaml" SERVICE_COMMAND="${DDNS_GO} -c ${CONFIG_FILE}" From 259d343438281142a7bd2ecfe6e7d1952fc65760 Mon Sep 17 00:00:00 2001 From: gao Date: Thu, 31 Jul 2025 22:27:07 -0400 Subject: [PATCH 07/14] update to 6.12.1 --- cross/ddns-go/Makefile | 2 +- cross/ddns-go/digests | 6 +++--- spk/ddns-go/Makefile | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cross/ddns-go/Makefile b/cross/ddns-go/Makefile index 6765ed91dd2..66f1c9ea5b0 100644 --- a/cross/ddns-go/Makefile +++ b/cross/ddns-go/Makefile @@ -1,5 +1,5 @@ PKG_NAME = ddns-go -PKG_VERS = 6.12.0 +PKG_VERS = 6.12.1 WEB_VERSION = $(PKG_VERS) PKG_EXT = tar.gz PKG_DIST_NAME = v$(PKG_VERS).$(PKG_EXT) diff --git a/cross/ddns-go/digests b/cross/ddns-go/digests index f83ee2935e1..4febdb22d46 100644 --- a/cross/ddns-go/digests +++ b/cross/ddns-go/digests @@ -1,3 +1,3 @@ -ddns-go-6.12.0.tar.gz SHA1 97d0115e88312f5e12f5658adee2b4d1c6a3cb3d -ddns-go-6.12.0.tar.gz SHA256 59f5a705f08f539c011e12c01b4e82791130bfb4ccfb332f2b6545945fa70e38 -ddns-go-6.12.0.tar.gz MD5 5571704118f4fe49e206a8fda48363d5 +ddns-go-6.12.1.tar.gz SHA1 112dec0691c3a1ed4dd025b6c96ff2a7158de689 +ddns-go-6.12.1.tar.gz SHA256 8e6cf10808f5e89f6527f42f37e55c275f4ae17738f6836c8e9cb5e4318fff43 +ddns-go-6.12.1.tar.gz MD5 b2062a3b02e9866ea0feef5ce1081123 diff --git a/spk/ddns-go/Makefile b/spk/ddns-go/Makefile index 16d307362ce..94295eba06e 100644 --- a/spk/ddns-go/Makefile +++ b/spk/ddns-go/Makefile @@ -1,5 +1,5 @@ SPK_NAME = ddns-go -SPK_VERS = 6.12.0 +SPK_VERS = 6.12.1 SPK_REV = 1 SPK_ICON = src/ddns-go.png From 087b102e314a896fbc59c64f2548f06d5cfcf989 Mon Sep 17 00:00:00 2001 From: gao Date: Wed, 6 Aug 2025 04:05:38 -0400 Subject: [PATCH 08/14] add install_uifile --- spk/ddns-go/Makefile | 9 +++++ spk/ddns-go/src/environment-variables | 8 ++++ spk/ddns-go/src/service-setup.sh | 38 ++++++++++++++++++- .../src/wizard_templates/install_uifile | 34 +++++++++++++++++ .../src/wizard_templates/install_uifile.yml | 10 +++++ .../wizard_templates/install_uifile_chs.yml | 10 +++++ 6 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 spk/ddns-go/src/environment-variables create mode 100644 spk/ddns-go/src/wizard_templates/install_uifile create mode 100644 spk/ddns-go/src/wizard_templates/install_uifile.yml create mode 100644 spk/ddns-go/src/wizard_templates/install_uifile_chs.yml diff --git a/spk/ddns-go/Makefile b/spk/ddns-go/Makefile index 94295eba06e..54d822a3705 100644 --- a/spk/ddns-go/Makefile +++ b/spk/ddns-go/Makefile @@ -24,4 +24,13 @@ SERVICE_USER = auto SERVICE_PORT = 9876 ADMIN_PORT = $(SERVICE_PORT) +WIZARDS_TEMPLATES_DIR = src/wizard_templates + +POST_STRIP_TARGET = ddns_go_extra_install + include ../../mk/spksrc.spk.mk + +.PHONY: ddns_go_extra_install +ddns_go_extra_install: + @install -d -m 755 $(STAGING_DIR)/var + @install -m 644 src/environment-variables $(STAGING_DIR)/var/ \ No newline at end of file diff --git a/spk/ddns-go/src/environment-variables b/spk/ddns-go/src/environment-variables new file mode 100644 index 00000000000..ab45cf807d9 --- /dev/null +++ b/spk/ddns-go/src/environment-variables @@ -0,0 +1,8 @@ +# Define environment variables for ddns-go parameters configuration +# +# If you want to change the startup parameters after installation, +# you can modify the following variables +# +# example: +#DDNS_GO_FREQUENCY=300 +#DDNS_GO_CACHETIMES=5 \ No newline at end of file diff --git a/spk/ddns-go/src/service-setup.sh b/spk/ddns-go/src/service-setup.sh index 0519ea412b9..57ac025c8b7 100644 --- a/spk/ddns-go/src/service-setup.sh +++ b/spk/ddns-go/src/service-setup.sh @@ -1,6 +1,40 @@ -DDNS_GO="${SYNOPKG_PKGDEST}/bin/ddns-go -l :${SERVICE_PORT} -f 60 -cacheTimes 180" +DDNS_GO="${SYNOPKG_PKGDEST}/bin/ddns-go -l :${SERVICE_PORT}" CONFIG_FILE="${SYNOPKG_PKGVAR}/config.yaml" -SERVICE_COMMAND="${DDNS_GO} -c ${CONFIG_FILE}" SVC_BACKGROUND=yes SVC_WRITE_PID=yes + +# The following content refers to the service-setup.sh file in the minio package. +INST_ETC="/var/packages/${SYNOPKG_PKGNAME}/etc" +INST_VARIABLES="${INST_ETC}/installer-variables" +ENV_VARIABLES="${SYNOPKG_PKGVAR}/environment-variables" + +service_postinst () +{ + echo DDNS_GO_FREQUENCY="${wizard_frequency}" >> ${INST_VARIABLES} + echo DDNS_GO_CACHETIMES="${wizard_cachetimes}" >> ${INST_VARIABLES} +} + +export_variables_from_file () +{ + if [ -n "$1" -a -r "$1" ]; then + while read -r _line; do + if [ "$(echo ${_line} | grep -v ^[/s]*#)" != "" ]; then + _key="$(echo ${_line} | cut --fields=1 --delimiter==)" + _value="$(echo ${_line} | cut --fields=2- --delimiter==)" + export "${_key}=${_value}" + fi + done < "$1" + fi +} + +service_prestart () +{ + # Reload wizard variables stored by postinst + export_variables_from_file "${INST_VARIABLES}" + + # Load custom variables + export_variables_from_file "${ENV_VARIABLES}" + + SERVICE_COMMAND="${DDNS_GO} -c ${CONFIG_FILE} -f ${DDNS_GO_FREQUENCY} -cacheTimes ${DDNS_GO_CACHETIMES}" +} \ No newline at end of file diff --git a/spk/ddns-go/src/wizard_templates/install_uifile b/spk/ddns-go/src/wizard_templates/install_uifile new file mode 100644 index 00000000000..ca09ec6896e --- /dev/null +++ b/spk/ddns-go/src/wizard_templates/install_uifile @@ -0,0 +1,34 @@ +[{ + "step_title": "{{{CONFIGURATION_TITLE}}}", + "items": [{ + "type": "textfield", + "desc": "{{{FREQUENCY_DESCRIPTION}}}", + "subitems": [{ + "key": "wizard_frequency", + "defaultValue": "300", + "desc": "{{{FREQUENCY_LABEL}}}", + "validator": { + "allowBlank": false + } + } + ] + },{ + "type": "textfield", + "desc": "{{{CACHETIMES_DESCRIPTION}}}", + "subitems": [{ + "key": "wizard_cachetimes", + "defaultValue": "5", + "desc": "{{{CACHETIMES_LABEL}}}", + "validator": { + "allowBlank": false + } + } + ] + },{ + "desc": "" + },{ + "desc": "{{{INSTALLATION_NOTES_TITLE}}}{{{INSTALLATION_NOTES_TEXT1}}}{{{INSTALLATION_NOTES_TEXT2}}}" + } + ] + } +] \ No newline at end of file diff --git a/spk/ddns-go/src/wizard_templates/install_uifile.yml b/spk/ddns-go/src/wizard_templates/install_uifile.yml new file mode 100644 index 00000000000..876ce88758b --- /dev/null +++ b/spk/ddns-go/src/wizard_templates/install_uifile.yml @@ -0,0 +1,10 @@ +CONFIGURATION_TITLE: "Parameters Configuration" +FREQUENCY_DESCRIPTION: "Frequency of obtaining and checking whether the IP address has changed. (Unit: seconds)" +FREQUENCY_LABEL: "Frequency" + +CACHETIMES_DESCRIPTION: "Cache times define the number of times to skip comparison with DNS service providers when the IP address remains unchanged." +CACHETIMES_LABEL: "Cache times" + +INSTALLATION_NOTES_TITLE: "Notes
" +INSTALLATION_NOTES_TEXT1: "Although using the cachetimes parameter can avoid traffic restrictions imposed by DNS service providers, if you obtain IP addresses via API, you need to be aware of traffic restrictions on the API end.
" +INSTALLATION_NOTES_TEXT2: "If you want to change the startup parameters after installation, you can modify the parameters in the file /var/packages/ddns-go/var/environment-variables." diff --git a/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml b/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml new file mode 100644 index 00000000000..73b5753c582 --- /dev/null +++ b/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml @@ -0,0 +1,10 @@ +CONFIGURATION_TITLE: "参数配置" +FREQUENCY_DESCRIPTION: "获取并检查IP地址是否发生变化的频率。(单位:秒)" +FREQUENCY_LABEL: "频率" + +CACHETIMES_DESCRIPTION: "缓存次数(cachetimes)定义了当IP地址未改变时,跳过与DNS服务提供商比较的次数。" +CACHETIMES_LABEL: "缓存次数" + +INSTALLATION_NOTES_TITLE: "注意事项
" +INSTALLATION_NOTES_TEXT1: "尽管使用 cachetimes 参数可以避免DNS服务提供商施加的流量限制,但如果您通过接口获取IP地址,则需注意接口的流量限制。
" +INSTALLATION_NOTES_TEXT2: "如果想在安装完成后更改启动参数,可以在/var/packages/ddns-go/var/environment-variables这个文件修改参数。" \ No newline at end of file From 4bc8bf4f03821bc581fcaaf75d15b37291d0d97a Mon Sep 17 00:00:00 2001 From: gao Date: Wed, 6 Aug 2025 04:11:04 -0400 Subject: [PATCH 09/14] add line break --- spk/ddns-go/Makefile | 2 +- spk/ddns-go/src/environment-variables | 2 +- spk/ddns-go/src/service-setup.sh | 2 +- spk/ddns-go/src/wizard_templates/install_uifile | 2 +- spk/ddns-go/src/wizard_templates/install_uifile_chs.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spk/ddns-go/Makefile b/spk/ddns-go/Makefile index 54d822a3705..cd5e1785972 100644 --- a/spk/ddns-go/Makefile +++ b/spk/ddns-go/Makefile @@ -33,4 +33,4 @@ include ../../mk/spksrc.spk.mk .PHONY: ddns_go_extra_install ddns_go_extra_install: @install -d -m 755 $(STAGING_DIR)/var - @install -m 644 src/environment-variables $(STAGING_DIR)/var/ \ No newline at end of file + @install -m 644 src/environment-variables $(STAGING_DIR)/var/ diff --git a/spk/ddns-go/src/environment-variables b/spk/ddns-go/src/environment-variables index ab45cf807d9..dc54a452665 100644 --- a/spk/ddns-go/src/environment-variables +++ b/spk/ddns-go/src/environment-variables @@ -5,4 +5,4 @@ # # example: #DDNS_GO_FREQUENCY=300 -#DDNS_GO_CACHETIMES=5 \ No newline at end of file +#DDNS_GO_CACHETIMES=5 diff --git a/spk/ddns-go/src/service-setup.sh b/spk/ddns-go/src/service-setup.sh index 57ac025c8b7..a5cf3a2c187 100644 --- a/spk/ddns-go/src/service-setup.sh +++ b/spk/ddns-go/src/service-setup.sh @@ -37,4 +37,4 @@ service_prestart () export_variables_from_file "${ENV_VARIABLES}" SERVICE_COMMAND="${DDNS_GO} -c ${CONFIG_FILE} -f ${DDNS_GO_FREQUENCY} -cacheTimes ${DDNS_GO_CACHETIMES}" -} \ No newline at end of file +} diff --git a/spk/ddns-go/src/wizard_templates/install_uifile b/spk/ddns-go/src/wizard_templates/install_uifile index ca09ec6896e..be045746fce 100644 --- a/spk/ddns-go/src/wizard_templates/install_uifile +++ b/spk/ddns-go/src/wizard_templates/install_uifile @@ -31,4 +31,4 @@ } ] } -] \ No newline at end of file +] diff --git a/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml b/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml index 73b5753c582..5394bd57e97 100644 --- a/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml +++ b/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml @@ -7,4 +7,4 @@ CACHETIMES_LABEL: "缓存次数" INSTALLATION_NOTES_TITLE: "注意事项
" INSTALLATION_NOTES_TEXT1: "尽管使用 cachetimes 参数可以避免DNS服务提供商施加的流量限制,但如果您通过接口获取IP地址,则需注意接口的流量限制。
" -INSTALLATION_NOTES_TEXT2: "如果想在安装完成后更改启动参数,可以在/var/packages/ddns-go/var/environment-variables这个文件修改参数。" \ No newline at end of file +INSTALLATION_NOTES_TEXT2: "如果想在安装完成后更改启动参数,可以在/var/packages/ddns-go/var/environment-variables这个文件修改参数。" From 4dbcb6d71e853630a69874b5a570369550de4316 Mon Sep 17 00:00:00 2001 From: gao Date: Wed, 6 Aug 2025 04:15:12 -0400 Subject: [PATCH 10/14] improve install_uifile --- spk/ddns-go/src/wizard_templates/install_uifile.yml | 2 +- spk/ddns-go/src/wizard_templates/install_uifile_chs.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spk/ddns-go/src/wizard_templates/install_uifile.yml b/spk/ddns-go/src/wizard_templates/install_uifile.yml index 876ce88758b..82aad02990c 100644 --- a/spk/ddns-go/src/wizard_templates/install_uifile.yml +++ b/spk/ddns-go/src/wizard_templates/install_uifile.yml @@ -7,4 +7,4 @@ CACHETIMES_LABEL: "Cache times" INSTALLATION_NOTES_TITLE: "Notes
" INSTALLATION_NOTES_TEXT1: "Although using the cachetimes parameter can avoid traffic restrictions imposed by DNS service providers, if you obtain IP addresses via API, you need to be aware of traffic restrictions on the API end.
" -INSTALLATION_NOTES_TEXT2: "If you want to change the startup parameters after installation, you can modify the parameters in the file /var/packages/ddns-go/var/environment-variables." +INSTALLATION_NOTES_TEXT2: "If you want to change the startup parameters after installation, you can modify the parameters in the file /var/packages/ddns-go/var/environment-variables." diff --git a/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml b/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml index 5394bd57e97..4f0681dbf18 100644 --- a/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml +++ b/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml @@ -7,4 +7,4 @@ CACHETIMES_LABEL: "缓存次数" INSTALLATION_NOTES_TITLE: "注意事项
" INSTALLATION_NOTES_TEXT1: "尽管使用 cachetimes 参数可以避免DNS服务提供商施加的流量限制,但如果您通过接口获取IP地址,则需注意接口的流量限制。
" -INSTALLATION_NOTES_TEXT2: "如果想在安装完成后更改启动参数,可以在/var/packages/ddns-go/var/environment-variables这个文件修改参数。" +INSTALLATION_NOTES_TEXT2: "如果想在安装完成后更改启动参数,可以在 /var/packages/ddns-go/var/environment-variables 这个文件修改参数。" From 4e39858d19a9172f8dffdd405ff1554853455bab Mon Sep 17 00:00:00 2001 From: gao Date: Wed, 6 Aug 2025 04:27:42 -0400 Subject: [PATCH 11/14] improve install_uifile_chs --- spk/ddns-go/src/wizard_templates/install_uifile_chs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml b/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml index 4f0681dbf18..48b4d2a378c 100644 --- a/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml +++ b/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml @@ -7,4 +7,4 @@ CACHETIMES_LABEL: "缓存次数" INSTALLATION_NOTES_TITLE: "注意事项
" INSTALLATION_NOTES_TEXT1: "尽管使用 cachetimes 参数可以避免DNS服务提供商施加的流量限制,但如果您通过接口获取IP地址,则需注意接口的流量限制。
" -INSTALLATION_NOTES_TEXT2: "如果想在安装完成后更改启动参数,可以在 /var/packages/ddns-go/var/environment-variables 这个文件修改参数。" +INSTALLATION_NOTES_TEXT2: "如果想在安装完成后更改启动参数,可以在 /var/packages/ddns-go/var/environment-variables 这个文件修改。" From 73f7c5c2eceafd583c2db00464553787e03521f1 Mon Sep 17 00:00:00 2001 From: gao Date: Fri, 8 Aug 2025 03:04:11 -0400 Subject: [PATCH 12/14] update to 6.12.2 fix various issues when upgrading software and reinstalling while retaining data improve install_uifile --- cross/ddns-go/Makefile | 2 +- cross/ddns-go/digests | 6 +++--- spk/ddns-go/Makefile | 2 +- spk/ddns-go/src/service-setup.sh | 6 ++++-- spk/ddns-go/src/wizard_templates/install_uifile | 12 ++++++++++-- spk/ddns-go/src/wizard_templates/install_uifile.yml | 2 ++ .../src/wizard_templates/install_uifile_chs.yml | 2 ++ 7 files changed, 23 insertions(+), 9 deletions(-) diff --git a/cross/ddns-go/Makefile b/cross/ddns-go/Makefile index 66f1c9ea5b0..5546125be68 100644 --- a/cross/ddns-go/Makefile +++ b/cross/ddns-go/Makefile @@ -1,5 +1,5 @@ PKG_NAME = ddns-go -PKG_VERS = 6.12.1 +PKG_VERS = 6.12.2 WEB_VERSION = $(PKG_VERS) PKG_EXT = tar.gz PKG_DIST_NAME = v$(PKG_VERS).$(PKG_EXT) diff --git a/cross/ddns-go/digests b/cross/ddns-go/digests index 4febdb22d46..162c6eda60f 100644 --- a/cross/ddns-go/digests +++ b/cross/ddns-go/digests @@ -1,3 +1,3 @@ -ddns-go-6.12.1.tar.gz SHA1 112dec0691c3a1ed4dd025b6c96ff2a7158de689 -ddns-go-6.12.1.tar.gz SHA256 8e6cf10808f5e89f6527f42f37e55c275f4ae17738f6836c8e9cb5e4318fff43 -ddns-go-6.12.1.tar.gz MD5 b2062a3b02e9866ea0feef5ce1081123 +ddns-go-6.12.2.tar.gz SHA1 1922b40d45be34698b46286d5788224a486bfb30 +ddns-go-6.12.2.tar.gz SHA256 a3ea99ad74212fc3bd1380e5ad444a1c5fe6bb1bb656624a441551034a17edaa +ddns-go-6.12.2.tar.gz MD5 30b5f1b1ff083d89138ee4b84acf2392 diff --git a/spk/ddns-go/Makefile b/spk/ddns-go/Makefile index cd5e1785972..83525ff5cfd 100644 --- a/spk/ddns-go/Makefile +++ b/spk/ddns-go/Makefile @@ -1,5 +1,5 @@ SPK_NAME = ddns-go -SPK_VERS = 6.12.1 +SPK_VERS = 6.12.2 SPK_REV = 1 SPK_ICON = src/ddns-go.png diff --git a/spk/ddns-go/src/service-setup.sh b/spk/ddns-go/src/service-setup.sh index a5cf3a2c187..9eb7003c080 100644 --- a/spk/ddns-go/src/service-setup.sh +++ b/spk/ddns-go/src/service-setup.sh @@ -11,8 +11,10 @@ ENV_VARIABLES="${SYNOPKG_PKGVAR}/environment-variables" service_postinst () { - echo DDNS_GO_FREQUENCY="${wizard_frequency}" >> ${INST_VARIABLES} - echo DDNS_GO_CACHETIMES="${wizard_cachetimes}" >> ${INST_VARIABLES} + if [ -n "${wizard_frequency}" ] && [ -n "${wizard_cachetimes}" ]; then + echo "DDNS_GO_FREQUENCY=${wizard_frequency}" > ${INST_VARIABLES} + echo "DDNS_GO_CACHETIMES=${wizard_cachetimes}" >> ${INST_VARIABLES} + fi } export_variables_from_file () diff --git a/spk/ddns-go/src/wizard_templates/install_uifile b/spk/ddns-go/src/wizard_templates/install_uifile index be045746fce..626319133b5 100644 --- a/spk/ddns-go/src/wizard_templates/install_uifile +++ b/spk/ddns-go/src/wizard_templates/install_uifile @@ -8,7 +8,11 @@ "defaultValue": "300", "desc": "{{{FREQUENCY_LABEL}}}", "validator": { - "allowBlank": false + "allowBlank": false, + "regex":{ + "expr": "/^\\d+$/", + "errorText": "{{{FREQUENCY_ERRORTEXT}}}" + } } } ] @@ -20,7 +24,11 @@ "defaultValue": "5", "desc": "{{{CACHETIMES_LABEL}}}", "validator": { - "allowBlank": false + "allowBlank": false, + "regex":{ + "expr": "/^\\d+$/", + "errorText": "{{{CACHETIMES_ERRORTEXT}}}" + } } } ] diff --git a/spk/ddns-go/src/wizard_templates/install_uifile.yml b/spk/ddns-go/src/wizard_templates/install_uifile.yml index 82aad02990c..b91a8fb317f 100644 --- a/spk/ddns-go/src/wizard_templates/install_uifile.yml +++ b/spk/ddns-go/src/wizard_templates/install_uifile.yml @@ -1,9 +1,11 @@ CONFIGURATION_TITLE: "Parameters Configuration" FREQUENCY_DESCRIPTION: "Frequency of obtaining and checking whether the IP address has changed. (Unit: seconds)" FREQUENCY_LABEL: "Frequency" +FREQUENCY_ERRORTEXT: "Only numbers can be entered." CACHETIMES_DESCRIPTION: "Cache times define the number of times to skip comparison with DNS service providers when the IP address remains unchanged." CACHETIMES_LABEL: "Cache times" +CACHETIMES_ERRORTEXT: "Only numbers can be entered." INSTALLATION_NOTES_TITLE: "Notes
" INSTALLATION_NOTES_TEXT1: "Although using the cachetimes parameter can avoid traffic restrictions imposed by DNS service providers, if you obtain IP addresses via API, you need to be aware of traffic restrictions on the API end.
" diff --git a/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml b/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml index 48b4d2a378c..31b96736d89 100644 --- a/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml +++ b/spk/ddns-go/src/wizard_templates/install_uifile_chs.yml @@ -1,9 +1,11 @@ CONFIGURATION_TITLE: "参数配置" FREQUENCY_DESCRIPTION: "获取并检查IP地址是否发生变化的频率。(单位:秒)" FREQUENCY_LABEL: "频率" +FREQUENCY_ERRORTEXT: "仅可输入数字" CACHETIMES_DESCRIPTION: "缓存次数(cachetimes)定义了当IP地址未改变时,跳过与DNS服务提供商比较的次数。" CACHETIMES_LABEL: "缓存次数" +CACHETIMES_ERRORTEXT: "仅可输入数字" INSTALLATION_NOTES_TITLE: "注意事项
" INSTALLATION_NOTES_TEXT1: "尽管使用 cachetimes 参数可以避免DNS服务提供商施加的流量限制,但如果您通过接口获取IP地址,则需注意接口的流量限制。
" From d8a2df8dced02bdd6b36097c954ff1ce578d40c0 Mon Sep 17 00:00:00 2001 From: gao Date: Wed, 20 Aug 2025 22:42:16 -0400 Subject: [PATCH 13/14] update to 6.12.3 --- cross/ddns-go/Makefile | 2 +- cross/ddns-go/digests | 6 +++--- spk/ddns-go/Makefile | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cross/ddns-go/Makefile b/cross/ddns-go/Makefile index 5546125be68..a997728bcfe 100644 --- a/cross/ddns-go/Makefile +++ b/cross/ddns-go/Makefile @@ -1,5 +1,5 @@ PKG_NAME = ddns-go -PKG_VERS = 6.12.2 +PKG_VERS = 6.12.3 WEB_VERSION = $(PKG_VERS) PKG_EXT = tar.gz PKG_DIST_NAME = v$(PKG_VERS).$(PKG_EXT) diff --git a/cross/ddns-go/digests b/cross/ddns-go/digests index 162c6eda60f..68791066459 100644 --- a/cross/ddns-go/digests +++ b/cross/ddns-go/digests @@ -1,3 +1,3 @@ -ddns-go-6.12.2.tar.gz SHA1 1922b40d45be34698b46286d5788224a486bfb30 -ddns-go-6.12.2.tar.gz SHA256 a3ea99ad74212fc3bd1380e5ad444a1c5fe6bb1bb656624a441551034a17edaa -ddns-go-6.12.2.tar.gz MD5 30b5f1b1ff083d89138ee4b84acf2392 +ddns-go-6.12.3.tar.gz SHA1 175f54d6bec9bbbbf7181a1db6b525bf00818187 +ddns-go-6.12.3.tar.gz SHA256 602944388b645048477e78e55a62d419f0bc83a8d0cc4c372a6b23fa472646fb +ddns-go-6.12.3.tar.gz MD5 b4451b6a2e6e936291f019b139b76acd diff --git a/spk/ddns-go/Makefile b/spk/ddns-go/Makefile index 83525ff5cfd..5c1b05eb52f 100644 --- a/spk/ddns-go/Makefile +++ b/spk/ddns-go/Makefile @@ -1,5 +1,5 @@ SPK_NAME = ddns-go -SPK_VERS = 6.12.2 +SPK_VERS = 6.12.3 SPK_REV = 1 SPK_ICON = src/ddns-go.png From 3abd15793ba5019ec51c8b6a2976c0c63e3e8022 Mon Sep 17 00:00:00 2001 From: gao Date: Thu, 21 Aug 2025 02:21:27 -0400 Subject: [PATCH 14/14] update to 6.12.4 --- cross/ddns-go/Makefile | 2 +- cross/ddns-go/digests | 6 +++--- spk/ddns-go/Makefile | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cross/ddns-go/Makefile b/cross/ddns-go/Makefile index a997728bcfe..980606efa79 100644 --- a/cross/ddns-go/Makefile +++ b/cross/ddns-go/Makefile @@ -1,5 +1,5 @@ PKG_NAME = ddns-go -PKG_VERS = 6.12.3 +PKG_VERS = 6.12.4 WEB_VERSION = $(PKG_VERS) PKG_EXT = tar.gz PKG_DIST_NAME = v$(PKG_VERS).$(PKG_EXT) diff --git a/cross/ddns-go/digests b/cross/ddns-go/digests index 68791066459..5abf759ef21 100644 --- a/cross/ddns-go/digests +++ b/cross/ddns-go/digests @@ -1,3 +1,3 @@ -ddns-go-6.12.3.tar.gz SHA1 175f54d6bec9bbbbf7181a1db6b525bf00818187 -ddns-go-6.12.3.tar.gz SHA256 602944388b645048477e78e55a62d419f0bc83a8d0cc4c372a6b23fa472646fb -ddns-go-6.12.3.tar.gz MD5 b4451b6a2e6e936291f019b139b76acd +ddns-go-6.12.4.tar.gz SHA1 4731a73e3736b6fb43d5291ef2b147a69f9d1924 +ddns-go-6.12.4.tar.gz SHA256 04f65f7f1ccc18b23dd108f915810146e8b655cd19e7d8ee488cf557222c3fee +ddns-go-6.12.4.tar.gz MD5 35b1b7404ea1d802e63e475757fa50a6 diff --git a/spk/ddns-go/Makefile b/spk/ddns-go/Makefile index 5c1b05eb52f..b509346862d 100644 --- a/spk/ddns-go/Makefile +++ b/spk/ddns-go/Makefile @@ -1,5 +1,5 @@ SPK_NAME = ddns-go -SPK_VERS = 6.12.3 +SPK_VERS = 6.12.4 SPK_REV = 1 SPK_ICON = src/ddns-go.png