From 69d9f906cda28da35e824b71bed99e2e17313e3d Mon Sep 17 00:00:00 2001 From: mno <718135749@qq.com> Date: Fri, 13 Mar 2026 16:47:53 +0800 Subject: [PATCH] =?UTF-8?q?js=EF=BC=9A=E8=81=94=E6=9C=BA=E5=9B=A2=E8=B4=AD?= =?UTF-8?q?=20(#2985)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * js:联机狗粮团购 增加额外的检测点 * js:联机团购增加保留拾取图片 * 修复autoenter以适配更新后的ui --------- Co-authored-by: 起个名字好难的喵 <25520958+MisakaAldrich@users.noreply.github.com> --- .../assets/targetItems/保留/禽肉.png | Bin 0 -> 1277 bytes repo/js/ArtifactsGroupPurchasing/main.js | 18 +- .../js/ArtifactsGroupPurchasing/manifest.json | 8 +- repo/js/AutoEnter/README.md | 4 +- repo/js/AutoEnter/assets/MainUI.png | Bin 0 -> 2968 bytes .../AutoEnter/assets/RecognitionObject/0P.png | Bin 0 -> 2167 bytes .../AutoEnter/assets/RecognitionObject/1P.png | Bin 1204 -> 1942 bytes .../AutoEnter/assets/RecognitionObject/2P.png | Bin 888 -> 2600 bytes .../AutoEnter/assets/RecognitionObject/3P.png | Bin 971 -> 2148 bytes .../AutoEnter/assets/RecognitionObject/4P.png | Bin 1363 -> 2354 bytes .../assets/RecognitionObject/allowEnter.png | Bin 5373 -> 5062 bytes .../assets/RecognitionObject/leaveTeam.png | Bin 0 -> 15838 bytes .../assets/RecognitionObject/yUI.png | Bin 12648 -> 13285 bytes repo/js/AutoEnter/main.js | 672 +++++++++--------- repo/js/AutoEnter/manifest.json | 8 +- repo/js/AutoEnter/targets/火山老师.png | Bin 7694 -> 7866 bytes .../assets/RecognitionObject/paimon_menu.png | Bin 2372 -> 0 bytes .../AutoTranscribePathing/assets/process.json | 4 - repo/js/AutoTranscribePathing/main.js | 160 ----- repo/js/AutoTranscribePathing/manifest.json | 19 - repo/js/AutoTranscribePathing/settings.json | 48 -- 21 files changed, 354 insertions(+), 587 deletions(-) create mode 100644 repo/js/ArtifactsGroupPurchasing/assets/targetItems/保留/禽肉.png create mode 100644 repo/js/AutoEnter/assets/MainUI.png create mode 100644 repo/js/AutoEnter/assets/RecognitionObject/0P.png create mode 100644 repo/js/AutoEnter/assets/RecognitionObject/leaveTeam.png delete mode 100644 repo/js/AutoTranscribePathing/assets/RecognitionObject/paimon_menu.png delete mode 100644 repo/js/AutoTranscribePathing/assets/process.json delete mode 100644 repo/js/AutoTranscribePathing/main.js delete mode 100644 repo/js/AutoTranscribePathing/manifest.json delete mode 100644 repo/js/AutoTranscribePathing/settings.json diff --git a/repo/js/ArtifactsGroupPurchasing/assets/targetItems/保留/禽肉.png b/repo/js/ArtifactsGroupPurchasing/assets/targetItems/保留/禽肉.png new file mode 100644 index 0000000000000000000000000000000000000000..3be94c9ad27ca9bc1cefe868539b08ba37b2ddd3 GIT binary patch literal 1277 zcmV%ki~oTSnwa?D zgNYA@Cm|*VOeqQ)w1B15R-jzUrLf!kWoz5L&&=n;nc1$B%w*1-Z@$a#`+dJd9RR_; zxwPGdwNafwfJp)b5C{YiYmG#DT#~Z2Ka&6?04D1ewWsztICJf%1ObNf0V@K-^{xkt zpDTMJdyg3;tpx#abR6#}1I$3+!flgDSQ}Q7EZTfL$zTxFL;cCb5^TL|8;^FjN^{N( zR2^=-erZ~>G9WO6m>2}W)Kx@5LI5BJ0J1RAn)i1^yk>kJ6?dbXIB{p_uQ(AAWN#-J z08qN$f#e@n0{XR^ntCH5g^4S&r)^V}IW=&Z|`nAu%+vt;c=Zv+j<1+m&abD zCI>Av0Z4$#4@X16ascjD|5m@budK`iQRk0z$8KLu1Aq}r18}r}lQ9BlLjz!%0IN1Z z0&u@kyL>Nxs6te<0}xfc0FXWxZr!%|8UP@Dc7mXVKZZW|qX1;|JwSo0Qjq|!{=A$v z*0RYRUHa3}S(Yswp5YPy(8LvoD+K`1AKn-2>;m9felAFJTQ#wTyacdzF2Cz_%6}=N z?(&VlK|n@7`t53-s0bwxAeq3+rS;udT)i@}t#?;T z!tb8zAIgTSl7l&2aRsK~K6s+moZ*J9K)CO@S?qxca^0($%$K`FMX3v=UM^u+odp0H zIkY#ZkDjH2dqXwBKXdCY00PT`p=kWT@0-8%aI!Yi+!Oq+IAiCjnpXGZ^`;)v{CfY+ z&S0Xjqc|uFET4pD0|-vUbV9nHPP|mzZbsf(1$OLx3q0-D2~7&saz1? z=mcbSbr=BP*bU?Hm~EH6crg}V3is}ttrjH{@_7EeH;E}B#;3D8PXsY$4DY{IrP1l1h_w6+iXM#)0F z;DaSV(3)ShiuZ!t2doZK>dZu;aMAeI7S0%zFV+2iDQjV&IIl2af~x_>bAw#3zn~nncoN%LKb$e0i5PbvA!2(pDGh=VFpr1E|LGo0RjlKz`_)*>zkWy-eQEyebla zlFpOSQ2O%aVKd&{TX&>s-j*v?dLnIaxm%f@P;rnMes0l$@`W=iGY$bD30|35u}{g1MM6`b0X*1PEuKwWL$ywa2!gE*C~c zhI&YPV6HqMVru{u?RoNi_NI;%yB+$S4Vz1E&)=8@z;h2WHx~-0L;6Czy;daWZ_Eno zG+|O|Pwq-%AxC5%godcBbsMYG839nBCO^F>3Uf-Xh7FWY&EzzzKmyVKj!~68Ggy$Y n2?-`5TTfMN5(;J}2oU}QL-6YiY$3h~00000NkvXXu0mjf?}S-@ literal 0 HcmV?d00001 diff --git a/repo/js/ArtifactsGroupPurchasing/main.js b/repo/js/ArtifactsGroupPurchasing/main.js index 526c44573..05d6b40cb 100644 --- a/repo/js/ArtifactsGroupPurchasing/main.js +++ b/repo/js/ArtifactsGroupPurchasing/main.js @@ -667,7 +667,9 @@ async function autoEnter(autoEnterSettings) { log.info(`加载完成共 ${targetsRo.length} 个目标`); // ===== 主循环 ===== - while (new Date() - start < timeout * 60 * 1000) { + const totalTime = timeout * 60 * 1000; + let checkPoints = [false, false, false]; // 使用数组标记检查状态,分别对应30%、50%、70%时间点 + while (new Date() - start < totalTime) { if (enterMode === "进入他人世界") { const playerSign = await getPlayerSign(); await sleep(500); @@ -712,6 +714,20 @@ async function autoEnter(autoEnterSettings) { await genshin.returnMainUi(); } } + + // 检查时间点,触发额外检测 + const elapsed = new Date() - start; + const timePoints = [0.3, 0.5, 0.7]; + for (let i = 0; i < timePoints.length; i++) { + const point = timePoints[i]; + if (!checkPoints[i] && elapsed >= totalTime * point) { + checkPoints[i] = true; + log.info(`达到超时时间的 ${point * 100}%,额外进行一次检测`); + enterCount = maxEnterCount; + break; + } + } + if (enterCount >= maxEnterCount) break; if (await isYUI()) keyPress("VK_ESCAPE"); await sleep(500); await genshin.returnMainUi(); diff --git a/repo/js/ArtifactsGroupPurchasing/manifest.json b/repo/js/ArtifactsGroupPurchasing/manifest.json index 9c0d68638..2cb8b5d87 100644 --- a/repo/js/ArtifactsGroupPurchasing/manifest.json +++ b/repo/js/ArtifactsGroupPurchasing/manifest.json @@ -1,14 +1,18 @@ { "manifest_version": 1, "name": "AAA狗粮联机团购", - "version": "1.13.94", + "version": "1.14.0", "tags": [ "狗粮" ], "description": "配合AAA狗粮批发使用,联机运行多条收尾路线", "saved_files": [ "records/*.txt", - "targets/*.png" + "targets/*.png", + "assets/targetItems/保留/*.png", + "assets/targetItems/保留/*/*.png", + "assets/targetItems/保留/*/*/*.png", + "assets/targetItems/保留/*/*/*/*.png" ], "authors": [ { diff --git a/repo/js/AutoEnter/README.md b/repo/js/AutoEnter/README.md index 6165f980e..bb45d9b5f 100644 --- a/repo/js/AutoEnter/README.md +++ b/repo/js/AutoEnter/README.md @@ -1,4 +1,2 @@ -自动进入联机状态js测试版本,出什么bug都是正常的,加qq718135749去超市作者 - -组队和更多使用说明请加qq群1057307824 +进入特定uid世界或自动批准特定用户进入,填写的名字和放在targets文件夹中的截图都会被视为白名单用户放行,使用前务必将世界权限设置为确认后加入 diff --git a/repo/js/AutoEnter/assets/MainUI.png b/repo/js/AutoEnter/assets/MainUI.png new file mode 100644 index 0000000000000000000000000000000000000000..690f1d079712bdfc22e43405e52d630936287508 GIT binary patch literal 2968 zcmV;J3up9+P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D3oS`RK~z{rt(a|$ zRmXY9e=~E=xo>;-<+97Z5^u1vjcw8-1-ngS@&(p*>RTY60ITEU3jNBSp zJ1ugeG(rX$Y&TWi5+!nxsZ?SNb&L~icVX9Y))r1e+#oQ^!tUO?ckk{!_q@#X!<>8B zT^1ax{Y!tHbMKjX=9y>ad6^MWEjG%LXw7vIIbeXuz|o^8_{KLMrMbBooD`)}iRbt2 z<*qwdG}>zeO4vUCdH5Jd{`ouPayjn3_m5e>emzcWA!+GC7=qi>=nD`<;J6S524S=@ z7=9-uV-1xm?AWn`mws}B*49=6EeL{uaB7l`8#l6L^VcY}NoJ~sbXovVsnq!3)JxoW z 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 O000000001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2nGJ5&BNi7I>GgUTV^B(=l%iU#GB`NM*w`43nUavDZH%D!FDE(iU*cb$0;QQ~sV`*uLAPCS}<2Vj8Gc!z1PBJz& z*1sV@90R6ipmTUgtJPv_Ym28(pQaVlS~D>*!G#MKD3&~Q6dwcM`R;pu`spVe$03em zYPA}#yz&ZX&YVFxHULo&rUCuYdc7V>DJ)wNhYSXkWw-+F~R)&Jk`Ndi34qp0fAoE=kW0G7@%(h0|N;k z?4&wj5MbLjy8G#!?paBY*Pb3D2HA!}oo%*({@@qd1O3xm>1DC?JF&2m-dZx7pv{C*!(g zve^VzYjhk_DwWvW++=@$pCAaZ-n#bI`^Ff~pFhvU!~{}VDQMvLc>MS=TU%RHt5r^& zI>qqtFrMczSgYZcOO(nbYPBH>`8)uvR*T);U0layU?7K(0*paQiIkG9tu3M`Lbls& zGMNmMlaoj(F|h^`Vyv&P({8sJ9vh*fsLPu}@ z)mLBf*=L^-_&uU9OwbJ!i$z|3`DLOgVq;^2!-F<)U$u~edc96In?*{gn3$ME2uU1j zEXyY7g*<%tm|U)qe6u8RY!dN6((U$GS^1r2bDu_IJ!LWiEL)M!7kTNWm+*a`FbtDc z?CU_GP#~YrBacV|AZ4Q02L}fPK|rNa!M1HMVA&D`L{Y@y;UTN5tF&4zZr{F57(_4h zwp4;#E{AQ~?CtHPT_B~zbzKGr2a&dIQ>m0eg0R4{B%Mx&D2k}nYDi0<Gmz7H8 z_(UfPWQ@V{JOC^uu`J2IZ{Ox0AAG>#&p#7{A&%qVx-PEk^8ER8KK$@QKK}S)9zS|Q z6vV_~giqtwa(KZ@uL{UVsSmetuzvTY?`|RxQ((QHu zux%S1$7rq5I%z*41VRW3g#xu&jkn+aI|Bm)tgWr_m%q-Tqd4J^6fFMd9VS#eFoX+yV?;(UhYfTh{ zbh}+t7=}bqL>z0Rln6-Q#TdiX)D)AGlU%-hnY(xI^696avcJEd0v_4y>@4rR^A6>5 znK+J7jzwejIfX(2C*y)P32+o0E7!`(3YIMq3HcbvVR)dH3CS zsaC7ljzg?9*?|GBT)oPT_uj)Rl@JyPDG7TKmSs~eS3!d@0wFAdAmX>*R*^$PL+tGA z(Czfn=q*c<&1Nyi5Cl>1tD})wp);8lG3cQUV==)*9dUab1^8 zCWA2`WYXWQRtv2)a(ZTl-+up{jg5`;orMI?^AJK1$1%385JF%y*p9`;ix(Li8$&6@ z{QNw{Vliz=X@PB9DX{G-j4@y!4mHo7J!52K1X-`w$>nmaudj1>*v0huqU@7dCt7U! zfmN#&CMPGUR4ObiEFi?O5Cpx5Znu|ai%BY=bs|1HJ3EYyjv_M|hu2h78*4DUkS?ci6IQb zwC~?|;|(m8L?nesqRV6*&Ye3)KA&f6YYX4^|K#YT-MMpzPd@ns9YY+)34u<4oBnwi zhHP$bGCn?za{9FgBo=7E2*?!&7#bbHt5i`+rKLM^s5JyZNDzc9FE8`UFTc=eG*Y>w zzwbjb=?*&`qBy2LeU_qEO#J{z-;Xf{y4{E%Fjy93vu-+@Pg>F{Hmj?vG#U+j-{+fe tzIlPw9A(`fIJsP(FB0M?LG5;W{155`5Kgt|P!|9I002ovPDHLkV1n;=1)=}| literal 0 HcmV?d00001 diff --git a/repo/js/AutoEnter/assets/RecognitionObject/1P.png b/repo/js/AutoEnter/assets/RecognitionObject/1P.png index b187e2032540f129a513f10293384549f1f9d636..db72c0b69cb7389b9dccb1c29f23f5840d156661 100644 GIT binary patch delta 1941 zcmV;G2Wt4V36>9#7k?KB1^@s696$eR00001b5ch_0Itp)=>Px#1ZP1_K>z@;j|==^ z1poj532;bRa{vGi!vFvd!vV){sAK>D2P;WLK~zXfeUn*_TvruF*BS1ux>dKTx~jT* za=UFOaT7FoV&@zVEy;+Gb0)9fUe+;I2!lYHsK32f~#f-t1& z+AJ(A(Am91G8|G&E#7-lYY{>a2!jB8Q~{uRc$UeDNmQ$XF@{omm(|r(f-9Hl_qvF( zAc`W?XjC{K41c=>uE50DINdWZQk_1Ep~_CXN3!%8{oQ@Syn`DKC|FNHN-Cu?r7$Gc zo+yxnLZVED%_M#}#zMhyq%9R&2o1omD=ZyM?tDr8Wox&9Q4A(e1R+!$O6iR%M+UTU|k^ zcb{e<b*s3+s-z|MYtjTcjA*c=_~Un)MJRz*svzKck*jA!eP<44A+7X-0}QhzA8efqT=v$oyR5{ zT%*YS)fFOBpp#fs<<#@%qvkk+B<9suzReF_n&sr9(>ys*rBPG_P7n&X-V?m@&IN`+ zgVcIja*GqsoFrBPA)y2O^yjbfo4Iw~`)rM)bxqV9A=XeS6|nUN^A|s0BaIm95E)cP z2!Cr0D!M>>ZJVnXFLL+#JaX7WrWv6CZ9yO?gdqk&WljC9Yrk9lv<@7C-yj92c)Gk_HM3 z80V25q|WWIjd21*D2A z_(FusHrZLf!OiUfSMTqzw$sKc1%MX<3E%`mdK?z*1={m@S-=I3%%)hAVts(r8YK^| zLjyMHV-@HqM7ok@s4Rtc7rDKQO9n`rV~oK%kP@`!3pjC5!UG;^KrM5Oyayo;F;ZI(W}!|VU}m|y+j4X)f+An^h%!DR_r?d&sl zC}u}lhRR`-#Yp?G=L=|W&>m0%BrHq#<(nUIlWCOFWSu2?y)HYOD|EUYT7P>z27>`& zRud*$NZaiZONA94BODHo6aQz%50JQnqzeH8I#Tej%k%vG$|7%Gy3RXuceuE?!L8MG z?yPU3_jieU9U5_nP1?x)$1JNOts!Z1!c4j z!7GX(C}9x~rk)r}?hOJ>o;sw`SPQv-a8`g<9_2gObc?vNLAkw7X|O{jYh%+ktwx!^ z<+L}~kVP|K>&^nba)cWnB{vf1HG?c5_XRQyX#l-`2O%tl-X1kO#DCLA$b(5+2Or$r zr!7mAl9Y0ilICrU>mn$jRE(*O63;w_*;*mrxQ~=JqrbnyX1~YCp{axIImoR*NXgK` z%H}?wT)K$025nMG608{_74-U^rKN4&_~(aobB7xY2&~1J1m`k@&}dbpIyQ+aSJ+;@ zhc+4N(B$O#07sI+RDZ2TH>@H=PG$NiNp*_%uifU)AAQQlbMth2UGl_I2qmgE1+^o* ze)&KA@zPapT)RQm?J?cCPn2}=rbl9Of}ny90^+GD*4NfZwzu%PL7aN}X|JWAQ*2SG zR_Q(ZJpI9da=l5dHbU0jpxbHFPX_F7Y+?tJv6&+Taf?=KjDMBxGQ;5zy}eG7Bs{S* zhs|?R`T#`17_C-|wIF0`Ym=t6$9I(>Z2`|W}YA_mzcOaN0z17{yxSSnuAU7p1x2Niba~$80S6hPD+;Nq^gS6 b0sjS!2DY=`91c)e00000NkvXXu0mjfF>b9* delta 1197 zcmV;e1XBB!53~u87k?B81^@s6nyZb(000DgNklxaZg;oa-JRK)`OM6g-6`3k;6IsU&Uent|D5mKq^`ca;D7J|#J8Uy8F_3NZEI1V zdj(x6#A8`f(IhiD3n9sXMG120RdO8*mtd7_WRHnI;GsDnqmqmx&iw>=9V7{>svc$I zW+vl0(TNoKyoqJW)cU==|5OL>Z0%(4v0io^xya&R1t0F{rmZ1_5Q1{BB#6XQ^bAk1 z>(n5bOrD_(sDE6$1fv6UUd!Yfm-E+1mW*cMRb;~THN3dGiMO6!L%5|5S&~rXLPWE= z!B8~G%bgDq@O#P<+vui=*Sgzz`}r>R{BV)|zYU>^6Nichd2ad97T-WN{t3+DQv*%bZ54YB_b=~r!HZiMl=zrV*jg>xDE~#T>YlCy%Tpwch z_Kg_2fy$K&#Se_SC1jK!m=d4w+(Ji7gA?I`kRYKOT)I9vk9a(pVdqz89rqpxRq*A` zXW7)=?C3%PAMb8{1ex2pktEdC6$C>eM||(Iq8FQ1Yy~`VHa1BUH^ykTFcgqN%$_yb$pmxzDGf%&QSMai9`ZFKRA< zV&tgE#)`3s@-h7d-&-`l8J}@owSS`82?s+5VL3kCroC4*hWzZ>wvOt6 zkIt5QHY{6QY(c}c*n70cMQrFuLLf8^EX(QX`^BPA1s`l%@7%S!DQwa&PW7|@*C7{i zDgk;9yx#vsY9nu$OvKa0_Zi*bdNjr1-$yvu_ct@T=_1ai5z|wkc#!Nu_?Hg48zR%Q zynnv$m}8;q1}V*CESW*GOk~SsQS6$F*q+rlM}csuOA&U~>HaLv|rN@*^I<4_|B)DW5AUWFFmAvPvi5 z);KI%ZM#`$!*WG!uRVL+iGsdt-OuSl+J7zlnJJ_@ZcvtKwT+#P>ae_B1AxE~UdB*SC@xK0VdX$0z!cghhR95YkDoT$QSN5No?prOFz3;(rCi zNPi*Mc9ESwj=W(Da?l3~^hV-{(^ojy7vYzI2shF?waH-=-HzPkj~mnM{q7t`2c|eP zJdS2qRHw$MNes^?wVS%B&DjgmhRZ_O{cG)h6KwL^HkH+kuX%}as|v*|3<7)GAPZ^| zqbwagiKh6u+Od6Zb^5S`VUG!xL?(M#JozWeot;rx4IN!@t%rXAiWBBPU9V^r00000 LNkvXXu0mjfqb*Sn diff --git a/repo/js/AutoEnter/assets/RecognitionObject/2P.png b/repo/js/AutoEnter/assets/RecognitionObject/2P.png index 4f8edeef3f6381c14b5b0c83247d03c266a7ebdc..28978985bf8afd7039dd11f8c1aa2b962bba7b06 100644 GIT binary patch delta 2576 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 diff --git a/repo/js/AutoEnter/assets/RecognitionObject/3P.png b/repo/js/AutoEnter/assets/RecognitionObject/3P.png index 04cf2d4bcd522929b61a0542dacd143c817feffb..47907ac41c9608ae58dc39a7d094eec4532e5502 100644 GIT binary patch delta 2121 zcmV-P2)6gj2jmbTiBL{Q4GJ0x0000DNk~Le0000W0000M2nGNE0HIl)M3Eshe+T(V zL_t(YOI?=RZ(LUu#(!s@v(MaTJY&x|cI?!SoojQmsalcJptPuwdJQQcDz&JpD%2N5 z`UK)BNL1nvK!WfBL28ho4-qK{MbMD6X=#!=b<^COGGa_$!%CZvd;v>&$C z!`e&w*7t2?+um(ae}4flRwJL!f1{4AAf=@1e~zkxbV^v3MXIueR;z_lPf@Sch;n_D zN+m>YolGV}H>eYaA(_ZSN=d6!2SAV70K}S8tgo-rSnkKNES%v_dFiEtD0?1Nqp`6u zx&?z&DuohcDV0i;lA8&FfJ%LVMx%kN*YP|L!>qHq>M@xU3=Iuo>kkk`e-Ww^psFgm zAL6<$X3V9B3V`b`l1L;lttPdaN%>2SiHQl6CtuhY6^ljMePt#mCwcnN_Zc4<$M41| zr1JPQFq#HuFaMQG7ca43ER#qi2+IvpsT2pFf1N#h_7D#Rp68)^A)3^1Qz5?ZW7{6S z@3Xjkk&72EQmL-uI1cy|e;9^=@|~X*BcTcoPXCm{hYzzM90R~{7m-pTf+2{Yt9QA2 z^(x2D{)lR|O37_w+cpn8{B53l{#o`YPZ5vDQ4|#-u!KiQh(ZhnfZqMgyT>_q?i_dA zbCkvgm!LrYxY*KhrjKYjWpA1<86H$66O?<1oXNl2Z((gyzZ_ZeI@U}3e1+20^m zfF~w?h$a_K1i%k`R8=L4A{0eoczC#{hcHCx4St^>2yh&ScDv2_ z^XF+a8UR?X#Xx?5{{DVk*G1HW6|Q{#0q@NHoHO%pa^3njf7RSP>7*nIY!t0PIyXuf z>S$^TCFmd(n<&0Q>45;>Q4vuBk2)SUG6La&6;>eD#f?i=yDf~Cg^Nl`8%1#jC?<>K z^*lmR6s~=Cjgu!&a{TylPMtbMOpoFFJ|iO|Jp0VENGS<|0D!rfI1ZYk=|rkV5G^ATKBKWi96frJn9)Zfk)W8_ z0TEQ0$L+fOdFBs%nYhD_LK#cg#AJdf@Cgxw2n3)3T4Enw$6zQJ;_H+9nMe+zhk#lMCi&XLWOSSoiJ85!o_mKTvyM@E7ugz3p|GPUsl zfFN*aS{j3cgFL?VMWmESdJkA?EYUXG_^yXx7+n8imJdJr zkW>FS!SeDlZmYw}N)0XYN7=i3KTnOmh7f|8f7Rb}=FAyZoeKmpID7RJ4;|V

I0? zaR%8uK81EAM@;q;k9Ua0Bt%;8+~dSwUZvCN(AB}VZB}arLJ0IAKoLIWr7cv~k_dqD z@o{$T+QqJ&yC@V205}fldQZ)!Y4(%_`1rW4OCpiL^E{#`!nW=EjsHuzTxMx$iG_s) zf0mb*@qM3qy^gA?gkgwjnrNDaNSGQaOA?Ww?F8%?e1=WwgB0Q;WVOvqmA=LH?4uxB zIBpq-I$hVmrGl0;@k5Uw@`)3X5CA5E7FDZ^uiMx+N2y%S(|C6a!KGH@LR+4vUpf@L4A&2N@pS$&a6Y zi`O3eEn7!+6H^M9v@vP(_D8?sTI-(_6pcJ_0$szGDoWTzQ*7Eq%-sDPd>6aZf5B>| ziR=Li{fkUYwpqG0L}z^`wrb(&F2Z$P78Vvbefl&Xe>Q{BFz|i(X@BArgtZnsfY^}bUELBRa{Jf}~e#xzY#6T&b=*L4O422fR%#l>FC+qO-q zR6^N*cxO}^EaCUxB%Mx^8%P4_v$KZAg@PAsY z{r!v0V*R4Mqg6Z2Gnk1iNCiMue{>@?(FXj$XL8{*{%Qd%Adq-zm*T}*?B;1i=Zmg3 zlUV?|w!Y56&O;UQ z2n>bFJIJWx(%$$ew&egYI(?p3KYx(-jz7bj$M*8&i4Ve|hBVmQ{u}_J)I-{4DV1f( z5Ez*5Oi9Yjk%gp(D`w^_j} z76Gsy-)jS3)H-pVVFfA}Bs;8Z^Vu4`jPtuj2nh^IUdny&3H zb6|TnrZk8}D~Od=01&8v@tHxsIPn$$>k|=VT{Ma7)qroJ6}XWq>S`KEtZN9309tEi zvuT0=loDLc6fj~P^F2$(A{YT$!D7C^=;RP1Q-j!+LsfY-Qb?qff7DmsO{%(;Q-A-$ z{6Y?+@gcJ(UUDZ<`wmL1IN9YiV^>cyFx^Y<@HZ^x^XzDP7yuyz<)zh3W`>xW8$p&? zF3<0Jmp7jLmc#qMVq5(lv=T_q#`Bi=>DJIc9hCjqE@cPE=H^Jad>b*PjcwXUArV5LRKP-h zp3(FfjvPPC@8e&?szrTyEn?>rcWGzK6v8QzbX!Qc^^}*nh#TurDqudBVKOsJcKI>{ z2Hx-ntU?UY*4Czt${Zza6A0&4AkeqUn<~!6Ss72j^)dkd1wF1s0k`7po&W#<07*qo IM6N<$g37nIsQ>@~ diff --git a/repo/js/AutoEnter/assets/RecognitionObject/4P.png b/repo/js/AutoEnter/assets/RecognitionObject/4P.png index 8880435661d35af27613238b70fa070650f8e755..59473bab64aa93568f0b5ae944e967a34dada01a 100644 GIT binary patch literal 2354 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 Yzdvw-dUNoL;{X5v07*qoM6N<$g4(ZN%>V!Z literal 1363 zcmV-Z1+4msP)3$g6vuz>&6~B;DTQe%Ln|#VDHQ>wT0%5R6cCL|L_>^;K@BEq;HzI;5);D*Vj?kW zV%!sz#NYxF69Tve1Oe#}xvviiX-gnJ=#lqNDj3>FteP{ch^UgW8ZTQo7-8-5 zC)v1WD{4F`h$S6{i=$L*gNE8x9$WDowb2>V#%`Mmb~Z-w;8iFp9O(O`N^aOXJC3}` z*4>Zu?6%w4w*M8sRQUB*S=PP^H96nGRCF?>Ji$PiyRY9sTT=(Fbg>+BTJW|mi?-$B z!e5x&V6GJYu|$PkN8jaqAw41Unoo^2IGoRq;Rr!n!xHYg{xO1q5Wl5+_+zAhl0z@U zU_`{ zFe1GMzbu7=AyzJYf|>C-RjQhhg2gQ>xO?e(pV2#bj9tIH0a8WE$*#S}Z+L%aFvbu3@7>Vi|rlIGQP%vnJ+ z8l|Z|Rb{lU>jjFXoPR$xe3(5a-<}fKn}}R-1k*8)(xqY)DVaHr^zCDB_a~ei>qj}4 zPs_%-)RYeXjdma1&gPvDPH24d;>Gk!Mv-^+yhKlWKT-;cdVw)LgYIU1d5zwH_J2Sx zN3QFT&Yt4b@Q+oRAsMHseg@gTIWrAvEhW-P_6*FI1M{N2fq85r%ps5H$ydGEPY zgg^5L1yP9l{8YPzem;Pn(@>4x*(gJ^X$;NA?r*^Co{KamuehR~Lr4=`1(8Y6wJ61% zceG3iTsDgIXMXj8-BQHoMG`JETLhzh8p2l4jGh#B5Sk(u&9!iL*q$^dMLo~XpFd!v zIE=J4tlkvm1vaHIy-H6v%bXrM&PNBfkkk7RqY0dB+~4zaud~Vh5g>au;OlDMoVgD4 z9|F?+s+|Ouv0JjpxIMM89UEeGSMq%Jk(9hPd($b|%C-RHLp{c_npE!ev75&BU*UKH> zKGvx@Sf^9t3&1lDIz(>hC(u|xRYJJZ^7&pfnaAhh7NdmYE=?Ua=S~LE3m2LK_zP#K VOv46kPDua&002ovPDHLkV1m9rpBw-H diff --git a/repo/js/AutoEnter/assets/RecognitionObject/allowEnter.png b/repo/js/AutoEnter/assets/RecognitionObject/allowEnter.png index 8c6cd7632d348cbe16cb51a55c3d0c58ed2431f7..e3f5a941daac3ae49e62b5406d34177c7bd24e22 100644 GIT binary patch literal 5062 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 QFngnb>zUrh>bS=J50US)IsgCw delta 5371 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 Z{txOCoiLEVe>ngE002ovPDHLkV1fh%bp`+c diff --git a/repo/js/AutoEnter/assets/RecognitionObject/leaveTeam.png b/repo/js/AutoEnter/assets/RecognitionObject/leaveTeam.png new file mode 100644 index 0000000000000000000000000000000000000000..367faea17c4d1f0c93a4d2fbcfa6f0c9e62c6bea GIT binary patch literal 15838 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 literal 0 HcmV?d00001 diff --git a/repo/js/AutoEnter/assets/RecognitionObject/yUI.png b/repo/js/AutoEnter/assets/RecognitionObject/yUI.png index 4e365bb766057ad1449301c4de41a1fe16c32acf..b7861b40be234c6d496de0b4054004843bb1ae4a 100644 GIT binary patch literal 13285 zcmXY&Wmp?c*MMoE5Ztx6ySux)yA*eKcMlFFcySA*xEFVKD-OkqyS;h7>-(|U%r(1{ z$?Q3E?jswksw{(yK!5-R1%)gpE2$0z^@#xTT^0Zf`J@ZuzlNMXxvR^FLxHCVk0A{h zYcVA;D5&}*#8#5wEiTNq_2={%mtWeW6569CX?rYb+ zNZwvSK!nR36nI7yU`PfPipER|Q1b!Fh+NJMH zYpsb7D1tSTIOV%x3#a=)5vAhd(Z`c!vizik`U$<*RR_DGGcQG z{DxiBoYe`e&T8n6U!JKG*9Sd~B4F8BA~KyxC1AIA+qYMk@9ZDU>|lXb+jjim1($>0Vf69dJjzj~ zBftu8T*-BYhc-ZL_3=t(q6?8BP1K^EOe?RVi!QvhD_%%5G*ct-zus97L#2LfJu%1v z=piA^{&I+o*A(yfViYxPKJR7g_~a5PiTHINnMKl_kpRS~k~ZrSIe`FT{5A4TH0JP5 z!Kegy-r5Qd#}-Oh4N|2WfPW%$DZS;yJBBBK7pHIH`?@;?`Pph5dV zvjlX6aZMlv68|l2ZKLFB>XwVCNgjn<2m9rifUF6_02QO5z5YvUJFxha7Zh52%nQog zf7JphE*XyfcNOBX9jpyMaH0NN9`9!r`>RIWN(PKEn(*XSJxA(zZ>-&*0md#P$`o~Y zwBA>@9?4>gmIGOvKlU$skxPOeq`Cn5D>ww(Dj$2tiXTuYFJ+QlOyKv`-hjgeZ5>GH}3Sr#z+%(nYuY zZ3FBeL*Ml%7|u&ACQJ>)%O=na?q>KY9Rz2I1E%XJVXlZ>F_*&iM*`%@*q*vTD_8fW zjW;$1o6&`%tS%e@9%JOf=!SQNo0?l1pFfjPeGWy#Afsev2JiWV|GtL}8>SHyrUa`h zaBJ#^%ujpYhA%{eket=2-!E`0X-KFr(nKlq1J^9jK3C%3-mZ{x4IYK<>B1l*|8yl{ z`A!O>elnm4x1J$O=3*2YpGYRQ{M+^H(?5nv752p8w9tVP`Bz?HKxjJbEHUD6B29bP z>B?UM7-)>)D?7&m(ik6vI39YSbTWKVCazv)JQ@MOg$PawIyTLxJG|!`i)4SV5%V@Y z2)UIv`^%)j=X}v*g0h3TdGpkQuLJdy31Omu*ac`pVT|6!PestoKudLDN?apdUSK3- zx^T8mi5Q8M(c8PbYt)vdd@!82!_B}GbO0GTNLgh<+)f(StO%wXt1#BM2p2ajs3hN? z6HQjBzwvjYVaWoNAlXSW=2E>QW~eAfUuR$hJ(F>z)r_0O>mdy=zD>5d;z%@dVMngd&qXZG}XK49XI-kH4 zg>{1WRE_ioHjc4*wWrnK!@Ef%BxPgM`Hj%I{61Ca0vd872v!=lS&1 zq1N$4XuCb&VE%~Xhu|4J0hjB)PG>56ZbI4H@c8i~=O9!}8C;UC!W4oL(z?2}@P*q1 z0Y8Fv=^&@%uvb!FK7uDce%>YcY#4YzXxW#Q?(#?_0Ro{(%d{*ptpc2 zkz#^%_LskDkJi~hx=w$X#D$-PiO`fHkX}?gGEYT= zqr>%&6hB(z$S1SI$*RL&U-t0%DdE=7_@;WZVaR3@S(5}iB40=hP6arB{fHq6b|kY> z;SmRX=97AT$@(XU$+`8kD?XGsrf@6f9NaZ=&D9amxy+o~|3iTqGu|^a?TI)7&Biar zpTuZ*Z`xT|C_vqHXLYabX{~L=sw7E{%SX1-JmUIk*15p?E-J9w9B~S7nnuI}R$B#5 zndFU?)`$8$Wr^6>q@kd6+)I6HL7CU$@^0E_;_n!_14G;?FGTcz^-6Uq2Hfb$aw=Jm zgRO!t<7rZRLX!e7g&29w6EM1!{R$wuRRr&HE<9}cY`@U3$T3fcv|QR<87}bth)~yA zk2$Q?9qCVEJUG?G1hDn73N@)hWPg-_LZ7x&eBvY;ZvL$)8(IdZAu<)y3MIIK`W%(7R&Cf|CIa`BLiQj}q37^Q zoth9)CAiaK`!q>iRX15eX%Wp%8l}k3qEbepqLM&d&efP+fNIcpK@+)%A39jgOqt&Q z`C(WNp#(g?xHq>#u;)@exx-y2eUj}y|l#!t(Wru)Q=S17-==a-|Kh4$Te8PO*WwCcK8@n^~FN7g9-?&)5M zwxyn{AC2O2yFR?tJw7_O-wPRfy<-^;EAQ$AB@QOl?G(^qp6hOwrG|HQ)Glsd-|K;56g@Hu>I70Zuf0(Nuv9Legf5fv@NZ^mRPh9pN!bwO9FH$a4`{^ zj`PLEfs0Kmoq6Dz%b!~KH zb_(6hSjTMR7+uwl^4PnaH|6EyG=|Db#y;+1y4TcNfs@r={lU}bRpZ~enlOfezV55` zX%FNEZSQE#oo&%e_amg0U&rN_ZN8OB+53CLzE3PH5u5dWN1#ri)9DS_?{@!WI2Mid z`oggrvpkN4sYirKbCR{10?= zpkp4JC06+~!Q{#bWl++PW)_>3COqbF2IhqNevx;-nkeWt`{6=NbvCsH)ROa`>0eq+j0Rl{y;<}Y zP|Xe^1OK&6x^fQeAK2Z;08v;+NENdo@u#}2z(~hC)0|ltzUD|XJi)tNYW+38EoG=3 zmyj>kKoM|73}^&mS!Wta+lfu>9W_AOI+|#QsW;`Jd!$@Mn}Dmo9H(<%CiT*28AfmZ zJoBsb%p{PG>s%<~a$?G``ie&q=&4J{Q|V&)aiLUxVMhRUZm_D$qi{F6SJZ2$Nx(&) ztgq^?|L%sK6n^guBXszRVzIsTs{t5JcYcEi`tzP4{v>;(D2X@~!0}Q<{n!d(k0_g;SrDVFia3Di|Nef&cU~)6Eo>=GoeVZNNjk3L zC^Zc&X(cWE;_9)AO5!*(n;PA&dGCXpsrd0e*~TS#Op-^?kNzptg|U|RHj-@!Lw z7MHbq;G9|73C_;II#M&z16^5?MOf@LLk|enQUbr?PVS8%QkxF7bAa;X(=>rwi2@+q z*MS^P&Zhar&HfVC{?<1QL^SZYd)+^a!JL=CZpDkw9-a?Bt$R$0EAjLtUDcd6qHcOU ziNHp@;q_WlZ)HBW2p}7{l%YiEh?YIPzmMyvmMyTNvf8!(*%*Nedz-y2Vb-L|w5rD> z=Ra^2iYv|cP7_#n%|A)uj85+|5Xo#V5=w+#!#Z73-%hUEav;c{^$D1z;kJPG*$7pA z+2MNdLh!pE78y+N^J))zve1h5+25Xi#OUsJHxh3a<5FR9v<61S`7JncfLmYapO$nU zG!1kF0vq+RMk%z!?3H|O{Ae>97>^9R*oT|4hslGp`6>+OlXvPSYAXFXce$u@UfZp5 z+c|p!euwp5<6Enx+bHT>q@5Jx$0=4>!Gn z(vmSM;hrXR{*`stFM3ajhDnowwP0gzS88+{k`mWZT;KZek?2Nc09idkjZwi}Kk4oU z%!eFX41Z6ITJmOYwWJ~S950jxaLy_0Oe?+-33vh^Zlyy6Vn#m#pSdy@rgRpY?S?8E z^WYaUE5*uhOA7?|B>buOL%v(s<*rK`vx)_rVfY%-?B*x51gPFFl!F27yM5WY{zJTF zN>!$75oQTsMrs>?OI{;4a#Tr{WUJd|&{E01@c^6S93U$5FeD2DoIgtXAr}k&vKm;J zcVO>juFqX&xo0tw1jVZ4xzTvWDTWnoDbOV-mwxPc&g(?5b!NMmK&%&cT6IJfAvquB zu%ex1Ri=r=U^VuLKp%yp&Q?P!MiG@oT3W(2xKKmP7ZGb7ZMp9qa-V)AT-Khjs=<(f zb3}dTDB?)ZG`7SM)K-@;Ql7e$mK_43m1}X0(WiVIR9EPtb zWDXDgOk_dYKqmc1A7LCqDqWW9jI4ilIz%;uOG18xxgZ3i{0HvJB%{ecaw)6nJT>DL z2@)|lg-c$2tHdgPhPM|bIJ4|LNuHIw0&tZO3*p=!{}HMD47&NWg)j0vZI90-h&#-k zA>_D!Ilm<`{A;mExZC+pd$KL&*w0BkV6}thGCuFg0&YZ^In1?Y>at(3wj<%PA$R;~ z9Vit4od5X(eXR23ID}@QwcbHM=_{Hz8tZEtV`Uj(ekQq8yR^B!HVA5-GZt(s z{3prS8}?}8YbkrO5iS{(G-;B5W{uoDF^-Wd0Z+FxF<3=O$G$q>Cx{}r)4MY1!<p$8{S&6t?xjUm5XYlm!%&IV~i+G(AC#PvilQYwo-kHFCChRfdLy z>y%hCzhgt~#pXa278an4aMAVwKLfeHE8wXeoV0#N?#Xjt!5Sk-|C^+F+?K1RelvpH zu+Sr&ivuA?6m~oNpLmYb1`ZMYRG(9+LdVdIt?B`QJ^A0o*3`GR12*>OKT2!!GI5gh*KKW2DKV~IfKcSK z#QFvTwzlW8I~Sw`N<7eu4ZP2Hg7n!cwm7cpYtpZSnPYY0XXLRadBrq*!*C&JgcT4> zqq1*1D$?4xnHj^xk$8l%|p>yieKyZBg_>(p8;H<677jT7jb@8!Fx8y80YtwxtES(wsv!>$Lw8Ycv zE4Y-=;CveKY3Qhqw~PvKta{Ss6rtBunNRX@f2&@qJnUU*KO)66?hn^?#3l5_z>zTOrKn^!{qpNPS=n74X4uVZDo|QYxba zWrTVOu@sZPv;-gyu!&H?g9)EZwHcuR*((`%cHeC}wMp=KBB%R?CINqHA(jFI zUHZ#`{d!vm+vJm=xf`~*-B_3K^^NnY+VJ7|yX<-fuF{dj@z(#!b_- zNi60K3o^PmX#!f$bH96yitVyqdD0QZazUi|b8$4iHN(Ji&?RYNv{t4wArCX?V%`RV z%_qp7uV+(7fdQ4RN6S1Ek^M*AS1KT2iHx!emheqV1D|#t(X03RfEVQcW`0pSwBfz|Bw4y3bzA;kvY^)N6d!u z@ce(=e(eUV6t&;2D3umro9Nf#Jm=>(8wT!0I%N`}WHfB;gySH}BhU{PCXTCi|)+@K10uc&@Ft z@g+Q^=VZtZ)8@!b2@=0PEZF-q?3FgII#s!Cd#F?H`;3$C$M%-{UvDMu(k#)jKp1B9>B@ct*MH>R+@9;o)enG8(B!s6;O9m> zOxn3dEOQ-<L_JEn;Mx4IDM7_#P#Pv!JoUUv!yMg`4R+NK>PC=j)hOZAl#2MZJ_ zmIr#~z3y}$jA63CL??O7%`F}5b?$(k41ISr?}=>W0nn9S9^W=uATf!qq=#k|liry* zLqg44S^4k|k^m;9FYg1<)8+w6d_a2!(Xz5F-=K4?^7_AXmEYeO#bQLVbhQ7OEj~jhYvwUW zq7S>;3U2hiOHASy8$$JlDBq2+BOvzWW1R|>ou=XOhS8#RX9%KkZhN=mZ zX)I-_xWd(%zF%($pvQX6{1(J6c)z~*3fal+{K0YGzwjReZIG4xkB90$F3C)8G$<&1 z!iDbmkm9Bz1-hGJ=Ey0`qpicxFl=FLZF!zfP%~%#tTL!_D!H99W!1Z$e#-ajB{^@s zeYM?av|$DlX(^u<`=R<@!h^88CAz|-nZi}W4*wyA9i9loOvVQSK(>&X_<)mcbF0Nq zPTTurhV4)Qn|ttgnZ#yM|#A@50} zDhNepYg9iiImSOqkMV82_Gty2HcLT}t}K6-tVyVH0k_kTRA^)^5l;8%kob>}`-AK3 z7>{>@-KMYujl@$N)-^oA;sjD+qKsQWx>v16Jp1oKDcR_aTvFdQv1>Pp{e!5vl}NN$ z^U?HNIzky*EZJT7)ErDn(`taGT@HKljOO2Za9jM5$>wg4*UUC(+?s3yZ;>KCo7b!L z!iSPz@9K!VQd}C8RgtkH0IO7q_qP?UX`3~M7^w(O!X^|=efn%Z3~Bj1sYKKUbe&=g zTbqY-+RW{8Bvg0R65O4iX{i0ZpubTrV1#hp~n;!v#>V;F3a~QMRd}(9nvhu?_gkoKz96eULVzwlDUmuQ4*@@zXSqiK5u&5 z0)fc*sq8+fBSi?@!CqNuMuzR40{;bDG^upq{LVdIoX9hdbsTarinnLZ$v!;u_kH5N zUvBb`Oi|w5JA?B~Bs$|;n0kM9x?h%A(b<~Jf2;Mdbg_{qOOH*_6T986-Oe0?Gc%uA zvuz0UMtl%#j4OD1$LDssE2r3xfKI5P-Ra7j+HF=bnm7^;`b473n^lEgYKI>g4VzPA!;M0RY#lh;+F2BNvBE^YdEZi&lk8^owbqer!0+mM)^(C z62B#2U)-tf__NcK%hv5^a7Xg$yi9q%Fm1`LO+Z+ga-283AuSz(`(~e>Veq1ZQ|mJ) zxZTG~U)sTQ5e?jP=mGY>Z~zx$1L1ZI)8oRajv;LI!e#Nb~*1`ZEe0L;Vm0Yzv}@xH=VV90upyEAByu#i+Fci-mDM8LRLc^(?T zB)PC)!~gA(Tn zbWC1dE!cfu#OY0_$0FW+ktB+Ll4gayUP7fyuzshj%J6&h7-MYLc$yQ&L&}R&RU;dZ zt9nJQjy~^rZNq}vvm2|QbefQbtG9uJBr`Hs)7V%BnwV;IdFpLwtW;>4u?L%BtB$Ly zUKJ)yA40i_eHKhy=y_;HAhBEJC$uJ*KF>vMYM|pyH-nX$`aTc*lGDccP2Kr#FTr3H z6aHJ*-M=@MZ?w!~mUFGw37*!Gstny7KTwpI*z6vft~c!0pB4*@_pQAlNV+Hxn|&O_ zqm-tYqdE9Edw|3;JBC`l{KIjN8l4`tQ!p_D&T2+-ZXfy6m2 zMBB|DojH)F$I=qq;@p0|9=z9<^%^+>ix@l|KahkOqS*^kP!rYRNY(gR?Gnup4v$1V zjcON6;*U^p_H!3B#3NQmoY^4Q`v;dbPjr080RznsapXo`SBqU7G$JSWl&uAZM&ii9 zZ2?{&_`4a*>ec3Iy~QFS_%<#(e|#-JPM(?oweX_O4YWb2HqAuZgZ9V$9}2 zz(n)Gip|a6_6*HWoI0Pwe_N&bsjN zs{i*=aRf2aLex0+0}o_axt(+6AJHw_?aH9qi_Jf3*noOdxZ~^IOzWKw?$hBZ9*1hPc6`26{AMsfn>af17B0X6zYWzQX0wAi z(btFo@*{X29(u2Lz1W@Izj&m!X1J7dxIijFkBm*D`gX1iWHX%5WYCahVrdBQtYv}G z*Hh~|5^*KNK4@!g=4*A-+ub=Y=W*NW9}kSKl1{%)b2f>`KmP5hW#e&$X&(y$`?W(W zitkh&Se8C15{cx_?IzRTW>mVQCEG|Rvjl&jLqb7eVEc$LSO|F0VwvjdebS)TW)B>r z^*XcLeh3bn^7ezcT|w8isHV~aoiDJ-e?!s6m;W8%dOx+G&3Y!X1U<`hJFbr3ulcPB zP)PouuKzB@Xa%v*^E6u5i_^vtmUpBu^qp^)^u&Q{1xL5qqJZAufLHOuNx~G@Rk;AZ zNuA)I-`9lRFYiVEJrgP+Bkv!j;m73XOk4eUH5uH z+SsSbn*rTu`8#)Is!Gsb2XV33H1%@IPj$xQ`&a#yo9h!hhrofBW^c(A@1K!!dkiDf z$aF%K^IWMr@O6$&iMA+9ka#t-G3(%0Q511m>cp>O38NI*Y;CE>Y0|e6*op<3z5A{b z_*!bBv>|gd>?K5K7v__N0vN@`)zNIlW7$HESk}{Dr~mUof8CU`gRKCAU)mg20z&Q# zURUQcu&Im>diR4g_I5-A{XvISwyD!wZglh1D0@OTLmXvRv=ZY8bWEcZG=!vBoVqTD zymr!=^vH@8C6mYorz_g0Bsw%-)gb{l?5j`)Ycm@Q&hfpX(<75rafNCTHP82rtBsc# zc21?@vi7j(0^Q^49?l@eF9ok7R1>-UaoO{B&xNxSAnvHlX6EMQ=kWq#&tpcU+7Cex zrx>)|B^55ejy@aMb=La)oy74C=YlM*0&$>#LJTleCcTl$mdgHI$pCl;tdlQx7*!y_YQ@QlqJ zj>QQ+rE25j1`=r;$h?&5{xI#>8}L>*>mWLLqr}(K8}qeRw&-2O%;pcm%jmxzfe&-M z+vcSPE$Fp7eC>F6YWb245eL3`X=?8J8}M3Pp`OPRj|*gLd-YL`)L8@hoytVtWJRv4y&#)LuDw;`mA|WAJ>Qk>&>=yPL}&>NyF={%=A(2yuCVi zkVe`3FRqt4MVkJZ){B+`avWQQ|Qh8@TI)lRAlM*z=5&Ec{`Hi(=s7;~l|%sXDn9tU#SeG-WN^{`)3+ z0M5RyZMWS?e5BDEB=~ZzjU!Ue?<&YcGcZv}@$}czIytKtRexllh_e++Y0_xJ^TOU? zT`#L52$j`wPS(lqLy$h|kV17$7F4#7REW>k8F3MO@D?8PgGk5_*Kn8|Yk`%ME#$Z| zzupQ)ucI;_LU4QC#gSk5UZHiag{LTGkyBRA>zx5~Gk0hrkAr(P z`bWzZQv&`71zk@8ETC+^t*fg&pS#rDfj_5#V)A*Sv<2%u52m1IIM$lZ7?z;xZ$rS! zU5SF{43=3ov>7`3OS{hxh+;b4oJ?}pyf8{8bL}6%KmjxpZI_=#;Ub$ojE={_u4c^Y z@*soP^-QRQuR^&w&Vos)KUiB&LJ@Yz)t?P~IuO9?9wAZv=KwM~dH{#L9dRrym z%l%y?f!f%x6K{@M#vlxGQ(&da_d5!k>zlsZk9@koZqFn*@ab+lO8I2PH$zX`HLt<0 znDWnmIa`Jvk1q-=b>{Smjh0)Vf9VBm$7SnUaZ0Hc$cnk&#=xP!A1$lY`)v|$)!$5k z2FjiI;TR6<_PuM8L7~JWdkrQp{`y2YeXoQN*MJa`5SHfnY&*3Lku=xMMQfkHtXHH| zMl3RP@n5%1Ob{Hh$Cze=2RX_SC{f?uJ*~r$Q3{o92M4_fuG_t79U~yRwf?Jmis<|F z{=QvJXnTkIHp?joaTLbnui?M=OZeDE_K0r!Z_Fk>$io(Nowbj_&@v;qA4F=@6J>?p zoxkp-Xw~S|!GenHAzp*q;vff~_q)yA(#bLn2W!N_Oe0h?;&gXsA|$-^c#b5!uRtA?`N3FTzsy8yAPvSORtA#Y9R$Ot2J3Ai7Z(4<)<4F;~kUf zr(&nz=ci%#W2>GHw-Vm)q)zBBiKGPXzUG_8pd=6KeOIv{lz8y>Nh(BYj;db~5bquC z)Zp(i8zzu%+0)kXbk{Tx(I1tw!QL5Dz>Di=piZDwRjopK$=-i0b8qMj?9z$v>T(+H zG$K7WzRl;FpMO@6Mpt6WxZT`YvzgCbCcGD#hd~5~TU~x=F`c8?4^L*T{rI>Z@*A=D z-)mNXX61jMOpwC{I2&Mn38m(0K68*=Up}t=eRf=or=fMolear7Q8~Z4_p=9_DDtt# zwd8oh6&wC3Ty9V1G8Q#o$}Ffbi8k*D32bjZND!hP{_Wls@#!5cNxQq*&07De znr-o5B3pYgiP}3IZDs?*%-#|DJWmZ$dpg4fF;nD_INh#mT?oo zdIF_({oY#0_M{SAh5cD!6NUKRjwAv`THh7X}^A00g%x2(@EQ zsi-lQEh2h*pSd%c*GElAe1vvhGt^bpbEnU2iyt3Q^Q2tODhg=x5HJXN7cy}?3AD9G zAYwtXp2-z1DL&Jg!fd0Qqt{9@ zQI=_zi0aen%3On=vr(S0+>MbjwR_;c>FDVm$SzMhI8i9C{=C;5d%Al*VPh%~_8+}9 z-a({Q-^TIcUS5z_{_pLkPPllGak6ue8JYS@$Pmdt-wYs_7?NSnLhna(AsV-zcMVb# ziFrvcSvUsj{%2B*{mlhPIuAXpl!-zesh`3-ZIu1X~XWFNOnLlC7%0-<%k(>7PQ0fA1_>~TUIRWrAe&{r5)3T_C|N}&YCnR=ilwovSRa5yuE9nM2I;|! zdZRCOxk`GrPP@Lt>+b8`#H1KaXyVBQxciwoQ$=>IJxo_FPmnB#V3!Bt3ktEEF0^{u zUrs_$i$eZ)b>gXiOe`QnpNokLIYL?` zNs6;dF=5a5FZi_39)(JZk5?P12p>{IF$xc-dBFYhx9T4eOM0;(Q=@}}Q@MkzFnH4d zrZY>WB6?njsv`|%aXBva#Rw4V6!Cbz$jv4wbG}cruu%B97*=gqvx?i>_mp4M`O#!(!k4P*Glj)cYfK^0c0m{bcOqn%0_HQC^kw8%LeSm z><1+DHXiJY0-B!uUOzO5uHgL&!HLKQsF1wAth6>(_^EA0pk}XvOu(-SKMwJeZ65)a zR^{jTzc3O$t5f2#5iPv)O-zK#SDfn$w9|4?4?nbe6z(>GaqoB4i9V$qSaf=Yue>Ln zy|-qtVrl=7g!#oV3pC}HdGFhD20zpW;CS+Xdv#6hGycgQK>%rVxawJ4fkURH#fnw%HSTO|La7MWzTDmX{Md0<4P*?p6Z^bz7VMGf=uh5WRxG;>S*?VBj{S7ah62a zpqD4}d2s&!ZESgVz17bbM}FnXYu67Le{-Qo7~Q-Q7}4NlTYB(%s#-BHi`Ib2iQ# zIKw|P_y6t}m+()@a@d#@m`F%S*b4H}P~iIvcoSow0iQmsbveM-3umaD6jJ3F)gf?z zYAFekL_(^Gef?nk5;%VKMPAz(2??j?-}}XYLx~v@68EEmw4}O+!EBpmoc??={Fd6G z@>eF#VcdJJ|fq?PjWeY*kkz92);n+O7>X%OVYmQeqtlHNQc z#3sl%%zXC+_XQO!BcFj{{&|$)Rk0%#`Y=xEEHag8;GI-CQrvH*47f2FT8J?o^KZ`t zP`52?W7>atMd<&DT(nHL(2m3FVJ`Vl0Etk)LgW}~<%(XuIgCY2Cic|wu zyfTX6h$WDMR7Ss0Odwv|_8&$YshppZ@r(zPRafiJGS>95b(rxD@?Oq0{7Lp z%oF5DK7P&}g*ARIua^A=BMw>-xGeUTR8)CdDF3Bz2UUL;;7<2fc|gwWTzd z8<8-~5sLYB%d@?`4Q^cc@#6NHlVpt|4ab+kZ>T86Rzkt*(Gt3-M5va}p0r7A_lrOk z3)OK8VH7$0{&1=fDdq<)$~Fl4AUq5@Qi1QESWXtlzh+eEHbN`LpyjiJyz&XC!xwl` z-%eF~?r-p5*&jl2YTS;T<|_4jF3b6TM}};7bH_sy;6p|(`W2EXMK>L>mF3aM6cWh= z1)C=>J$hONh7u<&m1%xQJDji9(5L9#5?7wRyOG`^%s8Ghw zS(2AdeRF-pLyzxozUG+Jgb}qky@9I5&{vphlcZEkE-wBG!A4lYV0i|q>TJX!tva56 zY6i3#?NK_8`NYK57I5pi@@tNti)!p1t=;~vC}=w1nwpwgWh}YVp+X>#hvD^m{kiYj zA3kZK2^|mebACpvWHoL0^*0uJ|+w<;FrOshpd`ZW<>FcA2aS4?b z-h8zk}W~jWU?vr8UMqXf&QXj(YRv7VxM_gnD@*n4jM`EnwX5>0In#klD)4Zg;LiG#XLr z`caKvV!56)3+=xQY^!T(PbencMEI##td6H5XBJw{evS2|S4L*0C*sH*U+SA6z5jm6 zV7-$J?r;ick242W&o{mFow*8Ky$)WbiqAb~B1rOuF~|4P_2f>?R5@zJ<>isY<@X1N zhh5|KXM33rXI+cz(yBp&1T8HsH(ST=0^u+!zk9IdSXS3WYl%ABK}v*&s=#sL*K_VE zSjSm%m64WtEys4%(^l&5*LEcTf!PaS6dAka(Tzz1TOb8<>}GdLqw=tQI-FvK@5))O(y zHsy0Iv9|GdwRPqCOFXrx8(uI|Rr?jiac)OsB|=N~HGpbb)7XJYy^cyLcVr>{N77^= zU25o!{~k^E$VS!k?8% zA_p3x={Vuafm=G_UjK!htvHY4&+K~uyTl5XLKGpBz|rTZ{-bIhk=BC#K81J!9PPX> zOHM}iCXwy^&e=)&xKBt&QF*ibG0ph9Ycb<@y#nP(w##h+a^ZXrsgSU_68EVhc57TFBY$+Y3jR zAUux0u-(JrT#JFL(IiDiMTm@!j?Td!Ys;Px?3=IQ;o-0Hr5~R`gkV9z^WN>;jgI@j z+fRY5TJ2u^)cQwSDKgDaOBa`d%gf=n-Tm=Z!2|E@F-0KG&%n|(%7fFj;M zR%$sGSAS-)#uUAh`B!a}y9!Pz7x*RXJ3~*mRdsZsM7$8XL6M`QqdzOn@qho?pLLAq z%S5v9?`pMq@YvanE;Nj8<!RP|s;}756+z6- z(j;Ozo?~t;KtIgeV6TaP-XC3#g@faCc%~5&8k$ZEFVjZX|V9wpx4V9Q;+La_emC(i*KI5)moI@m$O*rZI*z0 z)a79x{J4fwx#X;vir0KoS(K_dBOlSPsy(Nfes2<`*iF`Xyj*UuGadhnF648=jgCWQ zwA$jD)%qnFK-@F26fVQD6i$Rzt=X&W_G}LQmZbXf)T!xdl%G30AO&Q0&B{WDL#Mm@ zd+n9FsAP7{EmCJQ?S5Nf5JZh?m_Bv*ba7lv-ob&(X1>yRvDVz>`l{A?mM!J2eu&-j zN{bWa`1wMcCw~!~psr2?fPokKMIkfk&DM3Q#LnHr5fjzdp9S zJ$tKIM38fAoWV3Y`mY!wf(iOe@CRV|MMc5Z8oa!`QcTb(u=%e9<-eWJU$?YQ=5!r+ z-n|PwS}0U_IezYOK^XdL*J-98?r6EO&JH1fLnZXH<1rLi+-t&VjlI1+mU(OIbxKol z`pghpk7})+2HUyHL*whes~24L7(En~61_h>QB?Q_w?z8jnELwq4_DK=Cyx}4)@NPm z(^+DC5wHxg%LM{2FRvy)wV2&e%A2v+^@7h8bgSYPd)7jg{d%4OdV28YqTp|H{q7x? zoc8N#ak7NdViyz43$@1l`{H79lVuD+MzG>vdF?6yHXscB60PmXfo?cSEd69CUYB4} zGx%M7(5SNPjRr1Vj$^98IMdXJjx+D!8oSKe?|Cqalo|Cg23^m?qSPiq&G&p*N>moi zLv454ga8^bs(0AJt{0k}nW^<%BPxe$2-UE#vE$8$-e9dVV|`GXX2c>Kn#D{p-#mQL zzS{m>`?uPU@&j!thhi1%#LZ1(G3Ne>vJvHVlbbQ@e0fRx^f{oTn9Dp96#j^#2SKc@ ztir%uiu8(o^yt@>y?mAvbx~cfNii(s7CQYTA~8t@MN$$^96Bz9zEQoWVhuAGivae` zY-Z2Hft-ZN`JFw`yzreY266pvKA@T=l?Tel%P}RAK`rO6MyXa>aWK*-X31OmC6n|R zQiqL2HUHISh_Nw$(V#W8inY)oxSjLy&+-vn5h#J0Ex7w7>x8tFgH8NyHs*_2YksVr zpM;oYV_Gx=G1$)TWnrZV)Jr^aYrUH<6#wNHL4&o*R>W$+7M8;xuWYU9n$=gvl z`K*4KV19tZLP&s~5iS&4shy-~N7f>#n&jA{fT<(z7dotmrA;&;n{##n9)I4Uy7ZzR zu!AzQs^V)y`@s-6JH_RDBVku6x&4hN#<(@J9s9wX1L6j|Ba<&*;uL*jjwt6R7Jny5 zPb;mp4u5KoIbOQBx-z*H;l*arWRi?L6+;*AeqEYo%Wh3WcX3vQV8qbamh|K{F<(4^r?I{Exm1UsosWrIu2Ue zJE-1$vmoR@m}pLJxh^r*7fE_(#d~;g@McUbhFUb_O(m(9-34xkh9pjW9}?DAv?Hg}J`JZyk{>skYCvrX@H%yt|pPoGpghZ?$O+DibZ z2l@9MsZ!fg3qG+JWyp->N{s6nmF-d&nJkT_7d9au7_44%p9Y4hwrr;+$f8c zvrXd zHo1~l2Hr>fwso1Iv|rOqoaKpR$Uxbxu|QedFq!Vgc*oPB&5p8fIM z{iRDx?G$6R;);rB#$n=HS7)oN*Q8v$JiJ})-q%gu?qRL&$4=Y**l6hJ&ED5ePJyG?%< z>q2AtKE4>t#B6^!Np>&!T&|=vf`|HIH~l}S<`Dp`4i917T8;`KzFH@LC_^7W-|${E{bzb*-_GlToX zti_tj3H3>%R7gE{cTIgxB!h=jnVMWqnc5#k@vczoF8@1z++iA6Zyzf4XQMSpD=J|9 z_K9UfNO;W)!6K>CTWia~Oc#SNgQ3a4H)_%I8wd~8&91)6Ov9PyYR+nn_>qcuma^>bP?B9CG zfi`YHz&` z4wxASObQ8jv&`w~>BgfG77-AcT8@Ix<&Jk3LV%8PQHaqf|7?8lg5Z}Zb7dl&b#_5^ z-c`>g27uzSB1Vqk{G8q9FPq4cTWTysH}i&G8Q7Ep)rB9Di#ZyDIdvPVT^5=82L`lT z+5*SMl-Zp50m$jE)JMcaoe*=JZ}nSxYt26b64+@`m7@${yeuH+<^oU%_@3j%fhtq6 znuVn$PXb%3+i}06WmF@HYFIy|rG+%Fw6<@xdcXd2M6U|KjC%Tt1t?cdLrJne!s{of;FLWxZ9onVh+bS*2 z>2@o>$x-nf+t})h6gwXw1UTd+B2~!ig2ns#uf~p=%$Kd+R|#72?vf-WkFTYI@Csqk z0NgHVe6+H*?w;Y#$jB%`fAvp;?T=;e2jYrvEG54l86BN$EezZpPObC3|Ln6aXNDse zOS5ZPl`B0BW|Qi1q#7{`0q*A9_d_X+t|QU9k+Cr-{vI;rcZ3L(ZO|q|puw)rxJFV% z1veQBkP1B;af(GwIdbmqg3=l~y1J9W>Jw}ACt|UCG8I}WefP)N8%K@n7SB2LsFFW7 z>gk>~X`lS3i&aYayEXw_&T7pcEGh^51NXmFHYxQR_rewyLq6x3>pN%ll5?CeeEEA{`Zwxp?;&PkNO6h{F~&>$8Vl>!;B*HQjH-`;lMCsKltiA%mR6=h*dKz;`YFMqjI zXHvqRRD8^wfJK>z7u@l93>0%@1TGK8%}=VS;W5!Jr1^Y^&<))O3i*njLc9h3E$FQ# z?^lN?XWFP*%W)dFBm2FTTSC;DSUd`O>S^vt>}uOUERAu_dU@MM*%b1Tu{k^?)1?3{ z4*Fr#23UOmD^)Q$qPe*IbdG4xgUv_V)fQsug0ZsFGgR?BvRTn6%k0$cpSBTCxi1BQSd3Fhy}Y=CycBAc7-{aPDx4Wbd?r2 zAIARcwG2+kA<^iOfTS;G4|g1YCX2EHM=D6+WLvpE6#Tbc;^&rrt9%v(+}_wGdvF1S z!C<>8V;KZ$k$Yz#YbnQUMg#m!+UFbLN`v-@{R(Lee>+5wadJQh#_++KURS ze3J_4iqG5L>yP-7adE~b&7S>C7V$ciwq|W4*hJgJ_7;J}(lCt0zA8-pjD!VFlKajck%TPz+)st!BmReZ1@8O=v*)T;L zlSQ*kv0VB2n5DCMj+nYYrtzXhs%@)tB7_oV0!6+>Y=16jQ!V}MakY4S(thk0>(#Ej zRI=J}vlS_J|ECTxrh$DYiFfjp&S#aOOcV@KP@?LSR_z6N+aSQsilBsuxe65Zy!Ov( z0sny^l$RD7wE9c)p~hrQmBY2>!w1L5hBsr5dwp!ygR<`y&&BlSHH3>Q=mYI^7aEFi z)QBXv7hUuLbK>k)ELiHr___F5Jk%ruPH&Wex~{n!#4#-NWdkWYJG?9=WC-*wM@>aVxMhGp&F=ZV>P zAQ64Y=(ua+q#Y+OX}k{TNH}$R>k;!FfW8xQ-oxs=)a~q}eLkg~o}BcDl}!=8=J#NH zQl$#I(@LqY?$6oZ6pG+?*H7Ksv*_m5yIB^BDOG0!%&81`RBS9C505{bwHt~diHG{{ zP*n6|ec26lyXtmsuH4dum^^EEei+Anas{(OtDLQn zziW5Df%WId_49v=xV>uZ9KA%$^I#P?LM~UPr>7r|)}J`nAOE_OUS0m4E!S)D2?r~b zel9oDmTlJCTV8+q=hUUafA#jFj*H)Obc#6!RMTv=ybZ|%qjkbc^1qlC!XomD%&=9% zU>Q~!1iT}ZS8b|0&emO!^7k1aj8Z2B$ZxHX=;MR9kU>yyBR18?4;JK=iKd4MUv+dy zSTU>>8;(}GmzlXHJDtd#ccZ3@C3e>2lL7FjQk#6x)+%nS3rxYu74&-|xu-qTu6JW7 zeybc;7~oSAW=uBIt>D5g#SN)ZH(B4aKU)H+^5-v(o-Q(9os{v6dhgp4&eG>sznZrC zKp`SL-&>h!CFQhrqo7PBp`c~geJ+Nj#yTocHR^mYK{t{GDH7|^J;vQ`dCRP#uNE_* z&H=Z@P`18|`ev~~$@4Dz==#!MMgbV_;T1rujz|_ z#vFDu3Mh!capF_oV#6q(D5Sw*Syo?!45S4wo0c^mEU%&}?#tfkLZ>ymw_vQkJ&mm5 z74kq~UWYX6$%5E~%v1x6(|T)=VDvH(L`E3_9IsFQ;6WneWaW>y417dCz|A8dZ$o4M z>@Q`*^ycXaF}r30#o&w56r}P5X&D{ih4MrLX(=yD{`+rE*1WQRXcmoKGpR{XZ+kSi z6PE~I%IKhy{_QAzNDebTP54RJl!&oOVxd6DtaN@RS;I$ykEkMB1w1#VosXKbWMx#= z;@vaW{P`?U`hXDTTw1RWo2YTayYdNUU5Vr&UH#FNFSsFza5&S|(eeNauGo7`chX{& z+`Y%^b-;e*Q0pq;7(O^SFanyg*yW5Gm558&yn%N#si6%)OoAYUKzxv+i1TVY4||D+~~j@L7&gEb#uDC(&p*B zDGoSh)8KzH6IiQ37_i@B%uRld;@kJA#nTu)nE0AV}muDkDug~I@6PQY$S8sJWs zElYv7-d|6;(Dhne!a0T)I($V#acM1%JKDeNHsVZv^0iy64Zc6_%;iv%!W(cTxmvIN z{*n@i9SU?R2v8L<2xai=b)ub`m5QL+)io>;BztIzDdYn@QW$r4>WoGJCuL>C756BN zx3vCIU%%-|lVY9-;+c&I*l4IAf}Ts38)&xpbNSs4`CiZvgl5Ckk#HoVBX+Nu=X=dbafUu-LS+OWsc&s3J9qfXknoA`A3(Ad+K0O#;#3aR%o)$-!5GGU;W~5pno%18>Co2(z_#+Dd4a(wHt|r zwZecQhANXk!<=eUWRQAeAAF=s%D~?>GXk1+PI%+=r9LX_mGEj{%TMVoZKiwoirtAP zh|+KBw!0_luV3MV>%M+j&hx{CS0*%`Ui=^DSq9WAK1(iXS>Q}t$rfPLlAF~L&VU=Z1b(1nl_<=u2z#u)Gt@;gPYJl;Hb zS;oi1d$dX0@x<5hbg6mMFKDnU@$h)Dx zOcv{FlFmHh^ZiC-Sd?D;_U3a8l|djLK@Ycrnxwd4VMTp*yZ6=UNl&cf#!ou8KTF*W z)R_zI4k$8Jh!x1&c*ujSOhrs-*x(o9uyH#S5T z8hLjo(6SjaIcOHFs=YmX^BbrrT)`iUNnV=iAX!M;DGwB;Gk(PMFp&TBs>x@QHx&2J z=Af^)aJ3~*qz-cT66hmo<5rqL1B{O!CuJ>sUm>W(gp#S=>E(F+D{JD6GtWJEaX1^k z0w-M0VgJ#&E{QO3VK5#}mt%SQ3w{1%k-72wz?53-v=ku9hB2DoRij;8T2b$W0#tqc zGF1G$xK{Pq|YhDGP>Le9=z@ z1pDcXno7JjpOT77VoEu-e`r^>sJq8*vZhwOH9zJ26?-rgB7?V#b9j7gc|K>)#Ka`z zd&ar@MnYh(U<}B40M0ppHG5}eA^SE}_dR>e_P0X{H!wWkGXDbkJbsvG#&`a^b^)F? z=D#$^#3Z7!@-5Z8#nDoI+xZnEz(W7xz`}*4Wlmzx59dHP62CtYX=&A9 z1VWa=(j@;|AAfEvAis#*VmAxe_e3=&hRiE$1pz*!sV)iJcteO>wQ#2>#k_RsuHI&3 zEJefBN;?OnP)+fmo?_1CKq68Eeboadr={H=-BxVLf?<;TW_9uUxu!srrr#&xrzc61 z2bK0taMX^_zaorire|PC6mrV})hQIostjN<$=PVNC{$3Xj>vr1nGLld$H1;!&oFyC z!5uB)`{;XdRbfT-{lE76t2{a3kYm}0)%E8%nMe|2tG6wA4A7#5W`59ZH)+Rz(|`Dc zg?}Lij=4X>(A20|sJWFgS)#dZQARnceauBIxzvTfJ_t=u^FS+++aq?hRx*{yA8)<& zTI-V-?+8dt3&CWYdyf3~s@kJad1DM8eX(>u4K2ckHHJ(f9Z73%UJ9NvT?u zGN1rm29?066te^{;$_+J`x7HH<$V*R@n&DdGbqAq{)90t=QZ~gq^VKMNE6-&=dyef zwsTh@g)k6UP)NFk`lkYI+ zohFU6phjat&Te{U_BL1NDJCof5B3r{kB2w?Y%9{?WFe-ALuV$)rh+N@e5F-)pD@<; zLzwDZ)$zWlM0D`d&YetN*@Mnn;jqDCja?N`pGYp54R#H+7m9x;)D8 zNZvhp19rW&R0d`Yb!W+&s%Cj%r)ByWQzrN@5FsTNDVk7?z}uesu`@6Q)3ee*^6Jgw zU`Y&01xnbQQc9Z7Bc%lWcXyKvCe@x(`3iVes=0rC5SZ{_smikVw>;Owu-GDZ?C8F8 z{B7K02NF&8*mBs##RWGQ+$(zAR`+Gx z6Z&Bq42Q!fz_T<~+9Z#Uj}K$V4>$m>;3BViY-8K6ceMW$7?<1eOsNI{kdLqDd|YCj zy{fJI=H{mR@&{U-@bPSDNXX5eV5dS6H1D%o85abo0H~tvFw;kk<)sA1j~+L9p_AZf z>-r%TzdJR+n+LQJSVJEu0tl_K(SCRrkP2@J8H6o;E=Yf4&Ar~}u)bIId{=dQF7fRA zwCC^?QfE011U1S9k<2lsZ}pmf;(k3rc{<~IPH^~op4s+zwG3Egwz@KE6h487GUfE! zc5X`I5Kkf?a7ifw#hy>H#+Zs3)?6S7+OKSocHX??dfZ_IfahD+-%Pkdy-oqN^dvF& z0hN{U=qM6Utp7>TOUdMvbd41&NG*8u-+KNA#HpmBL5EK|sey;TrlD^#;6x0(&fU-P zjyd*y_V#(cU*F$NHMB4?`VX))-aRu2|MsED8Q%v0!qUPb1AyXM=Y8b_*>c;rsiuJD zzPP-^M}47LWx$B_!B#gr;GYye(*vQE^tIu6qE=d{dD4PTW?p3{@V0@#21ml{5=`ols;R*|7*1W?3wVy41x^P7aMz&yX4>)@eHiHk>B0o9KeM}FPrtc3`krr( z4fmg)h8u6)pP#g!8lMrOQ7OYSg`jWAgtRz(?>0@yKk|Ta)3wzRd}MC2jQq_W&Ouf0 z+(Qu88Cvx%k=d{ARZ+%53k|qlA)qeab7?v=diqhRfHE11{c6rje8+(BkZ}KS zNxIZxR>L>B=M(%2Wgks=#d`Xu?R-|5EQLHE!d@wt31k#U?eD~HgH@c?x9=BRPmqS^ ztITcl71^k8s22lwEk@7+rfCgcIOB{6yQncIlV5^BVF+pMWR~)+CS(Y1y!xwc)XNNC$d5G5M zcKTub`6?3NW1(8LF8JDRq-1^0Lt!pKP%;g3M85_Pdk<3g!Me199DVv@DGK_&SgwbV(&e0Cv`;&9d6~AY|(){tV zhug}=feE4(GSCnBIkbu95x2w5zgz4JQiR6I#_C)gNw&SkKi++I+8M<6YEj4jJ9aeu zk8>sUWZiW_&GU2ugGYI11vx3XIPs8ehx4y$d{RT^v&W;ASV^pt&%@|2kd^9Q^>Clq zBsxEBraU*ct`7EyDch(44s_rVj@-cVRMvauo4N!+SK)wh=O6oc&dWb7FN*12%u zDoIV(sV+pIQdD%EEu^&!Ogo{F+kR7^80_IS{f;IzLZQ?Shbi(~EKA2rN#Tm$yn$t~ z4L;lWuC`SEAW}#;Sv#DzU962?ZFM(YEPGuB9Va6r+gNoU2Zm3EI;i!nqEkkI;Syjz zO4`|(uXeJEHV>~mrTv<{)%Td-&|yQI1gCZl5BVS?_}F{ov+aX$;Pn$32dHenA1syu$z(Qn?b*y@ zU<7=}e42J2(jpg|E&q+h884m*bhDV9kUVUW7L&IKM&MC&W61MU7ygzD=5-`674^(l zCnzj?=V0O%^oC!uG2ZM=a^8n9B8uS@uC3DnTIO6eeM18g$u~wKanczo37EjlO(<@u zK%2GB?!hv%@YR)mnTEf8F_ zHGw%1t#rA|Hi02wR30+5rv0tXl9;4SymLa+28;@_@8Ky%OSk8vlwKjD`M{@9Dm%|9 z-t;B13z1qfYdvH05@6{tju*IGmUYJSG#1tZ4(*pDv^lvOznF8)ZqKsHjujK76+;|S zoB7olai)NHbSu9&APl9wb5jf7`4pP64FJ))^JXWq&@maxiF-#1{m@J=viDtSm zWZzRAp;%yjh^9(qx_pErucolWmN9fGEm9_?TV~xLhjUeHF-jo|*Zrq`Ja$fx06=iw z{q4O%-qN$dcxe$PU1CM}I$7}bOu4l*{0w{2W3sFBJ~h;lDm0g-bFk=Rs(jE?A^hR@ z8x$?&XyC9GwhaYFL#$k_)!8+avzmY@fYdHMXue{h$L^yuk{8f9_^nQ+Q z&B#JZUvR&C@MKq_i54<{bJeKA!^ii5ppWhOD)Zp)-@UVX;~>0)N?>T%=k^>oetaL8 zm&$cIoMN;NuX6guA!lR5{=A)fwYl%}_3CaJ3k!=owM?LUUBM8nX>V z%K-6wyymnR&w2OoP@n4zpsUj@BL>|8Ld|zF<&Z~Qd@T8#0afz7nfJf6#4?8=G z0Z{r~nZ>eAj@xJ&!lOWLd~mK#O6-QNoq}H&5t}A4==j}02pDVx_Tu|_b=UXPlvP%| z#G2D_e@zJh@4hEu*A8$9GB7c*QT?GiMN<|4yhhG5H3R1(8_FqsC_#Cem3(pliz^pA zKT|*F5_3KWpRV6OJ~waYiatNjZRfUreQuX{ez@^_!4dXxPf_99AK} + */ +async function readFolder(folderPath, ext = '') { + // 统一后缀格式:确保前面有一个点,且全小写 + const targetExt = ext ? (ext.startsWith('.') ? ext : `.${ext}`).toLowerCase() : ''; -const enterUIDRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/enterUID.png")); -const searchRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/search.png")); -const requestEnterRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/requestEnter.png")); -const requestEnter2Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/requestEnter.png"), 1480, 300, 280, 600); -const yUIRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/yUI.png")); -const allowEnterRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/allowEnter.png"), 1250, 300, 150, 130); -const targetsPath = "targets"; -let enterCount = 0; -let targetsRo; -let checkToEnd = false; -// 先初始化空数组 -let targetList = []; -let enteredPlayers = []; + const folderStack = [folderPath]; + const files = []; + + while (folderStack.length > 0) { + const currentPath = folderStack.pop(); + const filesInSubFolder = file.ReadPathSync(currentPath); // 同步读取当前目录 + const subFolders = []; + + for (const filePath of filesInSubFolder) { + if (file.IsFolder(filePath)) { + subFolders.push(filePath); // 子目录稍后处理 + } else { + // 后缀过滤 + if (targetExt) { + const fileExt = filePath.toLowerCase().slice(filePath.lastIndexOf('.')); + if (fileExt !== targetExt) continue; + } + + const fileName = filePath.split('\\').pop(); + const folderPathArray = filePath.split('\\').slice(0, -1); + files.push({ fullPath: filePath, fileName, folderPathArray }); + } + } + + // 保持同层顺序,reverse 后仍按原顺序入栈 + folderStack.push(...subFolders.reverse()); + } + + return files; +} (async function () { + await autoEnter(settings); +} +)(); + +/** + * 自动联机脚本(整体打包为一个函数) + * @param {Object} autoEnterSettings 配置对象 + * enterMode: "进入他人世界" | "等待他人进入" + * enteringUID: string | null + * permissionMode: "无条件通过" | "白名单" + * nameToPermit1/2/3: string | null + * timeout: 分钟 + * maxEnterCount: number + */ +async function autoEnter(autoEnterSettings) { + // ===== 配置解析 ===== + const enterMode = autoEnterSettings.enterMode || "进入他人世界"; + const enteringUID = autoEnterSettings.enteringUID; + const permissionMode = autoEnterSettings.permissionMode || "无条件通过"; + const timeout = +autoEnterSettings.timeOut || 5; + const maxEnterCount = +autoEnterSettings.maxEnterCount || 3; + + // 白名单 + const targetList = []; + [autoEnterSettings.nameToPermit1, autoEnterSettings.nameToPermit2, autoEnterSettings.nameToPermit3] + .forEach(v => v && targetList.push(v)); + + // ===== 模板 / 路径 ===== + const enterUIDRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/enterUID.png")); + const searchRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/search.png")); + const requestEnterRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/requestEnter.png")); + const requestEnter2Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/requestEnter.png"), 1480, 300, 280, 600); + const yUIRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/yUI.png")); + const allowEnterRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/allowEnter.png")); + const targetsPath = "targets"; + + // ===== 状态 ===== + let enterCount = 0; + let targetsRo = []; + let checkToEnd = false; + + // ===== 初始化 ===== setGameMetrics(1920, 1080, 1); const start = new Date(); log.info(`当前模式为:${enterMode}`); - // 依次判断并加入 - if (settings.nameToPermit1) targetList.push(settings.nameToPermit1); - if (settings.nameToPermit2) targetList.push(settings.nameToPermit2); - if (settings.nameToPermit3) targetList.push(settings.nameToPermit3); - - // 获取指定文件夹下所有文件 - let targetPngs = await readFolder(targetsPath, false); - - // 生成 targetsRo(使用 for...of) - targetsRo = []; + // 加载目标 PNG + const targetPngs = await readFolder(targetsPath, ".png"); for (const f of targetPngs) { - log.info(`找到文件${f.fullPath}`); - if (f.fullPath.endsWith('.png')) { - const mat = file.ReadImageMatSync(f.fullPath); - const ro = RecognitionObject.TemplateMatch(mat, 650, 320, 350, 60); - const baseName = f.fileName.replace(/\.png$/i, ''); - targetsRo.push({ ro, baseName }); - } + const mat = file.ReadImageMatSync(f.fullPath); + const ro = RecognitionObject.TemplateMatch(mat, 664, 481, 1355 - 668, 588 - 484); + const baseName = f.fileName.replace(/\.png$/i, ''); + targetsRo.push({ ro, baseName }); } + log.info(`加载完成共 ${targetsRo.length} 个目标`); - - log.info(`加载完成共${targetPngs.length}个目标`); - - while (new Date() - start < timeOut * 60 * 1000) { + // ===== 主循环 ===== + while (new Date() - start < timeout * 60 * 1000) { if (enterMode === "进入他人世界") { - //检验队伍编号 const playerSign = await getPlayerSign(); await sleep(500); - if (playerSign != 0) { - log.info(`加入世界成功,在队伍中的编号为${playerSign}`); + if (playerSign > 1) { + log.info(`加入成功,队伍编号 ${playerSign}`); break; - } else { - log.error(`不处于多人世界,开始尝试加入`); - await genshin.returnMainUi(); - await sleep(500); + } else if (playerSign === -1) { + log.warn("队伍编号识别异常,尝试按0p处理"); } - //反复敲门进入他人世界 - //我要cia进来llo - if (enteringUID) { - await keyPress("F2"); - //点击输入uid - await sleep(2000); - if (!await findAndClick(enterUIDRo)) { - await genshin.returnMainUi(); - continue; - } - await sleep(1000); - inputText(enteringUID); - //点击搜索 - await sleep(1000); - if (!await findAndClick(searchRo)) { - await genshin.returnMainUi(); - continue; - } - //判断是否成功搜索 - if (await confirmSearchResult()) { - await genshin.returnMainUi(); - continue; - } + log.info('不处于多人世界,开始尝试加入'); + await genshin.returnMainUi(); await sleep(500); - //点击申请加入 - await sleep(500); - if (!await findAndClick(requestEnterRo)) { - await genshin.returnMainUi(); - continue; - } - //等待加入完成 - await waitForMainUI(true, 20 * 1000); - } else { - log.error("未填写有效的uid,请检查后重试"); - break; - } - } else { - //等待他人进入世界 - if (enterCount < maxEnterCount) { - if (await isYUI()) { + if (!enteringUID) { log.error('未填写有效 UID'); break; } + + await keyPress("F2"); await sleep(2000); + if (!await findAndClick(enterUIDRo)) { await genshin.returnMainUi(); continue; } + await sleep(1000); inputText(enteringUID); + await sleep(1000); + if (!await findAndClick(searchRo)) { await genshin.returnMainUi(); continue; } + await sleep(500); + if (!await confirmSearchResult()) { await genshin.returnMainUi(); log.warn("无搜索结果"); continue; } + + await sleep(500); + if (!await findAndClick(requestEnterRo)) { await genshin.returnMainUi(); continue; } + await waitForMainUI(true, 20 * 1000); + + } else { // 等待他人进入 + const playerSign = await getPlayerSign(); + if (playerSign > 1) { + log.warn("处于他人世界,先尝试退出"); + let leaveAttempts = 0; + while (leaveAttempts < 10) { + if (await getPlayerSign() === 0) { + break; + } + await keyPress("F2"); + await sleep(1000); + await findAndClick(leaveTeamRo); + await sleep(1000); keyPress("VK_ESCAPE"); + await waitForMainUI(true); + await genshin.returnMainUi(); } - await genshin.returnMainUi(); - keyPress("Y"); - await sleep(250); - if (await isYUI()) { - log.info("处于y界面开始识别"); - let attempts = 0; - while (attempts < 5) { - attempts++; - if (permissionMode === "无条件通过") { - //无需筛选,全部通过 - if (await findAndClick(allowEnterRo)) { - //等待加入完成 - await waitForMainUI(true, 20 * 1000); - enterCount++; - break; - } - } else { - //需要筛选,开始识别第一行申请 - const result = await recognizeRequest(); - if (result) { - if (await findAndClick(allowEnterRo)) { - //等待加入完成 - await waitForMainUI(true, 20 * 1000); - enterCount++; - log.info(`允许${result}加入世界`); - // 把 result 加入 enteredPlayers,并立即去重 - enteredPlayers = [...new Set([...enteredPlayers, result])]; - await sleep(1000); - if (await isYUI()) { - keyPress("VK_ESCAPE"); - await genshin.returnMainUi(); - } - break; - } else { - if (await isYUI()) { - keyPress("VK_ESCAPE"); - await genshin.returnMainUi(); - } - } + } + if (enterCount >= maxEnterCount) break; + if (await isYUI()) keyPress("VK_ESCAPE"); await sleep(500); + await genshin.returnMainUi(); + keyPress("Y"); await sleep(250); - } + if (!await isYUI()) continue; + log.info("处于 Y 界面,开始识别"); + + let attempts = 0; + while (attempts++ < 5) { + if (permissionMode === "无条件通过") { + if (await findAndClick(allowEnterRo)) { + await waitForMainUI(true, 20 * 1000); + enterCount++; + break; + } + } else { + const result = await recognizeRequest(); + if (result) { + if (await findAndClick(allowEnterRo)) { + await waitForMainUI(true, 20 * 1000); + enterCount++; + log.info(`允许 ${result} 加入`); + notification.send(`允许 ${result} 加入`); + if (await isYUI()) { keyPress("VK_ESCAPE"); await sleep(500); await genshin.returnMainUi(); } + break; + } else { + if (await isYUI()) { keyPress("VK_ESCAPE"); await sleep(500); await genshin.returnMainUi(); } } - await sleep(500); } } - if (await isYUI()) { - keyPress("VK_ESCAPE"); - await genshin.returnMainUi(); - } + await sleep(500); } + + if (await isYUI()) { keyPress("VK_ESCAPE"); await genshin.returnMainUi(); } + if (enterCount >= maxEnterCount || checkToEnd) { - log.info("准备结束js"); checkToEnd = true; - if (await isYUI()) { - keyPress("VK_ESCAPE"); - await genshin.returnMainUi(); - } await sleep(20000); if (await findTotalNumber() === maxEnterCount + 1) { + notification.send(`已达到预定人数:${maxEnterCount + 1}`); break; - } else { - enterCount--; } + else enterCount--; } } - } + if (new Date() - start >= timeout * 60 * 1000) { + log.warn("超时未达到预定人数"); + notification.error(`超时未达到预定人数`); + } + + async function confirmSearchResult() { + for (let i = 0; i < 4; i++) { + const gameRegion = captureGameRegion(); + const res = gameRegion.find(requestEnter2Ro); + gameRegion.dispose(); + if (res.isExist()) return false; + if (i < 4) await sleep(250); + } + return true; + } + + async function isYUI() { + for (let i = 0; i < 5; i++) { + const gameRegion = captureGameRegion(); + const res = gameRegion.find(yUIRo); + gameRegion.dispose(); + if (res.isExist()) return true; + await sleep(250); + } + return false; + } + + async function recognizeRequest() { + try { + const gameRegion = captureGameRegion(); + for (const { ro, baseName } of targetsRo) { + if (gameRegion.find(ro).isExist()) { gameRegion.dispose(); return baseName; } + } + gameRegion.dispose(); + } catch { } + try { + const gameRegion = captureGameRegion(); + const resList = gameRegion.findMulti(RecognitionObject.ocr(664, 481, 1355 - 668, 588 - 484)); + gameRegion.dispose(); + let hit = null; + for (const res of resList) { + const txt = res.text.trim(); + if (targetList.includes(txt)) { hit = txt; break; } + } + if (!hit) resList.forEach(r => log.warn(`识别到"${r.text.trim()}",不在白名单`)); + return hit; + } catch { return null; } + } +} + +/** + * 通用找图/找RO并可选点击(支持单图片文件路径、单RO、图片文件路径数组、RO数组) + * @param {string|string[]|RecognitionObject|RecognitionObject[]} target + * @param {boolean} [doClick=true] 是否点击 + * @param {number} [timeout=3000] 识别时间上限(ms) + * @param {number} [interval=50] 识别间隔(ms) + * @param {number} [retType=0] 0-返回布尔;1-返回 Region 结果 + * @param {number} [preClickDelay=50] 点击前等待 + * @param {number} [postClickDelay=50] 点击后等待 + * @returns {boolean|Region} 根据 retType 返回是否成功或最终 Region + */ +async function findAndClick(target, + doClick = true, + timeout = 3000, + interval = 50, + retType = 0, + preClickDelay = 50, + postClickDelay = 50) { + try { + // 1. 统一转成 RecognitionObject 数组 + let ros = []; + if (Array.isArray(target)) { + ros = target.map(t => + (typeof t === 'string') + ? RecognitionObject.TemplateMatch(file.ReadImageMatSync(t)) + : t + ); + } else { + ros = [(typeof target === 'string') + ? RecognitionObject.TemplateMatch(file.ReadImageMatSync(target)) + : target]; + } + + const start = Date.now(); + let found = null; + + while (Date.now() - start <= timeout) { + const gameRegion = captureGameRegion(); + try { + // 依次尝试每一个 ro + for (const ro of ros) { + const res = gameRegion.find(ro); + if (!res.isEmpty()) { // 找到 + found = res; + if (doClick) { + await sleep(preClickDelay); + res.click(); + await sleep(postClickDelay); + } + break; // 成功即跳出 for + } + } + if (found) break; // 成功即跳出 while + } finally { + gameRegion.dispose(); + } + await sleep(interval); // 没找到时等待 + } + + // 3. 按需返回 + return retType === 0 ? !!found : (found || null); + + } catch (error) { + log.error(`执行通用识图时出现错误:${error.message}`); + return retType === 0 ? false : null; + } } -)(); //等待主界面状态 async function waitForMainUI(requirement, timeOut = 60 * 1000) { - log.info(`等待至多${timeOut}毫秒`) const startTime = Date.now(); + let logcount = 0; while (Date.now() - startTime < timeOut) { const mainUIState = await isMainUI(); + logcount++; if (mainUIState === requirement) return true; - const elapsed = Date.now() - startTime; const min = Math.floor(elapsed / 60000); const sec = Math.floor((elapsed % 60000) / 1000); const ms = elapsed % 1000; - log.info(`已等待 ${min}分 ${sec}秒 ${ms}毫秒`); - - await sleep(1000); + if (logcount >= 50) { + logcount = 0; + log.info(`已等待 ${min}分 ${sec}秒 ${ms}毫秒`); + } + await sleep(200); } log.error("超时仍未到达指定状态"); return false; } + //检查是否在主界面 async function isMainUI() { // 修改后的图像路径 @@ -230,213 +366,59 @@ async function isMainUI() { return false; // 发生异常时返回 false } attempts++; // 增加尝试次数 - await sleep(50); // 每次检测间隔 50 毫秒 + await sleep(250); // 每次检测间隔 250 毫秒 } return false; // 如果尝试次数达到上限或取消,返回 false } //获取联机世界的当前玩家标识 async function getPlayerSign() { - const picDic = { - "1P": "assets/RecognitionObject/1P.png", - "2P": "assets/RecognitionObject/2P.png", - "3P": "assets/RecognitionObject/3P.png", - "4P": "assets/RecognitionObject/4P.png" - } - await genshin.returnMainUi(); - await sleep(500); - const p1Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync(picDic["1P"]), 344, 22, 45, 45); - const p2Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync(picDic["2P"]), 344, 22, 45, 45); - const p3Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync(picDic["3P"]), 344, 22, 45, 45); - const p4Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync(picDic["4P"]), 344, 22, 45, 45); - moveMouseTo(1555, 860); // 移走鼠标,防止干扰识别 - const gameRegion = captureGameRegion(); - // 当前页面模板匹配 - let p1 = gameRegion.Find(p1Ro); - let p2 = gameRegion.Find(p2Ro); - let p3 = gameRegion.Find(p3Ro); - let p4 = gameRegion.Find(p4Ro); - gameRegion.dispose(); - if (p1.isExist()) return 1; - if (p2.isExist()) return 2; - if (p3.isExist()) return 3; - if (p4.isExist()) return 4; - return 0; -} - -async function confirmSearchResult() { - maxAttempts = 5; - for (let attempts = 0; attempts < maxAttempts; attempts++) { - const gameRegion = captureGameRegion(); - try { - const result = gameRegion.find(requestEnter2Ro); - if (result.isExist) { - return false; // 成功立刻返回 - } - } catch (err) { - } finally { - gameRegion.dispose(); - } - if (attempts < maxAttempts - 1) { // 最后一次不再 sleep - await sleep(250); - } - } - return true; -} - -async function findAndClick(target, maxAttempts = 20) { - for (let attempts = 0; attempts < maxAttempts; attempts++) { - const gameRegion = captureGameRegion(); - try { - const result = gameRegion.find(target); - if (result.isExist) { - await sleep(50); - result.click(); - await sleep(50); - return true; // 成功立刻返回 - } - log.warn(`识别失败,第 ${attempts + 1} 次重试`); - } catch (err) { - } finally { - gameRegion.dispose(); - } - if (attempts < maxAttempts - 1) { // 最后一次不再 sleep - await sleep(250); - } - } - log.error("已达到重试次数上限,仍未找到目标"); - return false; -} - -//检查是否在主界面 -async function isYUI() { - // 尝试次数设置为 5 次 - const maxAttempts = 5; let attempts = 0; - while (attempts < maxAttempts) { - try { - let gameRegion = captureGameRegion(); - let result = gameRegion.find(yUIRo); - gameRegion.dispose(); - if (result.isExist()) { - //log.info("处于Y界面"); - return true; // 如果找到图标,返回 true - } - } catch (error) { - log.error(`识别图像时发生异常: ${error.message}`); - - return false; // 发生异常时返回 false + while (attempts < 10) { + attempts++; + const picDic = { + "0P": "assets/RecognitionObject/0P.png", + "1P": "assets/RecognitionObject/1P.png", + "2P": "assets/RecognitionObject/2P.png", + "3P": "assets/RecognitionObject/3P.png", + "4P": "assets/RecognitionObject/4P.png" } - attempts++; // 增加尝试次数 - await sleep(250); // 每次检测间隔 50 毫秒 - } - return false; // 如果尝试次数达到上限或取消,返回 false -} - -// 确认当前申请是否为目标 -async function recognizeRequest() { - // 1. 模板匹配 - try { + await genshin.returnMainUi(); + await sleep(500); + const p0Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync(picDic["0P"]), 200, 10, 400, 70); + p0Ro.Threshold = 0.95; + p0Ro.InitTemplate(); + const p1Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync(picDic["1P"]), 200, 10, 400, 70); + p1Ro.Threshold = 0.95; + p1Ro.InitTemplate(); + const p2Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync(picDic["2P"]), 200, 10, 400, 70); + p2Ro.Threshold = 0.95; + p2Ro.InitTemplate(); + const p3Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync(picDic["3P"]), 200, 10, 400, 70); + p3Ro.Threshold = 0.95; + p3Ro.InitTemplate(); + const p4Ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync(picDic["4P"]), 200, 10, 400, 70); + p4Ro.Threshold = 0.95; + p4Ro.InitTemplate(); + moveMouseTo(1555, 860); // 移走鼠标,防止干扰识别 const gameRegion = captureGameRegion(); - for (const { ro, baseName } of targetsRo) { - if (gameRegion.find(ro).isExist()) { - gameRegion.dispose(); - return baseName; - } - } + // 当前页面模板匹配 + let p0 = gameRegion.Find(p0Ro); + let p1 = gameRegion.Find(p1Ro); + let p2 = gameRegion.Find(p2Ro); + let p3 = gameRegion.Find(p3Ro); + let p4 = gameRegion.Find(p4Ro); gameRegion.dispose(); - } catch (err) { - log.error(`模板匹配异常: ${err.message}`); + if (p0.isExist()) { log.info("识别结果为0P"); return 0; } + if (p1.isExist()) { log.info("识别结果为1P"); return 1; } + if (p2.isExist()) { log.info("识别结果为2P"); return 2; } + if (p3.isExist()) { log.info("识别结果为3P"); return 3; } + if (p4.isExist()) { log.info("识别结果为4P"); return 4; } + await genshin.returnMainUi(); + await sleep(250); } - - // 2. OCR 仅识别一次,固定区域 650,320,350,60 - try { - const gameRegion = captureGameRegion(); - const resList = gameRegion.findMulti( - RecognitionObject.ocr(650, 320, 350, 60) - ); - gameRegion.dispose(); - - let hit = null; - for (const res of resList) { - const txt = res.text.trim(); - for (const whiteItem of targetList) { - if (txt === whiteItem) { - hit = whiteItem; - break; - } - } - if (hit) break; - } - - // 如果未命中,输出所有识别结果 - if (!hit) { - for (const res of resList) { - log.warn(`识别到"${res.text.trim()}",不在白名单`); - } - } - - return hit; // 命中返回白名单项,未命中返回 null - } catch (err) { - log.error(`OCR 识别异常: ${err.message}`); - } - - return null; -} - - -// 定义 readFolder 函数 -async function readFolder(folderPath, onlyJson) { - // 新增一个堆栈,初始时包含 folderPath - const folderStack = [folderPath]; - - // 新增一个数组,用于存储文件信息对象 - const files = []; - - // 当堆栈不为空时,继续处理 - while (folderStack.length > 0) { - // 从堆栈中弹出一个路径 - const currentPath = folderStack.pop(); - - // 读取当前路径下的所有文件和子文件夹路径 - const filesInSubFolder = file.ReadPathSync(currentPath); - - // 临时数组,用于存储子文件夹路径 - const subFolders = []; - for (const filePath of filesInSubFolder) { - if (file.IsFolder(filePath)) { - // 如果是文件夹,先存储到临时数组中 - subFolders.push(filePath); - } else { - // 如果是文件,根据 onlyJson 判断是否存储 - if (onlyJson) { - if (filePath.endsWith(".json")) { - const fileName = filePath.split('\\').pop(); // 提取文件名 - const folderPathArray = filePath.split('\\').slice(0, -1); // 提取文件夹路径数组 - files.push({ - fullPath: filePath, - fileName: fileName, - folderPathArray: folderPathArray - }); - //log.info(`找到 JSON 文件:${filePath}`); - } - } else { - const fileName = filePath.split('\\').pop(); // 提取文件名 - const folderPathArray = filePath.split('\\').slice(0, -1); // 提取文件夹路径数组 - files.push({ - fullPath: filePath, - fileName: fileName, - folderPathArray: folderPathArray - }); - //log.info(`找到文件:${filePath}`); - } - } - } - // 将临时数组中的子文件夹路径按原顺序压入堆栈 - folderStack.push(...subFolders.reverse()); // 反转子文件夹路径 - } - - return files; + log.warn("超时仍未识别到队伍编号"); + return -1; } async function findTotalNumber() { @@ -477,4 +459,4 @@ async function findTotalNumber() { log.info(`当前联机世界玩家总数(含自己):${count}`); return count; -} \ No newline at end of file +} diff --git a/repo/js/AutoEnter/manifest.json b/repo/js/AutoEnter/manifest.json index 406b36eb8..abb27dfc2 100644 --- a/repo/js/AutoEnter/manifest.json +++ b/repo/js/AutoEnter/manifest.json @@ -1,11 +1,9 @@ { "manifest_version": 1, "name": "进入联机状态", - "version": "0.0.4", - "tags": [ - "狗粮" - ], - "description": "配合AAA狗粮联机团购使用,自动进入别人世界或批准别人加入", + "version": "1.1.0", + "tags": [], + "description": "自动进入指定uid世界或批准别人加入,用于进入小号世界采集等", "saved_files": [ "records/*.txt" ], diff --git a/repo/js/AutoEnter/targets/火山老师.png b/repo/js/AutoEnter/targets/火山老师.png index 6c047f973161cd714fe784f55664484c5574a353..a5c5094a5a5f108c5e04dba07b1ba4b0f94b40b4 100644 GIT binary patch literal 7866 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 Z>FKdzeF+EcTj0DI4XmQ0j8uFT`9G6+UoQXv literal 7694 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 { - let captureRegion = captureGameRegion(); - let res = captureRegion.Find(paimonMenuRo); - captureRegion.dispose(); - return !res.isEmpty(); -}; - - -// 获取设置 -/*const settings = { - questName: "默认委托", - questLocation: "默认地点", - trackNumber: "1" - //runMode: "录制模式", -};*/ -const questName = settings.questName -const questLocation = settings.questLocation -const trackNumber = settings.trackNumber -const runMode = settings.runMode - - -// 初始化追踪数据 -let trackData = { - "info": { - "name": `${settings.questName}-${settings.trackNumber}`, - "type": "collect", - "author": settings.author, - "version": settings.version, - "description": settings.description, - "map_name": "Teyvat", - "bgi_version": "0.45.0" - }, - "positions": [] -}; - -// 检查是否需要创建新文件夹 -function checkOrCreateFolder() { - const folderName = `assets/${settings.questLocation}-${settings.questName}`; - /*if (!file.existsSync(folderName)) { - file.writeTextSync(folderName, { recursive: true }); - log.info(`创建文件夹: ${folderName}`); - }*/ -} - -// 保存追踪数据 -async function saveTrackData() { - const filePath = `assets/${settings.questLocation}-${settings.questName}/${settings.questName}-${settings.trackNumber}.json`; - //const fileName = `${settings.questName}-${settings.trackNumber}.json`; - - try { - await file.writeTextSync(filePath, JSON.stringify(trackData, null, 2)); - log.info(`追踪数据已保存到: ${filePath}`); - } catch (error) { - log.error(`保存追踪数据失败: ${error}`); - } -} - -// 获取当前位置并添加到追踪数据 -async function recordPosition() { - if (isInMainUI()) { - try { - const position = genshin.getPositionFromMap(); - log.info(`从小地图获取坐标: X=${position.X}, Y=${position.Y}`); - trackData.positions.push({ - "id": trackData.positions.length + 1, - "x": position.X, - "y": position.Y, - "action": "", - "move_mode": "dash", - "action_params": "", - "type": "path" - }); - } - catch (error) { - log.error(`获取坐标失败: ${error.message}`); - await sleep(500); - return await recordPosition();; - } - } else { - try { - await genshin.setBigMapZoomLevel(1.0); - const position = genshin.getPositionFromBigMap(); - log.info(`从大地图获取坐标: X=${position.X}, Y=${position.Y}`); - trackData.positions.push({ - "id": trackData.positions.length + 1, - "x": position.X, - "y": position.Y, - "action": "", - "move_mode": "walk", - "action_params": "", - "type": "target" - }); - log.info("已在大地图界面,已生成地图追踪,脚本结束"); - await saveTrackData(); - return false; - } - catch (error) { - log.error(`获取坐标失败: ${error.message}`); - await sleep(500); - return await recordPosition();; - } - } - return true; -} - -// 主逻辑 -async function main() { - log.info("委托地图追踪录制开始"); - - checkOrCreateFolder(); - - if (settings.runMode === "运行模式") { - const filePath = `assets/${settings.questLocation}-${settings.questName}/${settings.questName}-${settings.trackNumber}.json`; - log.info(`正在运行地图追踪任务文件: ${filePath}`); - await pathingScript.runFile(filePath); - return; - } - - let continueRecording = true; - let recordCount = 0; - if (isInMainUI()) { - const position = genshin.getPositionFromMap(); - log.info(`从小地图获取坐标: X=${position.X}, Y=${position.Y}`); - - trackData.positions.push({ - "id": trackData.positions.length + 1, - "x": position.X, - "y": position.Y, - "action": "", - "move_mode": "walk", - "action_params": "", - "type": "teleport" - }); - } else { - log.info("不在主界面,请返回主界面后重新启动脚本"); - return; - } - await sleep(3000); - while (continueRecording && recordCount < 999) { // 限制最大录制次数,避免无限循环 - continueRecording = await recordPosition(); - if (continueRecording) { - recordCount++; - await sleep(3000); // 每3秒录制一次 - } - } - - log.info("委托地图追踪录制结束"); -} - -main(); \ No newline at end of file diff --git a/repo/js/AutoTranscribePathing/manifest.json b/repo/js/AutoTranscribePathing/manifest.json deleted file mode 100644 index 864931e66..000000000 --- a/repo/js/AutoTranscribePathing/manifest.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "manifest_version": 1, - "name": "地图追踪录制", - "version": "1.2", - "bgi_version": "0.45.0", - "description": "自动地图追踪录制,每3秒从小地图获取一次当前坐标,打开大地图结束录制", - "tags": [ - "工具", - "委托" - ], - "authors": [ - { - "name": "星野", - "links": "https://github.com/LX666-666" - } - ], - "settings_ui": "settings.json", - "main": "main.js" -} \ No newline at end of file diff --git a/repo/js/AutoTranscribePathing/settings.json b/repo/js/AutoTranscribePathing/settings.json deleted file mode 100644 index dd127462e..000000000 --- a/repo/js/AutoTranscribePathing/settings.json +++ /dev/null @@ -1,48 +0,0 @@ -[ - { - "name": "questName", - "type": "input-text", - "label": "委托名称", - "default": "默认委托" - }, - { - "name": "questLocation", - "type": "input-text", - "label": "委托地点", - "default": "默认地点" - }, - { - "name": "trackNumber", - "type": "input-text", - "label": "地图追踪编号", - "default": 1 - }, - { - "name": "runMode", - "type": "select", - "label": "运行模式", - "options": [ - "录制模式", - "运行模式" - ], - "default": "录制模式" - }, - { - "name": "author", - "type": "input-text", - "label": "作者", - "default": "星野工具箱" - }, - { - "name": "description", - "type": "input-text", - "label": "描述", - "default": "自动地图追踪录制" - }, - { - "name": "version", - "type": "input-text", - "label": "版本", - "default": "1.0" - } -] \ No newline at end of file