From 014e9abdbedf6f570629276fc7454fdcd05e6219 Mon Sep 17 00:00:00 2001 From: xaoxuu Date: Tue, 20 Jul 2021 16:04:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Contents.json | 22 ++++++++++ .../prohud.rainbow.circle@2x.png | Bin 0 -> 10224 bytes .../prohud.rainbow.circle@3x.png | Bin 0 -> 19174 bytes .../prohud.trash.imageset/Contents.json | 22 ++++++++++ .../prohud.trash.imageset/prohud.trash@2x.png | Bin 0 -> 4041 bytes .../prohud.trash.imageset/prohud.trash@3x.png | Bin 0 -> 6698 bytes Example-Old/Example/BaseListVC.swift | 9 +++- Example-Old/Example/TestGuardVC.swift | 5 +++ Example-Old/Podfile.lock | 6 +-- Example-Old/README.md | 4 ++ .../Example-Xcode11/SceneDelegate.swift | 2 +- Example-Xcode11/README.md | 2 + Package.swift | 2 +- ProHUD.xcodeproj/project.pbxproj | 30 ++++++------- Source/Alert/AlertConfig.swift | 4 +- Source/Alert/AlertController.swift | 20 +++------ Source/Alert/AlertModel.swift | 8 ++-- Source/Guard/GuardConfig.swift | 2 +- Source/Guard/GuardController.swift | 41 +++++------------- Source/Guard/GuardModel.swift | 2 +- Source/HUDConfig.swift | 15 ++----- Source/HUDController.swift | 6 +-- Source/HUDUtils.swift | 6 +-- Source/ProHUD.swift | 25 +++++------ Source/Toast/ToastConfig.swift | 2 +- Source/Toast/ToastController.swift | 14 ++---- Source/Toast/ToastModel.swift | 6 +-- 27 files changed, 134 insertions(+), 121 deletions(-) create mode 100644 Example-Old/Example/Assets.xcassets/prohud.rainbow.circle.imageset/Contents.json create mode 100644 Example-Old/Example/Assets.xcassets/prohud.rainbow.circle.imageset/prohud.rainbow.circle@2x.png create mode 100644 Example-Old/Example/Assets.xcassets/prohud.rainbow.circle.imageset/prohud.rainbow.circle@3x.png create mode 100644 Example-Old/Example/Assets.xcassets/prohud.trash.imageset/Contents.json create mode 100644 Example-Old/Example/Assets.xcassets/prohud.trash.imageset/prohud.trash@2x.png create mode 100644 Example-Old/Example/Assets.xcassets/prohud.trash.imageset/prohud.trash@3x.png create mode 100644 Example-Old/README.md create mode 100644 Example-Xcode11/README.md diff --git a/Example-Old/Example/Assets.xcassets/prohud.rainbow.circle.imageset/Contents.json b/Example-Old/Example/Assets.xcassets/prohud.rainbow.circle.imageset/Contents.json new file mode 100644 index 0000000..266990e --- /dev/null +++ b/Example-Old/Example/Assets.xcassets/prohud.rainbow.circle.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "prohud.rainbow.circle@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "prohud.rainbow.circle@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example-Old/Example/Assets.xcassets/prohud.rainbow.circle.imageset/prohud.rainbow.circle@2x.png b/Example-Old/Example/Assets.xcassets/prohud.rainbow.circle.imageset/prohud.rainbow.circle@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..51fdd4017191d2d6ee97c73f5a30889ec84b448d GIT binary patch literal 10224 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91V4wp41ONa40RR91U;qFB0I4%yP5=NWT1iAfRCodHoe7X#S9#~Zd*9x# zcd1*g)snnRHnL=l?bw)LY{rgb2w+1Pm=qyQDwHRaOloRUgJCv?Dws^o6gbo*1v4RJ zLX3^UHk(<3!3f8I7i1wUTb5-l-I97=UiaJXyLW#7+l$_P@AW2IvLxo~I{ofF_uR95 z-*>+Ao$q|-T*uB(2!f!6s%;~@p0I;(IiZJ;A*2Wif=dwigfgK>$PxOiPM!%Qv4B>Plo#GmT>Y%!)PR{8j#%U{%#>HsdU4)MlmMjADNcN;nm^0O9 zfs-)5Fl;ut&w@O0zE5z>cL>S2x#^5m;;oiw*=TRiBqN-1yU z(xkb5$znlZ4ovGpTQ?RrKbEwzld^czN=r1YvLM}QmF)RuEf-n5d9^t$8!Sk581z~U zrbzG!!lzC(Ar`O7VpUz>Imo|>$M+N3=Svn?fc`RS&Sb9@hkj-GfuC5S*lU)1!J0|~ z=6I9nHd7Y(FeJ4ND?D54+1~&b4^WCA2>-%AT{|%nq_UPztfY5rvZ?qwi*;RU&1
fQzMT|_=WxSr6sjKH^G@_F+Ho-%*n z33JB~E8{Q2`Mq#+(Gqb_xJ18n%yV3G!GA)^W<#KeU{)ioNf3DC;ai0~DsF}z&}Q-U zMjIRNv~uQZTY1I1EV1EY6xw;-4{KpN$@N_jVxT7XSA5$TIjn34NDC5aD}gx2CgD{vWTPsJ^BV#2 z9#aO7se=>BHxdQrdmT1D*lMNyDQk*dV8LZKTI`w|EVF$pMK;Pm%v)o^hakci!n;@L z-@K(QH-8YXiP2XGZ)^B2GTU-5TmI1Z%m%(@{wOj%*9TW4&trjAVhOmEfz%I>=@n!< zB1Fj60P8?Y;^5(iS%*w21UCR5viZ#09EM}ZEs-7hLTIaWSY>yoc`q_($9rrl-D=*B zOD%o#KeP0uSHM2=_K1fm<_-vX^8WQ8Of@7phO`hUX44+kkGC} z&q8|&{J2%dHrnv6ly&sCS!ODRCKcG^%5`Sjf6Fp&y3XR4Z6a3{UI!9IzX1_mtb4M| zh=#c@Cl8Q+1L=Q2s1rE>8jTJ9&?@`xvvU6vXflUT3Vpbo|A-eKCIb~ASH|FU5zA+6 zaCs2(#r23F#fM_SqX)>+(5TA9&7;Cg{_~K6+IW)zH^zYOA(o9%xPa`rJJs^?Crm8v1~)FS>5qQi13(lI$3DcnkDB2^6wz=mkH7SD$boe zV3Yg5WXZ!1nS1;>i^bsXL>XkpELMqw1Oy7)8JG}@N+~3P>`;;jIpMTnI-T@r1GKmNl;l zI~k3Si;)H4oB9WrgJf~B`awO+#?=&6pKy^F!ihcJJ{@!ftDQmVV^W%sZM2U}T>6V$TRwmG6JkyL|Gx=x2v~LTr3%n_D$FngNBXw{(P%cV$8&K#V?kw-9+6{!E>)j25F*%RfQzM47Hf-Hg&t8EE)!^MI7y&H5#p5f1c^r& zL|Pb{Q7lWn#4HfQ2{kZeI>b+TKE0D_P=Dr&p|Vhnjhg@DkFAu$Wb!Zn(Ax7_pxLVA_SJ)zyP?;wL&(q0*15-mQCasMUz&170wGZW^4AKUP630 zt5utq+f%5MUIEE0OQ;jT*@#6APVigcB7(q9ocT!Fi$e(7M_M0hRG2WfdSz?bwaapU z`+2jWW3{Ev+QKMcVOX>WK*&!YXHEX-boTl|y z=32lGK~QG7*CR|FMge%99*Lyv-)T1TG?`MF`2c&9gQ_WT#NL{xh-uXW!Ya}$>Uv$M1az97NE0yKqM@_(E8~JpX1f)9^7Fh>}MM(|F?|@Qa9x zADegVANalBQmGtV%}`cM!=x)gx2XIyp=YZVu$WUp%xguBkStQl^o>MMq!x~M6bt49=1o0h z@%RLsK-WdHaRS7L7LkyrA=8M%mj!S?gPXJBUnA@Y@fA^3Ygu{CBu+xO4NTS*ibH14 z{SVX#=8hG{Ai;E3o$iUSV#vS}i-1-q9m%Cy;SxUe%|i@oewjsi$Q~cHiLX9{9jV2d zu72Zm#}3nlxDyUpzdES-a%dPC8)| zWnA+)v)g`waJW_2CMyt1=Peb){j`OFSK?_tkYQYHPB1u!13BiEbWpI4mtM5ox4((< z79pH6x_<_zby+qf0I9Tw+g_czQtCG+_ZS?%lRD?E$SjdXTR4R^+&Ho}kw=8U5*3zx zJq?bLN>pcc;(FD`%{G10EWPDK-08Y%+hWdJzG3d`=oJtlR6jw!gQ^@r09R`e^FSpo zjStNTgPq4XFo_CVij^%ZQ^gOSu;Q*~Yu^+uh0{8yBft!$?vA9aFz5{Zz?}Tg5HWCh z(2Q_nY7mMWshaXmfF9w%r3;Nc3jnr%JMXJzt3I+oqSN!pz3ktcd;QmFQw!4-6bY%d z=)A!KZ3xwBi79wn;z$H^5o!FlWdDd&zVQ&NextPwxVup=s3QPx-9>cb} zS!j)*X2I$SYqJ8^$8=H74co}~zGHrlxk(g0K7-@A*xFKlmnW^WPo)uPmTRRSGPWKF z8A9W8NTzvkJo|3luf)#AhZy6!>mHpc5l&mDx&QG$;7^nWp=#hPT9;nK5{#Mjr>y(n zVJrWvt``Wm!tor`65!v>J>kL$^5%^_ZiR_ohBI7dEvR4WW)efl%jLlOzdIv2zqSd^ z#!VLgv%8no1FG|oZjwSZ$_@|P)T2MZ*f?4JSl1C8&k=yG!K@{82S4#bWq=9Hk1!b@ z!^F(&)C1{=A79gTX*){=X**|-%wMe9?$y^>?0p|xELp?nQbv57$Xw03U*2z1FCamp zux$p{VeA|Mxcg&5M6h@)viROV;aiEzq~FAti<*{TkY%7pN*@`g7ZA28>& zm}E7q%aqUH}W@}a7SD(d*K6?+fX=CNi5=X1K&+ei@+Kc(@fY;yF; zs@TZm+T^tb@E+qu&wr|qKg(jAfBt){SFnP&M9};|>mVt4RWP9|PL0{P-E$P0@VhiKINddZ8*Por#n`h!n&hKE(#^$pW zkTD=!#F0TRyslW+Fl!`x_tn1sMny2I4tFC;1)YPye+l`26e^1QPof93{?@56DbLmL z^jW)E|6yj>5i!&*+^Yv{Bg|o0UC2lDc;yj` zc}vyxm2p+(9q(UKWzVKW?r*+j(dr6`9xAAUmNk7esIu%s=r6_NgAB}d>gYBR;PsK5 z)pI6BEQJ$QDOom8&Q+q1+(=lMR>mHghJ~PV$!=0~npv7_#aw|8kPLLqH$}2MCvL8| za#593ESN6H2_dktW*O_s80rc($tJbIQJ8sRR^rcL;c!BpAzCG$%J`Vdq0*S_?OiOSs z83)*d;t(ULrAQVeMv_@OoL;=EF4~GSG=Z}$^L8k?zB;>e>w4XWMcY%1;RP;+#F?Z5bB?4gx3Tm#E8(bSUftxihY-nQnt4cvvEYyZB2`J)9T{RrfX;I zx={2kTxXogV&hnTM=fXP*F24OGVZcT`$?nKn0aU$n);A&;pqK!zvHeKY`dm#%mm4*-abQ z{CI{9Z5jK;h;NVPaZ-ir z18t0mf@TR(sDMmY0zaHe%k<18=1-3e3;k>}`pHPyp27`rxVedVR8Wa3QRmkLV)#K- zVkjygUq>W3E*t(F9F-Xh{mL2}cP_H=_!TSxtRh94$(P6UiSd+uS-~{2BA5~ZM3y-W zx>)`~%4!h6r(dg&WnLUiX6&(X2*AeYv1XPgDcEVSELqSzf^DbgA~=XS zatoITk|sn?C}v`|XCko2$J6NfYoPiFg-cXL6)0Y^Jn=2@4qcvmkjFR~A7+6H0!UK8 z^BNt0;)TX=YQJ5V7&Q zlwhB+v(*Nj?RGr2#s-?yD<&=Dfpi_c0N3N@jiku1tedipm#(VCLs0~vU)h}Pz-2FN z;Idtl&Y{70h&@sNH162GB=U@9$=1rza4t}CStAamS2WK)wkd6CxhfiYj@)^@eKzj* zplq}uiB_wTW?T|>`#=M*lWDOsTz@RK!oHttF)R+&;^8C2z%$I*J0-eb(pSf+hv#xEW1geX z$FT;(*{hh0wjq97nPB0-6^;ech!{~}SQn|`gM6(6#L#|Xp-RuG0O^V)vqEa=+RjnH@FA28>UNh zpocalO~Wh>G#S#INcXdG)7Ofs;3?6xGGmF*@-y@5^v{zbz%GJvm z%>L=|AK3(zJy)PSQL%w%k{rIUnwjnfHmpD7mF-g(VkX>$ew*|7Ww#Qp^8?&5xuV97y0n<{}YWoi|-CRGK#6aY~$&& zjb+McH8LJ71k>UuL^w$E)1IxlxNdS9;(Qj3_g7~}C$RInw^|#=KWewS5U(K6SfHih zaA9UTs^R}{9{++3;naJ!Ly_J4N56B_vi>M@ph4^K`cOdRB{<8L^S2PMhcH>sCXUgp zm;WKoX9@5y+03ALI>YXkwYI9f#nQ$0a8jnT)^wI$QZr;^P(`wC0Vp9Szufnk1yYve45oyGKYvxRHn zT*hRG(litbULf-!loUFBCLFLiEu+RC4|R`L4d{SZ}!8XuiD|fyz9<#6^kja({>AAL4I3n^hWm@bkF-Q>=knV;>)3?3ItqO=IG-lK%(K6$PLrUp z9c!)*k7tn~iDNVnJ(bWjtsbD`WflXeq+dMp$;FbLvCm(;_jnDXOZSNgin_XMm%q*# z^63SBx@6gn32W`HTO*mnbu||6A-72GotPiaUwJ9!I+>p}v6w!nLL>81k0N+x{4smr z=>Mv#=$RgI;Ohf6w7cGoVX=Daut71W$0o*7X3{pjVRh|rAsh?WA)N0cP(1+stqHlSbdYy7NZcoV}EFVVz!!>{~kCtFyAt z9Qe0(F#mic?o7PN9WL0OzwSNhs)ehEtbREy6APp!Yt>)6tcTr&H;3r@Fu#IuN*_jHZanE*r`VgmgEv(@!RDX?o zQdr_0j;-F-S({Y26^`d1LIApku==sNr(9@Gu)Sx8ZEd+E^!CkVSd5P6ErW4xxiC;V zVjp?_9rT2~%YF5frx)k{{J*@!QTdCvO9#)20V~=yB)3e|Bpp7egPdYTEXAz}TmROT z9GPFIEq!bT$8+t85MUv2K~egZX*q@Bf!klPw{)gK*vocmbRNW zywf&2SK=!~55N;(`9QVBCHNNU9KgSLdd%MQ-HPoUJ$aeC{5nj(Q8-+*=RS4F_J4Kx z+KxD1E+$gN6?83Ebca(@dah}+?n~!ZcxS68TneXk(2xK#l)97DA)#mAy0qm=yC(Y% z>nL%+X=o3beX_h?q$fm}9?1W(H?Zp;&fA~v^z7*5sV78Xq-4*2;fOu)(U+}%4<|fE zTDY`!NYuz2uklgGUX~dP3TeJ?u-R_j*GLn z{HF76u`4@nww4kTj3|Aolg@KZjYAs}gO^TK(T;nF!Do!@@An0E%>zaI#8YJ(E}R5b z<|%PDy3E<6FW-069=-cHd+ui=Hi`u02+)%R>Ec42Sc$_qFgN?1WxMou)>*2vF4LVe zxNKOKa+(*AX)Gf|5A9Rp15^9#|L(iTp7Fm02WeKkU^bEb>9E+-0~^ZSYzGhhE6aJC zLgSUo+JmppY;0n>@OxQ_4t@wFgA(2Mn^|% zv=unRlzJ4B^tu^(&y}M4NY|Kq!UHCva#(<&Jr>);dqmIq?^tUaZ{*nf=tN0efAWX+ zLAe2l@F6n!8^RoHYP!(gwfPV1_@P7ga)pCD5Jz1TOggXt9_u)2lj#ZToZv+ANF%0S z7p*i{W#lQqF3bsfL^*ww1Gl=^6yC}=UN|T;^ z+>BFj^UOGxqa)?;T{?oEv470B{ljKIKW_FEzvC&E&Y8cwZe7NgHvlIxQv1G<CUKl43+j))2w`1r zFZ3E@p&h+Ho=jQGHpede;0BA;>--Oc{I`cME$~k>ilxB2NYqP^ND4vCeKUvN`5aAr z@6bJVFvBUbO_R1_bhTwcg`~YYXj++9nU0i9naYQCdW1x#%(QrPd#iWT7}m`g0mgUOs4X<gTmP7z3S*92K2AOFJJ2%P@ zZ*SRfyG^FX?7{KR*`d;2n@CMqmUYni#s%5Sr6eTcgEZoxB}T{aBd8_Duff>eMI z^hJqVdhSF<#xOhoZ|h4iqf8E?CF#_u#-NQHI(e}<%SkNB16C?^O%qHQoA0H@SuGq( zUIqN~OKdJ|Wg%N)QFJaaew5+zQKt!{#%*7-$Fm9pvuCUFK4XLqT`F6O0Vs{EFR}Py_11`mW59SD{4QWdTG`*Se1od6#&5y#M=l@4#Q# zzS1++94^~6$eP6+2W>|_Hl<*P?d!YM`iF0x-pl}5wUDuVpehpJ4M5t8mI#FzDefXb zoL(5m>pPV3^f-x}BH~YrEorzv&43;{pK)4b6CQv?zGF7dTyVLf3PsXQff;?vz-Kdh3AfDF7RT4Z$Jv;yaqt(0;e|ud2py+ntvp5 zBb0MlSaTvZ4`8^0Q9!g9LS>0Tm?Ub$wIrg;rp4E-OxQcNn7#kvjJ4osRkOmb>`wY4 zJ`{QKFe8q>Ob(I$uMRwn3&-O}AF;=fL42|G*v2gpR@D=y*K=nZEUY;pLFI73_ik{c zRgX3HJ^RGR_=spvddjX|QL;a}cC~G3cP$fXWmuXd+iUX~tJ%gvgd4d20bx!%ntfKm zqi*l$&+Y5I_t<`XfcrT+jTr)ZH9nRlbZ9h;1S~#MexvQ`f42=yT?5zQ91OB0s^tD5 z$JY>1;&8T1Egukq$emgA>-%Nmb3t5R=-`?qZ*2KG--pfTh@1p-g3V0@d(Y)ryYrH) zb>ZUQ0Mz9);6B#i*^;AX8DhyVG)f2&E+AeWxpVV`>U0zAk^S-UZ`h+l_gP=@5VOk? z?vL^;W-=3uvxeGY$A<2(BYp3&snS*mz!smd|Ksirj$C?zDjLXsv`m;j|#n^&osz{)zzNdDg8U^z@JyM*~YB+bd{f8p@jJmupx=f75E$etS!+UEV|Q zj9N6Sv;8_Z`n2tm^!(}<8(q&s;6_Q876&0dK+4Y(>O_)q@c8`65hiR;jDFXi9ev4; zj~usRaF9I-CCe4I+rcBZ+1SJmD+HU--=SJ8$E;MUs|;Y%qC@#C6{-oKud?b(ttnK? zG`l&ooMy7RIcZm{owVC8O4_yS+99~e)et0d&fL%0R#zD!NEE3zTu*37bz4r9LKKs?7&9-OoGV7gM%V&X55fRWnb{e0RI5~*PH82z(=#9E|@I#G< z3q)WM4wg2PVDFZ`GcPMnnyX}gZyDm~4vb+UfTM^mb+QhTkHth4Wv z=GCo$2ognqPPm(Z32S~pI>54gMv$X$o*S*$3&+dWm*WEoIeauH^45z@%+tPQW~xPg z@j+k^g|ow>f_-b|yJT#cv$hl_Yi!k>ZOyiZZ$w_w9=Gn!CfnG`Sr!`H7e=}&s0H*- z5I%*hSFKJNEJ*%Wv(yQ^-siiBe qlxuI)Zo<<9ZNrsEGFHGd5B?uZlpP9n1G^yr0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91ke~wq1ONa40RR91kN^Mx06#wphyVaU07*naRCodHy$O(H$9doRy;pbN zJw4rX_8b6a1|WbT4uJ$fkOV=B6h(4HQYI;yT+3#}u4FlUtk-7vki!mJyQ`2KtBti+ zOL?{0g(M3Wse?2Hi3CZJlmOx)?qh(t@2h+IuCDXF=ifi8YB1gPs=NA_13>3Yc2&J2 zGhgQaefeGarDt!m6h%>zN8UregM26XR`LM3o7_Rpku&5J*(WQ7fR6XcpCbQ={AK_R&5TWIyPiSM(%`qQba%de>Z6l)k-thVk>6@b z&!lJD^=2B;tIZ#@)mLe$IMSrZrUO*;mU98!QwBXHhY5n z3-C&k@UH2!qQSV_PX=%Vn6Ho}K`pJV4gdilP!7RE01!f}lnY?xycN&C3{b`_TR6b! zf`wI%7pE-@@)lJ~<_A?v0xXZ)69SS04?s(1EJ$}))v^|4d(BS|n3o;2bkAl4|3ORi zZa1%EJ^f{d}~mmh{DrL^Z?;JpA&a zG=~5KDFhq=0M(}`k1y&&PIYx#=yh1W<2K9Y)?1=`*u37I7WM2hFSpLT6e^}Vm>QJO z6}b4H{ao@Tfb`hnmtNT`t|l)f&LGKZuycE|eoH zAhwmb+2MS#i>as#SViHO3dNw)3X7QH01R?b0{#BVT=P=p#I&2cfbVuBNC3|pF#%1mog61S67a2qM4j#AxP zBF5PVpg!%;6c@rr1$|bU?X?SM%jO?XS$ArqRl2vDcf(JZcgtU6(Vu@)kih625hV~fK znK}Ea07Q3(fUDAP)mfytXKCvQR423ELh@ACfTeG_!IHP#V%c}zX35_E#cFGuKh2lB z0nv%Zfh+ZS#Q_9(KF7oTXR;{Jf+=D;^2VREX#9}nPyE;_Q{RWWOfhBU5u(eMs8*1U z85prA6jx1T7^4)7EY!;54F`OQ&}n&?#RLEzS6Hfl=!>U8Z7bzy$%I3A-%Vx6z8nQc%ziOG7ckkhbR%Hq`?Kz4;dFd*4r6@*TG@waLV{ zXc7hb0w9tQa>Y`+y|>~90UXhX-zR^TykNZ%167=U#S&A`TlMt!Ej;(4dHIvPx#ul| zQik`oMhxm;kZ2q@;4lb$mYL21AIb!_QVv9QU5=ijagV;M88Eu-rNzOcax{v09|0e* z`n1%C>iG^tIzti>3wU?1`vw!&+xQV^=jqS}%l(!r@Ev_skoIgg*Ja+8TP?i)4$Hms zc1yo|7ca`9ZB-+`O8z21YL~g=^5v%m2Xgtv&b<@xNV6uT*uspmw8528rl)7EaPmhs zeewxQ6%Sc19D&-Pv*GpDR3%Ch`7|A-R@xd(Ns*|F)3Jy_W)R?V5?rr)^ywbdQ6aTW zW$3T&t`DpZFPdB_3tolF(#n9qN0{_*E%Kn1ej=cKOl43_Om`NF{nPst4%h^fPw|j% zy%QU(cNX3Us%pu=!c+=M)@OypAmaa^4Se`cOWgM!{0kQD!g}MxVDAM)D7h|gTD(VA zSU=#|Nf83ig0gB*Wx9gmcoR=sdH)YAoOlh;j5761GZ-+(@Gc&VFEbKUMtlqt1k+at z03_!qCz&erKoOsjKm%YrF-DGG*W1g$0klv6ROarabKl|AqKT5*vUducfIt#k2q47s zs8Iq?qDY;bb2USuXj?GdX|soVt$bq8ddeG6D*!UwhoUsPEkyqyVyX+FRyh=uyLVXM zCqHhPckD$2j*zf$5_2aI9a;FYm7S$`FJA&Yw^O>9WyFsb36lXFvX##N6<#yn=WYBe z>nNPIT!hmf(o4j25JGJN$aj+I#t|Av$~90L1bv9nhLUi|N!t9809{KAm}7p$asezA z;Lh?Xk*#rA{py83+PRo(Tpg4o&;ayW5~YJ5lG2f?H4RH+o&*Tl9uL8>0_B2N0yKI{ zq5$&>x~m8W$Yg{*YqDhJ*YY;HkS5rC~WMM(J zDGfr>p{0QVQ53QR59eJ4d^W~U0Mh`vTWd^h?HV0vCsCjP*G_6sDxn)*td{EaTm%$H zRUXru-;1JiV9F{LjI`BmgaoM=x*fr*pihcuw_lyH_0zshzdT`+$B*#R<*mH;UQ69{ zJ9fI3!>AYcX~yECfap8*hOFvG%bHhG3l0A7x&J|O%hB>>@pu9wfJSg!?fTu9U4QG>c)~kvVOboI$r0I9IzS(Io_07Hmm8%l^)*HJ%O`E%(>QV8 za*O%dmXt`ZLlx6OI zw|RZ*7J5`V#a10et4e_YkEX2$$!?tEo+c{eZ!_|k6-K{l=TCjdx{zT6JR7Iv)6t`9m$GG}ZPX zV{~>kr?c7!tU|}qFfq(elj|g5ZlR%+g3%ePjy-IJbAM^!)GG+N6G*Jn+<@evyKveH zohFwzkT=t-(s}sjc=Fd_DyvpGA8<@F8vUMtsYc>;)1D{3!%-k1jI1YfVmmy9rUOy7 z26H>NX;<%;dsATdQ7n3;UYj|Rvg+}qbr#oIsw#5`fPwGk6z$u_}!9s!$-nvy(3Zo~1R#*>J;9jW2#AivUa^FOD+Uk^ zX($O>is~UwT{iPwo1FZ*RSVBpM@G^V11*k6A25hg28K?f%(y%8S7wST*dlX@OcK%) zim~=PQx*ZDNFXYrG%V2JkaY>Y33@&07;6dgoDTq^K;(eM2wX!+vY=YzNzsVjC)tsO zp_ZNsfIvb8d1aYol2Bv4YmOQ*rH7zNfKmx5-m$ExQWgohi4-~^@eJ9&|EfC(TaIw-3M!&$0Y8LA{ImFBJVAn(k3 z6vMGPHBx!kN>cX$1*fT&G?wf_d!0ok3KpEA0m{>`)wwB~mzd)TxmZ4uSm_Vkt zF;y71spp=A&z`m1$3JPkx5yhfHc3w;5N!iQ>hNWy6#{#&@<8+)3r59mF7)_qJ$Nw5=@hi zTZY#GP;y8zni7i@tISHb6rd)d4E&grNl`bAh~D*UD?ulCHYq`Y1nw%yG;K`Pr!~&i zl0F;b3x(x5GW<-buXrr!!~`yB<{jUiMHK*Z9sKxNR8aKS6rP&*zPnyl(}%`RWB7AT zXWBflYyg2=S=D72ZBFhjf%&Vvga!QvFw9Tj_ac{5TsbT2P-ifocV4h^3W{}(6q?35-=wwJ3_o6pSpt*Hm15nAdWtavm!yt^nco&dT z@BwngtL%%F==-&h00(@YnkK5!XlRYbh^{E{tm2j2Po`(RXdHFFbzI-cn%<;DorJ1u ze(HxBhtD6d$-=iRJG|AhTQ|FMI5j_gma+U(sL&tIKhe%_4cn3v6%KRL5pv@-nOjB` zm)(hPTXE!J3o1`B^&AHz40aV|S0GZsgQsRNN=q`U89QAss1)_arOCC>DgNmofeTQn zGr3NezQHNzO#N|Gei;UPCbZ%d6sVv#Hf?E~y|mgwAY`7SEdUiyLEWY)G87qPS`grT z@o3VyxXcAOtKoO?MjfhdMTs^BCIbS~F_TUO{SuzoxlRH_FU+o@rKW?^lCl3}oWa`+Rfat_hA8E-H z2=J%{EhVlHi@KFYEt+@+@_Ll^BBpC#T;DSYPMyrdiYca``iu2OyKDXM#&7qnZh~l> zyR;7-jOqvKcj=dxNkZu|cpOqSQ+zlJMTEM+qXHoQsLMLG6PM#QY)Y(}VC95QHr9z* z5;H=o8y*VBc%{lT6pyUW@&&W01LW7q`gQZ9(cXG;({ba+oX=Vxql@@bd*|F$|KY}zu@yh0 zirY?01`s9xE*W|_Kf%~lC!jbirMd8=Rq~Gmoc*}@PVqp@#i~glQWA5>8|A2nm_dH8 zW|Et;Eb6f6qP|RV8OZ%nhiZ*-bQlgwmH?dY()Z4xd<@z%QxIV=RV6H zcZOg?zh!61ELdzSiPX8Qt80KlK9Gz+(#s~75Tq|hb=n&$4`y2TgjxuRG@9UL$)CpM z_Zd7LHtn$7-FE{}_u8tGOOwV_WBY|m4=(n-WuL{}2tx1VxRixW_eENZRs1n;&`UOZ zizrOSwn(*eYCggxbUNFnKT)CwA?z?$7?LWp2C8>D^*V6N;r| zY}--4?cM}Dy7m-VoO@G>sx0K2{jV5D|JZ`^b4V2Dn7)voc$;K&_Z+j6+3riVzIi}$MdP^lM?cZmo|NM_E znuM2&Pa0#5bz7+|06~3Z=KYnp5(AhtE5E>u^b`iYmn@Z>SMmpHSS!yy(}F;6Biev!w8Bm;KTeQD@{C315eR(rX?vQa2)qpPwvU5 zM}nJp9ac+3nzo$u!G{pFVgOOsz~3Y4;cF;AzDR-Bc-je%`iXr2{g>zy+J15R7GN-r zN}G=V6TQVx`i=f^LRy=TrTe7C7J!lgt3y=27MA3;Ddr)u999j1%VB)&(Q`y?(QDYD1QTSX$PqR*%#(19_X^_MD^J9N@Y4}S+W z6Ei}5`e1$Rob~(+;tR zl1WKU00=2f)Z2xLY4c&^KQ6O|6rm|*0!?8uuI6DwOVTi+KutsCIwp{UpMK8rk3Uvp zEt<>Mm}~48ObY@C1fn!(5n=^4REQ ziKb^)A8Sy>cuNra_;(NpkVGA?N z84eV>e6i%wvD?3fR`nk)cIBJyeB#D`VD`X&V#zax;{rZWMLZ37HA755jvZ+8iIVU% zT7^p#NtB5K5Ihg>YDX!utYjB>(-8Ab#I%-%q4o~%x5D#Jp|RG<*wh*WT;7rbfxKHe zA18Oh(Zk=A_n|mE#B?BGdq!fm7iT6jb&zvG%hh6lPs}%^;N4LJ<@98xVw&trdGrPh^zh=auf9t zP!hpeoVE5_sc;CJoNQTK37F+wS5w~AQKTndaiV$K{@`svdFFSOck8X@fBB!m%fR$5 zMHM~2pccR7Hd{^wEEca=7t>hJ8R9Oz@{$HJ?hXyAFwvBn00h!>>}Td*sd7Ems@v>K zOkW3>p-_e6J}MoRlO9kQI&+zVC`m+L;k@nY-}LX_+C0zvPM-JMyXRg@eChA5PG4S9 zwtMFRkW|ANq@50?uG}aANS}Syf-?jqjm41tOdT7SloUV80uLydmsD%@EKXssAt{_h zafpvH_O7TbWfdA{X_*nr9sXnlbn{t!OXigv|5JLNx1h8Y|FEr(CO?i@=I-~lzF-+= zG%8NmN0bj)XXYI2DoA^$PTK5gtO*+H<|Irs5tb$j#6|zK`QG}G@H{?0udwRjJh~n# z#z^W_Q5s5SNBWA;ILk~Cq0flNX3LW2o{)xl__yaCdmH~s|I(N7VcNK=Js{6UXXX%> z1vN@YN7O z@z`Q6R^0N-0CWDE*gVnlxmI|>+l~LuPknrarCf45EQS_qI#xpqI#Dc!LB%>tWh=k3 zkNDbB@HQn4sxWdf%?A)>?U+RTo@n%2mK=G+{K=V`Z@Kh58GMA3IFjK*nj#=Vnw-Ga z;-v&MC{#Qan<^0GT*f6M+W7C9&aWM)^?>)qzk^V*I+R(9F44uH2O=aO@fs&tm>)rn zdfr92cElGML(jZ|<18>9YL6lhAuJ`14$rhi|`7|Nak|?YOS}8y31! z?>QimA9adZ#Fu2vn!72$GlMi1mSgQ>!iccq(xm|UOyl6Cp9-~WmHjp~&PvAwx}VFH zhW`2GD)}u}uJ@VGulSinUF5JYsaeL?6e7J=&uEqN?Btjw4!&k#zU6{|i&(i7KtQ`W zL9USQ4gu6-NMG}GEN8%w;s8_^&0-Y|5e&4?p0PeVTq_dlWdYFOmqGreSdMS?+R<7M zxM(Av{@jYXL$jCcVU7U;JPN7jiy2}VQUEG5Hf_=V!;aC8sc2&zGrHU*$%oDS4~VQ{ zx=1I^f>7eu)GuDu55J4m3M=c3Rc+6kq%iNj@5jK5#($YfhJpZ1e{4Br( zR0*`xL-=ml^RHlOXvqgTok9aZO-?p|5VJ%P-N11iy$STqbSY)!s;AzcMU##H%UW7e z4|o|Y0QWGJEi=i&ua&FXy~vRrK%_OT6|4&KqmCvBFFZo&iUtM z4~fE2%XW^~>=XcU3;j_Xu6A0Jyq4Xg-UnjWIxJeAXpJoV6*=HL0M$U$h{r8^rdNO` znk-mxjJVYCCGOSX27rd=UnAx@i0~7so&%W##Ezg6D4nQ!{-tgF);*Wz`Yp*#tV;Mm z8~3kW659i}-e$ILUF@mF4r(;2qCmQ^?x(J}8C8^tqE4);$Md3Og%VP@5Z9cx>5%qc z7g?EO->6*+Q&ncaiJ2+Ov3RhWoV7BMjaX^~^Ticz66FiQq1-w!4k|=l1rA=wc9B?M z%qWHE7+EW^M!iJn|0<66kz)R+jNS)mTzu|5*5~T<%>9F zSFD=KTZQOX;(EOvkUb$+APQylt6!(<1t{%G;Sp)nN8ue2=uhjP!p`N9 z;FyPb`ySd06Op#FT)+mogz$6rN5~SCR-%Nmi`-Wq!-m zBf(;SpGcyeAL9I4T1gLx0@X)gX~hUFiuB3^)KQX01(D*IRa91)NV%m1wlR<0gw7_} zii*e~@ulA(3Z#%NO$ivV$2vR^gYOABl))a`6D%Wer((fQR*p{Yx*A6VL2Rs5t+0cfi-Ne;mq61!Xjb#pi zTIC~;^88OYPF;D z`+><8^A55EW=D)v5qQ#~{wyHU4C&z*u3$&iY|;vuw4Ev@>_~xNPhG=yLsPA52bR?X z+qM%H=G>BQ4bcCT2~ygjn3U-FG;RzQdz1}YKD*TlsbPo*`@7DtPM@)K0BEk^R#BkA z=Ht3tL63+M&vrwK)8~|ynwyk4>Xw{<9PKfyEFHB=V(b8rhl`|(Y)4$13#mRklv;0( zmeTg^=_+}~rnB1`cdUJ`um`*?O+xg7C29miFKuP7gU=GfiH*}|l`6AH9;!2w+-3O$ z+mkDfcfh(oW|bCcP!tGGDJ}s50wehNIeYAGEOtgfOo`lx>hQPz)v-hlz%H&0%(CV? z!immid^c?axPcB=6g#&!!@|$Ob!i#Z|g?Y&ku!WV@KgklDdtGZalFjg6B< z5d?s-X@9fLc-yTIt^-{1bH8B8)Yew5BC<99f3aubU3~Va@QLLkosdYJK;yO|!ip=>v#F-vW@snd@S!T|2n+ z9`H7A)hpX}(zTi;l28Oc#cqh~ii7}f6UnVMmD+CkXcMXzcD{xxh0%Xfosxc5RTYh&3idltpx zUlC^aIU>oQKw&kT&BCB*1qX~c1#~BtrvPhe=-L4~la;$mO03C%ElDGvhv?_>{&pMn z-(h2^-R#l29`J~+NLYdx5ZChb@s@sIaJD$6x~u2?@uR~8Iw~RQffT8>r6@#67%(*@ zrQ88HE^BUs90r6W3A3GWOvLJ#4eWV>1e_?NJVfg9S4BY-&TBROX zvQbrX0NwLb5mADS-bG=O^h5=9)vNGp*>3!l^2IciuYV8+9FlE@9*vF_An7R}x zOC~mwIAy9;j6;`1l|+g}!^BvFTHt0!$7bx6k*b|b4FRYw7ll5;SzDo8#7jAY9WijS zi5TU#D|qeCl6!y+d27=|+?^UdH-hz(wSkLR#}`5z%7CPl9A-PI-8PHVRdKd4VmUFE zKHN=}HGYw#wD^RKU4uZ==}O3=dluh29te;`Xps};1S)U^isFF76MJ4Tj~1aqqfB2< zA@x5#m9g_(>#dsM0x?Ri?ZPNk@m|ci<4v(6H?a*#V0X#+sIZ$|*fbFL;j%SH& z9G0^M(#3!YZrY(iAXXGfBD{|l69-6}r6J>((q5e`+dek-$P>OTf{7N(G&eOJn0tEd z*NS?;*K%@Z38z+pib%uk20;Rk2Q%#6WaMMk@&(n6Oj5lFHP>Ty+5jaQpl%%Y0h|D+ z(8F$eaZ%=&g%%h(0Z3Pip3F%S)SW2;{)bvQ2eP3&zFYvP9v0h*sg#Ye9l$G-zCAZn zvC&KqfYNhtty?QUr^q=!iea8@!qRh&t^HVL58!(02Q^{30QHfRSc0iZZmQ-Je#a*O z7!)e79;T#i0BAe2hA7WV6vcDk3G`GIlK=6x8E_`(=KJ`{LdoA;Jb>XtmHPxKA|bRGQ9M#dB| z9zoo#O;v0I2OQ=Wxw-0ook2y@B58AWX_A^nc`vC#2U+>i!DP>_V1R2T#?(YOj%8QP*@ny?|8g5PnH{C+j0CEbP8%j3g*oPTyPU#YY3ew9(`5Q|`f1&PLKXCxs=vyj)8# zx^WkbS2bQYIj4?O0B9|(P7hR0owh%$X{1Dg|47TgVT`79va=@)Z~)aYG&7_itTi14M5Gk zvb-aeQ#0^6JCUX^B_-iSF<1vUgH;k6U@Zoi!n&bElB)9T0EFXMQNu1qLq>85_;UJV zm|c8oSP^Csu`E>-zg^u>qt;CH1(oy?`GNUO2g{%jMjCNk$_34eGJc&ePTMi|{5r+d zHI>O(C+p>VE0YE-f+%*vNcZ4Vk|6*nWRXU-N+${jTAf-uzQi5~kK=X|Zs)EZ%V)Y^ zm?fHT1~e#iu|HN5>@~~o-brSNT&deqm?uJJmgy`4k3@cru9$ANo`}Lu_#T|=5pt>; zQFb^?IM3(UM!h5eJrj4zg{njQ?BN7f#c~@0rlW~|djf6rIkwf#ViSu95v#HbUN=tn zFl?AJV3VLm?2$neTTvg?H&Q-DK5c{P&2iPQ9c!}(s-u&3W(Kh201X!OS;nXW-zp<1 zexQ!6@R>dcD-OsQM|helsuo4SPdM`uavKtw!V^jY6QCldKrz#078v?nY?*)%)gnD3 z06iOfl1dX@J!}<;e=IJKRX<}#*tY3)=Es0gc0G8Dr7&xRC>KkR%o5j2PpyUeS+@5U zq8CdqPd#oQSpTz&UAA_9fgTv&m$&ojTc9==K1E6JIhR30;;`=oY`$tKO?}}F!n0M< zvUOqh#;zGKy-E0&0x_x0aOCu*z*7iLNfs|AaT)W{`W>5|)tT4HO_PlnswnKWbnhlK z&iIOe$dTf#l~}2f#0Kj^&vMLZrzrs3iqF!Mgc%sGGPe)CBXA zr|F1=e}4Zqo6QZ`33LKyN+_G)&b4g1h=tvWd5}D{S1zye^J(OEAoSAotqXInIl6S(T-H7c}dKef7GV&4p|%;&8$ z8ny1|jCHZ)Ruai-DM_cw|)Bw;6&F7{5LHrBR zUfOz`!!VpuK^1g_;@mN$`T`J~eXZ&@K-2(JT$%Ha{c!9X^AD~4ZnFo*{`vx|hLNl= zFQv&DzPp##jmW}<)D}h5JS%jimiH(J@I@8=r90DB%*7O+@`SeNR0@OGw8ih(t_Wf82>g)o@Gs0OH1j2 zpcL9DEMyR_=Osr;h&{4M4q<-l+)P`=U7RSO0*#>zM1k1JC)I-)t2G1dFw>wwe@1N= z%WBl@;VzWxxY=gQn{2v>iW{-sLA-H6y+)y4NrIOcc*n%YQoY)Bm;RMo$75rEe(9mL z?``zJxhD%Y!L|}pIK_{nj~m0Ccq}VbN=u4yNvXBL5f!QpyQDW{H;9Hz7ve(-XsdVJ zzKOlyB*8T$-6+h|rZAWxG0|srV1CM_*I9pRkM;JVuaP)d2TKDV4e;nb=PJz!+M?;S z?ez7t{|SX99Qayls|U2J^TBVQ!!j_9NIuQyB)Xkij(o{P%S~wS7za&biL7q}+c9Ou zkh_U*20A)y}g&zA*oJ2@6zXO+dgcm)@~dZ zvC^2rRLs{dDeK}_ap~P%y*AXd1#baFds%FS5Rz_IrH+diipau^bkIvpe{%LKOTFc7 zd;O_zj9D51Itx}hDvGi}s1|lk>cT=GDY%`a%QR$~Qfh=i=8PH~di#2;=LSUh&Uo^} zO&76pDS#evrK!w$sT0fY`r;lNEZoGtn`{zGoFCC4PZ2m^rc+F98FI?4+>nSbOK+P` zQm^Y+;Whi=g*Az6Ue`DMJo}>wn>ba#eFI$_t6K`J{4KD;rHK8jfB{vWg#yJwNw|^g z$E<>5Fy$$tN~Y3+nC}pFjjj5}f$gAf6YCom0+YKYsV*uUZ~*yq4m7pvro?1OKJA1%V^@ zT&5Qp0}{ZI^-=xq$Vz+x^`n}iG;8>HSt#O)tO)wAsI48{oh;%Y)bGZQR{EbKb*#A3 z=8yFM6<2c#H;p~rdu>A&MjB4tCDt_yK(xVqIu=-sfeea_E|CDaA}6aC?4eV?5!ZyZ zWAwnGKR$2esg-G(-{?qeopS!u019;YO@|mI%Iu=O;l@7e=*JH%KFz_%d;t9x_b~j; zsVCcOyN7PJjx4qjxp!a(6AcQr1_{K-aa*Vna0DVy+FVE*M;;mZ13Qq9)oZqK_gnXp z$-}dD@-JI1F<$b6yB9q`8SMC3Z1Y-Z$U4BFqhh_+vAq;q9>gSJLm0W3<^ZTJn#Ef< zVV3*4`faFdBR*s@w2JUi2>{k2HUUXVh^{eXu?@IbajP#{()JsN|0l~UHqlygJy6L9 z_VRC@Z1HL@vy+&@lFrXd7y=X~+3 zm!&(yUDx5pk!2l{G@hUb@I>%HHPyI-l%qm*9pju5+Wm39eA0gN*uQA^^0)kT`+nz? z6-TxDYW0#{Z&4wspEY$=*+4nb6WXSC_FKjUZHcX`2^(<$k|PdGw@x1` z*bD#1ae_Nt?9^3%05~7`6eKSYAd|)5&VK6}&M<1R<0j@=m}p9|0IFa03w*{tL3gUh z?%8pN-O#z!l2D;Cp7nX=&~l2o6wkPhko80`XR$XoHDU1svnUt;&HgXgt242fUc7)e z(G{XR&;0693)rh-Imw4FmAT1L79=YzSJqC1(l)0!F2*^K%7yP4LevL{?x|g7o90uNN8q19xCRT})#v&RB?eo5{B zo@M96|Mm61V^55Kr~RAWWLJvkdH&xYTQ+#~xN-_p*Gn`H(d}sQpk@axc}`$%a&}9O zc_@NY@UO`Z&(`hfw%%=>t$ORlIu>Hjw**lA>R*hz%V+W&^lq}}0`X^U>Zgz_^68i%F~ z6+(2c^b~F2#$MZX&+tNu-&hPZI(b0=fjrF_`x_U}{q*f!o9?&0{r6c{nW1i&Eht@z!^zC34c{?jxo&*lqD!o=aFJieNv-5wccqAv-nb`HvUQLyy1>M8`|4a@1t8a_6w#)$t^De zfsb+Wd#x@Q=p3@W>)vZa(G8Zw?bTQgQgtEKa8_BxNlX+?yq4DN>r*RdPt17s(T79( z@{=W-!YAgk7c-Fv9*W^qO;)XIbIx{u zXn3Jz%ipVy{erDq6hQU6KgXvK(Uf}F#^C1eyX~f)_b`nOVCD!dos=|IdkdOwSkVE! zK`Qr+jCZH~_G?vp*PqVX*A89#Q`#B)d7k;7583JOu$|;8zF?Pjt7fo^vzSi6MF%Wh z4hZW~z}lYMn6X`V58L3@J}#VdWuq94wZ?qW)E0n1qRha*+^Vzcg-GL7*nCea@`kVNQ(6fMm~Oyf5s&($(Q$eCaItI$61^`d>_h{Ex$asyWIEb?JK z`_#C7|KGiCk3V?Q&f`5e#`*+BQd#wWsx!=u=8ARHLY)B0Q}o$1Fk7&`cjRo-yZRfK z#C`s9eaz#|%{dkezd2Xbf8e^RYfq6k#hzz?pPzWt9zOQ}+w0>`Td7MS)3|b##!)hz zhxNFEo7}|gJ$CNQM{RQEUe<&Y%7o652Y>=&vnZGEkzLp8+27xrv`_9#SV!ydByo?j zYR9Ttdh_Izo%pkJc43SNwzx=Wk5Y-#SzJ=n+8%3_7ZW5fa?7|~O)B0YVVdcG>4gHO zt$6I}f?xe0h0;2U~wu{}s-Q*4!a zBzzhlA%#xEH;8|3^0}l<4bf7yx99!}1%eFA2U{_T)H7lTm1{|8rC9(;RO!%EWdG>V ziv7zcD)xyT3H!|T3A=C8^8J+Rl`Q(9_PuzbYA-xju*oN zC38H20t_xjg&L!%KCGq2k@%(vFrw8`KDY3fNJLMG(`!T`&6s0u?@ zLGkD|u|uj_G`ap$m*7Og{YkxDbuL10nn2}t8+K%m((3)4XYBsV!NBDWOdIdpTm#a3 z0n=7Om#juQJssI&r;#+yd-k1COaxQ2wvBzZZt7r;!Zl(;k=3J^B~q*$RnTtd2oJBQ z$fZbFw@ z-^>6?M*<)bUSzcQyp51^<*conVrwC%zHU__$6Y7mL`(J6%1_w2(?4k=;~#MQTa~is z*aT+MQiTncnjONIm(GS^bh@JjiX86pY)>DQlg_U3j#dM=jB|>16 zBlk&MQAgblPDXZUBC-SHk&^~Bl)|n+G2Mxj18BD9E4F96Y&+N^ZMaaeffCW&2p5;F zR9y_`+J47OFZ8IQoz(nuaP*=u!Y{c!Nm6nXCW2};g*z(_^kriAR0#+!nyw{0++70} zv_RA2B&5w_!C_ya6VTG2aN5@I^sVpxUAFPPn=I+JM{$oe{|~Q#Z393Jl0N@@?C&;S z{kiw40zh;(M~{#Nrlz!s9q&Fe@L4-Qe$FbT65A(Mh#yoTihUmDmS>`~ZR;KdHX zEhtufYSxEvJ20V5v)Q4D_8dmDF^R2k1WL4#kdzx{lD58p(|S1|x*Jpp9!U2n_>-?V z1Kgv>&?st`^#WCj-XvMVTp?PVc12RRv#fz<$Iiu-ViTl*Q=Fe}c1KFljug|Tx{Nqe z)_E(-vhEyQ2t2Cp?xli{b#Isu5jz*kLYO;ika)^6;+#XdstDDMobD2vY% z&2@yGfG61r0WXFVC>$ zWEqB9`<5z5g5oWBtuO4C26 z86b32i7x55K5JV(HfWt2T1s5%rmt!&^<_C}*#N3n_C-G5M~)TkwJiFc%^x6g=(Gjr zOZGZ}H}n1l=R#Rb6)jB;aA>McPm49*^(5dx^tCAfG)jn>^Oh_@(b#FGD$>pyYi@a) z%F>T3pYU$6vwd}Q0+LXNCI^LKLJLv>+2^tVC@ucQv*YEAt%FbLA+INl;HE-ky}Vo< zP@|MYd;lQ{Rcv!1GtJaQcw9iI9kAspR7Its&~^&BBiB@QWCh@6pm=?|GdBFw>#cte zNNSxVvTF>NomK=OkXwZc?WOi324T?lGu`B#p%f zn|j>zl#sEOpywS-VI8><%NIu&jCJrpwbdXV1v<&b@%p09S2k7P=Pu+3J}PMoP;|k7 z<1y;g4^>{MGE)=r*%@fxip35BjfxNAS}0L3!07`SeSGSBH|KKPo5FJL6G%ZznelUA zio!Di;FOYV=*I?eCHTmI_(0l)us2h&n|Afv#(TT1e^*O8mpX;L5p1ucJuZ{=rY6ea+Z+ z&wbPORiCjD6x-@(&ED$xg;EU{3O&MAyxksZ`CP{ZV)&i3{L~Py_;qxo{E%>((u}c4 zc?;FGl5-L$I~a87ZUv$ zx)Tc20TZN`CP19Z5tAUTEhnHrvutHB0{|o9Kr1TlP-oV*ZAjVOcj4Q-FnBcAN#Z)P zlILvPyQ;4%Ao@uP{x*5Rat}|vX5T#XkUcs51DmRxu^c=eFXSRgNYgZh=n8)jLe)y) zZaX`9vz;I0X!F|ISru0u3!Q=SC%3cW0U{AoJ2t5D* z3PednK~zuQV9#cMUx}KX@B>xta!A&&!o+f4z8Zc3j)#&ELA>s+ z@~C~_#%=cDn^X2t76fj9M~c||PaIZEr>g-1&+pZXU$u`_2asA;2N6D+_7~(>o=D2Z zEy*30?f)3eAKr|!SvxZMg5|w&91gXbfB|5B51}*xuW&*-Af_*kMTpg17H1zlP%1cK z{n-iL>RFq{*vjk2_3A`T64LB4fDSfvtH^+3rZ}fAb>I1HJL#sylU78id;v(Jc+F-< zE1)K#vbFaMsw2y}rZd{>b`?Z)6NQrFgD6hKwB>5#PX<6GD(K59Gd2jH^x?aA+q*XU z_PznLbqcXV@=~>JFXy#TZ_r0qoANa3xGVrt;c76H=q|oKL2mh)ud_kBuj?bWdCLy_ zq4!_yaQVjsG=CNH&ITbU83WvAs}*(tq7zezafk+>Ajo+aB;Q9Wp)(ALh1 ziH6}9ykxseuu2Q9yklNuT!u2b7X>Y}b|K7F$5}2lW7nfmet_78pScO$5xgVzVNwju zamU>fburA()qbx2-^&IdHB}7#Ye88=Q&cV`||v4JlW+byXd&V;84yN2c!MlyoLOMj9Uvk5-3P#IjzSnksU*!J4d@%P)giMy;) zy^b+p>mvPg%rt|ql#yk}qg0h`w0QRG2eS6@ot^f;u0GT9EgS|GOVTh)Nw{J?&terVj^o8j zXyd#d1Q2cG(%&b4mfX4vcrEw#-Gh6@ZMHFeqy2dFyLLK!&BltOOl7R3M1x($5-+_; z6*7-*7nq!b+P%*5A~smd_oEtE$NIGHnj|bMwX^n%VU-0NLnF1fqy28<(V8yNgUQQK z;87Bje31${@BkA4!a<&cwsV=7Y=U=Ybvl_Wpi^iq^g6 z>QZ&&uadt=pRY*6+$eCd&&8XxSP4r!50GSh{mKHt@ds38u3YQ(YN9nfy=K?ATp)e(e1=QM{e*)HU!>JY^`kn(4}i5f^^t z{wfe@>F;VLb!ZYjmG~Y7ybSfJ?07I8k#ikLVc!w?4hap9icWv*p9kPp1#v+MAomG9=hS5dJk3D_G0i;#{qG3M7TyNIz#nMzbYG;ZEZQt1! z?C9*v_G63Gpj}9 zoTX_afv!eA){8o_E!Mbs=NkYL1ropoq#C!Q=?U=QJ&*##2`CM;#!<;+GzHaRXVdPY z-MP8L-m|sG-aXuhT?>58E5F6h(;OGGe4@qq%Xavx07y>*i1bSRF8TB1w%RdPK4atF zX?uF?FKz$CQ9D1Ix9R+(m4oxpGo&^gw?a0Zoyy;3=Ptb4W~SLMw0av{68neprU!t{ zBNCUSB=JFFrY|3W9IbKGNArsKtuz8a3bTV>g}(tzDYi`SNoQ=^=A;dGj@$j)Q}&+i z{Rk5+g;q+MlT`FWCILcz0)QpciGs)eK6TK03f#I#Jmx)+oAyE;l(HbMKM!Y zt4`5qEtW(voGAkeq>WE%6o?W?jQeH94?w$o-S1)DBR*(>2wwy*H0oj`{) zmM_@U1>U*mo zfQ=M3+6QqiXBS!I8O|%`;^rk zUPt;Qt`TMgs_smc=?Y-rLAa&Uv#s5}?Iv*d?ftBb=t?kc5t|2UBZ9L8qNA37kNi1+ zGsfpNk(M+_SE|Jf*nQOX|B`nvwN4G9mhl$Q+E&q4A7;tTi(|eWJX5ig(*(l8C1Pe4 z=QbpsS+?*Tfm&7h?qOq+=|E->Lvbng)%gU9x&Rg*TO6@h01`i`#DfXO&VodR16Xe_ z`-yb2q#LHbJZ-mi7p$LSgG^I54<&3XAj+Z`>}I8hlfbBFiD^IAe+l3`w#54``{map zfErH?kmO_Z6|%e@m(^B=nf+Y>6$5<%d&pz~EBGuC*;!&UI$NjAUGB#k}~?3 z{A|&R_$A9FLPEFnI1C)6u+9RVQZ9podnSQxhRsc|L2YHR*=B50L+mZukxLspMA~*t zQradmiL;otMPF9KYcryhufItBl31_Fw9IF_vd;pLZl%WGA`4K zI)l@ez#_N=P?Z3m8@Y$dj^9W+e-=GJ9*g$?h}_0zw9bmo1rnGtOjo|9G~K|TH|}hd zu%u75Mu7PRfP=fiT3WRp07$#YUnQ5wZ?&Xn(zESawGLY=D82{iWK3ewr^r7dBk;Uw zliIFl(6dMbu$HcL576E0UYYIp8s?Zx^V{&6b#B>A1>VY1%(%k|s> zOP+j!`~q29WB(a|(XqE=x?CN3&2|=`k`iVQ`3|zoD3b67$#Qs;Pbh-8)9=-kLHr;| z8z3iYQH~;6jy!VM8X-$kk~!g7^6P*_n&P)j`fsO!KF*HoOacG^002ovPDHLkV1ip$ B@WB88 literal 0 HcmV?d00001 diff --git a/Example-Old/Example/Assets.xcassets/prohud.trash.imageset/Contents.json b/Example-Old/Example/Assets.xcassets/prohud.trash.imageset/Contents.json new file mode 100644 index 0000000..551989a --- /dev/null +++ b/Example-Old/Example/Assets.xcassets/prohud.trash.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "prohud.trash@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "prohud.trash@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example-Old/Example/Assets.xcassets/prohud.trash.imageset/prohud.trash@2x.png b/Example-Old/Example/Assets.xcassets/prohud.trash.imageset/prohud.trash@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..25fb085b05b4fa13cb33c2a3d8db089712b1c33c GIT binary patch literal 4041 zcmV;)4>s_LP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91V4wp41ONa40RR91U;qFB0I4%yP5=N8Gf6~2RCodHT?vpB)fxVKj-6eQ zLlHSd)M#!IC0a=kF%n|R7%?e9qlFe4Qj!p2mE{owL@7W6#6%#Jm?CP7l|+z4h?havC;^AK9*KD|Pv$+OzkzPxq0a$732r9n z$S#mr29||oGMcT7re%nSOXA_?f)|4;Rsm+IBm|397v^IJEZW(-%H`Xd&GQYS74l|J&jSLB{lU+lKR4_k{CUv zC-H9~a0ZlcUr&+h32TS~0Q_(iY9n|O*q4V{EK2c#dnLblqm=%^-eT)0@riMgo_3}r zPd-JABx^|@nef>HJ`;*~-4|M?hYy@O^Nq+~qM+nff?4%wRC?ig$*x>3rDvbg{CoRN z;;3UJbMfVpIQ)p9qVg@82qioh6j+O2-3kEslab;5V6DnA3kAvFv{v$W{1OudP3h6q z^4!(MO(Z2f{ai_3I7f_B%A1A{H3dp|&>K+8eO(Fw_|uWu?O?5wU3z7wWS7jB(!c*% zOIdnt+{8yeE}4bbNMht@Zy7lUbvBg1sy7sAz||rF;Lk(+^TW}Q0d|Hfk%g8%ciT;pzvag2a_*zC(z7m-wwV`tOV6(A z#rP6ddjl%nYXDY?%y7Hf;hXQK<+MR=&5xw8X+t$4`h1+!88f79?j_=x-k=iBsPx`!MzPrdfW?-9eGL-OOwIEcj0D#Y~ z=D)yhZ-;MwcIkqC2fhQYrG)uQyk7!)M<0U{s_LS;Z?Ypa=nC*T$YMX=1)uS9Ke?{o zg3ssYSI?@~L&RvSjhQFNe_NFTkc{&>+8~P!Zeeri-j}~5ebk5T9$)>CJ3GaEZ8xU6ACvsucZ!J- zdX$v8dYPmqeas<7W?_~{(GvN&~5{Ro6MDqB>Bms zL(8Z&A=|FPUB8vw4L`U{0|oe}7#O8?!V5`kh>=3Xju@7uvI@Z4KNYDasVO

_Ef-_|VQLmlbtjKKUfSkd99f>kh8THhl8vRuyX!Vk0Z2g2aa842QJmGZ zCe{MQ)b5$W8<;rs@Y)kboFX-Cx)@`lD+e(mRtgcr4K}8VcbC&Q#b?K03#%<7a!NVM zSjaIWCN43a8}FhcVnxh6i#qdxt#6S(s0x~kqPV*kIMu+FtSHGi@Ss3(g?rFF zY!LX&u=wa-1KY3)3-f_xt>kH~{^>m|VoGc^(i8v<@zq$Y#^4%mf|cEpe)e1(Ydubg|gHNvMc1fKjpUBAxn%&vLgj@8g% zSYBpphm&ugyIRxkn0{e9QVVh4QOBxvY7!GS`=cZ9Ha*oUh)awv_}sA;X46#LH@>~k zflr|LLbc8IwV@2^k%%F&REQW8Yl~C`%yB$<<#xd^WDF1P;e?UZ+tL^ZjR;kw04!as zEd`+ZVP&l?`E##k7%D#TSeRseB2Dq}zlADi0G6X|%-t$z8YFjDKNw1fX?$6_+^XeL zd}>>$g7)S_e5Ty$6`_hqECZ$|h`Bowo}o%EKJ~bITa(+|^QP>*6m=zfK!)85N*wVK zX}{{)n&h-Pa(2}UDL(eFRSc8c^X@^C~#nAc*;RDuCy3UE-Onm>PpX0Jg_b0oq(F55&dP7z6^a zoj?VQQ?v7YCTdXZt`mU(Y{#(|G)k3Q!coxPLL9;uw>>Jx;2~m7)CC_M@)eg|;ld*i zp^K4{)Wj3r?yxUnlRW~k9Z3bWtL3oH;i?`jau*)iBH2Y(V%td0Dna6i4@>*Xbz-z@ z#r2hrM_oHFxk%)lu6}zSt8eX?3`>mA-ZNjiW_Sc(+rcU*qh*dm(7l0jYp-{~XL(A` z{|9?{ep9h%xtrIz;4?B;*z&))sbadOMDSyqp#rq!AnOErQ%X}l6El|+bH{dH1isys z$TQ@(qL*IOb}3X6(Xj9UY|~T#xtsi2>JDp`%hU!e-MQ+kOWppeOCRiXg;bMHmC-1- zAKU5-C^V`(vD~h=Uw_?T@FJ!LA>hZh#Og=eooZPfX;A+CU2Fihc`6{Q0pr(_798Ky zfq);|EEUkHiln`rm>PpX0Jfb}z-~1=8as-qF$e@;yPFEo?8R_TPfU$LAOPEEr~qyC zg=W5DY77Da*gio8XzP!(u@+Nf5D36_8x?@f_`=;<7FnMOY^=o;F#^EUQw0(8rxVyB zhb4b;w088e9BGv|C{B=H6CW-BOBZXW3Sx0qgS)FCSd``Af>w}` zOiAMCV|`ikV09%5sB0xTp>n!Pa>IrbL(d^VVoatSLebs`mmXkIpS_wYOLhL;DsEI8xc1cqJJ`L7S z3*AsSEL+Mj=NnUP2+#yFvGdSE8)Mg7Q-JNe23L1;5D%x(mU2wBAwbMLCq;=VvDL_@ z0BER)7)#Yyw0S^V%ApAcEczVPv6Y2bdF({+@t4}zYEbwTV23Wl)t#WD9}QWvQ42$* zmtPVbMhKI%Wob$;y$~*MU}RyXrzV!f)JK5|ur)OUv0cv1S)_TA;EpPY@ypBS`nvFy)cyPLne*GmX+9~ zFPP(nXN!%c*WbD?s{lJTM`Et#Xu>_S0L=sX+O<;gp$8;i#pc>tOaUfCE3Km*FD)6>;B^;$|d4!}U^Fid+#WwlT(TrF<& z(5y}ZY>I}ZG8WZ01N<{8$*fiZX$aa09`g+a55CCfsSjy1x>iofvqC81esQDuT~+RVjcGA@Dg|rhwhu z)Ldky3HSb}1j}+d&DZNY{D}?!SB6+sMO9TnswA`r({aBZ?55=j@c0iLtT9t#|G>df z1e7oj?v<(%7*=n?Oc}kM$~3qfY&GXEOdNp9DZ#R=zG87?_NATtT7G3eA6?A=3+bW3 z=QFw0NSFt-tE1bIR%=W4$-l9}ASLt9Er|v{e`QD{f+-ROP&Aal!P-W!HezNNX&?GC&)?y3_}8{o_4BQV z@8Ksh1vq&?5wqZ42iB@2hR1(rOB8g9TmcjhC9o>u*Dwj}%On0nXP{z}4;&{TiYpW` z6>>PYJG7j<_%F@NArp~5l)$R!3h;dJfS$y%!KQUV8o0CU*3nvF6okVO+@H@~bKLpu zv0fOI0~gS-@F6~X|3Q)K@oVT8pcc$l#9a7cl-6ybU5%rO+AOH-B`wu~&3 zFR-~_8NP6AFW~&GbqJbQ9JA$VM4m?BnJgX)qT4fPqh_VLxo?My9c$3YY7>uYq(1G2 zA`I|3;3vT)aI1-BU|CqEroE88LWy|bA>akz9pGjvgLyGe=Ixs7>=mH2st^ETFnA_- z6L=3eN`+7sWl}ct7~HDo^yb@ZKRJLj2!*9hQyy5G03HV(3GM*X$`=QI&KwlyWH>OQ v-3yvt;QHb-V4i{IF=+-O|Vs(hbtx(j^^# zzSr-%?)$-+b7tnuT<5_&IPcd)y;YURe?t8P004YN1sRP;AOD|WgCEB&xz+kd2XfVr zmjcR$X#YM=WUTZQtyNS2&c_%V07bk5F#bzHJmsqr?rB&q_StflP^RzqjNrza?Lr^6{yS?+FAZtDlJ*IF|D z3Bj1|Lp%qyVh#oEX6VT!Cs|qBQ)>K#0B!PZnr%>23_wk$smLX|i)wszS8DgE+WjOX zz8moc;forSD+Den4PRu$gi3_`tO93j zeCT1g{*c(Cov)laa`8XWKVYX|n#E@KaoRie%OicSWP5)#Yq$hn@kyKtb}43oHTT-2 z0T#r&tmjI5%ZengFZ)U8x~PJyA|+N8oCFav5`Q2``H9)~Xv=>1-t*wa@`>h>(kzAZ zq%SN@AG5vHOa49R+L8PUkBgqAF}tqnWJM5uWlzWv{qp&qCX%02!lyR9N3yFB3V>eS zg1Nv9nCC`<#Xk(Ipqa@7Css(~E37v+&Wq&)9MnnEdD4)8J+de|k5HM}S!E6u!#p2-?aU-r|-pN%zj`Y>cH zv1a!iJY#X5r6S34LCPT0asSDb+~NSlU)1g71ki~Pq|&8<=wft6HMF#J`3%k7;8;H+ zA@2Itk8@Tj_<5aCKg=e&ts1^{KHYXY@&xi6Mn^yx>_zp!2^qqMWo)Ad9tZzxI9IE5 z{p8Tbvg`QL*DA*u2lLTCxP)P@jklv-v>G1X4wE+K&Zx3>`Bc@mKIJ?WL6~?=%)e z>dt=_;e5;F`xyIL0!d-YS;>1t0c90`XIo?iMre^&ljJggN}4PdN1b|yZses@<~sN{ zs%X@4#}7zfVE=M8`TRcS17-eiwO6u8zTwY3%Wc1R1_;i*5ZfJa5cD4*tpqS^ONLzL zofJ9kCLiN__%T*Px2`0x(J3$AQYsoW4cDhoF*x>sJ}Lf@J)xP&ggM#4jHR0pCo1+({wa+B9tqh(j~Uuoc@si z(XX?C-NgA~hioZMZM0GJZe_zQSkysn69=d0R5wT_E)^|lSGUIARJ9!#){nek*Tc;m zIBoq>rq3sJl=y7fkM@2|Jv=c#s31iCRD>4;I^2Kpl-+b>PMy|qwh;1(<*t~f59&;* z%n{VtK%wL^ifb{yJ72w#-sub9;)9VAx7%whR~@RF zTVMUZN#E}1-JmfdZ1|u26VVf%t!iw_w>hvv`mZ!(uRr~6$QU%uWSUe9y;ou0H*h76 z9XiK~3ja5$WxhI(6^7Q zG*Id=5G*}(M3v;Rlw>vxwUH0bKh#n+&nJSyF9};k%B5A}SBJ9avmd04ifuRHeh=0UBJ1DTA+hg|K>A+L^};Jt!XJL} zcQ~ebmUgl+lodl`#^gXU7@uu8u_XAxqS8s|Q?;*t@)*_?HKV(KqC0n29Qvj3&3BK= zRxF9d$*TGsrgwdA*g4x=h|KHzBVeZgR?5&InfiVfHJczW*e z*Lw3#xubbm?tWDRiTG`g#*XoL#Z!;?Go#nKRm1mcfBM@nr_W7qHH1cc76sX;UeoOO z9>}1>Fb1W~D7@G)zglYfYtucb?@#gAvLC(GA$IutE=$yOwZgYdP+fi^Dcpf>%e@q5 zY-xrMLF7oFCv5qHSMSfhx7oA#fU6`Dnw$K40lRF|-qU-1c;Ll__H$l$*^GCQBHzni zCsYYgQIbZ|g6l5Y(qHY#^Gh$>zrJPD_AXX|cfC;zc(2o1#lK3pJFdpms>#&as#AAa z;jnl4k0hm=Kz*ZsrhDO-1KJqaXOAnR97y4n!snP$j88w~O_3vO!bh~9)^Pf5Cp6H@ z&~qoc&|a-c^dlN}DIuZAE2ShtPqk_A5$7zKajoVCc$ySk0)6s_ORb;l$tjrlrLx3|j_QR@*N5cq08&u}(mOAmZ?&|q z&YyutC|0|$A>=oq9NoV2P7a5Z+N@M17MArcXw9bI|H{@)VtMItzM=nK)+*P zwX~6~fNWl&U${yaBfGXLv(F~buyZJa7yKDAk!>Lab}|XIwX4FX=^Z}L?gG8uE9M%( zOX%_sjpu#E@|v(afy!(a2m(>hi#>QB_sOeMsnmc$*IWwgfd!?buoRV*-W>`RhaiY{ zlq#D3wXLYaraAI96A}Kl6mBJq@Sv0r3HD^*JYp@j2C4R-mVb<__|Nnt;{wcC$^=JO zyyf40yQy;KCnfw@BX%`SThR9l7B-+znbJwHk(h?nP9}Shfe&wK8kJrq2{v;XrBBF+ zPQnz*kZ~}RNrs-e)V+KqKnFVD#_RNyNiL((^#5s-v*J0Io;5AMMlkUF*4PNGA!gT^ z@ptRBovUg#p@CbL)BBk^Q1;Cewtqd%K>vwp+(HrLi12nPe- z1^sK;310V7CJMo85Oyiv^M|({ncmbzS&6sZr^>=_$A(MNIJxQj6!ota!N%2mD$!@^ z;y_zc|J=ba^^kdO+}QpnohxO$tn&EV1jJHRUYYlKZE$2v04otX=uGXSLM?as($q^-nJ=VQmse)QjPp^GDP@i>%QqeQk^o;_ifizH8b0&@Gh zrgypi8zMRXy3H8Jm?E89e|j5jG)zDIke)>%Rox@eoKX~JOCY^aTu2BFBaM!>{xqK0Y}HS-5hbaj3qhnT1!$4BE?AXUHca>LzdC7Ptn*AsK?+CzA*Hl(}Dyq z5VBdnD7;KPeI5u?+S++Is;V_us?&Ba45K<%L^QI2$z)21_*Q|)i=w7Tp}Vk&S&|oK zsIF-A><}&Zsz3tM&sq#T%8D3#Iv@vYmvxSDVV}0KCjN1aQkM7V-rXbbru6-*lgj4> z?g630$%zOMx+t-zLr_<+F`cbR4Bhm87kA-Da4El2eQo73j~FjsGVpc#yknl}K%0;w z5rCMX+GWrp&#pFx!r74a40KYL;)JJ+IlqYPYVQAR?B{ZaMz}T76<7t2PeN@ zXbs`-C$|NuwtNaTgfuSQBU4}kf$bx+G)%o?uB)3J>voCCip%M)Pu zdee{ndP&I}($d87^8%a24W$2O>rK&D{~g|5v*%iKNmEJ=rW*(QzbYEPoQ;WAlEik% zR30hx!No0ndNam6dgDTM3Hb5s?ehGs8je3EuVmpLO$0HTrzc1E=7#8 z=fzx6Op@Wn_sKZ=2KV<=cQk#PabbdJ>^VizIWroV<)%W>)6yroZr$_P|Alco)5iOmA++Qm^$dwSKYKN3=W>R#0Z8NC1D~CGq2zp#$ zGzH=C7(5N0k-Fgeb`gSj1PJ#Xnu2#`#J0K+JsEN_wa* zN{RxMmwptrt-i%O_d>5)0fh+L#~2Z`lI;+S*Wlv*ThQGuh^El+{+UQ~Pm}>SNAF}w z4G5QkSi)WletbH@tbLthxc1*E0gQN;L)Ge;8vfYEo$@>|R|yLuQFJ@k_uA9J;4X@V zOP%BKxvoIaY`Lf1VRGxP9ThY3j`liAo95HtFTe{ki#B6?xHWg28G^NV+6#=ZHi3cy$+Oq=V>l@iRKQ+Tw{5`r=6)<9&Oz1yb}U%sP>&i%%oj zR95^+>A)n18Q6sa5VMiH?=b6YG4sTcHBR2&tf7ELZ$9}vUgKfM$5WhKSaMM)i72+s z^U&mS&Qbn48aJn16XSld5;C+%npC5^?4FSfh~VG1?k{uf$CVHwKMu%cqR$+CcF~D` zy{ma+^dpk-*y2Y)x^x|DGD31|_e8JKehDkPnafF|m&Ie6cp9LaRVcO`PjnjjS?cP( zacyqNhIa_DHia?BA|>ri|o22~1VS$O+*FZBI;=8qn^+ zNdHS=XRv#kd7y*6bl*Agt}Ik4qAMBknteGjA}taGmsB(WK+f|A7Bu+y(W$5&h(j1y zDL*K%`k%1=9DB)-g`~bDH{vA6rWk%~m<7A>OVZt*M37|j;NJ;B!0C3>k3CK$!&x|K z{ZTKmzS|xsOm)Q<{qbSt@d%vB(W6rz(y^A#0!Jx09v5LRI?|diHSi=8UBTbany*%n zaq&J7qUrs~5jyvt86Qmbt%;U|L|$AAAZU2?f;7x&$kzeS+DHvmzy_D zl&WOGdp>o_d(`hWh&`*%54NP4Px;Vij!X$i?ki@lJ41?Ayvc_7fB)u21E~tDF3_yI z8@pK5(49yPFR<8|CG`dq5%sG6!7H>IT9j6=u# z|AxW+Pog;IzPqjc!&}fbW_pAhSBB!-;UX{fp3G-VRc`qy(}!5(XNC*h*0EQ_OedIb zUM(p zeEkIIBlsY6&qXEi2A`2Ss#~ODObPn)l0fm4zLb%jp2FZp*8GxX8zqG4?ntp4GKlmi zhsrM)2WfGDntrU;P&L-zd>sYiPU7*6SsK4!GRk2@z8YBDdXp+Q9Q+VJ@cs}!5^u*9 zbXjPlFt>NOtJD@S{1+I88v~zx75%f@Lr`m?n3*|T z=``2ZB1WVx+^IBK>{~XkD549!MBM=nMW`d>?JmVd9-SB z&NiS3GesOJRHBt&KhQ`O#bU7UGB4+pb?H8#pZpF7c!|kExkoH3T(A|0DmfgB z(xUZ`MOgZ#?;ZXc((l;1nAng{Wv{B~nd2M@i-KDjFrnjNt$9yP7-EN>gl(>g${X&z zK&Nfg5?;M#y=553WdCEFrdfz1yaGa29|ef&rFmqZ%BV^j?4|yvlD|$p!^u2EgLz(Z zP?sX1y`8v`dsMquuCf*K(7Y!ssEsIL-4yGTR4>M5^Y$R1hsXJFYmc}YYEw)VE@$!j zR0PsZH65>%3{c25)RHeadTJV-d&i!hR%@r|n*nfE+bGuMW7wwj z!XiZCGhSH{%~QEl%KyqOKgo1?$Mnc+KA{oCbcLuyyJSY1E2N5-#b;iLJN7t^w+IxB znd*^@Q4W|5uaSkG!f1yy92vzeTC z@jcZj@s{bBj$31QKl6>8B(}g-ST;A_Y2|&vP{K!NbS8gLt*CV!p3`Oeb4R+qC}T+iks=i?2W=IeO$Y+8x+Wq~2DTi_-WJ0?Lmm zn_Ham3PtfV<%A48)A3RYUn$ye|9JXYHm&3kfH?#esmhX5xJ3bZial#g6_p|Ti6Pcm zw>88HlQ(-%L9t^!VYKdht-|3gb!}vlI0%)K;WJpU3BU(I%*hr6lsZ@KLmvM_omMoN zHkkn$mNz!CYZKZ4ZGQjwTkq_A|NFdvJ3F(=8Q}wrVJt5@F|ATuK$rxLJ$xl21C@)) z?6>~srtI;19I5~7O%?P3!QnKe=%D)ar~k<{kPZyTfM5~&u8C!3(HQ-t%YOmY1;38h zP(|Hh#(7X)N5Vnr@|}{(((H9q3;C<2okx0n`|ZOgH|{81*5gSU6QlMfHvTCrGUzG| z_6t&!cdZ`E?q&*tpk)FSYIqHR?`;P9R)daL3NC=g`9>1*rauc(x8j(Pt$L60c(%yf zXV2_iz^3-$&wSm6*65k#r;gsK8Gt~(#9h&fBY#!^6yL=(9A<`AwEA-HN0E~sjhVso zr$EwN=so-OTOEo9+{0<>5Kpm3HjXO5)_pxaEO~X2!6M=pDubPpkQ=INVece#pwe+; ziWY%L#as^cKrL?Qz*rFc;AV_@bSFW0hF%@-ZwPUCfdU$l3mJ^O8EwF|lqN~fV=~D7 z_;+(Xb6YLk5<7tH2(n!F2=-Z%6RfOKkBuE1it5GH)&4|C&A!dFXoFcj*dBfOP`cYA zHpqIkww%Abu|0RTJVT~szXIm$ybZiO?pe1yk~Ax8J8l&#@FC?&A6@@C0W~v;xqAVO zn^mW?|CE2C6i;7W9`FM3k#E7GjkL{3ZUy_j& Void { return privReloadData diff --git a/Source/Alert/AlertController.swift b/Source/Alert/AlertController.swift index cdd17c1..ce5cf37 100644 --- a/Source/Alert/AlertController.swift +++ b/Source/Alert/AlertController.swift @@ -14,9 +14,9 @@ public typealias Alert = ProHUD.Alert public extension ProHUD { class Alert: HUDController { - internal static var alerts = [Alert]() + static var alerts = [Alert]() - internal static var alertWindow: UIWindow? + static var alertWindow: UIWindow? /// 内容视图 public var contentView = createBlurView() @@ -96,9 +96,7 @@ public extension Alert { window.resignKey() window.addSubview(view) if #available(iOS 13.0, *) { - window.windowScene = cfg.windowScene ?? UIApplication.shared.windows.first?.windowScene - } else { - // Fallback on earlier versions + window.windowScene = cfg.windowScene ?? .currentWindowScene } view.transform = .init(scaleX: 1.2, y: 1.2) view.alpha = 0 @@ -234,7 +232,7 @@ public extension Alert { // MARK: - 创建和设置 -internal extension Alert { +extension Alert { /// 插入一个按钮 /// - Parameter style: 样式 @@ -338,19 +336,13 @@ fileprivate extension Alert { alertWindow = w w.backgroundColor = UIColor.init(red: 0, green: 0, blue: 0, alpha: 0) // 比原生alert层级低一点 - w.windowLevel = .proAlert + w.windowLevel = .alertForProHUD return w } class func privRemoveItemFromArray(alert: Alert) { if alerts.count > 1 { - for (i, a) in alerts.enumerated() { - if a == alert { - if i < alerts.count { - alerts.remove(at: i) - } - } - } + alerts.removeAll { $0 == alert } privUpdateAlertsLayout() } else if alerts.count == 1 { alerts.removeAll() diff --git a/Source/Alert/AlertModel.swift b/Source/Alert/AlertModel.swift index 39360fc..2b4ce60 100644 --- a/Source/Alert/AlertModel.swift +++ b/Source/Alert/AlertModel.swift @@ -47,15 +47,15 @@ public extension Alert { // MARK: 私有 /// 持续时间 - internal var durationBlock: DispatchWorkItem? + var durationBlock: DispatchWorkItem? /// 强制退出按钮 - internal var hideTimerBlock: DispatchWorkItem? + var hideTimerBlock: DispatchWorkItem? /// 强制退出代码 - internal var forceQuitCallback: (() -> Void)? + var forceQuitCallback: (() -> Void)? - internal func updateDuration() { + func updateDuration() { durationBlock?.cancel() if let t = duration ?? scene.alertDuration, t > 0 { durationBlock = DispatchWorkItem(block: { [weak self] in diff --git a/Source/Guard/GuardConfig.swift b/Source/Guard/GuardConfig.swift index b8566fa..6ae652f 100644 --- a/Source/Guard/GuardConfig.swift +++ b/Source/Guard/GuardConfig.swift @@ -51,7 +51,7 @@ public extension ProHUD.Configuration { // MARK: - 内部调用 -internal extension ProHUD.Configuration.Guard { +extension ProHUD.Configuration.Guard { var reloadData: (ProHUD.Guard) -> Void { return privReloadData diff --git a/Source/Guard/GuardController.swift b/Source/Guard/GuardController.swift index c9de5f3..b379656 100644 --- a/Source/Guard/GuardController.swift +++ b/Source/Guard/GuardController.swift @@ -119,21 +119,8 @@ public extension Guard { } if let vc = viewController ?? cfg.rootViewController { return f(vc) - } else { - // 尝试获取RootVC - let ws = UIApplication.shared.windows.filter { (w) -> Bool in - // 去除掉诸如 UITextEffectsWindow 这样的类,去掉隐藏的Window - if "\(type(of:w))" == "UIWindow" && w.isHidden == false && w.windowLevel == .normal { - return true - } else { - return false - } - } - for w in ws { - if let vc = w.rootViewController { - return f(vc) - } - } + } else if let vc = UIViewController.currentRootViewController { + return f(vc) debug("⚠️自动获取根控制器失败,请设置根控制器或者传入需要push到的控制器") } return self @@ -200,23 +187,15 @@ public extension Guard { /// 查找指定的实例 /// - Parameter identifier: 指定实例的标识 class func find(_ identifier: String?, from viewController: UIViewController? = nil) -> [Guard] { - var gg = [Guard]() - if let vc = viewController ?? cfg.rootViewController { - for child in vc.children { - if child.isKind(of: Guard.self) { - if let g = child as? Guard { - if let id = identifier { - if g.identifier == id { - gg.append(g) - } - } else { - gg.append(g) - } - } - } + guard let vc = viewController ?? cfg.rootViewController ?? UIViewController.currentRootViewController else { return [] } + return vc.children.compactMap { (child) -> Guard? in + guard let child = child as? Guard else { return nil } + if let id = identifier, child.identifier == id { + return child + } else { + return child } } - return gg } /// 查找指定的实例 @@ -249,7 +228,7 @@ public extension Guard { // MARK: - 创建和设置 -internal extension Guard { +extension Guard { /// 加载一个标题 /// - Parameter text: 文本 diff --git a/Source/Guard/GuardModel.swift b/Source/Guard/GuardModel.swift index b4711da..65f7cce 100644 --- a/Source/Guard/GuardModel.swift +++ b/Source/Guard/GuardModel.swift @@ -12,7 +12,7 @@ public extension Guard { struct ViewModel { - internal weak var vc: Guard? + weak var vc: Guard? } diff --git a/Source/HUDConfig.swift b/Source/HUDConfig.swift index 83fddd7..f0a3df1 100644 --- a/Source/HUDConfig.swift +++ b/Source/HUDConfig.swift @@ -8,6 +8,7 @@ import UIKit +@available(iOS 13.0, *) fileprivate var sharedWindowScene: UIWindowScene? /// HUD配置 public extension ProHUD { @@ -19,22 +20,14 @@ public extension ProHUD { /// 根控制器,默认可以自动获取,如果获取失败请主动设置 public var rootViewController: UIViewController? - /// iOS13必须设置此值,默认可以自动获取,如果获取失败请主动设置 - @available(iOS 13.0, *) - private static var sharedWindowScene: UIWindowScene? - /// iOS13必须设置此值,默认可以自动获取,如果获取失败请主动设置 @available(iOS 13.0, *) public var windowScene: UIWindowScene? { - set { - Configuration.sharedWindowScene = newValue - } - get { - return Configuration.sharedWindowScene - } + set { sharedWindowScene = newValue } + get { sharedWindowScene } } - /// 动态颜色(适配iOS13) + /// 动态颜色 public lazy var dynamicColor: UIColor = { if #available(iOS 13.0, *) { let color = UIColor { (traitCollection: UITraitCollection) -> UIColor in diff --git a/Source/HUDController.swift b/Source/HUDController.swift index 1584154..6d244a3 100644 --- a/Source/HUDController.swift +++ b/Source/HUDController.swift @@ -85,9 +85,7 @@ internal extension HUDController { } @objc func didTappedButton(_ sender: UIButton) { - if let ac = buttonEvents[sender] { - ac() - } + buttonEvents[sender]?() } } @@ -117,8 +115,8 @@ public extension LoadingAnimationView { v.updateProgress(progress: progress) } } - } + } /// 旋转动画 public protocol LoadingRotateAnimation: LoadingAnimationView {} diff --git a/Source/HUDUtils.swift b/Source/HUDUtils.swift index 005edbf..a9516ff 100644 --- a/Source/HUDUtils.swift +++ b/Source/HUDUtils.swift @@ -15,16 +15,16 @@ extension String { extension ProHUD { static var safeAreaInsets: UIEdgeInsets { - return Inspire.shared.screen.safeAreaInsets + Inspire.shared.screen.safeAreaInsets } } func == (left: ProHUD.Scene, right: ProHUD.Scene) -> Bool { - return left.identifier == right.identifier + left.identifier == right.identifier } func != (left: ProHUD.Scene, right: ProHUD.Scene) -> Bool { - return left.identifier != right.identifier + left.identifier != right.identifier } diff --git a/Source/ProHUD.swift b/Source/ProHUD.swift index 534e8d9..07a981b 100644 --- a/Source/ProHUD.swift +++ b/Source/ProHUD.swift @@ -12,22 +12,23 @@ public class ProHUD { public static let shared = ProHUD() - public var config: Configuration { - return cfg - } + public var config: Configuration { cfg } - public struct Scene { - private var id = "unknown" - public var identifier: String { - return id - } + +} + +// MARK: - Scene +public extension ProHUD { + + struct Scene { + public let identifier: String public var image: UIImage? public var alertDuration: TimeInterval? public var toastDuration: TimeInterval? = 3 public var title: String? public var message: String? - init() { - + public init(identifier: String) { + self.identifier = identifier } } @@ -35,10 +36,6 @@ public class ProHUD { // 默认场景,可直接在项目工程中覆写场景参数 public extension ProHUD.Scene { - init(identifier: String) { - self.init() - id = identifier - } static var `default`: ProHUD.Scene { var scene = ProHUD.Scene.init(identifier: "prohud.default") scene.image = ProHUD.image(named: "prohud.note") diff --git a/Source/Toast/ToastConfig.swift b/Source/Toast/ToastConfig.swift index f3d7f46..0b3616b 100644 --- a/Source/Toast/ToastConfig.swift +++ b/Source/Toast/ToastConfig.swift @@ -53,7 +53,7 @@ public extension ProHUD.Configuration { // MARK: - 内部调用 -internal extension ProHUD.Configuration.Toast { +extension ProHUD.Configuration.Toast { var reloadData: (ProHUD.Toast) -> Void { return privReloadData diff --git a/Source/Toast/ToastController.swift b/Source/Toast/ToastController.swift index 19a0222..ea288ab 100644 --- a/Source/Toast/ToastController.swift +++ b/Source/Toast/ToastController.swift @@ -13,7 +13,7 @@ public typealias Toast = ProHUD.Toast public extension ProHUD { class Toast: HUDController { - internal static var toasts = [Toast]() + static var toasts = [Toast]() public var window: UIWindow? @@ -66,7 +66,7 @@ public extension ProHUD { /// 视图模型 public var vm = ViewModel() - internal var maxY = CGFloat(0) + var maxY = CGFloat(0) // MARK: 生命周期 @@ -120,9 +120,7 @@ public extension Toast { let window = UIWindow(frame: .zero) self.window = window if #available(iOS 13.0, *) { - window.windowScene = cfg.windowScene ?? UIApplication.shared.windows.first?.windowScene - } else { - // Fallback on earlier versions + window.windowScene = cfg.windowScene ?? .currentWindowScene } window.windowLevel = .proToast window.backgroundColor = .clear @@ -270,11 +268,7 @@ public extension Toast { class func pop(_ toast: Toast) { toast.willDisappearCallback?() if toasts.count > 1 { - for (i, t) in toasts.enumerated() { - if t == toast { - toasts.remove(at: i) - } - } + toasts.removeAll { $0 == toast } privUpdateToastsLayout() } else if toasts.count == 1 { toasts.removeAll() diff --git a/Source/Toast/ToastModel.swift b/Source/Toast/ToastModel.swift index ebfd3da..c1cd993 100644 --- a/Source/Toast/ToastModel.swift +++ b/Source/Toast/ToastModel.swift @@ -47,12 +47,12 @@ public extension Toast { // MARK: 私有 /// 持续时间 - internal var durationBlock: DispatchWorkItem? + var durationBlock: DispatchWorkItem? /// 点击事件回调 - internal var tapCallback: (() -> Void)? + var tapCallback: (() -> Void)? - internal func updateDuration() { + func updateDuration() { durationBlock?.cancel() if let t = duration ?? scene.toastDuration, t > 0 { durationBlock = DispatchWorkItem(block: { [weak self] in